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

Variants§

§

DEVICE_OP_READ_REPLY(DEVICE_OP_READ_REPLY_DATA)

§

HWSTATUS(HWSTATUS_DATA)

§

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

§

PARAM_SET(PARAM_SET_DATA)

§

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

§

LOG_ENTRY(LOG_ENTRY_DATA)

§

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

§

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

§

BATTERY2(BATTERY2_DATA)

§

MISSION_ITEM(MISSION_ITEM_DATA)

§

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

§

WIND(WIND_DATA)

§

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

§

UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA)

§

REMOTE_LOG_DATA_BLOCK(REMOTE_LOG_DATA_BLOCK_DATA)

§

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

§

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

§

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

§

DEVICE_OP_WRITE_REPLY(DEVICE_OP_WRITE_REPLY_DATA)

§

BATTERY_STATUS(BATTERY_STATUS_DATA)

§

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

§

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

§

PLAY_TUNE(PLAY_TUNE_DATA)

§

COMMAND_ACK(COMMAND_ACK_DATA)

§

ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA)

§

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

§

GPS2_RTK(GPS2_RTK_DATA)

§

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

§

DATA64(DATA64_DATA)

§

OSD_PARAM_CONFIG_REPLY(OSD_PARAM_CONFIG_REPLY_DATA)

§

DIGICAM_CONTROL(DIGICAM_CONTROL_DATA)

§

AHRS3(AHRS3_DATA)

§

ESC_TELEMETRY_9_TO_12(ESC_TELEMETRY_9_TO_12_DATA)

§

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

§

OSD_PARAM_CONFIG(OSD_PARAM_CONFIG_DATA)

§

DATA16(DATA16_DATA)

§

FENCE_FETCH_POINT(FENCE_FETCH_POINT_DATA)

§

HEARTBEAT(HEARTBEAT_DATA)

§

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

§

RADIO(RADIO_DATA)

§

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

§

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

§

CUBEPILOT_FIRMWARE_UPDATE_RESP(CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA)

§

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

§

HIL_GPS(HIL_GPS_DATA)

§

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

§

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

§

SIM_STATE(SIM_STATE_DATA)

§

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

§

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

§

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

§

EVENT(EVENT_DATA)

§

FENCE_STATUS(FENCE_STATUS_DATA)

§

COMPASSMOT_STATUS(COMPASSMOT_STATUS_DATA)

§

GIMBAL_REPORT(GIMBAL_REPORT_DATA)

§

RANGEFINDER(RANGEFINDER_DATA)

§

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

§

TIMESYNC(TIMESYNC_DATA)

§

LED_CONTROL(LED_CONTROL_DATA)

§

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

§

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

§

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

§

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

§

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

§

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

§

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

§

CANFD_FRAME(CANFD_FRAME_DATA)

§

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

§

MOUNT_CONFIGURE(MOUNT_CONFIGURE_DATA)

§

FENCE_POINT(FENCE_POINT_DATA)

§

DEVICE_OP_READ(DEVICE_OP_READ_DATA)

§

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

§

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

§

PING(PING_DATA)

§

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

§

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

§

CAMERA_STATUS(CAMERA_STATUS_DATA)

§

GOPRO_HEARTBEAT(GOPRO_HEARTBEAT_DATA)

§

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

§

GOPRO_SET_RESPONSE(GOPRO_SET_RESPONSE_DATA)

§

GPS2_RAW(GPS2_RAW_DATA)

§

CUBEPILOT_RAW_RC(CUBEPILOT_RAW_RC_DATA)

§

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

§

ADAP_TUNING(ADAP_TUNING_DATA)

§

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

§

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

§

AUTH_KEY(AUTH_KEY_DATA)

§

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

§

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

§

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

§

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

§

SENSOR_OFFSETS(SENSOR_OFFSETS_DATA)

§

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

§

ATTITUDE(ATTITUDE_DATA)

§

MEMINFO(MEMINFO_DATA)

§

LOGGING_ACK(LOGGING_ACK_DATA)

§

REMOTE_LOG_BLOCK_STATUS(REMOTE_LOG_BLOCK_STATUS_DATA)

§

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

§

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

§

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

§

AP_ADC(AP_ADC_DATA)

§

DATA32(DATA32_DATA)

§

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

§

SIMSTATE(SIMSTATE_DATA)

§

COMMAND_LONG(COMMAND_LONG_DATA)

§

OBSTACLE_DISTANCE_3D(OBSTACLE_DISTANCE_3D_DATA)

§

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

§

SCALED_IMU2(SCALED_IMU2_DATA)

§

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

§

MISSION_COUNT(MISSION_COUNT_DATA)

§

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

§

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

§

AOA_SSA(AOA_SSA_DATA)

§

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

§

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

§

MISSION_REQUEST(MISSION_REQUEST_DATA)

§

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

§

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

§

HOME_POSITION(HOME_POSITION_DATA)

§

GPS_STATUS(GPS_STATUS_DATA)

§

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

§

LOGGING_DATA(LOGGING_DATA_DATA)

§

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

§

V2_EXTENSION(V2_EXTENSION_DATA)

§

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

§

DIGICAM_CONFIGURE(DIGICAM_CONFIGURE_DATA)

§

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

§

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

§

MISSION_CURRENT(MISSION_CURRENT_DATA)

§

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

§

RPM(RPM_DATA)

§

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

§

EFI_STATUS(EFI_STATUS_DATA)

§

RADIO_STATUS(RADIO_STATUS_DATA)

§

RC_CHANNELS(RC_CHANNELS_DATA)

§

ESC_INFO(ESC_INFO_DATA)

§

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

§

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

§

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

§

DATA_STREAM(DATA_STREAM_DATA)

§

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

§

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

§

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

§

MISSION_ACK(MISSION_ACK_DATA)

§

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

§

OSD_PARAM_SHOW_CONFIG(OSD_PARAM_SHOW_CONFIG_DATA)

§

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

§

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

§

RAW_IMU(RAW_IMU_DATA)

§

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

§

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

§

AIRSPEED_AUTOCAL(AIRSPEED_AUTOCAL_DATA)

§

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

§

COMMAND_INT(COMMAND_INT_DATA)

§

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

§

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

§

HIL_CONTROLS(HIL_CONTROLS_DATA)

§

OSD_PARAM_SHOW_CONFIG_REPLY(OSD_PARAM_SHOW_CONFIG_REPLY_DATA)

§

ESC_STATUS(ESC_STATUS_DATA)

§

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

§

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

§

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

§

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

§

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

§

MOUNT_CONTROL(MOUNT_CONTROL_DATA)

§

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

§

AIS_VESSEL(AIS_VESSEL_DATA)

§

CAN_FRAME(CAN_FRAME_DATA)

§

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

§

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

§

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

§

GPS_INPUT(GPS_INPUT_DATA)

§

MAG_CAL_PROGRESS(MAG_CAL_PROGRESS_DATA)

§

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

§

SET_MAG_OFFSETS(SET_MAG_OFFSETS_DATA)

§

HIGH_LATENCY(HIGH_LATENCY_DATA)

§

GPS_RAW_INT(GPS_RAW_INT_DATA)

§

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

§

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

§

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

§

DEBUG_VECT(DEBUG_VECT_DATA)

§

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

§

HIL_STATE(HIL_STATE_DATA)

§

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

§

RALLY_POINT(RALLY_POINT_DATA)

§

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

§

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

§

PARAM_VALUE(PARAM_VALUE_DATA)

§

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

§

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

§

SYSTEM_TIME(SYSTEM_TIME_DATA)

§

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

§

CAMERA_FEEDBACK(CAMERA_FEEDBACK_DATA)

§

SET_MODE(SET_MODE_DATA)

§

DEVICE_OP_WRITE(DEVICE_OP_WRITE_DATA)

§

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

§

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

§

SCALED_IMU(SCALED_IMU_DATA)

§

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

§

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

§

GOPRO_SET_REQUEST(GOPRO_SET_REQUEST_DATA)

§

UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA)

§

GPS_RTK(GPS_RTK_DATA)

§

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

§

STATUSTEXT(STATUSTEXT_DATA)

§

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

§

TUNNEL(TUNNEL_DATA)

§

PID_TUNING(PID_TUNING_DATA)

§

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

§

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

§

LANDING_TARGET(LANDING_TARGET_DATA)

§

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

§

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

§

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

§

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

§

GIMBAL_TORQUE_CMD_REPORT(GIMBAL_TORQUE_CMD_REPORT_DATA)

§

LOG_ERASE(LOG_ERASE_DATA)

§

AHRS2(AHRS2_DATA)

§

GIMBAL_CONTROL(GIMBAL_CONTROL_DATA)

§

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

§

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

§

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

§

COLLISION(COLLISION_DATA)

§

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

§

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

§

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

§

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

§

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

§

VFR_HUD(VFR_HUD_DATA)

§

UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA)

§

LIMITS_STATUS(LIMITS_STATUS_DATA)

§

DEEPSTALL(DEEPSTALL_DATA)

§

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

§

POWER_STATUS(POWER_STATUS_DATA)

§

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

§

VIBRATION(VIBRATION_DATA)

§

SYS_STATUS(SYS_STATUS_DATA)

§

CUBEPILOT_FIRMWARE_UPDATE_START(CUBEPILOT_FIRMWARE_UPDATE_START_DATA)

§

EKF_STATUS_REPORT(EKF_STATUS_REPORT_DATA)

§

AUTOPILOT_VERSION_REQUEST(AUTOPILOT_VERSION_REQUEST_DATA)

§

TERRAIN_DATA(TERRAIN_DATA_DATA)

§

RAW_PRESSURE(RAW_PRESSURE_DATA)

§

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

§

SCALED_IMU3(SCALED_IMU3_DATA)

§

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

§

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

§

MEMORY_VECT(MEMORY_VECT_DATA)

§

ESC_TELEMETRY_1_TO_4(ESC_TELEMETRY_1_TO_4_DATA)

§

LOG_DATA(LOG_DATA_DATA)

§

MCU_STATUS(MCU_STATUS_DATA)

§

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

§

GOPRO_GET_REQUEST(GOPRO_GET_REQUEST_DATA)

§

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

§

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

§

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

§

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

§

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

§

MOUNT_STATUS(MOUNT_STATUS_DATA)

§

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

§

RALLY_FETCH_POINT(RALLY_FETCH_POINT_DATA)

§

GOPRO_GET_RESPONSE(GOPRO_GET_RESPONSE_DATA)

§

ICAROUS_KINEMATIC_BANDS(ICAROUS_KINEMATIC_BANDS_DATA)

§

WIND_COV(WIND_COV_DATA)

§

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

§

REQUEST_EVENT(REQUEST_EVENT_DATA)

§

DATA96(DATA96_DATA)

§

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

§

WINCH_STATUS(WINCH_STATUS_DATA)

§

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

§

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

§

AHRS(AHRS_DATA)

§

HIL_SENSOR(HIL_SENSOR_DATA)

§

SETUP_SIGNING(SETUP_SIGNING_DATA)

§

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

§

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

§

ESC_TELEMETRY_5_TO_8(ESC_TELEMETRY_5_TO_8_DATA)

§

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

§

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

§

DEBUG(DEBUG_DATA)

§

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

§

HIGHRES_IMU(HIGHRES_IMU_DATA)

§

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

§

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

§

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

§

RAW_RPM(RAW_RPM_DATA)

§

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

§

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

§

ALTITUDE(ALTITUDE_DATA)

§

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

§

VISION_POSITION_DELTA(VISION_POSITION_DELTA_DATA)

§

WATER_DEPTH(WATER_DEPTH_DATA)

§

ODOMETRY(ODOMETRY_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 + FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA), + HIL_SENSOR(HIL_SENSOR_DATA), +

}

Variants§

§

COMPASSMOT_STATUS(COMPASSMOT_STATUS_DATA)

§

LOGGING_DATA(LOGGING_DATA_DATA)

§

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

§

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

§

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

§

OSD_PARAM_CONFIG(OSD_PARAM_CONFIG_DATA)

§

VFR_HUD(VFR_HUD_DATA)

§

HIGHRES_IMU(HIGHRES_IMU_DATA)

§

DEVICE_OP_READ(DEVICE_OP_READ_DATA)

§

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

§

FENCE_POINT(FENCE_POINT_DATA)

§

LOG_ENTRY(LOG_ENTRY_DATA)

§

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

§

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

§

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

§

GOPRO_GET_RESPONSE(GOPRO_GET_RESPONSE_DATA)

§

WIND_COV(WIND_COV_DATA)

§

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

§

ADAP_TUNING(ADAP_TUNING_DATA)

§

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

§

DATA16(DATA16_DATA)

§

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

§

DATA64(DATA64_DATA)

§

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

§

OBSTACLE_DISTANCE_3D(OBSTACLE_DISTANCE_3D_DATA)

§

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

§

AIS_VESSEL(AIS_VESSEL_DATA)

§

DEBUG_VECT(DEBUG_VECT_DATA)

§

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

§

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

§

SCALED_IMU2(SCALED_IMU2_DATA)

§

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

§

ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA)

§

CUBEPILOT_FIRMWARE_UPDATE_START(CUBEPILOT_FIRMWARE_UPDATE_START_DATA)

§

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

§

CAMERA_FEEDBACK(CAMERA_FEEDBACK_DATA)

§

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

§

TUNNEL(TUNNEL_DATA)

§

AUTOPILOT_VERSION_REQUEST(AUTOPILOT_VERSION_REQUEST_DATA)

§

OSD_PARAM_SHOW_CONFIG_REPLY(OSD_PARAM_SHOW_CONFIG_REPLY_DATA)

§

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

§

AOA_SSA(AOA_SSA_DATA)

§

FENCE_STATUS(FENCE_STATUS_DATA)

§

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

§

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

§

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

§

AUTH_KEY(AUTH_KEY_DATA)

§

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

§

GIMBAL_REPORT(GIMBAL_REPORT_DATA)

§

RAW_RPM(RAW_RPM_DATA)

§

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

§

OSD_PARAM_CONFIG_REPLY(OSD_PARAM_CONFIG_REPLY_DATA)

§

ESC_STATUS(ESC_STATUS_DATA)

§

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

§

STATUSTEXT(STATUSTEXT_DATA)

§

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

§

ATTITUDE(ATTITUDE_DATA)

§

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

§

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

§

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

§

EVENT(EVENT_DATA)

§

HIGH_LATENCY(HIGH_LATENCY_DATA)

§

PLAY_TUNE(PLAY_TUNE_DATA)

§

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

§

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

§

EFI_STATUS(EFI_STATUS_DATA)

§

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

§

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

§

DEBUG(DEBUG_DATA)

§

SYS_STATUS(SYS_STATUS_DATA)

§

HOME_POSITION(HOME_POSITION_DATA)

§

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

§

RANGEFINDER(RANGEFINDER_DATA)

§

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

§

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

§

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

§

GPS_STATUS(GPS_STATUS_DATA)

§

MOUNT_STATUS(MOUNT_STATUS_DATA)

§

REMOTE_LOG_DATA_BLOCK(REMOTE_LOG_DATA_BLOCK_DATA)

§

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

§

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

§

PID_TUNING(PID_TUNING_DATA)

§

VIBRATION(VIBRATION_DATA)

§

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

§

CAMERA_STATUS(CAMERA_STATUS_DATA)

§

HEARTBEAT(HEARTBEAT_DATA)

§

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

§

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

§

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

§

LED_CONTROL(LED_CONTROL_DATA)

§

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

§

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

§

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

§

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

§

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

§

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

§

GOPRO_SET_REQUEST(GOPRO_SET_REQUEST_DATA)

§

VISION_POSITION_DELTA(VISION_POSITION_DELTA_DATA)

§

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

§

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

§

WIND(WIND_DATA)

§

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

§

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

§

REQUEST_EVENT(REQUEST_EVENT_DATA)

§

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

§

MEMINFO(MEMINFO_DATA)

§

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

§

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

§

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

§

EKF_STATUS_REPORT(EKF_STATUS_REPORT_DATA)

§

DATA96(DATA96_DATA)

§

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

§

WINCH_STATUS(WINCH_STATUS_DATA)

§

GPS2_RTK(GPS2_RTK_DATA)

§

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

§

DEVICE_OP_WRITE_REPLY(DEVICE_OP_WRITE_REPLY_DATA)

§

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

§

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

§

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

§

LANDING_TARGET(LANDING_TARGET_DATA)

§

COMMAND_INT(COMMAND_INT_DATA)

§

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

§

ICAROUS_KINEMATIC_BANDS(ICAROUS_KINEMATIC_BANDS_DATA)

§

SENSOR_OFFSETS(SENSOR_OFFSETS_DATA)

§

RALLY_POINT(RALLY_POINT_DATA)

§

SCALED_IMU3(SCALED_IMU3_DATA)

§

SETUP_SIGNING(SETUP_SIGNING_DATA)

§

MOUNT_CONTROL(MOUNT_CONTROL_DATA)

§

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

§

ESC_INFO(ESC_INFO_DATA)

§

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

§

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

§

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

§

PARAM_VALUE(PARAM_VALUE_DATA)

§

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

§

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

§

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

§

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

§

AHRS3(AHRS3_DATA)

§

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

§

GOPRO_SET_RESPONSE(GOPRO_SET_RESPONSE_DATA)

§

UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA)

§

LIMITS_STATUS(LIMITS_STATUS_DATA)

§

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

§

RAW_IMU(RAW_IMU_DATA)

§

MOUNT_CONFIGURE(MOUNT_CONFIGURE_DATA)

§

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

§

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

§

TIMESYNC(TIMESYNC_DATA)

§

AHRS(AHRS_DATA)

§

ODOMETRY(ODOMETRY_DATA)

§

AIRSPEED_AUTOCAL(AIRSPEED_AUTOCAL_DATA)

§

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

§

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

§

AP_ADC(AP_ADC_DATA)

§

MCU_STATUS(MCU_STATUS_DATA)

§

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

§

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

§

RAW_PRESSURE(RAW_PRESSURE_DATA)

§

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

§

COMMAND_ACK(COMMAND_ACK_DATA)

§

ESC_TELEMETRY_1_TO_4(ESC_TELEMETRY_1_TO_4_DATA)

§

HWSTATUS(HWSTATUS_DATA)

§

GIMBAL_TORQUE_CMD_REPORT(GIMBAL_TORQUE_CMD_REPORT_DATA)

§

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

§

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

§

TERRAIN_DATA(TERRAIN_DATA_DATA)

§

GOPRO_HEARTBEAT(GOPRO_HEARTBEAT_DATA)

§

GOPRO_GET_REQUEST(GOPRO_GET_REQUEST_DATA)

§

RALLY_FETCH_POINT(RALLY_FETCH_POINT_DATA)

§

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

§

OSD_PARAM_SHOW_CONFIG(OSD_PARAM_SHOW_CONFIG_DATA)

§

RPM(RPM_DATA)

§

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

§

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

§

LOGGING_ACK(LOGGING_ACK_DATA)

§

LOG_DATA(LOG_DATA_DATA)

§

DEVICE_OP_WRITE(DEVICE_OP_WRITE_DATA)

§

CAN_FRAME(CAN_FRAME_DATA)

§

GPS2_RAW(GPS2_RAW_DATA)

§

HIL_GPS(HIL_GPS_DATA)

§

SIMSTATE(SIMSTATE_DATA)

§

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

§

GPS_INPUT(GPS_INPUT_DATA)

§

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

§

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

§

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

§

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

§

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

§

SIM_STATE(SIM_STATE_DATA)

§

WATER_DEPTH(WATER_DEPTH_DATA)

§

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

§

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

§

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

§

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

§

BATTERY_STATUS(BATTERY_STATUS_DATA)

§

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

§

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

§

DATA_STREAM(DATA_STREAM_DATA)

§

MAG_CAL_PROGRESS(MAG_CAL_PROGRESS_DATA)

§

UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA)

§

V2_EXTENSION(V2_EXTENSION_DATA)

§

MISSION_REQUEST(MISSION_REQUEST_DATA)

§

LOG_ERASE(LOG_ERASE_DATA)

§

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

§

ESC_TELEMETRY_9_TO_12(ESC_TELEMETRY_9_TO_12_DATA)

§

MISSION_COUNT(MISSION_COUNT_DATA)

§

RADIO_STATUS(RADIO_STATUS_DATA)

§

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

§

MISSION_CURRENT(MISSION_CURRENT_DATA)

§

SYSTEM_TIME(SYSTEM_TIME_DATA)

§

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

§

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

§

SET_MAG_OFFSETS(SET_MAG_OFFSETS_DATA)

§

GPS_RTK(GPS_RTK_DATA)

§

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

§

GPS_RAW_INT(GPS_RAW_INT_DATA)

§

SCALED_IMU(SCALED_IMU_DATA)

§

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

§

CUBEPILOT_FIRMWARE_UPDATE_RESP(CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA)

§

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

§

MISSION_ACK(MISSION_ACK_DATA)

§

REMOTE_LOG_BLOCK_STATUS(REMOTE_LOG_BLOCK_STATUS_DATA)

§

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

§

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

§

FENCE_FETCH_POINT(FENCE_FETCH_POINT_DATA)

§

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

§

ALTITUDE(ALTITUDE_DATA)

§

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

§

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

§

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

§

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

§

BATTERY2(BATTERY2_DATA)

§

HIL_CONTROLS(HIL_CONTROLS_DATA)

§

MISSION_ITEM(MISSION_ITEM_DATA)

§

SET_MODE(SET_MODE_DATA)

§

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

§

UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA)

§

PARAM_SET(PARAM_SET_DATA)

§

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

§

ESC_TELEMETRY_5_TO_8(ESC_TELEMETRY_5_TO_8_DATA)

§

DIGICAM_CONFIGURE(DIGICAM_CONFIGURE_DATA)

§

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

§

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

§

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

§

AHRS2(AHRS2_DATA)

§

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

§

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

§

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

§

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

§

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

§

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

§

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

§

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

§

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

§

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

§

COLLISION(COLLISION_DATA)

§

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

§

CUBEPILOT_RAW_RC(CUBEPILOT_RAW_RC_DATA)

§

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

§

CANFD_FRAME(CANFD_FRAME_DATA)

§

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

§

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

§

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

§

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

§

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

§

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

§

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

§

DEEPSTALL(DEEPSTALL_DATA)

§

COMMAND_LONG(COMMAND_LONG_DATA)

§

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

§

PING(PING_DATA)

§

POWER_STATUS(POWER_STATUS_DATA)

§

DIGICAM_CONTROL(DIGICAM_CONTROL_DATA)

§

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

§

MEMORY_VECT(MEMORY_VECT_DATA)

§

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

§

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

§

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

§

RC_CHANNELS(RC_CHANNELS_DATA)

§

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

§

DATA32(DATA32_DATA)

§

HIL_STATE(HIL_STATE_DATA)

§

GIMBAL_CONTROL(GIMBAL_CONTROL_DATA)

§

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

§

RADIO(RADIO_DATA)

§

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

§

DEVICE_OP_READ_REPLY(DEVICE_OP_READ_REPLY_DATA)

§

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

§

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

§

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

§

HIL_SENSOR(HIL_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 __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 c11e1b6cb6..92fd35ae3e 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.

-
§

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,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§

§

impl Freeze for AdsbFlags

§

impl RefUnwindSafe for AdsbFlags

§

impl Send for AdsbFlags

§

impl Sync for AdsbFlags

§

impl Unpin for AdsbFlags

§

impl UnwindSafe for AdsbFlags

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 31b8328ba0..857eb38eb0 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 +

§

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§

§

impl Freeze for AisFlags

§

impl RefUnwindSafe for AisFlags

§

impl Send for AisFlags

§

impl Sync for AisFlags

§

impl Unpin for AisFlags

§

impl UnwindSafe for AisFlags

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§

§

impl Freeze for AisFlags

§

impl RefUnwindSafe for AisFlags

§

impl Send for AisFlags

§

impl Sync for AisFlags

§

impl Unpin for AisFlags

§

impl UnwindSafe for AisFlags

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.AttitudeTargetTypemask.html b/mavlink/ardupilotmega/struct.AttitudeTargetTypemask.html index 41140d8623..2922bfa2d9 100644 --- a/mavlink/ardupilotmega/struct.AttitudeTargetTypemask.html +++ b/mavlink/ardupilotmega/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 +

§

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 diff --git a/mavlink/ardupilotmega/struct.CameraCapFlags.html b/mavlink/ardupilotmega/struct.CameraCapFlags.html index 47e1d0a14b..4b20cb8c00 100644 --- a/mavlink/ardupilotmega/struct.CameraCapFlags.html +++ b/mavlink/ardupilotmega/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.

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§

§

impl Freeze for CameraCapFlags

§

impl RefUnwindSafe for CameraCapFlags

§

impl Send for CameraCapFlags

§

impl Sync for CameraCapFlags

§

impl Unpin for CameraCapFlags

§

impl UnwindSafe for CameraCapFlags

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§

§

impl Freeze for CameraCapFlags

§

impl RefUnwindSafe for CameraCapFlags

§

impl Send for CameraCapFlags

§

impl Sync for CameraCapFlags

§

impl Unpin for CameraCapFlags

§

impl UnwindSafe for CameraCapFlags

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.EkfStatusFlags.html b/mavlink/ardupilotmega/struct.EkfStatusFlags.html index d1a5df1619..269c812883 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.

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 +

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§

§

impl Freeze for EkfStatusFlags

§

impl RefUnwindSafe for EkfStatusFlags

§

impl Send for EkfStatusFlags

§

impl Sync for EkfStatusFlags

§

impl Unpin for EkfStatusFlags

§

impl UnwindSafe for EkfStatusFlags

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§

§

impl Freeze for EkfStatusFlags

§

impl RefUnwindSafe for EkfStatusFlags

§

impl Send for EkfStatusFlags

§

impl Sync for EkfStatusFlags

§

impl Unpin for EkfStatusFlags

§

impl UnwindSafe for EkfStatusFlags

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 1cfcd8db3e..08a5ab07a3 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 @@ -76,7 +76,7 @@
§Safety
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§

§

impl Freeze for EscFailureFlags

§

impl RefUnwindSafe for EscFailureFlags

§

impl Send for EscFailureFlags

§

impl Sync for EscFailureFlags

§

impl Unpin for EscFailureFlags

§

impl UnwindSafe for EscFailureFlags

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

§

impl Freeze for EscFailureFlags

§

impl RefUnwindSafe for EscFailureFlags

§

impl Send for EscFailureFlags

§

impl Sync for EscFailureFlags

§

impl Unpin for EscFailureFlags

§

impl UnwindSafe for EscFailureFlags

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 7efeeb5475..4c608afe21 100644 --- a/mavlink/ardupilotmega/struct.EstimatorStatusFlags.html +++ b/mavlink/ardupilotmega/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 + 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 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§

§

impl Freeze for EstimatorStatusFlags

§

impl RefUnwindSafe for EstimatorStatusFlags

§

impl Send for EstimatorStatusFlags

§

impl Sync for EstimatorStatusFlags

§

impl Unpin for EstimatorStatusFlags

§

impl UnwindSafe for EstimatorStatusFlags

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§

§

impl Freeze for EstimatorStatusFlags

§

impl RefUnwindSafe for EstimatorStatusFlags

§

impl Send for EstimatorStatusFlags

§

impl Sync for EstimatorStatusFlags

§

impl Unpin for EstimatorStatusFlags

§

impl UnwindSafe for EstimatorStatusFlags

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 0112a1e127..754fa9b4ef 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.

+
§

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§

§

impl Freeze for GimbalDeviceCapFlags

§

impl RefUnwindSafe for GimbalDeviceCapFlags

§

impl Send for GimbalDeviceCapFlags

§

impl Sync for GimbalDeviceCapFlags

§

impl Unpin for GimbalDeviceCapFlags

§

impl UnwindSafe for GimbalDeviceCapFlags

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§

§

impl Freeze for GimbalDeviceCapFlags

§

impl RefUnwindSafe for GimbalDeviceCapFlags

§

impl Send for GimbalDeviceCapFlags

§

impl Sync for GimbalDeviceCapFlags

§

impl Unpin for GimbalDeviceCapFlags

§

impl UnwindSafe for GimbalDeviceCapFlags

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 a6676d0403..fcf347a6bf 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.

+
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 @@ -76,7 +76,7 @@
§Safety
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§

§

impl Freeze for GimbalDeviceErrorFlags

§

impl RefUnwindSafe for GimbalDeviceErrorFlags

§

impl Send for GimbalDeviceErrorFlags

§

impl Sync for GimbalDeviceErrorFlags

§

impl Unpin for GimbalDeviceErrorFlags

§

impl UnwindSafe for GimbalDeviceErrorFlags

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

§

impl Freeze for GimbalDeviceErrorFlags

§

impl RefUnwindSafe for GimbalDeviceErrorFlags

§

impl Send for GimbalDeviceErrorFlags

§

impl Sync for GimbalDeviceErrorFlags

§

impl Unpin for GimbalDeviceErrorFlags

§

impl UnwindSafe for GimbalDeviceErrorFlags

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 5ba470e44a..9a7b4f2133 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.

+
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 @@ -76,7 +76,7 @@
§Safety
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§

§

impl Freeze for GimbalDeviceFlags

§

impl RefUnwindSafe for GimbalDeviceFlags

§

impl Send for GimbalDeviceFlags

§

impl Sync for GimbalDeviceFlags

§

impl Unpin for GimbalDeviceFlags

§

impl UnwindSafe for GimbalDeviceFlags

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

§

impl Freeze for GimbalDeviceFlags

§

impl RefUnwindSafe for GimbalDeviceFlags

§

impl Send for GimbalDeviceFlags

§

impl Sync for GimbalDeviceFlags

§

impl Unpin for GimbalDeviceFlags

§

impl UnwindSafe for GimbalDeviceFlags

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 e2169db3fa..e1862e4eb2 100644 --- a/mavlink/ardupilotmega/struct.GimbalManagerCapFlags.html +++ b/mavlink/ardupilotmega/struct.GimbalManagerCapFlags.html @@ -57,16 +57,16 @@
§Safety

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.

+
§

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 +

§

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,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 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.

+
§

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§

§

impl Freeze for GimbalManagerCapFlags

§

impl RefUnwindSafe for GimbalManagerCapFlags

§

impl Send for GimbalManagerCapFlags

§

impl Sync for GimbalManagerCapFlags

§

impl Unpin for GimbalManagerCapFlags

§

impl UnwindSafe for GimbalManagerCapFlags

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.GoproHeartbeatFlags.html b/mavlink/ardupilotmega/struct.GoproHeartbeatFlags.html index 53c7beba52..faa1998e77 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.

-
§

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 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 +

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 + 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 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§

§

impl Freeze for GoproHeartbeatFlags

§

impl RefUnwindSafe for GoproHeartbeatFlags

§

impl Send for GoproHeartbeatFlags

§

impl Sync for GoproHeartbeatFlags

§

impl Unpin for GoproHeartbeatFlags

§

impl UnwindSafe for GoproHeartbeatFlags

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§

§

impl Freeze for GoproHeartbeatFlags

§

impl RefUnwindSafe for GoproHeartbeatFlags

§

impl Send for GoproHeartbeatFlags

§

impl Sync for GoproHeartbeatFlags

§

impl Unpin for GoproHeartbeatFlags

§

impl UnwindSafe for GoproHeartbeatFlags

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 b914530300..1e3745c092 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§

§

impl Freeze for GpsInputIgnoreFlags

§

impl RefUnwindSafe for GpsInputIgnoreFlags

§

impl Send for GpsInputIgnoreFlags

§

impl Sync for GpsInputIgnoreFlags

§

impl Unpin for GpsInputIgnoreFlags

§

impl UnwindSafe for GpsInputIgnoreFlags

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§

§

impl Freeze for GpsInputIgnoreFlags

§

impl RefUnwindSafe for GpsInputIgnoreFlags

§

impl Send for GpsInputIgnoreFlags

§

impl Sync for GpsInputIgnoreFlags

§

impl Unpin for GpsInputIgnoreFlags

§

impl UnwindSafe for GpsInputIgnoreFlags

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 9a1eeb00a4..b63a8734f6 100644 --- a/mavlink/ardupilotmega/struct.HighresImuUpdatedFlags.html +++ b/mavlink/ardupilotmega/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.

+
§

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 @@ -76,7 +76,7 @@
§Safety
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§

§

impl Freeze for HighresImuUpdatedFlags

§

impl RefUnwindSafe for HighresImuUpdatedFlags

§

impl Send for HighresImuUpdatedFlags

§

impl Sync for HighresImuUpdatedFlags

§

impl Unpin for HighresImuUpdatedFlags

§

impl UnwindSafe for HighresImuUpdatedFlags

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

§

impl Freeze for HighresImuUpdatedFlags

§

impl RefUnwindSafe for HighresImuUpdatedFlags

§

impl Send for HighresImuUpdatedFlags

§

impl Sync for HighresImuUpdatedFlags

§

impl Unpin for HighresImuUpdatedFlags

§

impl UnwindSafe for HighresImuUpdatedFlags

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 68920936cb..a4ea8bc093 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 +

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§

§

impl Freeze for HilSensorUpdatedFlags

§

impl RefUnwindSafe for HilSensorUpdatedFlags

§

impl Send for HilSensorUpdatedFlags

§

impl Sync for HilSensorUpdatedFlags

§

impl Unpin for HilSensorUpdatedFlags

§

impl UnwindSafe for HilSensorUpdatedFlags

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§

§

impl Freeze for HilSensorUpdatedFlags

§

impl RefUnwindSafe for HilSensorUpdatedFlags

§

impl Send for HilSensorUpdatedFlags

§

impl Sync for HilSensorUpdatedFlags

§

impl Unpin for HilSensorUpdatedFlags

§

impl UnwindSafe for HilSensorUpdatedFlags

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 0813c92f66..e1362df824 100644 --- a/mavlink/ardupilotmega/struct.HlFailureFlag.html +++ b/mavlink/ardupilotmega/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.

+
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 +

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 +

§

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§

§

impl Freeze for HlFailureFlag

§

impl RefUnwindSafe for HlFailureFlag

§

impl Send for HlFailureFlag

§

impl Sync for HlFailureFlag

§

impl Unpin for HlFailureFlag

§

impl UnwindSafe for HlFailureFlag

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§

§

impl Freeze for HlFailureFlag

§

impl RefUnwindSafe for HlFailureFlag

§

impl Send for HlFailureFlag

§

impl Sync for HlFailureFlag

§

impl Unpin for HlFailureFlag

§

impl UnwindSafe for HlFailureFlag

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 22156bb1b2..a961a40f58 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 +

§

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 +

§

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§

§

impl Freeze for LimitModule

§

impl RefUnwindSafe for LimitModule

§

impl Send for LimitModule

§

impl Sync for LimitModule

§

impl Unpin for LimitModule

§

impl UnwindSafe for LimitModule

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§

§

impl Freeze for LimitModule

§

impl RefUnwindSafe for LimitModule

§

impl Send for LimitModule

§

impl Sync for LimitModule

§

impl Unpin for LimitModule

§

impl UnwindSafe for LimitModule

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 c49f44543c..87924966ef 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.

-
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§

§

impl Freeze for MavEventCurrentSequenceFlags

§

impl RefUnwindSafe for MavEventCurrentSequenceFlags

§

impl Send for MavEventCurrentSequenceFlags

§

impl Sync for MavEventCurrentSequenceFlags

§

impl Unpin for MavEventCurrentSequenceFlags

§

impl UnwindSafe for MavEventCurrentSequenceFlags

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.MavGeneratorStatusFlag.html b/mavlink/ardupilotmega/struct.MavGeneratorStatusFlag.html index b14d87232d..8f7becc955 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 +

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 +

§

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 @@ -76,7 +76,7 @@
§Safety
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§

§

impl Freeze for MavGeneratorStatusFlag

§

impl RefUnwindSafe for MavGeneratorStatusFlag

§

impl Send for MavGeneratorStatusFlag

§

impl Sync for MavGeneratorStatusFlag

§

impl Unpin for MavGeneratorStatusFlag

§

impl UnwindSafe for MavGeneratorStatusFlag

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

§

impl Freeze for MavGeneratorStatusFlag

§

impl RefUnwindSafe for MavGeneratorStatusFlag

§

impl Send for MavGeneratorStatusFlag

§

impl Sync for MavGeneratorStatusFlag

§

impl Unpin for MavGeneratorStatusFlag

§

impl UnwindSafe for MavGeneratorStatusFlag

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.MavModeFlag.html b/mavlink/ardupilotmega/struct.MavModeFlag.html index 7ef7d20803..115ce5d429 100644 --- a/mavlink/ardupilotmega/struct.MavModeFlag.html +++ b/mavlink/ardupilotmega/struct.MavModeFlag.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 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.

+
§

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.

+ 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 @@ -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 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.

+
§

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§

§

impl Freeze for MavModeFlag

§

impl RefUnwindSafe for MavModeFlag

§

impl Send for MavModeFlag

§

impl Sync for MavModeFlag

§

impl Unpin for MavModeFlag

§

impl UnwindSafe for MavModeFlag

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.MavPowerStatus.html b/mavlink/ardupilotmega/struct.MavPowerStatus.html index 148eb40d6b..f5dd5989e5 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.

+
§

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§

§

impl Freeze for MavPowerStatus

§

impl RefUnwindSafe for MavPowerStatus

§

impl Send for MavPowerStatus

§

impl Sync for MavPowerStatus

§

impl Unpin for MavPowerStatus

§

impl UnwindSafe for MavPowerStatus

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§

§

impl Freeze for MavPowerStatus

§

impl RefUnwindSafe for MavPowerStatus

§

impl Send for MavPowerStatus

§

impl Sync for MavPowerStatus

§

impl Unpin for MavPowerStatus

§

impl UnwindSafe for MavPowerStatus

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 2f78fb7b2b..4d945d440d 100644 --- a/mavlink/ardupilotmega/struct.MavProtocolCapability.html +++ b/mavlink/ardupilotmega/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§

§

impl Freeze for MavProtocolCapability

§

impl RefUnwindSafe for MavProtocolCapability

§

impl Send for MavProtocolCapability

§

impl Sync for MavProtocolCapability

§

impl Unpin for MavProtocolCapability

§

impl UnwindSafe for MavProtocolCapability

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§

§

impl Freeze for MavProtocolCapability

§

impl RefUnwindSafe for MavProtocolCapability

§

impl Send for MavProtocolCapability

§

impl Sync for MavProtocolCapability

§

impl Unpin for MavProtocolCapability

§

impl UnwindSafe for MavProtocolCapability

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 55d0aebc52..28a538d663 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.

+
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.

+
§

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§

§

impl Freeze for MavSysStatusSensor

§

impl RefUnwindSafe for MavSysStatusSensor

§

impl Send for MavSysStatusSensor

§

impl Sync for MavSysStatusSensor

§

impl Unpin for MavSysStatusSensor

§

impl UnwindSafe for MavSysStatusSensor

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§

§

impl Freeze for MavSysStatusSensor

§

impl RefUnwindSafe for MavSysStatusSensor

§

impl Send for MavSysStatusSensor

§

impl Sync for MavSysStatusSensor

§

impl Unpin for MavSysStatusSensor

§

impl UnwindSafe for MavSysStatusSensor

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 fc086671d6..e99b759b81 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.

-
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,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 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.

+
§

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§

§

impl Freeze for MavWinchStatusFlag

§

impl RefUnwindSafe for MavWinchStatusFlag

§

impl Send for MavWinchStatusFlag

§

impl Sync for MavWinchStatusFlag

§

impl Unpin for MavWinchStatusFlag

§

impl UnwindSafe for MavWinchStatusFlag

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.PositionTargetTypemask.html b/mavlink/ardupilotmega/struct.PositionTargetTypemask.html index a6c6f1e0b3..78f0ba3f08 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.

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§

§

impl Freeze for PositionTargetTypemask

§

impl RefUnwindSafe for PositionTargetTypemask

§

impl Send for PositionTargetTypemask

§

impl Sync for PositionTargetTypemask

§

impl Unpin for PositionTargetTypemask

§

impl UnwindSafe for PositionTargetTypemask

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§

§

impl Freeze for PositionTargetTypemask

§

impl RefUnwindSafe for PositionTargetTypemask

§

impl Send for PositionTargetTypemask

§

impl Sync for PositionTargetTypemask

§

impl Unpin for PositionTargetTypemask

§

impl UnwindSafe for PositionTargetTypemask

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 958e38e605..f80a797389 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 @@ -76,7 +76,7 @@
§Safety
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§

§

impl Freeze for RallyFlags

§

impl RefUnwindSafe for RallyFlags

§

impl Send for RallyFlags

§

impl Sync for RallyFlags

§

impl Unpin for RallyFlags

§

impl UnwindSafe for RallyFlags

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

§

impl Freeze for RallyFlags

§

impl RefUnwindSafe for RallyFlags

§

impl Send for RallyFlags

§

impl Sync for RallyFlags

§

impl Unpin for RallyFlags

§

impl UnwindSafe for RallyFlags

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 8314d7ef55..c3af4957c3 100644 --- a/mavlink/ardupilotmega/struct.SerialControlFlag.html +++ b/mavlink/ardupilotmega/struct.SerialControlFlag.html @@ -57,16 +57,16 @@
§Safety

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.

+
§

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 __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§

§

impl Freeze for SerialControlFlag

§

impl RefUnwindSafe for SerialControlFlag

§

impl Send for SerialControlFlag

§

impl Sync for SerialControlFlag

§

impl Unpin for SerialControlFlag

§

impl UnwindSafe for SerialControlFlag

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§

§

impl Freeze for SerialControlFlag

§

impl RefUnwindSafe for SerialControlFlag

§

impl Send for SerialControlFlag

§

impl Sync for SerialControlFlag

§

impl Unpin for SerialControlFlag

§

impl UnwindSafe for SerialControlFlag

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 1676d08b00..a5b3c368af 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 +

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§

§

impl Freeze for TuneFormat

§

impl RefUnwindSafe for TuneFormat

§

impl Send for TuneFormat

§

impl Sync for TuneFormat

§

impl Unpin for TuneFormat

§

impl UnwindSafe for TuneFormat

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§

§

impl Freeze for TuneFormat

§

impl RefUnwindSafe for TuneFormat

§

impl Send for TuneFormat

§

impl Sync for TuneFormat

§

impl Unpin for TuneFormat

§

impl UnwindSafe for TuneFormat

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 7895a8401a..7a4ff47269 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.

-
§

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 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 +

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,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§

§

impl Freeze for UavionixAdsbOutDynamicState

§

impl RefUnwindSafe for UavionixAdsbOutDynamicState

§

impl Send for UavionixAdsbOutDynamicState

§

impl Sync for UavionixAdsbOutDynamicState

§

impl Unpin for UavionixAdsbOutDynamicState

§

impl UnwindSafe for UavionixAdsbOutDynamicState

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§

§

impl Freeze for UavionixAdsbOutDynamicState

§

impl RefUnwindSafe for UavionixAdsbOutDynamicState

§

impl Send for UavionixAdsbOutDynamicState

§

impl Sync for UavionixAdsbOutDynamicState

§

impl Unpin for UavionixAdsbOutDynamicState

§

impl UnwindSafe for UavionixAdsbOutDynamicState

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.UavionixAdsbOutRfSelect.html b/mavlink/ardupilotmega/struct.UavionixAdsbOutRfSelect.html index 60a5c00552..863cb1931d 100644 --- a/mavlink/ardupilotmega/struct.UavionixAdsbOutRfSelect.html +++ b/mavlink/ardupilotmega/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.

+
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 +

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 @@ -76,7 +76,7 @@
§Safety
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.

-
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§

§

impl Freeze for UavionixAdsbOutRfSelect

§

impl RefUnwindSafe for UavionixAdsbOutRfSelect

§

impl Send for UavionixAdsbOutRfSelect

§

impl Sync for UavionixAdsbOutRfSelect

§

impl Unpin for UavionixAdsbOutRfSelect

§

impl UnwindSafe for UavionixAdsbOutRfSelect

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

§

impl Freeze for UavionixAdsbOutRfSelect

§

impl RefUnwindSafe for UavionixAdsbOutRfSelect

§

impl Send for UavionixAdsbOutRfSelect

§

impl Sync for UavionixAdsbOutRfSelect

§

impl Unpin for UavionixAdsbOutRfSelect

§

impl UnwindSafe for UavionixAdsbOutRfSelect

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.UavionixAdsbRfHealth.html b/mavlink/ardupilotmega/struct.UavionixAdsbRfHealth.html index ee4b9ec064..dbc84361a4 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.

+
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 +

§

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 @@ -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 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§

§

impl Freeze for UavionixAdsbRfHealth

§

impl RefUnwindSafe for UavionixAdsbRfHealth

§

impl Send for UavionixAdsbRfHealth

§

impl Sync for UavionixAdsbRfHealth

§

impl Unpin for UavionixAdsbRfHealth

§

impl UnwindSafe for UavionixAdsbRfHealth

Blanket Implementations§

source§

impl<T> Any for T
where +

§

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§

§

impl Freeze for UavionixAdsbRfHealth

§

impl RefUnwindSafe for UavionixAdsbRfHealth

§

impl Send for UavionixAdsbRfHealth

§

impl Sync for UavionixAdsbRfHealth

§

impl Unpin for UavionixAdsbRfHealth

§

impl UnwindSafe for UavionixAdsbRfHealth

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 37f27d954d..36f89252d4 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 + 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§

§

impl Freeze for UtmDataAvailFlags

§

impl RefUnwindSafe for UtmDataAvailFlags

§

impl Send for UtmDataAvailFlags

§

impl Sync for UtmDataAvailFlags

§

impl Unpin for UtmDataAvailFlags

§

impl UnwindSafe for UtmDataAvailFlags

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§

§

impl Freeze for UtmDataAvailFlags

§

impl RefUnwindSafe for UtmDataAvailFlags

§

impl Send for UtmDataAvailFlags

§

impl Sync for UtmDataAvailFlags

§

impl Unpin for UtmDataAvailFlags

§

impl UnwindSafe for UtmDataAvailFlags

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 d433906cfe..16cc2747d8 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 MISSION_ITEM(MISSION_ITEM_DATA), - SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA), - LANDING_TARGET(LANDING_TARGET_DATA), - WIND_COV(WIND_COV_DATA), - TIMESYNC(TIMESYNC_DATA), - V2_EXTENSION(V2_EXTENSION_DATA), - ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA), - ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA), - SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA), - MANUAL_SETPOINT(MANUAL_SETPOINT_DATA), - LOG_ERASE(LOG_ERASE_DATA), - SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA), - PARAM_MAP_RC(PARAM_MAP_RC_DATA), - MISSION_ITEM_INT(MISSION_ITEM_INT_DATA), - SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA), - TERRAIN_CHECK(TERRAIN_CHECK_DATA), - REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA), - HIL_SENSOR(HIL_SENSOR_DATA), - ADSB_VEHICLE(ADSB_VEHICLE_DATA), - ALTITUDE(ALTITUDE_DATA), - UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA), - ODOMETRY(ODOMETRY_DATA), - SCALED_PRESSURE(SCALED_PRESSURE_DATA), - LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA), - GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA), - POWER_STATUS(POWER_STATUS_DATA), - PARAM_EXT_ACK(PARAM_EXT_ACK_DATA), - WHEEL_DISTANCE(WHEEL_DISTANCE_DATA), - CAMERA_INFORMATION(CAMERA_INFORMATION_DATA), +
Show 221 variants RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA), + OPTICAL_FLOW(OPTICAL_FLOW_DATA), + RADIO_STATUS(RADIO_STATUS_DATA), + ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA), + REQUEST_EVENT(REQUEST_EVENT_DATA), + CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA), + COLLISION(COLLISION_DATA), + NAMED_VALUE_INT(NAMED_VALUE_INT_DATA), + DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA), LOGGING_ACK(LOGGING_ACK_DATA), - MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA), - AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA), - GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA), - GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA), - LOG_DATA(LOG_DATA_DATA), + VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA), + MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA), + OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA), + HIGH_LATENCY2(HIGH_LATENCY2_DATA), + PING(PING_DATA), + ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA), HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA), - ESC_INFO(ESC_INFO_DATA), - CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA), - LOG_REQUEST_END(LOG_REQUEST_END_DATA), - CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA), - PARAM_EXT_SET(PARAM_EXT_SET_DATA), - TUNNEL(TUNNEL_DATA), - SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA), - GPS_INJECT_DATA(GPS_INJECT_DATA_DATA), - HOME_POSITION(HOME_POSITION_DATA), - PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA), - MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA), - RAW_PRESSURE(RAW_PRESSURE_DATA), - NAMED_VALUE_INT(NAMED_VALUE_INT_DATA), - WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA), - CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA), - MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA), - GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA), - WINCH_STATUS(WINCH_STATUS_DATA), - HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA), - HEARTBEAT(HEARTBEAT_DATA), - EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA), NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA), + CAMERA_SETTINGS(CAMERA_SETTINGS_DATA), STORAGE_INFORMATION(STORAGE_INFORMATION_DATA), - DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA), - HIL_CONTROLS(HIL_CONTROLS_DATA), - AUTH_KEY(AUTH_KEY_DATA), - VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA), - TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA), - DEBUG(DEBUG_DATA), - RC_CHANNELS(RC_CHANNELS_DATA), - PING(PING_DATA), - SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA), - LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA), - FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA), + LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA), + MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA), + MISSION_COUNT(MISSION_COUNT_DATA), + CANFD_FRAME(CANFD_FRAME_DATA), + WHEEL_DISTANCE(WHEEL_DISTANCE_DATA), ATTITUDE_TARGET(ATTITUDE_TARGET_DATA), - RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA), - COMMAND_INT(COMMAND_INT_DATA), - GPS_STATUS(GPS_STATUS_DATA), - MISSION_CURRENT(MISSION_CURRENT_DATA), - TERRAIN_DATA(TERRAIN_DATA_DATA), - SET_MODE(SET_MODE_DATA), - HIL_STATE(HIL_STATE_DATA), - RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA), - MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA), - POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA), - SYS_STATUS(SYS_STATUS_DATA), - COMMAND_CANCEL(COMMAND_CANCEL_DATA), - ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA), - ESC_STATUS(ESC_STATUS_DATA), - FOLLOW_TARGET(FOLLOW_TARGET_DATA), - PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA), - RADIO_STATUS(RADIO_STATUS_DATA), - CELLULAR_STATUS(CELLULAR_STATUS_DATA), - NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA), - SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA), - MISSION_ACK(MISSION_ACK_DATA), - LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA), + SET_HOME_POSITION(SET_HOME_POSITION_DATA), + PARAM_VALUE(PARAM_VALUE_DATA), + COMMAND_LONG(COMMAND_LONG_DATA), + SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA), + SCALED_PRESSURE(SCALED_PRESSURE_DATA), + EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA), + PARAM_SET(PARAM_SET_DATA), + SCALED_PRESSURE3(SCALED_PRESSURE3_DATA), + LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA), VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA), + DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA), + OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA), + TERRAIN_REQUEST(TERRAIN_REQUEST_DATA), + HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA), + LINK_NODE_STATUS(LINK_NODE_STATUS_DATA), + HIL_GPS(HIL_GPS_DATA), + CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA), + MISSION_ACK(MISSION_ACK_DATA), + GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA), + EVENT(EVENT_DATA), + POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA), + MEMORY_VECT(MEMORY_VECT_DATA), SERIAL_CONTROL(SERIAL_CONTROL_DATA), - GPS_RTCM_DATA(GPS_RTCM_DATA_DATA), - UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA), - ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA), - ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA), - COMMAND_LONG(COMMAND_LONG_DATA), - GPS2_RAW(GPS2_RAW_DATA), + PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA), + SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA), + SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA), + CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA), + RC_CHANNELS(RC_CHANNELS_DATA), + GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA), + OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA), GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA), - COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA), - OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA), - TERRAIN_REPORT(TERRAIN_REPORT_DATA), - MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA), - POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA), - GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA), + COMPONENT_METADATA(COMPONENT_METADATA_DATA), + TIMESYNC(TIMESYNC_DATA), + MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA), + HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA), + GPS_RTK(GPS_RTK_DATA), + MANUAL_SETPOINT(MANUAL_SETPOINT_DATA), + ESC_STATUS(ESC_STATUS_DATA), + GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA), + CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA), + PARAM_EXT_SET(PARAM_EXT_SET_DATA), + TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA), + HEARTBEAT(HEARTBEAT_DATA), + CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA), + PLAY_TUNE_V2(PLAY_TUNE_V2_DATA), PROTOCOL_VERSION(PROTOCOL_VERSION_DATA), - SCALED_IMU3(SCALED_IMU3_DATA), - CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA), - GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA), - ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA), - MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA), - VIBRATION(VIBRATION_DATA), + VFR_HUD(VFR_HUD_DATA), + SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA), + MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA), + MISSION_ITEM(MISSION_ITEM_DATA), + LOG_DATA(LOG_DATA_DATA), + GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA), CAMERA_TRIGGER(CAMERA_TRIGGER_DATA), - ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA), - AIS_VESSEL(AIS_VESSEL_DATA), - ATTITUDE(ATTITUDE_DATA), - ISBD_LINK_STATUS(ISBD_LINK_STATUS_DATA), - PLAY_TUNE_V2(PLAY_TUNE_V2_DATA), - REQUEST_EVENT(REQUEST_EVENT_DATA), - COMPONENT_METADATA(COMPONENT_METADATA_DATA), - MAG_CAL_REPORT(MAG_CAL_REPORT_DATA), - OPTICAL_FLOW(OPTICAL_FLOW_DATA), - ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA), - MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA), - PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA), - HIGHRES_IMU(HIGHRES_IMU_DATA), + COMMAND_CANCEL(COMMAND_CANCEL_DATA), + LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA), + HIL_SENSOR(HIL_SENSOR_DATA), RESOURCE_REQUEST(RESOURCE_REQUEST_DATA), - PLAY_TUNE(PLAY_TUNE_DATA), - BUTTON_CHANGE(BUTTON_CHANGE_DATA), - GPS2_RTK(GPS2_RTK_DATA), - LOGGING_DATA(LOGGING_DATA_DATA), - MANUAL_CONTROL(MANUAL_CONTROL_DATA), - LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA), - TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA), - CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA), - OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA), + OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA), + MAG_CAL_REPORT(MAG_CAL_REPORT_DATA), + ADSB_VEHICLE(ADSB_VEHICLE_DATA), + LOG_REQUEST_END(LOG_REQUEST_END_DATA), + LOG_ERASE(LOG_ERASE_DATA), + SUPPORTED_TUNES(SUPPORTED_TUNES_DATA), + OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA), + SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA), + SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA), + GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA), + VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA), + TUNNEL(TUNNEL_DATA), OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA), GENERATOR_STATUS(GENERATOR_STATUS_DATA), - OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA), - OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA), - HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA), - RAW_IMU(RAW_IMU_DATA), - UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA), - CAN_FRAME(CAN_FRAME_DATA), - FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA), - ATT_POS_MOCAP(ATT_POS_MOCAP_DATA), - RAW_RPM(RAW_RPM_DATA), - OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA), - LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA), - SCALED_PRESSURE2(SCALED_PRESSURE2_DATA), - GPS_INPUT(GPS_INPUT_DATA), - SETUP_SIGNING(SETUP_SIGNING_DATA), - PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA), - SCALED_IMU2(SCALED_IMU2_DATA), - HIGH_LATENCY(HIGH_LATENCY_DATA), - LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA), - SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA), - TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA), - MISSION_REQUEST(MISSION_REQUEST_DATA), - TERRAIN_REQUEST(TERRAIN_REQUEST_DATA), - MISSION_COUNT(MISSION_COUNT_DATA), - AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA), - LINK_NODE_STATUS(LINK_NODE_STATUS_DATA), - COLLISION(COLLISION_DATA), - GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA), - MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA), + UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA), SIM_STATE(SIM_STATE_DATA), - PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA), - HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA), + ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA), + GPS_RTCM_DATA(GPS_RTCM_DATA_DATA), + TERRAIN_CHECK(TERRAIN_CHECK_DATA), + PLAY_TUNE(PLAY_TUNE_DATA), + MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA), + ATTITUDE(ATTITUDE_DATA), + MISSION_CURRENT(MISSION_CURRENT_DATA), + CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA), + VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA), + ESC_INFO(ESC_INFO_DATA), + SCALED_IMU2(SCALED_IMU2_DATA), + EFI_STATUS(EFI_STATUS_DATA), + AIS_VESSEL(AIS_VESSEL_DATA), + POWER_STATUS(POWER_STATUS_DATA), + ODOMETRY(ODOMETRY_DATA), + TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA), + CELLULAR_STATUS(CELLULAR_STATUS_DATA), CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA), - MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA), - OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA), + WINCH_STATUS(WINCH_STATUS_DATA), SCALED_IMU(SCALED_IMU_DATA), - VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA), - GPS_RTK(GPS_RTK_DATA), - VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA), - RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA), - SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA), - HIGH_LATENCY2(HIGH_LATENCY2_DATA), - MEMORY_VECT(MEMORY_VECT_DATA), - EVENT(EVENT_DATA), - CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA), - CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA), GPS_RAW_INT(GPS_RAW_INT_DATA), - CELLULAR_CONFIG(CELLULAR_CONFIG_DATA), - PARAM_SET(PARAM_SET_DATA), - DISTANCE_SENSOR(DISTANCE_SENSOR_DATA), - FENCE_STATUS(FENCE_STATUS_DATA), - SUPPORTED_TUNES(SUPPORTED_TUNES_DATA), GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA), - PARAM_VALUE(PARAM_VALUE_DATA), + ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA), + RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA), + LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA), + REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA), + GPS2_RTK(GPS2_RTK_DATA), + MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA), + POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA), + HIGHRES_IMU(HIGHRES_IMU_DATA), + BATTERY_STATUS(BATTERY_STATUS_DATA), + WIND_COV(WIND_COV_DATA), + HOME_POSITION(HOME_POSITION_DATA), + V2_EXTENSION(V2_EXTENSION_DATA), + UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA), + MISSION_REQUEST(MISSION_REQUEST_DATA), + DEBUG(DEBUG_DATA), + SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA), RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA), - CANFD_FRAME(CANFD_FRAME_DATA), - VFR_HUD(VFR_HUD_DATA), + HIGH_LATENCY(HIGH_LATENCY_DATA), + PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA), + LOG_ENTRY(LOG_ENTRY_DATA), + PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA), + ATT_POS_MOCAP(ATT_POS_MOCAP_DATA), + UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA), + AUTH_KEY(AUTH_KEY_DATA), + LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA), + GPS_INJECT_DATA(GPS_INJECT_DATA_DATA), + SYSTEM_TIME(SYSTEM_TIME_DATA), + TERRAIN_DATA(TERRAIN_DATA_DATA), DATA_STREAM(DATA_STREAM_DATA), - DEBUG_VECT(DEBUG_VECT_DATA), - DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA), - GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA), + LANDING_TARGET(LANDING_TARGET_DATA), + GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA), + GPS_STATUS(GPS_STATUS_DATA), + CAMERA_INFORMATION(CAMERA_INFORMATION_DATA), + CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA), + SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA), + CAN_FRAME(CAN_FRAME_DATA), + ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA), + MISSION_ITEM_INT(MISSION_ITEM_INT_DATA), + RAW_RPM(RAW_RPM_DATA), + ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA), CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA), - HIL_GPS(HIL_GPS_DATA), - CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA), + CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA), + PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA), + PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA), + OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA), + GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA), + SET_MODE(SET_MODE_DATA), + SCALED_PRESSURE2(SCALED_PRESSURE2_DATA), + ISBD_LINK_STATUS(ISBD_LINK_STATUS_DATA), + LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA), + ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA), + WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA), + DISTANCE_SENSOR(DISTANCE_SENSOR_DATA), + FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA), + COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA), + GPS2_RAW(GPS2_RAW_DATA), + ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA), + FENCE_STATUS(FENCE_STATUS_DATA), + BUTTON_CHANGE(BUTTON_CHANGE_DATA), + OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA), + MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA), + MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA), + GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA), + AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA), + GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA), + COMMAND_INT(COMMAND_INT_DATA), + DEBUG_VECT(DEBUG_VECT_DATA), + OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA), + GPS_INPUT(GPS_INPUT_DATA), + FOLLOW_TARGET(FOLLOW_TARGET_DATA), + RAW_IMU(RAW_IMU_DATA), + NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA), + HIL_STATE(HIL_STATE_DATA), + SCALED_IMU3(SCALED_IMU3_DATA), STATUSTEXT(STATUSTEXT_DATA), - SET_HOME_POSITION(SET_HOME_POSITION_DATA), - BATTERY_STATUS(BATTERY_STATUS_DATA), - COMMAND_ACK(COMMAND_ACK_DATA), - CAMERA_SETTINGS(CAMERA_SETTINGS_DATA), - VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA), - SYSTEM_TIME(SYSTEM_TIME_DATA), - GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA), - GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA), - LOG_ENTRY(LOG_ENTRY_DATA), - OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA), + HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA), + MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA), + MANUAL_CONTROL(MANUAL_CONTROL_DATA), + SYS_STATUS(SYS_STATUS_DATA), + HIL_CONTROLS(HIL_CONTROLS_DATA), + VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA), + SETUP_SIGNING(SETUP_SIGNING_DATA), + FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA), + LOGGING_DATA(LOGGING_DATA_DATA), + PARAM_MAP_RC(PARAM_MAP_RC_DATA), + ALTITUDE(ALTITUDE_DATA), + CELLULAR_CONFIG(CELLULAR_CONFIG_DATA), + RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA), + TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA), + VIBRATION(VIBRATION_DATA), + AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA), + OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA), + HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA), + RAW_PRESSURE(RAW_PRESSURE_DATA), OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA), - HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA), - OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA), - OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA), - EFI_STATUS(EFI_STATUS_DATA), - SCALED_PRESSURE3(SCALED_PRESSURE3_DATA), -
}

Variants§

§

MISSION_ITEM(MISSION_ITEM_DATA)

§

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

§

LANDING_TARGET(LANDING_TARGET_DATA)

§

WIND_COV(WIND_COV_DATA)

§

TIMESYNC(TIMESYNC_DATA)

§

V2_EXTENSION(V2_EXTENSION_DATA)

§

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

§

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

§

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

§

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

§

LOG_ERASE(LOG_ERASE_DATA)

§

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

§

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

§

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

§

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

§

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

§

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

§

HIL_SENSOR(HIL_SENSOR_DATA)

§

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

§

ALTITUDE(ALTITUDE_DATA)

§

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

§

ODOMETRY(ODOMETRY_DATA)

§

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

§

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

§

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

§

POWER_STATUS(POWER_STATUS_DATA)

§

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

§

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

§

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

§

LOGGING_ACK(LOGGING_ACK_DATA)

§

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

§

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

§

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

§

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

§

LOG_DATA(LOG_DATA_DATA)

§

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

§

ESC_INFO(ESC_INFO_DATA)

§

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

§

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

§

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

§

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

§

TUNNEL(TUNNEL_DATA)

§

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

§

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

§

HOME_POSITION(HOME_POSITION_DATA)

§

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

§

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

§

RAW_PRESSURE(RAW_PRESSURE_DATA)

§

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

§

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

§

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

§

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

§

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

§

WINCH_STATUS(WINCH_STATUS_DATA)

§

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

§

HEARTBEAT(HEARTBEAT_DATA)

§

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

§

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

§

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

§

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

§

HIL_CONTROLS(HIL_CONTROLS_DATA)

§

AUTH_KEY(AUTH_KEY_DATA)

§

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

§

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

§

DEBUG(DEBUG_DATA)

§

RC_CHANNELS(RC_CHANNELS_DATA)

§

PING(PING_DATA)

§

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

§

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

§

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

§

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

§

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

§

COMMAND_INT(COMMAND_INT_DATA)

§

GPS_STATUS(GPS_STATUS_DATA)

§

MISSION_CURRENT(MISSION_CURRENT_DATA)

§

TERRAIN_DATA(TERRAIN_DATA_DATA)

§

SET_MODE(SET_MODE_DATA)

§

HIL_STATE(HIL_STATE_DATA)

§

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

§

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

§

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

§

SYS_STATUS(SYS_STATUS_DATA)

§

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

§

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

§

ESC_STATUS(ESC_STATUS_DATA)

§

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

§

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

§

RADIO_STATUS(RADIO_STATUS_DATA)

§

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

§

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

§

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

§

MISSION_ACK(MISSION_ACK_DATA)

§

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

§

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

§

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

§

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

§

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

§

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

§

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

§

COMMAND_LONG(COMMAND_LONG_DATA)

§

GPS2_RAW(GPS2_RAW_DATA)

§

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

§

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

§

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

§

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

§

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

§

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

§

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

§

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

§

SCALED_IMU3(SCALED_IMU3_DATA)

§

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

§

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

§

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

§

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

§

VIBRATION(VIBRATION_DATA)

§

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

§

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

§

AIS_VESSEL(AIS_VESSEL_DATA)

§

ATTITUDE(ATTITUDE_DATA)

§

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

§

REQUEST_EVENT(REQUEST_EVENT_DATA)

§

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

§

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

§

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

§

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

§

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

§

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

§

HIGHRES_IMU(HIGHRES_IMU_DATA)

§

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

§

PLAY_TUNE(PLAY_TUNE_DATA)

§

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

§

GPS2_RTK(GPS2_RTK_DATA)

§

LOGGING_DATA(LOGGING_DATA_DATA)

§

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

§

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

§

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

§

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

§

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

§

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

§

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

§

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

§

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

§

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

§

RAW_IMU(RAW_IMU_DATA)

§

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

§

CAN_FRAME(CAN_FRAME_DATA)

§

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

§

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

§

RAW_RPM(RAW_RPM_DATA)

§

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

§

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

§

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

§

GPS_INPUT(GPS_INPUT_DATA)

§

SETUP_SIGNING(SETUP_SIGNING_DATA)

§

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

§

SCALED_IMU2(SCALED_IMU2_DATA)

§

HIGH_LATENCY(HIGH_LATENCY_DATA)

§

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

§

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

§

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

§

MISSION_REQUEST(MISSION_REQUEST_DATA)

§

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

§

MISSION_COUNT(MISSION_COUNT_DATA)

§

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

§

COLLISION(COLLISION_DATA)

§

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

§

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

§

SIM_STATE(SIM_STATE_DATA)

§

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

§

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

§

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

§

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

§

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

§

SCALED_IMU(SCALED_IMU_DATA)

§

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

§

GPS_RTK(GPS_RTK_DATA)

§

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

§

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

§

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

§

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

§

MEMORY_VECT(MEMORY_VECT_DATA)

§

EVENT(EVENT_DATA)

§

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

§

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

§

GPS_RAW_INT(GPS_RAW_INT_DATA)

§

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

§

PARAM_SET(PARAM_SET_DATA)

§

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

§

FENCE_STATUS(FENCE_STATUS_DATA)

§

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

§

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

§

PARAM_VALUE(PARAM_VALUE_DATA)

§

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

§

CANFD_FRAME(CANFD_FRAME_DATA)

§

VFR_HUD(VFR_HUD_DATA)

§

DATA_STREAM(DATA_STREAM_DATA)

§

DEBUG_VECT(DEBUG_VECT_DATA)

§

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

§

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

§

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

§

HIL_GPS(HIL_GPS_DATA)

§

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

§

STATUSTEXT(STATUSTEXT_DATA)

§

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

§

BATTERY_STATUS(BATTERY_STATUS_DATA)

§

COMMAND_ACK(COMMAND_ACK_DATA)

§

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

§

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

§

SYSTEM_TIME(SYSTEM_TIME_DATA)

§

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

§

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

§

LOG_ENTRY(LOG_ENTRY_DATA)

§

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

§

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

§

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

§

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

§

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

§

EFI_STATUS(EFI_STATUS_DATA)

§

SCALED_PRESSURE3(SCALED_PRESSURE3_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 + SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA), + GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA), + COMMAND_ACK(COMMAND_ACK_DATA), + TERRAIN_REPORT(TERRAIN_REPORT_DATA), + PARAM_EXT_ACK(PARAM_EXT_ACK_DATA), +

}

Variants§

§

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

§

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

§

RADIO_STATUS(RADIO_STATUS_DATA)

§

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

§

REQUEST_EVENT(REQUEST_EVENT_DATA)

§

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

§

COLLISION(COLLISION_DATA)

§

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

§

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

§

LOGGING_ACK(LOGGING_ACK_DATA)

§

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

§

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

§

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

§

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

§

PING(PING_DATA)

§

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

§

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

§

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

§

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

§

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

§

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

§

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

§

MISSION_COUNT(MISSION_COUNT_DATA)

§

CANFD_FRAME(CANFD_FRAME_DATA)

§

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

§

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

§

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

§

PARAM_VALUE(PARAM_VALUE_DATA)

§

COMMAND_LONG(COMMAND_LONG_DATA)

§

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

§

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

§

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

§

PARAM_SET(PARAM_SET_DATA)

§

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

§

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

§

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

§

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

§

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

§

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

§

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

§

HIL_GPS(HIL_GPS_DATA)

§

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

§

MISSION_ACK(MISSION_ACK_DATA)

§

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

§

EVENT(EVENT_DATA)

§

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

§

MEMORY_VECT(MEMORY_VECT_DATA)

§

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

§

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

§

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

§

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

§

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

§

RC_CHANNELS(RC_CHANNELS_DATA)

§

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

§

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

§

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

§

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

§

TIMESYNC(TIMESYNC_DATA)

§

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

§

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

§

GPS_RTK(GPS_RTK_DATA)

§

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

§

ESC_STATUS(ESC_STATUS_DATA)

§

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

§

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

§

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

§

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

§

HEARTBEAT(HEARTBEAT_DATA)

§

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

§

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

§

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

§

VFR_HUD(VFR_HUD_DATA)

§

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

§

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

§

MISSION_ITEM(MISSION_ITEM_DATA)

§

LOG_DATA(LOG_DATA_DATA)

§

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

§

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

§

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

§

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

§

HIL_SENSOR(HIL_SENSOR_DATA)

§

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

§

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

§

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

§

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

§

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

§

LOG_ERASE(LOG_ERASE_DATA)

§

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

§

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

§

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

§

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

§

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

§

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

§

TUNNEL(TUNNEL_DATA)

§

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

§

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

§

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

§

SIM_STATE(SIM_STATE_DATA)

§

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

§

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

§

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

§

PLAY_TUNE(PLAY_TUNE_DATA)

§

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

§

ATTITUDE(ATTITUDE_DATA)

§

MISSION_CURRENT(MISSION_CURRENT_DATA)

§

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

§

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

§

ESC_INFO(ESC_INFO_DATA)

§

SCALED_IMU2(SCALED_IMU2_DATA)

§

EFI_STATUS(EFI_STATUS_DATA)

§

AIS_VESSEL(AIS_VESSEL_DATA)

§

POWER_STATUS(POWER_STATUS_DATA)

§

ODOMETRY(ODOMETRY_DATA)

§

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

§

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

§

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

§

WINCH_STATUS(WINCH_STATUS_DATA)

§

SCALED_IMU(SCALED_IMU_DATA)

§

GPS_RAW_INT(GPS_RAW_INT_DATA)

§

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

§

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

§

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

§

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

§

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

§

GPS2_RTK(GPS2_RTK_DATA)

§

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

§

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

§

HIGHRES_IMU(HIGHRES_IMU_DATA)

§

BATTERY_STATUS(BATTERY_STATUS_DATA)

§

WIND_COV(WIND_COV_DATA)

§

HOME_POSITION(HOME_POSITION_DATA)

§

V2_EXTENSION(V2_EXTENSION_DATA)

§

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

§

MISSION_REQUEST(MISSION_REQUEST_DATA)

§

DEBUG(DEBUG_DATA)

§

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

§

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

§

HIGH_LATENCY(HIGH_LATENCY_DATA)

§

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

§

LOG_ENTRY(LOG_ENTRY_DATA)

§

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

§

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

§

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

§

AUTH_KEY(AUTH_KEY_DATA)

§

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

§

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

§

SYSTEM_TIME(SYSTEM_TIME_DATA)

§

TERRAIN_DATA(TERRAIN_DATA_DATA)

§

DATA_STREAM(DATA_STREAM_DATA)

§

LANDING_TARGET(LANDING_TARGET_DATA)

§

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

§

GPS_STATUS(GPS_STATUS_DATA)

§

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

§

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

§

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

§

CAN_FRAME(CAN_FRAME_DATA)

§

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

§

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

§

RAW_RPM(RAW_RPM_DATA)

§

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

§

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

§

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

§

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

§

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

§

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

§

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

§

SET_MODE(SET_MODE_DATA)

§

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

§

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

§

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

§

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

§

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

§

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

§

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

§

GPS2_RAW(GPS2_RAW_DATA)

§

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

§

FENCE_STATUS(FENCE_STATUS_DATA)

§

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

§

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

§

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

§

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

§

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

§

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

§

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

§

COMMAND_INT(COMMAND_INT_DATA)

§

DEBUG_VECT(DEBUG_VECT_DATA)

§

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

§

GPS_INPUT(GPS_INPUT_DATA)

§

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

§

RAW_IMU(RAW_IMU_DATA)

§

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

§

HIL_STATE(HIL_STATE_DATA)

§

SCALED_IMU3(SCALED_IMU3_DATA)

§

STATUSTEXT(STATUSTEXT_DATA)

§

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

§

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

§

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

§

SYS_STATUS(SYS_STATUS_DATA)

§

HIL_CONTROLS(HIL_CONTROLS_DATA)

§

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

§

SETUP_SIGNING(SETUP_SIGNING_DATA)

§

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

§

LOGGING_DATA(LOGGING_DATA_DATA)

§

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

§

ALTITUDE(ALTITUDE_DATA)

§

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

§

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

§

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

§

VIBRATION(VIBRATION_DATA)

§

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

§

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

§

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

§

RAW_PRESSURE(RAW_PRESSURE_DATA)

§

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

§

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

§

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

§

COMMAND_ACK(COMMAND_ACK_DATA)

§

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

§

PARAM_EXT_ACK(PARAM_EXT_ACK_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 93412b7594..a655baad58 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,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/common/struct.AisFlags.html b/mavlink/common/struct.AisFlags.html index b8f6e849d5..a0010e16db 100644 --- a/mavlink/common/struct.AisFlags.html +++ b/mavlink/common/struct.AisFlags.html @@ -59,14 +59,14 @@
§Safety
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 +

§

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§

§

impl Freeze for AisFlags

§

impl RefUnwindSafe for AisFlags

§

impl Send for AisFlags

§

impl Sync for AisFlags

§

impl Unpin for AisFlags

§

impl UnwindSafe for AisFlags

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 e24051ceaf..1c30df303f 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.

+
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 @@ -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§

§

impl Freeze for AttitudeTargetTypemask

§

impl RefUnwindSafe for AttitudeTargetTypemask

§

impl Send for AttitudeTargetTypemask

§

impl Sync for AttitudeTargetTypemask

§

impl Unpin for AttitudeTargetTypemask

§

impl UnwindSafe for AttitudeTargetTypemask

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§

§

impl Freeze for AttitudeTargetTypemask

§

impl RefUnwindSafe for AttitudeTargetTypemask

§

impl Send for AttitudeTargetTypemask

§

impl Sync for AttitudeTargetTypemask

§

impl Unpin for AttitudeTargetTypemask

§

impl UnwindSafe for AttitudeTargetTypemask

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 39e21adc04..cb9a5566bc 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§

§

impl Freeze for CameraCapFlags

§

impl RefUnwindSafe for CameraCapFlags

§

impl Send for CameraCapFlags

§

impl Sync for CameraCapFlags

§

impl Unpin for CameraCapFlags

§

impl UnwindSafe for CameraCapFlags

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§

§

impl Freeze for CameraCapFlags

§

impl RefUnwindSafe for CameraCapFlags

§

impl Send for CameraCapFlags

§

impl Sync for CameraCapFlags

§

impl Unpin for CameraCapFlags

§

impl UnwindSafe for CameraCapFlags

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 f1ee153597..6dcb2697c8 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 +

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,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 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.

+
§

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§

§

impl Freeze for EscFailureFlags

§

impl RefUnwindSafe for EscFailureFlags

§

impl Send for EscFailureFlags

§

impl Sync for EscFailureFlags

§

impl Unpin for EscFailureFlags

§

impl UnwindSafe for EscFailureFlags

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.EstimatorStatusFlags.html b/mavlink/common/struct.EstimatorStatusFlags.html index f10a0eb849..0df7f59052 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 +

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§

§

impl Freeze for EstimatorStatusFlags

§

impl RefUnwindSafe for EstimatorStatusFlags

§

impl Send for EstimatorStatusFlags

§

impl Sync for EstimatorStatusFlags

§

impl Unpin for EstimatorStatusFlags

§

impl UnwindSafe for EstimatorStatusFlags

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§

§

impl Freeze for EstimatorStatusFlags

§

impl RefUnwindSafe for EstimatorStatusFlags

§

impl Send for EstimatorStatusFlags

§

impl Sync for EstimatorStatusFlags

§

impl Unpin for EstimatorStatusFlags

§

impl UnwindSafe for EstimatorStatusFlags

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 f3455e2f7c..a425cccf08 100644 --- a/mavlink/common/struct.GimbalDeviceCapFlags.html +++ b/mavlink/common/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.

+
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 +

§

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§

§

impl Freeze for GimbalDeviceCapFlags

§

impl RefUnwindSafe for GimbalDeviceCapFlags

§

impl Send for GimbalDeviceCapFlags

§

impl Sync for GimbalDeviceCapFlags

§

impl Unpin for GimbalDeviceCapFlags

§

impl UnwindSafe for GimbalDeviceCapFlags

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§

§

impl Freeze for GimbalDeviceCapFlags

§

impl RefUnwindSafe for GimbalDeviceCapFlags

§

impl Send for GimbalDeviceCapFlags

§

impl Sync for GimbalDeviceCapFlags

§

impl Unpin for GimbalDeviceCapFlags

§

impl UnwindSafe for GimbalDeviceCapFlags

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 0b897bfaca..6b0a9b313e 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§

§

impl Freeze for GimbalDeviceErrorFlags

§

impl RefUnwindSafe for GimbalDeviceErrorFlags

§

impl Send for GimbalDeviceErrorFlags

§

impl Sync for GimbalDeviceErrorFlags

§

impl Unpin for GimbalDeviceErrorFlags

§

impl UnwindSafe for GimbalDeviceErrorFlags

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§

§

impl Freeze for GimbalDeviceErrorFlags

§

impl RefUnwindSafe for GimbalDeviceErrorFlags

§

impl Send for GimbalDeviceErrorFlags

§

impl Sync for GimbalDeviceErrorFlags

§

impl Unpin for GimbalDeviceErrorFlags

§

impl UnwindSafe for GimbalDeviceErrorFlags

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 82a48b9da9..d629313066 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.

-
§

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 +

§

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§

§

impl Freeze for GimbalDeviceFlags

§

impl RefUnwindSafe for GimbalDeviceFlags

§

impl Send for GimbalDeviceFlags

§

impl Sync for GimbalDeviceFlags

§

impl Unpin for GimbalDeviceFlags

§

impl UnwindSafe for GimbalDeviceFlags

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§

§

impl Freeze for GimbalDeviceFlags

§

impl RefUnwindSafe for GimbalDeviceFlags

§

impl Send for GimbalDeviceFlags

§

impl Sync for GimbalDeviceFlags

§

impl Unpin for GimbalDeviceFlags

§

impl UnwindSafe for GimbalDeviceFlags

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 a61f99772e..1d312971ab 100644 --- a/mavlink/common/struct.GimbalManagerCapFlags.html +++ b/mavlink/common/struct.GimbalManagerCapFlags.html @@ -56,12 +56,12 @@
§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.

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, @@ -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§

§

impl Freeze for GimbalManagerCapFlags

§

impl RefUnwindSafe for GimbalManagerCapFlags

§

impl Send for GimbalManagerCapFlags

§

impl Sync for GimbalManagerCapFlags

§

impl Unpin for GimbalManagerCapFlags

§

impl UnwindSafe for GimbalManagerCapFlags

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§

§

impl Freeze for GimbalManagerCapFlags

§

impl RefUnwindSafe for GimbalManagerCapFlags

§

impl Send for GimbalManagerCapFlags

§

impl Sync for GimbalManagerCapFlags

§

impl Unpin for GimbalManagerCapFlags

§

impl UnwindSafe for GimbalManagerCapFlags

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 c1d5a3acfc..b242733711 100644 --- a/mavlink/common/struct.GpsInputIgnoreFlags.html +++ b/mavlink/common/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§

§

impl Freeze for GpsInputIgnoreFlags

§

impl RefUnwindSafe for GpsInputIgnoreFlags

§

impl Send for GpsInputIgnoreFlags

§

impl Sync for GpsInputIgnoreFlags

§

impl Unpin for GpsInputIgnoreFlags

§

impl UnwindSafe for GpsInputIgnoreFlags

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§

§

impl Freeze for GpsInputIgnoreFlags

§

impl RefUnwindSafe for GpsInputIgnoreFlags

§

impl Send for GpsInputIgnoreFlags

§

impl Sync for GpsInputIgnoreFlags

§

impl Unpin for GpsInputIgnoreFlags

§

impl UnwindSafe for GpsInputIgnoreFlags

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.HighresImuUpdatedFlags.html b/mavlink/common/struct.HighresImuUpdatedFlags.html index f587021e8b..b65329f715 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 + 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§

§

impl Freeze for HighresImuUpdatedFlags

§

impl RefUnwindSafe for HighresImuUpdatedFlags

§

impl Send for HighresImuUpdatedFlags

§

impl Sync for HighresImuUpdatedFlags

§

impl Unpin for HighresImuUpdatedFlags

§

impl UnwindSafe for HighresImuUpdatedFlags

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§

§

impl Freeze for HighresImuUpdatedFlags

§

impl RefUnwindSafe for HighresImuUpdatedFlags

§

impl Send for HighresImuUpdatedFlags

§

impl Sync for HighresImuUpdatedFlags

§

impl Unpin for HighresImuUpdatedFlags

§

impl UnwindSafe for HighresImuUpdatedFlags

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 155134b078..82dff64dfe 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.

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 @@ -76,7 +76,7 @@
§Safety
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§

§

impl Freeze for HilSensorUpdatedFlags

§

impl RefUnwindSafe for HilSensorUpdatedFlags

§

impl Send for HilSensorUpdatedFlags

§

impl Sync for HilSensorUpdatedFlags

§

impl Unpin for HilSensorUpdatedFlags

§

impl UnwindSafe for HilSensorUpdatedFlags

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

§

impl Freeze for HilSensorUpdatedFlags

§

impl RefUnwindSafe for HilSensorUpdatedFlags

§

impl Send for HilSensorUpdatedFlags

§

impl Sync for HilSensorUpdatedFlags

§

impl Unpin for HilSensorUpdatedFlags

§

impl UnwindSafe for HilSensorUpdatedFlags

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 9f4b996dc0..ab05003ad7 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.

+
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 +

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§

§

impl Freeze for HlFailureFlag

§

impl RefUnwindSafe for HlFailureFlag

§

impl Send for HlFailureFlag

§

impl Sync for HlFailureFlag

§

impl Unpin for HlFailureFlag

§

impl UnwindSafe for HlFailureFlag

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§

§

impl Freeze for HlFailureFlag

§

impl RefUnwindSafe for HlFailureFlag

§

impl Send for HlFailureFlag

§

impl Sync for HlFailureFlag

§

impl Unpin for HlFailureFlag

§

impl UnwindSafe for HlFailureFlag

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 1bdc3800d6..2475a73f77 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.

-
§

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.

-
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,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§

§

impl Freeze for MavEventCurrentSequenceFlags

§

impl RefUnwindSafe for MavEventCurrentSequenceFlags

§

impl Send for MavEventCurrentSequenceFlags

§

impl Sync for MavEventCurrentSequenceFlags

§

impl Unpin for MavEventCurrentSequenceFlags

§

impl UnwindSafe for MavEventCurrentSequenceFlags

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§

§

impl Freeze for MavEventCurrentSequenceFlags

§

impl RefUnwindSafe for MavEventCurrentSequenceFlags

§

impl Send for MavEventCurrentSequenceFlags

§

impl Sync for MavEventCurrentSequenceFlags

§

impl Unpin for MavEventCurrentSequenceFlags

§

impl UnwindSafe for MavEventCurrentSequenceFlags

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 88227d96be..d3b7d59474 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.

+
§

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 +

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 @@ -76,7 +76,7 @@
§Safety
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§

§

impl Freeze for MavGeneratorStatusFlag

§

impl RefUnwindSafe for MavGeneratorStatusFlag

§

impl Send for MavGeneratorStatusFlag

§

impl Sync for MavGeneratorStatusFlag

§

impl Unpin for MavGeneratorStatusFlag

§

impl UnwindSafe for MavGeneratorStatusFlag

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

§

impl Freeze for MavGeneratorStatusFlag

§

impl RefUnwindSafe for MavGeneratorStatusFlag

§

impl Send for MavGeneratorStatusFlag

§

impl Sync for MavGeneratorStatusFlag

§

impl Unpin for MavGeneratorStatusFlag

§

impl UnwindSafe for MavGeneratorStatusFlag

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 ad5116c364..4832d2fc03 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.

+
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.

+
§

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,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 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.

+
§

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§

§

impl Freeze for MavModeFlag

§

impl RefUnwindSafe for MavModeFlag

§

impl Send for MavModeFlag

§

impl Sync for MavModeFlag

§

impl Unpin for MavModeFlag

§

impl UnwindSafe for MavModeFlag

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.MavPowerStatus.html b/mavlink/common/struct.MavPowerStatus.html index 7b9edf06b1..33cbcb748e 100644 --- a/mavlink/common/struct.MavPowerStatus.html +++ b/mavlink/common/struct.MavPowerStatus.html @@ -57,16 +57,16 @@
§Safety

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.

+
§

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§

§

impl Freeze for MavPowerStatus

§

impl RefUnwindSafe for MavPowerStatus

§

impl Send for MavPowerStatus

§

impl Sync for MavPowerStatus

§

impl Unpin for MavPowerStatus

§

impl UnwindSafe for MavPowerStatus

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§

§

impl Freeze for MavPowerStatus

§

impl RefUnwindSafe for MavPowerStatus

§

impl Send for MavPowerStatus

§

impl Sync for MavPowerStatus

§

impl Unpin for MavPowerStatus

§

impl UnwindSafe for MavPowerStatus

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 08f38ae5b7..8ba67b9ca3 100644 --- a/mavlink/common/struct.MavProtocolCapability.html +++ b/mavlink/common/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.

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§

§

impl Freeze for MavProtocolCapability

§

impl RefUnwindSafe for MavProtocolCapability

§

impl Send for MavProtocolCapability

§

impl Sync for MavProtocolCapability

§

impl Unpin for MavProtocolCapability

§

impl UnwindSafe for MavProtocolCapability

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§

§

impl Freeze for MavProtocolCapability

§

impl RefUnwindSafe for MavProtocolCapability

§

impl Send for MavProtocolCapability

§

impl Sync for MavProtocolCapability

§

impl Unpin for MavProtocolCapability

§

impl UnwindSafe for MavProtocolCapability

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 28e478fd2b..c2a2918f51 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.

+
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§

§

impl Freeze for MavSysStatusSensor

§

impl RefUnwindSafe for MavSysStatusSensor

§

impl Send for MavSysStatusSensor

§

impl Sync for MavSysStatusSensor

§

impl Unpin for MavSysStatusSensor

§

impl UnwindSafe for MavSysStatusSensor

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§

§

impl Freeze for MavSysStatusSensor

§

impl RefUnwindSafe for MavSysStatusSensor

§

impl Send for MavSysStatusSensor

§

impl Sync for MavSysStatusSensor

§

impl Unpin for MavSysStatusSensor

§

impl UnwindSafe for MavSysStatusSensor

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 9cfd5e97dc..f74d35fa31 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.

+
§

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 @@ -76,7 +76,7 @@
§Safety
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§

§

impl Freeze for MavWinchStatusFlag

§

impl RefUnwindSafe for MavWinchStatusFlag

§

impl Send for MavWinchStatusFlag

§

impl Sync for MavWinchStatusFlag

§

impl Unpin for MavWinchStatusFlag

§

impl UnwindSafe for MavWinchStatusFlag

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

§

impl Freeze for MavWinchStatusFlag

§

impl RefUnwindSafe for MavWinchStatusFlag

§

impl Send for MavWinchStatusFlag

§

impl Sync for MavWinchStatusFlag

§

impl Unpin for MavWinchStatusFlag

§

impl UnwindSafe for MavWinchStatusFlag

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 4cfbf6de33..f7532c1988 100644 --- a/mavlink/common/struct.PositionTargetTypemask.html +++ b/mavlink/common/struct.PositionTargetTypemask.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 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.

+
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 +

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.

+ 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 @@ -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§

§

impl Freeze for PositionTargetTypemask

§

impl RefUnwindSafe for PositionTargetTypemask

§

impl Send for PositionTargetTypemask

§

impl Sync for PositionTargetTypemask

§

impl Unpin for PositionTargetTypemask

§

impl UnwindSafe for PositionTargetTypemask

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§

§

impl Freeze for PositionTargetTypemask

§

impl RefUnwindSafe for PositionTargetTypemask

§

impl Send for PositionTargetTypemask

§

impl Sync for PositionTargetTypemask

§

impl Unpin for PositionTargetTypemask

§

impl UnwindSafe for PositionTargetTypemask

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 7ec48739a2..614ffddb7e 100644 --- a/mavlink/common/struct.SerialControlFlag.html +++ b/mavlink/common/struct.SerialControlFlag.html @@ -57,16 +57,16 @@
§Safety

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.

+
§

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 @@ -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§

§

impl Freeze for SerialControlFlag

§

impl RefUnwindSafe for SerialControlFlag

§

impl Send for SerialControlFlag

§

impl Sync for SerialControlFlag

§

impl Unpin for SerialControlFlag

§

impl UnwindSafe for SerialControlFlag

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§

§

impl Freeze for SerialControlFlag

§

impl RefUnwindSafe for SerialControlFlag

§

impl Send for SerialControlFlag

§

impl Sync for SerialControlFlag

§

impl Unpin for SerialControlFlag

§

impl UnwindSafe for SerialControlFlag

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.TuneFormat.html b/mavlink/common/struct.TuneFormat.html index 06b6c76715..b7167784e5 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 @@ -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§

§

impl Freeze for TuneFormat

§

impl RefUnwindSafe for TuneFormat

§

impl Send for TuneFormat

§

impl Sync for TuneFormat

§

impl Unpin for TuneFormat

§

impl UnwindSafe for TuneFormat

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§

§

impl Freeze for TuneFormat

§

impl RefUnwindSafe for TuneFormat

§

impl Send for TuneFormat

§

impl Sync for TuneFormat

§

impl Unpin for TuneFormat

§

impl UnwindSafe for TuneFormat

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 ca1715eee7..22c96477b6 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.

+
§

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,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 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.

+
§

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§

§

impl Freeze for UtmDataAvailFlags

§

impl RefUnwindSafe for UtmDataAvailFlags

§

impl Send for UtmDataAvailFlags

§

impl Sync for UtmDataAvailFlags

§

impl Unpin for UtmDataAvailFlags

§

impl UnwindSafe for UtmDataAvailFlags

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/enum.MavMessage.html b/mavlink/uavionix/enum.MavMessage.html index 8418e14f80..2016bae5db 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 GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA), +
Show 224 variants LOG_ENTRY(LOG_ENTRY_DATA), + MANUAL_CONTROL(MANUAL_CONTROL_DATA), + MISSION_CURRENT(MISSION_CURRENT_DATA), + RADIO_STATUS(RADIO_STATUS_DATA), + PARAM_VALUE(PARAM_VALUE_DATA), + LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA), + POWER_STATUS(POWER_STATUS_DATA), + PARAM_SET(PARAM_SET_DATA), + SCALED_IMU3(SCALED_IMU3_DATA), + STORAGE_INFORMATION(STORAGE_INFORMATION_DATA), + GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA), + PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA), + PARAM_MAP_RC(PARAM_MAP_RC_DATA), + COMMAND_INT(COMMAND_INT_DATA), + COMMAND_LONG(COMMAND_LONG_DATA), + OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA), TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA), + AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA), + CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA), RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA), - PARAM_EXT_SET(PARAM_EXT_SET_DATA), - ATTITUDE(ATTITUDE_DATA), - PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA), - HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA), VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA), + SYS_STATUS(SYS_STATUS_DATA), + FENCE_STATUS(FENCE_STATUS_DATA), + HOME_POSITION(HOME_POSITION_DATA), + ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA), SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA), - SCALED_IMU3(SCALED_IMU3_DATA), - LOG_ERASE(LOG_ERASE_DATA), - LOG_REQUEST_END(LOG_REQUEST_END_DATA), - GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA), - COMMAND_CANCEL(COMMAND_CANCEL_DATA), - ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA), - ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA), - MISSION_ACK(MISSION_ACK_DATA), - EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA), - ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA), - LOGGING_ACK(LOGGING_ACK_DATA), - CAMERA_INFORMATION(CAMERA_INFORMATION_DATA), - RADIO_STATUS(RADIO_STATUS_DATA), - GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA), - CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA), - PLAY_TUNE_V2(PLAY_TUNE_V2_DATA), - LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA), - CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA), - POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA), - LOG_DATA(LOG_DATA_DATA), - GENERATOR_STATUS(GENERATOR_STATUS_DATA), - DISTANCE_SENSOR(DISTANCE_SENSOR_DATA), - VFR_HUD(VFR_HUD_DATA), - STATUSTEXT(STATUSTEXT_DATA), - BATTERY_STATUS(BATTERY_STATUS_DATA), - CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA), - ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA), - OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA), - HIL_CONTROLS(HIL_CONTROLS_DATA), - REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA), - ALTITUDE(ALTITUDE_DATA), - TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA), - SCALED_PRESSURE3(SCALED_PRESSURE3_DATA), - AIS_VESSEL(AIS_VESSEL_DATA), - GPS_INJECT_DATA(GPS_INJECT_DATA_DATA), - PING(PING_DATA), - GPS2_RAW(GPS2_RAW_DATA), - COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA), - PLAY_TUNE(PLAY_TUNE_DATA), MISSION_COUNT(MISSION_COUNT_DATA), - EFI_STATUS(EFI_STATUS_DATA), - RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA), - UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA), - LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA), - HOME_POSITION(HOME_POSITION_DATA), - SETUP_SIGNING(SETUP_SIGNING_DATA), - MEMORY_VECT(MEMORY_VECT_DATA), - GPS_RTCM_DATA(GPS_RTCM_DATA_DATA), - WINCH_STATUS(WINCH_STATUS_DATA), - DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA), - UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA), + MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA), TUNNEL(TUNNEL_DATA), - CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA), - ESC_STATUS(ESC_STATUS_DATA), - HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA), - CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA), - PROTOCOL_VERSION(PROTOCOL_VERSION_DATA), - REQUEST_EVENT(REQUEST_EVENT_DATA), - GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA), - OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA), - WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA), - GPS_STATUS(GPS_STATUS_DATA), - COMMAND_LONG(COMMAND_LONG_DATA), - GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA), - CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA), - BUTTON_CHANGE(BUTTON_CHANGE_DATA), - LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA), - HIGH_LATENCY(HIGH_LATENCY_DATA), - LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA), - SET_MODE(SET_MODE_DATA), - MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA), - MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA), - V2_EXTENSION(V2_EXTENSION_DATA), + SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA), OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA), + GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA), + GPS_RTCM_DATA(GPS_RTCM_DATA_DATA), + ESC_INFO(ESC_INFO_DATA), + ESC_STATUS(ESC_STATUS_DATA), + SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA), + TERRAIN_DATA(TERRAIN_DATA_DATA), + ADSB_VEHICLE(ADSB_VEHICLE_DATA), + CELLULAR_STATUS(CELLULAR_STATUS_DATA), + VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA), + TERRAIN_CHECK(TERRAIN_CHECK_DATA), + MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA), + UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA), + DEBUG_VECT(DEBUG_VECT_DATA), + REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA), + RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA), + PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA), CELLULAR_CONFIG(CELLULAR_CONFIG_DATA), - FOLLOW_TARGET(FOLLOW_TARGET_DATA), - MANUAL_SETPOINT(MANUAL_SETPOINT_DATA), - UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA), - DEBUG(DEBUG_DATA), - SET_HOME_POSITION(SET_HOME_POSITION_DATA), - FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA), - CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA), + PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA), + OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA), + ATTITUDE(ATTITUDE_DATA), + POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA), CAMERA_TRIGGER(CAMERA_TRIGGER_DATA), + SET_MODE(SET_MODE_DATA), + COMMAND_ACK(COMMAND_ACK_DATA), + MISSION_ACK(MISSION_ACK_DATA), + LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA), + NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA), + MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA), + SCALED_PRESSURE2(SCALED_PRESSURE2_DATA), + DISTANCE_SENSOR(DISTANCE_SENSOR_DATA), + OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA), + VIBRATION(VIBRATION_DATA), + GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA), + MISSION_ITEM_INT(MISSION_ITEM_INT_DATA), + TIMESYNC(TIMESYNC_DATA), AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA), - MISSION_ITEM(MISSION_ITEM_DATA), - MISSION_REQUEST(MISSION_REQUEST_DATA), - OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA), - SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA), - HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA), - ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA), - HIGHRES_IMU(HIGHRES_IMU_DATA), - SYS_STATUS(SYS_STATUS_DATA), - ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA), - PARAM_MAP_RC(PARAM_MAP_RC_DATA), - CAN_FRAME(CAN_FRAME_DATA), - ESC_INFO(ESC_INFO_DATA), RESOURCE_REQUEST(RESOURCE_REQUEST_DATA), - OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA), + RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA), SYSTEM_TIME(SYSTEM_TIME_DATA), - OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA), - NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA), + PARAM_EXT_SET(PARAM_EXT_SET_DATA), GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA), + SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA), + BATTERY_STATUS(BATTERY_STATUS_DATA), + SETUP_SIGNING(SETUP_SIGNING_DATA), + HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA), + UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA), + ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA), + HIGH_LATENCY(HIGH_LATENCY_DATA), + CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA), + LOG_REQUEST_END(LOG_REQUEST_END_DATA), + GENERATOR_STATUS(GENERATOR_STATUS_DATA), + HIL_STATE(HIL_STATE_DATA), + GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA), + SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA), + MISSION_REQUEST(MISSION_REQUEST_DATA), + SIM_STATE(SIM_STATE_DATA), + MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA), LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA), - VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA), - GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA), - MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA), - POWER_STATUS(POWER_STATUS_DATA), - LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA), - ODOMETRY(ODOMETRY_DATA), - TERRAIN_CHECK(TERRAIN_CHECK_DATA), - CELLULAR_STATUS(CELLULAR_STATUS_DATA), - COMMAND_INT(COMMAND_INT_DATA), + PARAM_EXT_ACK(PARAM_EXT_ACK_DATA), + FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA), + FOLLOW_TARGET(FOLLOW_TARGET_DATA), + COMPONENT_METADATA(COMPONENT_METADATA_DATA), + PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA), + LOGGING_ACK(LOGGING_ACK_DATA), + CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA), RAW_RPM(RAW_RPM_DATA), - MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA), - TERRAIN_REQUEST(TERRAIN_REQUEST_DATA), - ATTITUDE_TARGET(ATTITUDE_TARGET_DATA), - RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA), - VIBRATION(VIBRATION_DATA), + HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA), + SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA), + PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA), + WINCH_STATUS(WINCH_STATUS_DATA), + MANUAL_SETPOINT(MANUAL_SETPOINT_DATA), + LOG_DATA(LOG_DATA_DATA), + OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA), + ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA), + MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA), SERIAL_CONTROL(SERIAL_CONTROL_DATA), - GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA), - PARAM_VALUE(PARAM_VALUE_DATA), - MISSION_ITEM_INT(MISSION_ITEM_INT_DATA), + ODOMETRY(ODOMETRY_DATA), + DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA), + ATTITUDE_TARGET(ATTITUDE_TARGET_DATA), + CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA), LOGGING_DATA(LOGGING_DATA_DATA), - TERRAIN_DATA(TERRAIN_DATA_DATA), - SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA), - COMPONENT_METADATA(COMPONENT_METADATA_DATA), - AUTH_KEY(AUTH_KEY_DATA), - COMMAND_ACK(COMMAND_ACK_DATA), - ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA), - NAMED_VALUE_INT(NAMED_VALUE_INT_DATA), - DEBUG_VECT(DEBUG_VECT_DATA), - SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA), - SCALED_PRESSURE(SCALED_PRESSURE_DATA), - SCALED_IMU2(SCALED_IMU2_DATA), - SCALED_IMU(SCALED_IMU_DATA), + GPS_RTK(GPS_RTK_DATA), + CAMERA_SETTINGS(CAMERA_SETTINGS_DATA), + HEARTBEAT(HEARTBEAT_DATA), VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA), - UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA), - HIGH_LATENCY2(HIGH_LATENCY2_DATA), - MANUAL_CONTROL(MANUAL_CONTROL_DATA), - VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA), - OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA), - LANDING_TARGET(LANDING_TARGET_DATA), - SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA), - GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA), - PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA), + PROTOCOL_VERSION(PROTOCOL_VERSION_DATA), + LOG_ERASE(LOG_ERASE_DATA), + LINK_NODE_STATUS(LINK_NODE_STATUS_DATA), + GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA), + GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA), + GPS_RAW_INT(GPS_RAW_INT_DATA), + CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA), + SCALED_IMU2(SCALED_IMU2_DATA), + DEBUG(DEBUG_DATA), EVENT(EVENT_DATA), + DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA), + WIND_COV(WIND_COV_DATA), + SET_HOME_POSITION(SET_HOME_POSITION_DATA), + MAG_CAL_REPORT(MAG_CAL_REPORT_DATA), + GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA), + RC_CHANNELS(RC_CHANNELS_DATA), + CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA), + HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA), SUPPORTED_TUNES(SUPPORTED_TUNES_DATA), - CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA), - LOG_ENTRY(LOG_ENTRY_DATA), - STORAGE_INFORMATION(STORAGE_INFORMATION_DATA), - GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA), - OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA), - MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA), - CAMERA_SETTINGS(CAMERA_SETTINGS_DATA), - DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA), - PARAM_SET(PARAM_SET_DATA), - GPS_RTK(GPS_RTK_DATA), - RAW_IMU(RAW_IMU_DATA), - SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA), - TERRAIN_REPORT(TERRAIN_REPORT_DATA), - PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA), - OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA), - GPS2_RTK(GPS2_RTK_DATA), + HIGH_LATENCY2(HIGH_LATENCY2_DATA), + CAN_FRAME(CAN_FRAME_DATA), OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA), - MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA), - COLLISION(COLLISION_DATA), - HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA), - MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA), - HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA), - ISBD_LINK_STATUS(ISBD_LINK_STATUS_DATA), - GPS_INPUT(GPS_INPUT_DATA), - OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA), - ATT_POS_MOCAP(ATT_POS_MOCAP_DATA), - SIM_STATE(SIM_STATE_DATA), - GPS_RAW_INT(GPS_RAW_INT_DATA), - AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA), - WHEEL_DISTANCE(WHEEL_DISTANCE_DATA), - VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA), + LANDING_TARGET(LANDING_TARGET_DATA), TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA), - MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA), - PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA), - MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA), - UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA), - CANFD_FRAME(CANFD_FRAME_DATA), - MAG_CAL_REPORT(MAG_CAL_REPORT_DATA), - HEARTBEAT(HEARTBEAT_DATA), + ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA), + POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA), + VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA), HIL_GPS(HIL_GPS_DATA), - RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA), - TIMESYNC(TIMESYNC_DATA), - UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA), - FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA), - CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA), + V2_EXTENSION(V2_EXTENSION_DATA), + AUTH_KEY(AUTH_KEY_DATA), + ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA), + RAW_PRESSURE(RAW_PRESSURE_DATA), + GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA), + OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA), + OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA), HIL_SENSOR(HIL_SENSOR_DATA), - SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA), - PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA), - PARAM_EXT_ACK(PARAM_EXT_ACK_DATA), - SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA), - MISSION_CURRENT(MISSION_CURRENT_DATA), - SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA), - LINK_NODE_STATUS(LINK_NODE_STATUS_DATA), + REQUEST_EVENT(REQUEST_EVENT_DATA), + COMMAND_CANCEL(COMMAND_CANCEL_DATA), + MEMORY_VECT(MEMORY_VECT_DATA), + ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA), + COLLISION(COLLISION_DATA), + FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA), + MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA), + CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA), + GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA), + BUTTON_CHANGE(BUTTON_CHANGE_DATA), + UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA), + UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA), + RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA), + AIS_VESSEL(AIS_VESSEL_DATA), + HIL_CONTROLS(HIL_CONTROLS_DATA), + STATUSTEXT(STATUSTEXT_DATA), OPTICAL_FLOW(OPTICAL_FLOW_DATA), - ADSB_VEHICLE(ADSB_VEHICLE_DATA), - CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA), - GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA), - WIND_COV(WIND_COV_DATA), - GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA), - RC_CHANNELS(RC_CHANNELS_DATA), + CAMERA_INFORMATION(CAMERA_INFORMATION_DATA), + PLAY_TUNE_V2(PLAY_TUNE_V2_DATA), + VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA), + UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA), + SCALED_IMU(SCALED_IMU_DATA), + LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA), + TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA), + ATT_POS_MOCAP(ATT_POS_MOCAP_DATA), + EFI_STATUS(EFI_STATUS_DATA), + CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA), + OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA), + GPS_INJECT_DATA(GPS_INJECT_DATA_DATA), + SCALED_PRESSURE3(SCALED_PRESSURE3_DATA), + RAW_IMU(RAW_IMU_DATA), + ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA), + EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA), + ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA), + MISSION_ITEM(MISSION_ITEM_DATA), + SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA), + ISBD_LINK_STATUS(ISBD_LINK_STATUS_DATA), + MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA), + WHEEL_DISTANCE(WHEEL_DISTANCE_DATA), DATA_STREAM(DATA_STREAM_DATA), - HIL_STATE(HIL_STATE_DATA), - ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA), - NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA), - FENCE_STATUS(FENCE_STATUS_DATA), - RAW_PRESSURE(RAW_PRESSURE_DATA), - POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA), - SCALED_PRESSURE2(SCALED_PRESSURE2_DATA), -
}

Variants§

§

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

§

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

§

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

§

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

§

ATTITUDE(ATTITUDE_DATA)

§

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

§

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

§

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

§

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

§

SCALED_IMU3(SCALED_IMU3_DATA)

§

LOG_ERASE(LOG_ERASE_DATA)

§

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

§

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

§

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

§

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

§

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

§

MISSION_ACK(MISSION_ACK_DATA)

§

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

§

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

§

LOGGING_ACK(LOGGING_ACK_DATA)

§

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

§

RADIO_STATUS(RADIO_STATUS_DATA)

§

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

§

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

§

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

§

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

§

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

§

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

§

LOG_DATA(LOG_DATA_DATA)

§

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

§

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

§

VFR_HUD(VFR_HUD_DATA)

§

STATUSTEXT(STATUSTEXT_DATA)

§

BATTERY_STATUS(BATTERY_STATUS_DATA)

§

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

§

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

§

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

§

HIL_CONTROLS(HIL_CONTROLS_DATA)

§

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

§

ALTITUDE(ALTITUDE_DATA)

§

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

§

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

§

AIS_VESSEL(AIS_VESSEL_DATA)

§

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

§

PING(PING_DATA)

§

GPS2_RAW(GPS2_RAW_DATA)

§

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

§

PLAY_TUNE(PLAY_TUNE_DATA)

§

MISSION_COUNT(MISSION_COUNT_DATA)

§

EFI_STATUS(EFI_STATUS_DATA)

§

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

§

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

§

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

§

HOME_POSITION(HOME_POSITION_DATA)

§

SETUP_SIGNING(SETUP_SIGNING_DATA)

§

MEMORY_VECT(MEMORY_VECT_DATA)

§

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

§

WINCH_STATUS(WINCH_STATUS_DATA)

§

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

§

UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA)

§

TUNNEL(TUNNEL_DATA)

§

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

§

ESC_STATUS(ESC_STATUS_DATA)

§

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

§

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

§

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

§

REQUEST_EVENT(REQUEST_EVENT_DATA)

§

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

§

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

§

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

§

GPS_STATUS(GPS_STATUS_DATA)

§

COMMAND_LONG(COMMAND_LONG_DATA)

§

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

§

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

§

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

§

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

§

HIGH_LATENCY(HIGH_LATENCY_DATA)

§

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

§

SET_MODE(SET_MODE_DATA)

§

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

§

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

§

V2_EXTENSION(V2_EXTENSION_DATA)

§

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

§

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

§

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

§

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

§

UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA)

§

DEBUG(DEBUG_DATA)

§

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

§

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

§

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

§

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

§

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

§

MISSION_ITEM(MISSION_ITEM_DATA)

§

MISSION_REQUEST(MISSION_REQUEST_DATA)

§

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

§

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

§

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

§

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

§

HIGHRES_IMU(HIGHRES_IMU_DATA)

§

SYS_STATUS(SYS_STATUS_DATA)

§

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

§

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

§

CAN_FRAME(CAN_FRAME_DATA)

§

ESC_INFO(ESC_INFO_DATA)

§

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

§

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

§

SYSTEM_TIME(SYSTEM_TIME_DATA)

§

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

§

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

§

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

§

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

§

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

§

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

§

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

§

POWER_STATUS(POWER_STATUS_DATA)

§

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

§

ODOMETRY(ODOMETRY_DATA)

§

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

§

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

§

COMMAND_INT(COMMAND_INT_DATA)

§

RAW_RPM(RAW_RPM_DATA)

§

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

§

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

§

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

§

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

§

VIBRATION(VIBRATION_DATA)

§

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

§

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

§

PARAM_VALUE(PARAM_VALUE_DATA)

§

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

§

LOGGING_DATA(LOGGING_DATA_DATA)

§

TERRAIN_DATA(TERRAIN_DATA_DATA)

§

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

§

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

§

AUTH_KEY(AUTH_KEY_DATA)

§

COMMAND_ACK(COMMAND_ACK_DATA)

§

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

§

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

§

DEBUG_VECT(DEBUG_VECT_DATA)

§

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

§

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

§

SCALED_IMU2(SCALED_IMU2_DATA)

§

SCALED_IMU(SCALED_IMU_DATA)

§

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

§

UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA)

§

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

§

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

§

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

§

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

§

LANDING_TARGET(LANDING_TARGET_DATA)

§

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

§

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

§

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

§

EVENT(EVENT_DATA)

§

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

§

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

§

LOG_ENTRY(LOG_ENTRY_DATA)

§

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

§

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

§

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

§

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

§

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

§

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

§

PARAM_SET(PARAM_SET_DATA)

§

GPS_RTK(GPS_RTK_DATA)

§

RAW_IMU(RAW_IMU_DATA)

§

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

§

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

§

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

§

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

§

GPS2_RTK(GPS2_RTK_DATA)

§

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

§

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

§

COLLISION(COLLISION_DATA)

§

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

§

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

§

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

§

GPS_INPUT(GPS_INPUT_DATA)

§

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

§

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

§

SIM_STATE(SIM_STATE_DATA)

§

GPS_RAW_INT(GPS_RAW_INT_DATA)

§

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

§

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

§

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

§

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

§

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

§

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

§

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

§

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

§

CANFD_FRAME(CANFD_FRAME_DATA)

§

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

§

HEARTBEAT(HEARTBEAT_DATA)

§

HIL_GPS(HIL_GPS_DATA)

§

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

§

TIMESYNC(TIMESYNC_DATA)

§

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

§

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

§

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

§

HIL_SENSOR(HIL_SENSOR_DATA)

§

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

§

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

§

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

§

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

§

MISSION_CURRENT(MISSION_CURRENT_DATA)

§

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

§

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

§

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

§

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

§

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

§

WIND_COV(WIND_COV_DATA)

§

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

§

RC_CHANNELS(RC_CHANNELS_DATA)

§

DATA_STREAM(DATA_STREAM_DATA)

§

HIL_STATE(HIL_STATE_DATA)

§

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

§

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

§

FENCE_STATUS(FENCE_STATUS_DATA)

§

RAW_PRESSURE(RAW_PRESSURE_DATA)

§

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

§

SCALED_PRESSURE2(SCALED_PRESSURE2_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 + LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA), + GPS2_RTK(GPS2_RTK_DATA), + MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA), + OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA), + OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA), + CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA), + LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA), + SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA), + CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA), + VFR_HUD(VFR_HUD_DATA), + TERRAIN_REPORT(TERRAIN_REPORT_DATA), + HIGHRES_IMU(HIGHRES_IMU_DATA), + GPS_STATUS(GPS_STATUS_DATA), + UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA), + PING(PING_DATA), + SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA), + CANFD_FRAME(CANFD_FRAME_DATA), + GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA), + TERRAIN_REQUEST(TERRAIN_REQUEST_DATA), + COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA), + ALTITUDE(ALTITUDE_DATA), + GPS_INPUT(GPS_INPUT_DATA), + NAMED_VALUE_INT(NAMED_VALUE_INT_DATA), + HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA), + HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA), + GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA), + SCALED_PRESSURE(SCALED_PRESSURE_DATA), + NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA), + GPS2_RAW(GPS2_RAW_DATA), + WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA), + PLAY_TUNE(PLAY_TUNE_DATA), + MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA), +

}

Variants§

§

LOG_ENTRY(LOG_ENTRY_DATA)

§

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

§

MISSION_CURRENT(MISSION_CURRENT_DATA)

§

RADIO_STATUS(RADIO_STATUS_DATA)

§

PARAM_VALUE(PARAM_VALUE_DATA)

§

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

§

POWER_STATUS(POWER_STATUS_DATA)

§

PARAM_SET(PARAM_SET_DATA)

§

SCALED_IMU3(SCALED_IMU3_DATA)

§

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

§

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

§

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

§

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

§

COMMAND_INT(COMMAND_INT_DATA)

§

COMMAND_LONG(COMMAND_LONG_DATA)

§

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

§

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

§

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

§

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

§

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

§

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

§

SYS_STATUS(SYS_STATUS_DATA)

§

FENCE_STATUS(FENCE_STATUS_DATA)

§

HOME_POSITION(HOME_POSITION_DATA)

§

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

§

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

§

MISSION_COUNT(MISSION_COUNT_DATA)

§

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

§

TUNNEL(TUNNEL_DATA)

§

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

§

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

§

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

§

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

§

ESC_INFO(ESC_INFO_DATA)

§

ESC_STATUS(ESC_STATUS_DATA)

§

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

§

TERRAIN_DATA(TERRAIN_DATA_DATA)

§

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

§

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

§

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

§

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

§

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

§

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

§

DEBUG_VECT(DEBUG_VECT_DATA)

§

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

§

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

§

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

§

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

§

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

§

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

§

ATTITUDE(ATTITUDE_DATA)

§

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

§

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

§

SET_MODE(SET_MODE_DATA)

§

COMMAND_ACK(COMMAND_ACK_DATA)

§

MISSION_ACK(MISSION_ACK_DATA)

§

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

§

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

§

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

§

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

§

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

§

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

§

VIBRATION(VIBRATION_DATA)

§

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

§

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

§

TIMESYNC(TIMESYNC_DATA)

§

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

§

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

§

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

§

SYSTEM_TIME(SYSTEM_TIME_DATA)

§

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

§

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

§

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

§

BATTERY_STATUS(BATTERY_STATUS_DATA)

§

SETUP_SIGNING(SETUP_SIGNING_DATA)

§

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

§

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

§

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

§

HIGH_LATENCY(HIGH_LATENCY_DATA)

§

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

§

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

§

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

§

HIL_STATE(HIL_STATE_DATA)

§

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

§

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

§

MISSION_REQUEST(MISSION_REQUEST_DATA)

§

SIM_STATE(SIM_STATE_DATA)

§

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

§

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

§

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

§

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

§

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

§

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

§

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

§

LOGGING_ACK(LOGGING_ACK_DATA)

§

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

§

RAW_RPM(RAW_RPM_DATA)

§

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

§

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

§

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

§

WINCH_STATUS(WINCH_STATUS_DATA)

§

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

§

LOG_DATA(LOG_DATA_DATA)

§

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

§

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

§

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

§

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

§

ODOMETRY(ODOMETRY_DATA)

§

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

§

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

§

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

§

LOGGING_DATA(LOGGING_DATA_DATA)

§

GPS_RTK(GPS_RTK_DATA)

§

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

§

HEARTBEAT(HEARTBEAT_DATA)

§

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

§

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

§

LOG_ERASE(LOG_ERASE_DATA)

§

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

§

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

§

GPS_RAW_INT(GPS_RAW_INT_DATA)

§

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

§

SCALED_IMU2(SCALED_IMU2_DATA)

§

DEBUG(DEBUG_DATA)

§

EVENT(EVENT_DATA)

§

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

§

WIND_COV(WIND_COV_DATA)

§

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

§

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

§

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

§

RC_CHANNELS(RC_CHANNELS_DATA)

§

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

§

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

§

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

§

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

§

CAN_FRAME(CAN_FRAME_DATA)

§

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

§

LANDING_TARGET(LANDING_TARGET_DATA)

§

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

§

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

§

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

§

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

§

HIL_GPS(HIL_GPS_DATA)

§

V2_EXTENSION(V2_EXTENSION_DATA)

§

AUTH_KEY(AUTH_KEY_DATA)

§

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

§

RAW_PRESSURE(RAW_PRESSURE_DATA)

§

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

§

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

§

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

§

HIL_SENSOR(HIL_SENSOR_DATA)

§

REQUEST_EVENT(REQUEST_EVENT_DATA)

§

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

§

MEMORY_VECT(MEMORY_VECT_DATA)

§

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

§

COLLISION(COLLISION_DATA)

§

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

§

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

§

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

§

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

§

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

§

UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA)

§

UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA)

§

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

§

AIS_VESSEL(AIS_VESSEL_DATA)

§

HIL_CONTROLS(HIL_CONTROLS_DATA)

§

STATUSTEXT(STATUSTEXT_DATA)

§

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

§

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

§

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

§

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

§

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

§

SCALED_IMU(SCALED_IMU_DATA)

§

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

§

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

§

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

§

EFI_STATUS(EFI_STATUS_DATA)

§

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

§

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

§

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

§

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

§

RAW_IMU(RAW_IMU_DATA)

§

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

§

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

§

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

§

MISSION_ITEM(MISSION_ITEM_DATA)

§

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

§

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

§

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

§

DATA_STREAM(DATA_STREAM_DATA)

§

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

§

GPS2_RTK(GPS2_RTK_DATA)

§

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

§

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

§

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

§

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

§

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

§

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

§

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

§

VFR_HUD(VFR_HUD_DATA)

§

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

§

HIGHRES_IMU(HIGHRES_IMU_DATA)

§

GPS_STATUS(GPS_STATUS_DATA)

§

UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA)

§

PING(PING_DATA)

§

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

§

CANFD_FRAME(CANFD_FRAME_DATA)

§

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

§

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

§

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

§

ALTITUDE(ALTITUDE_DATA)

§

GPS_INPUT(GPS_INPUT_DATA)

§

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

§

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

§

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

§

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

§

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

§

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

§

GPS2_RAW(GPS2_RAW_DATA)

§

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

§

PLAY_TUNE(PLAY_TUNE_DATA)

§

MOUNT_ORIENTATION(MOUNT_ORIENTATION_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 d470ce8ea3..5d50f809fe 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.

+
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.

+
§

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 +

§

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 @@ -76,7 +76,7 @@
§Safety
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 +

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§

§

impl Freeze for AdsbFlags

§

impl RefUnwindSafe for AdsbFlags

§

impl Send for AdsbFlags

§

impl Sync for AdsbFlags

§

impl Unpin for AdsbFlags

§

impl UnwindSafe for AdsbFlags

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 36e4f8b8a5..b39e23e176 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.

+
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 +

§

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§

§

impl Freeze for AisFlags

§

impl RefUnwindSafe for AisFlags

§

impl Send for AisFlags

§

impl Sync for AisFlags

§

impl Unpin for AisFlags

§

impl UnwindSafe for AisFlags

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§

§

impl Freeze for AisFlags

§

impl RefUnwindSafe for AisFlags

§

impl Send for AisFlags

§

impl Sync for AisFlags

§

impl Unpin for AisFlags

§

impl UnwindSafe for AisFlags

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 1931fba75f..5c3efe661b 100644 --- a/mavlink/uavionix/struct.AttitudeTargetTypemask.html +++ b/mavlink/uavionix/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.

-
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 +

§

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 diff --git a/mavlink/uavionix/struct.CameraCapFlags.html b/mavlink/uavionix/struct.CameraCapFlags.html index f9dd8aa4f6..1bd350caa0 100644 --- a/mavlink/uavionix/struct.CameraCapFlags.html +++ b/mavlink/uavionix/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.

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§

§

impl Freeze for CameraCapFlags

§

impl RefUnwindSafe for CameraCapFlags

§

impl Send for CameraCapFlags

§

impl Sync for CameraCapFlags

§

impl Unpin for CameraCapFlags

§

impl UnwindSafe for CameraCapFlags

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§

§

impl Freeze for CameraCapFlags

§

impl RefUnwindSafe for CameraCapFlags

§

impl Send for CameraCapFlags

§

impl Sync for CameraCapFlags

§

impl Unpin for CameraCapFlags

§

impl UnwindSafe for CameraCapFlags

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 c9d4dd08aa..6ddb2d8fb9 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§

§

impl Freeze for EscFailureFlags

§

impl RefUnwindSafe for EscFailureFlags

§

impl Send for EscFailureFlags

§

impl Sync for EscFailureFlags

§

impl Unpin for EscFailureFlags

§

impl UnwindSafe for EscFailureFlags

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§

§

impl Freeze for EscFailureFlags

§

impl RefUnwindSafe for EscFailureFlags

§

impl Send for EscFailureFlags

§

impl Sync for EscFailureFlags

§

impl Unpin for EscFailureFlags

§

impl UnwindSafe for EscFailureFlags

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 b89d1bb896..202f30f4ef 100644 --- a/mavlink/uavionix/struct.EstimatorStatusFlags.html +++ b/mavlink/uavionix/struct.EstimatorStatusFlags.html @@ -59,14 +59,14 @@
§Safety
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.

+
§

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 + 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 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§

§

impl Freeze for EstimatorStatusFlags

§

impl RefUnwindSafe for EstimatorStatusFlags

§

impl Send for EstimatorStatusFlags

§

impl Sync for EstimatorStatusFlags

§

impl Unpin for EstimatorStatusFlags

§

impl UnwindSafe for EstimatorStatusFlags

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§

§

impl Freeze for EstimatorStatusFlags

§

impl RefUnwindSafe for EstimatorStatusFlags

§

impl Send for EstimatorStatusFlags

§

impl Sync for EstimatorStatusFlags

§

impl Unpin for EstimatorStatusFlags

§

impl UnwindSafe for EstimatorStatusFlags

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 4cc0695bb9..aa7d22bb75 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 +

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§

§

impl Freeze for GimbalDeviceCapFlags

§

impl RefUnwindSafe for GimbalDeviceCapFlags

§

impl Send for GimbalDeviceCapFlags

§

impl Sync for GimbalDeviceCapFlags

§

impl Unpin for GimbalDeviceCapFlags

§

impl UnwindSafe for GimbalDeviceCapFlags

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§

§

impl Freeze for GimbalDeviceCapFlags

§

impl RefUnwindSafe for GimbalDeviceCapFlags

§

impl Send for GimbalDeviceCapFlags

§

impl Sync for GimbalDeviceCapFlags

§

impl Unpin for GimbalDeviceCapFlags

§

impl UnwindSafe for GimbalDeviceCapFlags

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.GimbalDeviceErrorFlags.html b/mavlink/uavionix/struct.GimbalDeviceErrorFlags.html index 03b3088d0d..c275d5da86 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.

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 diff --git a/mavlink/uavionix/struct.GimbalDeviceFlags.html b/mavlink/uavionix/struct.GimbalDeviceFlags.html index b999ad8fe6..a2a21ef16c 100644 --- a/mavlink/uavionix/struct.GimbalDeviceFlags.html +++ b/mavlink/uavionix/struct.GimbalDeviceFlags.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 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 +

§

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.

+ 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 @@ -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§

§

impl Freeze for GimbalDeviceFlags

§

impl RefUnwindSafe for GimbalDeviceFlags

§

impl Send for GimbalDeviceFlags

§

impl Sync for GimbalDeviceFlags

§

impl Unpin for GimbalDeviceFlags

§

impl UnwindSafe for GimbalDeviceFlags

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§

§

impl Freeze for GimbalDeviceFlags

§

impl RefUnwindSafe for GimbalDeviceFlags

§

impl Send for GimbalDeviceFlags

§

impl Sync for GimbalDeviceFlags

§

impl Unpin for GimbalDeviceFlags

§

impl UnwindSafe for GimbalDeviceFlags

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.GimbalManagerCapFlags.html b/mavlink/uavionix/struct.GimbalManagerCapFlags.html index f4b4791c85..eb35259288 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.

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 + 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 @@ -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§

§

impl Freeze for GimbalManagerCapFlags

§

impl RefUnwindSafe for GimbalManagerCapFlags

§

impl Send for GimbalManagerCapFlags

§

impl Sync for GimbalManagerCapFlags

§

impl Unpin for GimbalManagerCapFlags

§

impl UnwindSafe for GimbalManagerCapFlags

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§

§

impl Freeze for GimbalManagerCapFlags

§

impl RefUnwindSafe for GimbalManagerCapFlags

§

impl Send for GimbalManagerCapFlags

§

impl Sync for GimbalManagerCapFlags

§

impl Unpin for GimbalManagerCapFlags

§

impl UnwindSafe for GimbalManagerCapFlags

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 ddaa183599..040ca571b4 100644 --- a/mavlink/uavionix/struct.GpsInputIgnoreFlags.html +++ b/mavlink/uavionix/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.

-
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 diff --git a/mavlink/uavionix/struct.HighresImuUpdatedFlags.html b/mavlink/uavionix/struct.HighresImuUpdatedFlags.html index 79fa8ffa8c..bc6bcbd1f0 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.

+
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,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 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.

+
§

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§

§

impl Freeze for HighresImuUpdatedFlags

§

impl RefUnwindSafe for HighresImuUpdatedFlags

§

impl Send for HighresImuUpdatedFlags

§

impl Sync for HighresImuUpdatedFlags

§

impl Unpin for HighresImuUpdatedFlags

§

impl UnwindSafe for HighresImuUpdatedFlags

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.HilSensorUpdatedFlags.html b/mavlink/uavionix/struct.HilSensorUpdatedFlags.html index 456425163f..ee5cb43396 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.

-
§

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§

§

impl Freeze for HilSensorUpdatedFlags

§

impl RefUnwindSafe for HilSensorUpdatedFlags

§

impl Send for HilSensorUpdatedFlags

§

impl Sync for HilSensorUpdatedFlags

§

impl Unpin for HilSensorUpdatedFlags

§

impl UnwindSafe for HilSensorUpdatedFlags

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§

§

impl Freeze for HilSensorUpdatedFlags

§

impl RefUnwindSafe for HilSensorUpdatedFlags

§

impl Send for HilSensorUpdatedFlags

§

impl Sync for HilSensorUpdatedFlags

§

impl Unpin for HilSensorUpdatedFlags

§

impl UnwindSafe for HilSensorUpdatedFlags

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 bda7e05cc6..6d00008c2c 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.

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.

+
§

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§

§

impl Freeze for HlFailureFlag

§

impl RefUnwindSafe for HlFailureFlag

§

impl Send for HlFailureFlag

§

impl Sync for HlFailureFlag

§

impl Unpin for HlFailureFlag

§

impl UnwindSafe for HlFailureFlag

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§

§

impl Freeze for HlFailureFlag

§

impl RefUnwindSafe for HlFailureFlag

§

impl Send for HlFailureFlag

§

impl Sync for HlFailureFlag

§

impl Unpin for HlFailureFlag

§

impl UnwindSafe for HlFailureFlag

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 350daf592a..ea352a5325 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.

-
§

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.

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,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§

§

impl Freeze for MavEventCurrentSequenceFlags

§

impl RefUnwindSafe for MavEventCurrentSequenceFlags

§

impl Send for MavEventCurrentSequenceFlags

§

impl Sync for MavEventCurrentSequenceFlags

§

impl Unpin for MavEventCurrentSequenceFlags

§

impl UnwindSafe for MavEventCurrentSequenceFlags

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§

§

impl Freeze for MavEventCurrentSequenceFlags

§

impl RefUnwindSafe for MavEventCurrentSequenceFlags

§

impl Send for MavEventCurrentSequenceFlags

§

impl Sync for MavEventCurrentSequenceFlags

§

impl Unpin for MavEventCurrentSequenceFlags

§

impl UnwindSafe for MavEventCurrentSequenceFlags

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.MavGeneratorStatusFlag.html b/mavlink/uavionix/struct.MavGeneratorStatusFlag.html index c8a046968a..cf270aa1b4 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.

-
§

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.

+
§

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§

§

impl Freeze for MavGeneratorStatusFlag

§

impl RefUnwindSafe for MavGeneratorStatusFlag

§

impl Send for MavGeneratorStatusFlag

§

impl Sync for MavGeneratorStatusFlag

§

impl Unpin for MavGeneratorStatusFlag

§

impl UnwindSafe for MavGeneratorStatusFlag

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§

§

impl Freeze for MavGeneratorStatusFlag

§

impl RefUnwindSafe for MavGeneratorStatusFlag

§

impl Send for MavGeneratorStatusFlag

§

impl Sync for MavGeneratorStatusFlag

§

impl Unpin for MavGeneratorStatusFlag

§

impl UnwindSafe for MavGeneratorStatusFlag

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 9fc14fe599..1cde9a2e31 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.

+
§

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§

§

impl Freeze for MavModeFlag

§

impl RefUnwindSafe for MavModeFlag

§

impl Send for MavModeFlag

§

impl Sync for MavModeFlag

§

impl Unpin for MavModeFlag

§

impl UnwindSafe for MavModeFlag

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§

§

impl Freeze for MavModeFlag

§

impl RefUnwindSafe for MavModeFlag

§

impl Send for MavModeFlag

§

impl Sync for MavModeFlag

§

impl Unpin for MavModeFlag

§

impl UnwindSafe for MavModeFlag

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 da7568fb1b..8dfa3729c5 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.

+
§

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§

§

impl Freeze for MavPowerStatus

§

impl RefUnwindSafe for MavPowerStatus

§

impl Send for MavPowerStatus

§

impl Sync for MavPowerStatus

§

impl Unpin for MavPowerStatus

§

impl UnwindSafe for MavPowerStatus

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§

§

impl Freeze for MavPowerStatus

§

impl RefUnwindSafe for MavPowerStatus

§

impl Send for MavPowerStatus

§

impl Sync for MavPowerStatus

§

impl Unpin for MavPowerStatus

§

impl UnwindSafe for MavPowerStatus

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 99b205a6e4..ea62dd2c31 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§

§

impl Freeze for MavProtocolCapability

§

impl RefUnwindSafe for MavProtocolCapability

§

impl Send for MavProtocolCapability

§

impl Sync for MavProtocolCapability

§

impl Unpin for MavProtocolCapability

§

impl UnwindSafe for MavProtocolCapability

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§

§

impl Freeze for MavProtocolCapability

§

impl RefUnwindSafe for MavProtocolCapability

§

impl Send for MavProtocolCapability

§

impl Sync for MavProtocolCapability

§

impl Unpin for MavProtocolCapability

§

impl UnwindSafe for MavProtocolCapability

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 80814556ff..d949190bdf 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 +

§

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,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 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.

+
§

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§

§

impl Freeze for MavSysStatusSensor

§

impl RefUnwindSafe for MavSysStatusSensor

§

impl Send for MavSysStatusSensor

§

impl Sync for MavSysStatusSensor

§

impl Unpin for MavSysStatusSensor

§

impl UnwindSafe for MavSysStatusSensor

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.MavWinchStatusFlag.html b/mavlink/uavionix/struct.MavWinchStatusFlag.html index 6f2de6a12e..3bcebb2c7d 100644 --- a/mavlink/uavionix/struct.MavWinchStatusFlag.html +++ b/mavlink/uavionix/struct.MavWinchStatusFlag.html @@ -59,14 +59,14 @@
§Safety

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.

-
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 +

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§

§

impl Freeze for MavWinchStatusFlag

§

impl RefUnwindSafe for MavWinchStatusFlag

§

impl Send for MavWinchStatusFlag

§

impl Sync for MavWinchStatusFlag

§

impl Unpin for MavWinchStatusFlag

§

impl UnwindSafe for MavWinchStatusFlag

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§

§

impl Freeze for MavWinchStatusFlag

§

impl RefUnwindSafe for MavWinchStatusFlag

§

impl Send for MavWinchStatusFlag

§

impl Sync for MavWinchStatusFlag

§

impl Unpin for MavWinchStatusFlag

§

impl UnwindSafe for MavWinchStatusFlag

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 407149370e..0042567b7f 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.

+
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§

§

impl Freeze for PositionTargetTypemask

§

impl RefUnwindSafe for PositionTargetTypemask

§

impl Send for PositionTargetTypemask

§

impl Sync for PositionTargetTypemask

§

impl Unpin for PositionTargetTypemask

§

impl UnwindSafe for PositionTargetTypemask

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§

§

impl Freeze for PositionTargetTypemask

§

impl RefUnwindSafe for PositionTargetTypemask

§

impl Send for PositionTargetTypemask

§

impl Sync for PositionTargetTypemask

§

impl Unpin for PositionTargetTypemask

§

impl UnwindSafe for PositionTargetTypemask

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.SerialControlFlag.html b/mavlink/uavionix/struct.SerialControlFlag.html index ff21c359e3..0e46544481 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.

-
§

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 +

§

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 +

§

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§

§

impl Freeze for SerialControlFlag

§

impl RefUnwindSafe for SerialControlFlag

§

impl Send for SerialControlFlag

§

impl Sync for SerialControlFlag

§

impl Unpin for SerialControlFlag

§

impl UnwindSafe for SerialControlFlag

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§

§

impl Freeze for SerialControlFlag

§

impl RefUnwindSafe for SerialControlFlag

§

impl Send for SerialControlFlag

§

impl Sync for SerialControlFlag

§

impl Unpin for SerialControlFlag

§

impl UnwindSafe for SerialControlFlag

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 11ae9cf1a1..912e4a4cf5 100644 --- a/mavlink/uavionix/struct.TuneFormat.html +++ b/mavlink/uavionix/struct.TuneFormat.html @@ -56,8 +56,8 @@
§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.

source§

impl BitXor for TuneFormat

source§

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

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

@@ -65,8 +65,8 @@
§Safety
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§

§

impl Freeze for TuneFormat

§

impl RefUnwindSafe for TuneFormat

§

impl Send for TuneFormat

§

impl Sync for TuneFormat

§

impl Unpin for TuneFormat

§

impl UnwindSafe for TuneFormat

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§

§

impl Freeze for TuneFormat

§

impl RefUnwindSafe for TuneFormat

§

impl Send for TuneFormat

§

impl Sync for TuneFormat

§

impl Unpin for TuneFormat

§

impl UnwindSafe for TuneFormat

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.UavionixAdsbOutDynamicState.html b/mavlink/uavionix/struct.UavionixAdsbOutDynamicState.html index d4d85f55eb..746c72d68a 100644 --- a/mavlink/uavionix/struct.UavionixAdsbOutDynamicState.html +++ b/mavlink/uavionix/struct.UavionixAdsbOutDynamicState.html @@ -57,16 +57,16 @@
§Safety

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.

-
§

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.

+
§

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.

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 + 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,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§

§

impl Freeze for UavionixAdsbOutDynamicState

§

impl RefUnwindSafe for UavionixAdsbOutDynamicState

§

impl Send for UavionixAdsbOutDynamicState

§

impl Sync for UavionixAdsbOutDynamicState

§

impl Unpin for UavionixAdsbOutDynamicState

§

impl UnwindSafe for UavionixAdsbOutDynamicState

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.UavionixAdsbOutRfSelect.html b/mavlink/uavionix/struct.UavionixAdsbOutRfSelect.html index 81f510cfae..f5f0f21c46 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.

+
§

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,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 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.

-
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§

§

impl Freeze for UavionixAdsbOutRfSelect

§

impl RefUnwindSafe for UavionixAdsbOutRfSelect

§

impl Send for UavionixAdsbOutRfSelect

§

impl Sync for UavionixAdsbOutRfSelect

§

impl Unpin for UavionixAdsbOutRfSelect

§

impl UnwindSafe for UavionixAdsbOutRfSelect

Blanket Implementations§

source§

impl<T> Any for T
where +

§

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§

§

impl Freeze for UavionixAdsbOutRfSelect

§

impl RefUnwindSafe for UavionixAdsbOutRfSelect

§

impl Send for UavionixAdsbOutRfSelect

§

impl Sync for UavionixAdsbOutRfSelect

§

impl Unpin for UavionixAdsbOutRfSelect

§

impl UnwindSafe for UavionixAdsbOutRfSelect

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.UavionixAdsbRfHealth.html b/mavlink/uavionix/struct.UavionixAdsbRfHealth.html index 4aa54d2d21..f223daaad5 100644 --- a/mavlink/uavionix/struct.UavionixAdsbRfHealth.html +++ b/mavlink/uavionix/struct.UavionixAdsbRfHealth.html @@ -59,14 +59,14 @@
§Safety
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,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 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§

§

impl Freeze for UavionixAdsbRfHealth

§

impl RefUnwindSafe for UavionixAdsbRfHealth

§

impl Send for UavionixAdsbRfHealth

§

impl Sync for UavionixAdsbRfHealth

§

impl Unpin for UavionixAdsbRfHealth

§

impl UnwindSafe for UavionixAdsbRfHealth

Blanket Implementations§

source§

impl<T> Any for T
where +

§

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§

§

impl Freeze for UavionixAdsbRfHealth

§

impl RefUnwindSafe for UavionixAdsbRfHealth

§

impl Send for UavionixAdsbRfHealth

§

impl Sync for UavionixAdsbRfHealth

§

impl Unpin for UavionixAdsbRfHealth

§

impl UnwindSafe for UavionixAdsbRfHealth

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.UtmDataAvailFlags.html b/mavlink/uavionix/struct.UtmDataAvailFlags.html index cb23a9372e..eab673f759 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.

+
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§

§

impl Freeze for UtmDataAvailFlags

§

impl RefUnwindSafe for UtmDataAvailFlags

§

impl Send for UtmDataAvailFlags

§

impl Sync for UtmDataAvailFlags

§

impl Unpin for UtmDataAvailFlags

§

impl UnwindSafe for UtmDataAvailFlags

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§

§

impl Freeze for UtmDataAvailFlags

§

impl RefUnwindSafe for UtmDataAvailFlags

§

impl Send for UtmDataAvailFlags

§

impl Sync for UtmDataAvailFlags

§

impl Unpin for UtmDataAvailFlags

§

impl UnwindSafe for UtmDataAvailFlags

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 f0a571d457..cafa07a0bc 100644 --- a/search-index.js +++ b/search-index.js @@ -5,7 +5,7 @@ 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,435,435,435,435,435,435,435,435,504,504,504,504,504,504,69,0,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,69,0,69,0,461,461,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,50,50,50,50,50,50,50,50,50,50,69,0,69,69,0,69,0,0,69,0,36,36,36,36,36,36,36,36,36,36,36,36,36,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,69,0,69,0,250,69,0,69,0,69,0,69,69,0,0,69,0,67,67,67,67,67,67,69,0,69,0,69,0,69,0,69,0,439,439,439,439,0,0,0,0,0,0,0,0,0,0,0,69,0,384,69,0,69,0,69,0,41,41,41,41,41,41,41,41,41,41,41,41,69,497,497,0,497,497,497,69,0,69,0,69,0,413,413,413,69,0,69,0,382,382,382,382,382,382,382,69,0,69,0,481,481,481,430,430,430,472,472,472,472,69,0,69,0,501,69,0,501,501,69,0,69,421,0,421,421,421,421,473,473,473,473,453,453,453,453,453,69,0,506,506,506,506,506,506,506,506,506,506,506,506,506,69,69,0,0,196,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,507,507,507,507,507,507,69,0,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,69,0,69,0,69,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,310,310,310,0,155,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,474,474,474,474,474,474,474,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,525,526,511,511,69,0,69,0,69,0,69,0,69,0,69,0,69,0,0,0,211,69,0,48,48,48,48,48,48,48,48,69,0,48,48,48,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,425,425,425,425,425,425,37,37,37,37,37,37,37,37,69,0,69,0,69,0,69,0,69,0,52,52,52,52,52,52,52,52,52,52,69,0,52,52,69,0,69,0,0,0,0,0,498,498,498,498,498,498,498,498,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,46,428,428,428,428,428,428,428,428,414,414,414,414,69,0,393,393,393,69,0,69,0,155,69,0,456,456,456,456,456,69,0,378,378,378,378,378,378,378,69,0,0,0,0,0,0,0,69,0,401,401,401,403,403,403,476,476,476,69,0,69,0,43,43,43,43,43,43,43,43,43,43,43,43,43,43,42,42,42,42,42,42,42,42,42,42,62,62,62,62,62,62,62,62,62,62,69,0,69,0,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,451,451,451,451,451,451,451,451,451,451,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,69,0,0,69,0,475,475,475,475,475,475,475,475,475,513,513,513,513,513,513,513,513,483,483,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,398,398,398,65,521,521,521,521,521,521,521,521,521,521,521,521,521,521,69,0,69,0,69,0,418,418,418,418,434,434,434,434,434,415,415,415,415,415,512,512,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,440,440,440,440,440,375,375,375,441,441,441,441,441,444,444,376,376,376,376,376,376,376,376,376,376,376,376,376,376,69,0,69,0,371,69,0,69,0,457,457,457,457,457,457,457,457,457,69,0,69,0,69,0,45,45,45,45,45,45,45,45,69,0,69,0,69,0,69,0,422,422,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,447,447,69,0,69,0,69,0,69,0,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,69,69,0,0,69,0,69,0,69,0,69,0,69,0,69,0,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,69,0,69,0,44,44,44,44,44,44,44,44,44,44,44,44,44,44,69,0,69,0,69,0,0,0,0,0,155,364,132,318,480,480,480,480,480,480,69,0,69,0,515,515,515,69,0,0,0,69,0,463,463,463,463,46,69,0,374,374,374,416,416,416,416,416,69,0,416,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,445,445,445,445,69,0,69,0,445,445,445,445,69,0,69,0,518,518,518,518,518,518,368,368,368,368,368,368,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,396,396,396,396,396,396,396,396,384,384,384,384,384,384,384,384,394,394,394,394,394,385,385,385,407,407,407,407,407,516,388,388,388,388,388,388,388,388,388,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,405,405,405,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,432,432,432,432,432,432,432,366,366,387,387,387,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,509,509,509,509,509,509,509,509,509,370,370,370,370,370,520,380,380,380,380,380,380,380,380,380,55,442,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,399,399,399,399,399,399,399,399,399,399,399,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,419,419,419,419,505,505,505,505,505,486,486,486,486,486,486,486,486,486,486,486,486,486,486,479,479,479,479,486,486,436,436,63,63,392,392,392,392,392,392,392,392,63,63,63,63,63,63,381,381,381,381,381,381,381,436,436,436,436,436,436,436,436,436,412,412,412,412,412,412,412,462,462,408,408,408,408,408,408,470,470,470,470,467,467,524,524,524,524,524,524,524,524,460,460,460,464,464,494,494,494,494,494,494,494,494,494,494,494,494,494,367,367,367,367,367,514,492,492,492,389,389,389,389,389,410,410,410,410,410,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,411,411,411,411,411,411,411,411,411,411,411,411,411,411,411,411,469,469,469,469,469,469,469,369,369,369,369,369,369,369,369,369,369,369,525,525,525,525,525,525,525,525,525,525,57,57,57,57,57,57,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,500,500,406,406,477,477,477,477,477,477,477,484,484,484,484,484,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,450,450,450,450,450,450,450,450,423,423,423,423,423,423,423,423,423,58,58,58,58,58,58,526,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,493,493,493,493,493,493,493,493,493,493,493,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,379,379,379,379,379,64,64,64,64,64,64,64,64,64,64,64,64,64,64,69,0,112,112,112,112,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,420,69,0,69,0,69,0,69,0,420,69,0,452,452,452,452,452,452,69,0,420,196,466,495,495,495,466,466,466,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,455,455,455,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,522,522,522,522,522,510,69,0,69,0,510,510,510,510,402,402,402,510,510,510,510,69,0,69,0,402,0,0,0,155,437,437,437,487,487,487,487,69,0,69,0,69,0,69,0,69,0,69,0,468,69,0,69,0,468,468,468,69,0,69,0,468,69,502,0,502,502,502,502,502,69,0,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,69,0,69,0,69,0,69,0,47,47,47,47,47,47,47,47,47,47,47,47,69,0,448,448,448,69,0,0,0,211,211,211,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,424,424,69,0,69,0,69,0,69,0,69,0,69,0,431,431,431,431,431,431,431,431,431,431,431,431,69,0,417,417,0,0,0,0,69,0,69,0,69,69,0,69,0,0,69,69,0,69,0,0,446,446,446,446,69,0,69,0,478,478,478,478,478,53,53,53,53,53,478,478,478,478,478,478,478,478,478,478,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,377,377,250,69,0,69,0,427,427,427,427,517,517,517,517,517,517,517,517,517,519,519,519,519,373,373,373,373,373,373,373,373,373,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,496,496,496,496,496,496,69,0,69,0,56,56,69,0,0,0,372,372,372,372,69,0,458,458,458,458,458,69,0,69,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,0,503,503,503,503,503,503,503,503,390,390,443,69,0,508,508,508,508,508,508,59,59,59,59,59,443,443,443,443,443,443,38,38,38,443,39,39,39,39,69,0,397,49,49,49,49,49,49,49,49,383,383,383,383,383,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,429,429,491,491,491,491,69,0,69,0,69,0,465,465,465,465,465,128,364,351,0,0,128,0,69,0,69,0,69,0,409,409,409,409,404,404,404,404,404,404,459,459,459,459,459,459,459,459,459,459,69,0,69,69,0,0,0,0,0,426,426,426,426,81,90,343,203,203,203,271,271,271,91,160,338,351,351,351,155,279,296,140,307,307,262,262,262,262,262,262,115,168,293,166,171,272,337,166,171,272,337,166,171,272,337,132,103,133,187,256,103,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,71,80,133,141,151,154,166,178,180,184,186,191,218,272,282,316,319,343,192,304,192,170,170,103,130,145,150,244,287,300,318,332,74,187,224,224,74,140,74,74,187,74,318,72,152,152,199,298,315,199,298,315,199,298,315,237,105,244,300,244,300,244,300,130,130,325,325,325,325,312,164,226,304,190,343,151,339,339,209,238,356,103,326,240,206,206,206,206,202,246,344,155,279,344,344,147,351,224,230,169,187,326,160,338,160,338,160,338,160,338,213,103,213,153,345,125,187,345,116,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,135,177,231,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,197,207,216,207,216,207,216,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,525,526,74,131,311,311,311,311,178,268,168,176,195,293,297,213,168,293,168,293,291,190,240,190,240,132,196,318,361,361,170,286,135,218,284,299,197,153,153,285,218,325,137,228,137,228,137,228,228,228,228,228,228,228,137,228,330,363,263,137,228,330,363,263,137,228,330,363,263,137,228,330,363,263,137,228,330,363,263,137,228,330,363,263,137,228,330,363,263,137,228,330,363,263,137,228,228,153,70,325,325,133,103,187,126,126,126,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,525,526,101,110,162,283,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,186,282,319,174,203,209,238,258,341,356,237,333,106,190,240,123,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,190,190,72,205,329,258,227,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,76,296,107,249,352,166,171,272,337,86,113,114,116,168,177,178,212,227,253,293,294,302,331,365,227,73,154,270,344,82,82,124,130,86,94,114,204,209,238,310,331,356,125,345,357,345,270,260,103,103,103,305,284,305,103,169,187,326,284,343,153,230,95,96,113,116,121,136,168,195,241,261,275,297,314,328,336,350,365,339,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,525,526,69,264,309,309,309,309,309,309,309,144,144,144,200,200,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,525,526,155,279,312,312,116,153,282,282,240,240,240,81,90,211,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,196,196,196,196,224,353,190,190,190,153,184,71,138,152,254,302,308,210,125,230,147,351,132,318,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,105,105,313,225,277,345,237,230,103,186,282,319,103,186,282,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,525,526,139,279,227,91,91,125,125,125,125,125,343,201,154,344,286,312,230,130,237,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,237,333,237,333,279,279,355,187,103,227,315,173,82,201,81,90,242,218,284,361,241,275,97,240,186,191,282,319,229,324,95,116,117,123,128,141,157,170,177,178,196,199,215,231,233,249,251,285,298,315,318,361,197,141,197,164,111,111,111,111,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,36,36,36,36,36,366,367,368,369,370,37,37,37,37,37,371,372,373,374,375,376,377,378,379,380,381,382,38,38,38,38,38,383,39,39,39,39,39,384,385,386,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,387,388,389,390,43,43,43,43,43,391,392,393,394,395,396,44,44,44,44,44,397,398,399,45,45,45,45,45,400,401,402,403,404,405,406,46,46,46,46,46,407,408,409,47,47,47,47,47,410,48,48,48,48,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,49,49,49,49,434,435,50,50,50,50,50,436,437,438,439,440,441,442,51,51,51,51,51,52,52,52,52,52,443,444,445,53,53,53,53,53,446,447,448,54,54,54,54,54,449,450,451,55,55,55,55,55,452,453,454,56,56,56,56,56,455,456,457,458,459,460,57,57,57,57,57,461,58,58,58,58,58,462,463,464,465,466,59,59,59,59,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,60,60,60,60,489,490,491,492,493,61,61,61,61,61,494,495,496,497,498,499,500,62,62,62,62,62,63,63,63,63,63,501,64,64,64,64,64,502,65,65,65,65,65,503,504,505,506,507,66,66,66,66,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,67,67,67,67,525,526,170,361,333,75,222,84,119,152,209,238,257,273,356,70,135,177,231,268,77,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,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,230,230,296,142,142,213,213,157,199,215,233,299,351,351,351,351,132,132,187,191,187,82,82,121,193,121,111,103,133,187,107,352,271,271,271,141,184,251,284,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,80,184,184,191,103,133,187,196,318,187,230,288,71,79,224,224,177,192,231,318,99,191,224,140,358,189,189,189,160,338,71,112,113,140,153,195,212,270,297,312,345,358,360,143,181,200,224,236,325,339,143,176,102,178,294,327,230,191,218,202,202,170,286,205,210,329,83,151,77,204,227,227,89,230,198,198,198,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,305,230,230,138,254,138,254,138,254,138,254,138,254,138,254,310,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,183,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,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,237,309,309,309,79,276,173,106,178,88,187,201,130,130,131,278,131,355,360,339,131,97,131,71,80,121,141,145,151,154,170,178,180,184,186,191,193,196,218,248,259,260,282,294,316,318,319,332,343,192,192,166,272,103,150,187,224,244,287,300,95,96,136,195,261,297,328,336,241,275,339,361,220,131,94,82,82,82,82,82,71,145,170,178,259,294,332,125,213,260,312,80,121,141,151,154,180,184,186,191,193,196,218,248,260,282,316,318,319,343,192,192,166,272,103,150,187,224,244,287,300,271,188,271,188,271,188,271,251,359,193,326,79,82,96,103,115,153,173,177,196,219,261,270,326,328,336,345,100,100,100,100,100,210,257,270,205,329,220,173,69,183,69,69,223,239,181,334,334,334,197,197,100,100,100,100,100,210,257,270,205,329,220,106,106,173,206,237,249,288,163,359,284,361,131,131,131,295,181,177,182,189,196,221,226,265,304,206,304,304,196,105,141,141,141,229,324,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,160,338,100,351,176,360,257,240,240,240,321,113,212,240,240,240,279,91,91,91,279,223,125,125,125,176,317,325,236,236,317,325,325,317,325,270,197,197,217,329,217,329,286,84,273,84,273,84,273,286,84,273,84,273,84,273,286,286,79,209,238,258,356,209,238,258,356,209,238,258,356,209,238,258,356,258,258,258,149,175,92,98,129,149,175,205,303,329,354,362,92,129,149,175,303,98,98,149,175,354,362,98,149,175,354,362,129,129,129,129,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,76,87,130,130,305,79,156,239,349,156,156,260,142,142,105,71,108,145,159,170,179,180,187,215,233,259,269,292,316,320,332,359,206,284,299,284,299,215,233,256,70,73,151,180,269,274,185,185,104,104,104,263,301,363,251,251,123,256,251,251,123,203,264,203,264,203,264,203,264,70,343,72,213,78,93,109,120,78,93,109,120,120,81,90,157,157,197,230,105,70,73,192,199,201,207,216,218,244,252,256,298,300,315,274,316,274,316,274,316,274,316,201,111,138,173,254,291,119,185,82,82,343,211,271,271,246,134,185,185,185,185,202,213,168,293,365,80,141,154,218,229,324,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,229,324,91,280,280,148,168,205,217,293,329,335,346,365,135,177,231,361,135,177,231,361,105,153,205,335,341,346,365,161,132,355,147,105,71,108,145,159,170,179,180,187,259,269,292,316,320,332,359,206,284,299,284,299,256,70,73,151,180,269,274,135,177,231,86,114,204,230,331,232,232,137,228,229,263,324,363,160,338,160,338,160,338,213,334,334,334,334,355,229,324,106,243,243,243,243,243,186,191,243,282,319,198,129,157,157,89,111,138,254,361,361,210,257,127,194,234,238,245,247,289,322,356,266,350,314,117,134,241,267,275,312,134,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,153,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,525,526,301,301,301,301,301,301,301,301,333,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,158,333,237,279,279,355,181,79,124,360,152,152,260,230,220,94,353,191,224,224,224,353,318,351,140,87,295,295,295,130,132,313,225,277,280,278,351,211,211,211,94,101,135,139,173,213,224,246,266,283,285,340,316,316,148,246,246,82,82,82,177,223,231,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,288,355,189,189,189,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,326,164,291,103,304,75,85,89,92,97,102,104,107,110,122,124,127,129,134,136,143,144,146,147,156,162,167,168,174,176,178,181,188,195,198,199,200,201,208,209,212,215,216,217,219,222,224,225,233,236,237,238,239,241,247,253,258,266,267,272,273,275,277,280,289,293,294,295,297,298,303,305,309,313,315,317,321,322,323,325,327,329,330,333,337,339,342,347,349,350,354,356,362,185,103,103,239,349,152,75,76,85,89,92,97,102,104,107,110,122,124,127,129,134,136,143,144,146,147,156,162,167,168,169,170,174,176,178,181,188,195,198,199,200,201,208,209,212,215,216,217,219,222,224,225,233,236,237,238,239,241,247,253,258,266,267,272,273,275,277,280,286,287,289,293,294,295,297,298,300,303,305,309,313,315,317,321,322,323,325,327,329,330,333,337,339,342,347,349,350,354,356,362,251,306,71,78,81,86,90,93,94,109,114,120,138,187,227,254,331,345,358,103,187,82,82,94,123,260,158,279,279,140,103,133,187,206,310,230,230,207,216,359,141,71,78,80,83,93,108,109,118,142,157,163,164,165,166,171,172,179,192,202,207,216,218,221,228,242,246,255,257,263,265,269,270,272,274,278,284,299,315,337,348,359,361,363,201,138,254,72,160,338,140,172,213,70,72,73,74,81,82,90,94,99,107,111,119,120,126,137,138,151,152,154,170,180,182,186,189,191,203,204,206,210,214,226,227,245,249,250,251,252,254,256,264,282,286,288,289,301,302,307,319,344,352,218,360,191,191,116,103,224,317,325,334,339,343,355,224,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,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,246,86,114,331,160,338,185,184,185,148,151,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,525,526,306,196,318,222,342,196,334,334,334,355,229,324,100,100,100,100,100,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,36,366,367,368,369,370,37,371,372,373,374,375,376,377,378,379,380,381,382,38,383,39,384,385,386,40,41,42,387,388,389,390,43,391,392,393,394,395,396,44,397,398,399,45,400,401,402,403,404,405,406,46,407,408,409,47,410,48,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,49,434,435,50,436,437,438,439,440,441,442,51,52,443,444,445,53,446,447,448,54,449,450,451,55,452,453,454,56,455,456,457,458,459,460,57,461,58,462,463,464,465,466,59,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,60,489,490,491,492,493,61,494,495,496,497,498,499,500,62,63,501,64,502,65,503,504,505,506,507,66,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,67,525,526,166,171,207,216,272,337,279,143,141,143,197,284,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,141,82,189,288,135,148,177,242,148,159,235,292,320,246,351,332,332,332,332,141,184,201,203,264,83,101,115,162,221,265,99,99,191,316,319,191,191,316,319,186,282,319,343,351,351,141,184,184,184,184,251,256,203,203,203,203,196,70,123,197,284,361,288,115,318,76,220,99,191,224,192,126,126,126,202,191,316,319,86,94,114,204,308,331,357,125,345,88,70,80,141,151,154,166,171,180,201,211,272,337,344,348,70,80,141,151,154,166,171,180,201,211,272,337,344,348,70,80,141,151,154,166,171,180,201,211,272,337,344,348,153,79,99,103,99,99,99,103,160,338,304,187,103,187,246,70,108,119,159,171,182,209,235,238,244,252,257,291,292,300,320,337,344,348,356,256,256,256,81,90,118,151,165,180,214,255,259,316,81,90,118,165,214,255,259,316,81,90,118,165,214,255,304,70,108,119,159,171,182,209,235,238,244,252,257,291,292,300,320,337,344,348,356,256,256,256,81,90,118,151,165,180,214,255,259,316,71,108,145,159,166,170,171,179,180,215,233,259,269,272,292,316,320,332,337,359,284,299,284,299,166,171,215,233,256,272,337,206,70,73,151,180,269,274,81,90,118,165,214,255,259,316,81,90,118,165,214,255,70,108,119,159,171,182,209,235,238,244,252,257,291,292,300,320,337,344,348,356,256,256,256,81,90,118,151,165,180,214,255,259,316,81,90,118,165,214,255,259,316,81,90,118,165,214,255,333,333,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,798,798,798,798,798,798,567,0,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,567,0,819,819,866,866,866,866,866,866,866,866,866,866,866,866,866,866,866,866,866,866,866,866,566,566,566,566,566,566,566,566,566,566,567,0,549,549,549,549,549,549,549,549,549,549,549,549,549,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,567,0,567,0,567,0,567,567,0,0,567,0,559,559,559,559,559,559,567,0,567,0,567,0,567,0,799,799,799,799,0,0,0,0,0,0,0,0,0,0,884,567,0,567,0,567,0,551,551,551,551,551,551,551,551,551,551,551,551,567,0,567,0,567,0,836,836,836,567,0,567,0,567,0,878,878,878,812,812,812,828,828,828,828,567,0,567,0,792,567,0,792,792,567,0,567,807,0,807,807,807,807,897,897,897,897,802,802,802,802,802,567,0,864,864,864,864,864,864,864,864,864,864,864,864,864,567,567,0,0,671,567,0,567,0,567,0,567,0,567,0,567,0,567,0,804,804,804,804,804,804,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,895,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,872,872,872,872,872,872,544,544,544,544,544,544,544,544,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,883,883,883,883,883,883,883,883,871,871,871,871,871,871,871,871,871,871,871,871,871,871,871,834,834,834,834,834,834,834,834,881,881,881,881,854,854,854,567,0,567,0,814,814,814,814,814,567,0,876,876,876,876,876,876,876,567,0,0,0,0,0,0,0,567,0,567,0,565,565,565,565,565,565,565,565,565,565,565,565,565,565,543,543,543,543,543,543,543,543,543,543,542,542,542,542,542,542,542,542,542,542,567,0,567,0,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,813,813,813,813,813,813,813,813,813,813,567,0,567,0,567,0,567,0,567,0,567,567,0,0,567,0,567,0,567,0,838,838,838,838,838,838,838,838,838,567,0,567,0,567,0,552,552,552,552,552,552,552,552,567,0,567,0,567,0,567,0,892,892,0,0,0,0,0,0,0,0,567,0,567,0,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,567,567,0,0,567,0,567,0,567,0,567,0,567,0,567,0,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,567,0,567,0,547,547,547,547,547,547,547,547,547,547,547,547,547,547,567,0,567,0,0,0,0,770,567,0,567,0,900,900,900,900,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,882,882,882,882,567,0,882,882,882,882,567,0,567,0,891,891,891,891,891,891,818,818,818,818,818,818,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,805,805,805,805,805,805,805,805,884,884,884,884,884,884,884,884,859,859,859,859,859,885,885,885,833,833,833,833,833,863,863,863,863,863,863,863,863,863,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,800,800,800,800,800,800,800,858,858,899,899,899,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,865,865,865,865,865,865,865,865,865,806,806,806,806,806,870,888,888,888,888,888,888,888,888,888,563,874,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,831,831,831,831,831,831,831,831,831,831,831,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,868,868,868,868,895,895,895,895,895,869,869,869,869,869,869,869,869,869,869,869,869,869,869,877,877,877,877,869,869,827,827,546,546,849,849,849,849,849,849,849,849,546,546,546,546,546,546,827,827,827,827,827,827,827,827,827,839,839,839,839,839,839,839,816,816,861,861,861,861,861,861,843,843,843,843,832,832,817,817,817,817,817,817,817,817,822,822,822,855,855,837,837,837,837,837,837,837,837,837,837,837,837,837,887,887,887,887,887,795,873,873,873,830,830,830,830,830,846,846,846,846,846,867,867,867,867,867,867,867,867,867,867,867,867,867,867,867,867,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,840,840,840,840,840,840,840,844,844,844,844,844,844,844,844,844,844,844,820,820,820,820,820,820,820,820,820,820,555,555,555,555,555,555,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,815,815,815,815,815,815,815,890,890,890,890,890,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,811,811,811,811,811,811,811,811,794,794,794,794,794,794,794,794,794,557,557,557,557,557,557,821,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,810,810,810,810,810,810,810,810,810,810,810,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,558,558,558,558,558,558,558,558,558,558,558,558,558,558,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,875,567,0,567,0,567,0,567,0,875,567,0,808,808,808,808,808,808,567,0,875,671,823,789,789,789,823,823,823,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,848,848,848,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,841,841,841,841,841,0,898,898,898,852,852,852,852,567,0,567,0,567,0,567,0,567,0,567,0,826,567,0,567,0,826,826,826,567,0,567,0,826,567,0,567,0,567,0,567,0,567,0,554,554,554,554,554,554,554,554,554,554,554,554,567,0,845,845,845,567,0,0,0,0,0,0,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,847,847,567,0,567,0,567,0,567,0,851,851,0,0,567,0,567,0,567,567,0,567,0,0,567,567,0,567,0,0,567,0,824,824,824,824,824,548,548,548,548,548,824,824,824,824,824,824,824,824,824,824,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,793,793,793,793,860,860,860,860,860,860,860,860,860,894,894,894,894,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,556,556,567,0,0,889,889,889,889,567,0,893,893,893,893,893,567,0,896,553,553,553,553,553,553,553,553,803,803,803,803,803,567,0,0,0,0,0,567,0,567,0,567,0,567,0,567,0,567,0,829,829,809,809,809,809,567,0,567,0,801,801,801,801,801,763,0,0,763,0,567,0,567,0,850,850,850,850,853,853,853,853,853,853,835,835,835,835,835,835,835,835,835,835,567,0,567,0,0,0,0,791,791,791,791,660,771,703,725,725,725,611,656,751,622,690,690,606,682,698,708,746,682,698,708,746,682,698,708,746,592,607,631,749,607,631,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,572,585,586,592,602,619,635,678,681,688,692,703,708,711,746,755,603,699,603,583,596,607,744,770,777,631,769,573,573,769,622,769,769,631,769,770,786,786,577,588,764,577,588,764,577,588,764,601,583,744,583,744,583,744,649,649,649,649,605,641,729,699,703,572,614,614,716,775,788,607,733,665,728,728,728,728,730,738,720,720,720,573,569,631,712,733,611,656,611,656,611,656,611,656,648,607,648,582,629,582,631,707,694,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,579,726,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,624,718,721,718,721,718,721,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,895,896,897,898,899,900,769,598,598,598,598,593,616,642,648,654,665,665,671,770,760,760,678,621,756,624,629,629,678,649,617,723,617,723,617,723,723,723,723,723,723,723,594,617,710,723,717,594,617,710,723,717,594,617,710,723,717,594,617,710,723,717,594,617,710,723,717,594,617,710,723,717,594,617,710,723,717,594,617,710,723,717,617,723,723,629,767,649,649,592,607,631,674,674,674,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,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,586,602,688,581,689,706,716,725,775,788,652,665,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,752,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,587,751,663,753,787,682,698,708,746,625,694,696,726,752,754,761,752,599,720,755,782,676,676,704,716,735,775,788,582,707,582,599,684,607,607,607,621,607,631,712,733,621,703,629,569,593,642,655,693,694,713,745,754,765,781,614,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,895,896,897,898,899,900,567,628,685,685,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,895,896,897,898,899,900,605,605,694,629,688,688,665,665,665,660,771,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,671,671,671,573,629,585,638,645,761,786,574,707,569,770,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,601,601,630,709,737,582,569,586,602,607,688,586,602,607,688,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,895,896,897,898,899,900,571,752,707,707,707,707,707,703,757,720,755,605,569,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,669,631,588,607,752,700,676,757,660,771,666,678,621,760,655,765,667,665,586,602,635,688,701,576,577,579,588,651,671,677,687,692,693,694,705,726,753,760,763,764,770,624,692,624,641,664,664,664,664,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,792,793,794,795,796,797,542,542,542,542,542,798,799,800,543,543,543,543,543,801,802,544,544,544,544,544,803,804,805,545,545,545,545,545,806,807,808,809,810,811,812,546,546,546,546,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,547,547,547,547,834,548,548,548,548,548,835,836,837,838,839,840,841,549,549,549,549,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,550,550,550,550,859,551,551,551,551,551,552,552,552,552,552,860,861,862,863,553,553,553,553,553,864,865,554,554,554,554,554,555,555,555,555,555,866,867,868,556,556,556,556,556,557,557,557,557,557,869,558,558,558,558,558,870,559,559,559,559,559,871,872,873,874,875,560,560,560,560,560,561,561,561,561,561,876,877,878,879,880,562,562,562,562,562,881,563,563,563,563,563,882,883,884,885,886,887,564,564,564,564,564,888,889,890,891,892,893,894,565,565,565,565,565,566,566,566,566,566,895,896,897,898,899,900,760,597,668,608,691,716,774,775,786,788,767,579,726,639,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,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,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,569,569,751,686,686,648,648,576,677,687,756,764,631,635,631,676,676,626,713,713,664,592,607,631,663,787,585,692,705,621,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,585,681,585,635,592,607,631,671,770,631,569,643,573,589,573,579,603,726,770,635,785,573,622,734,768,768,768,611,656,575,582,593,599,605,622,629,642,696,734,754,573,614,646,647,649,650,685,650,616,569,635,678,738,738,574,724,572,639,704,752,752,634,569,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,569,638,645,638,645,638,645,638,645,638,645,638,645,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,620,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,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,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,589,727,700,652,631,732,757,657,669,575,614,667,572,585,586,602,619,626,635,671,678,681,684,688,692,703,711,713,755,770,773,603,603,708,746,573,583,596,607,631,744,777,593,642,693,745,614,655,765,760,680,735,676,676,676,676,676,707,648,684,605,572,585,586,602,619,626,635,671,678,681,684,688,692,703,711,713,755,770,773,603,603,708,746,573,583,596,607,631,744,777,705,779,626,733,582,589,599,606,607,629,671,676,697,700,726,733,574,599,680,700,567,620,567,567,591,783,646,623,623,623,624,624,574,599,680,652,652,700,643,728,753,580,779,621,760,646,590,671,726,729,731,740,768,699,728,699,699,671,601,692,692,692,701,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,611,656,616,575,665,665,665,696,754,665,665,665,591,707,707,707,616,570,649,647,647,570,649,649,570,649,599,624,624,608,774,608,774,608,774,608,774,608,774,608,774,589,689,716,775,788,689,716,775,788,689,716,775,788,689,716,775,788,689,689,689,595,743,595,600,633,661,743,748,762,776,595,633,661,743,776,762,595,600,743,748,762,595,600,743,748,762,776,776,776,776,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,587,739,589,719,747,783,747,747,684,686,686,601,576,610,619,631,637,670,677,695,711,736,742,779,728,621,756,621,756,576,677,749,572,670,672,711,767,782,604,604,710,717,780,705,705,749,705,705,628,725,628,725,628,725,628,725,767,703,648,568,636,741,766,568,636,766,741,741,660,771,687,687,624,569,601,577,583,588,603,640,678,718,721,744,749,757,764,767,782,619,672,619,672,619,672,619,672,757,638,645,664,700,654,604,691,676,676,703,730,609,604,604,604,604,738,648,678,681,692,755,701,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,701,772,772,659,579,726,760,579,726,760,601,629,581,669,601,610,619,631,637,670,695,711,736,742,779,728,621,756,621,756,749,572,670,672,711,767,782,579,726,569,704,617,701,710,717,723,611,656,611,656,611,656,648,623,623,623,623,669,701,652,715,715,715,715,715,586,602,635,688,715,776,687,687,634,638,645,664,760,760,574,615,627,673,683,714,722,758,775,788,781,605,609,651,655,759,765,609,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,629,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,895,896,897,898,899,900,780,780,780,780,780,780,780,780,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,584,669,646,575,589,786,786,684,569,680,735,573,635,573,573,770,622,739,630,709,737,772,657,571,573,648,700,730,735,619,619,659,730,730,676,676,676,579,591,726,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,643,669,768,768,768,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,733,641,654,607,699,570,573,576,577,588,593,594,597,600,609,614,616,618,625,627,630,633,634,642,646,647,649,650,655,658,661,662,667,668,675,677,683,685,689,696,697,698,702,706,709,716,719,721,722,737,745,746,747,748,750,757,758,759,764,765,772,774,775,776,778,783,787,788,604,607,607,719,783,786,570,573,576,577,583,587,588,593,594,597,600,609,614,616,618,625,627,630,633,634,642,646,647,649,650,655,658,661,662,667,668,675,677,683,685,689,696,697,698,702,706,709,712,716,719,721,722,737,745,746,747,748,750,757,758,759,764,765,772,774,775,776,777,778,783,787,788,705,784,568,582,631,636,638,645,660,734,735,741,752,766,771,607,631,676,676,735,684,584,622,592,607,631,728,569,569,718,721,779,692,568,578,580,588,599,603,613,621,632,636,637,641,653,657,666,670,672,678,679,681,682,686,687,698,708,710,717,718,721,723,724,730,731,738,740,742,746,756,760,766,779,757,638,645,611,656,622,578,648,572,574,586,590,602,617,628,635,638,640,643,644,645,660,663,664,673,674,676,688,690,691,704,705,711,720,722,725,728,729,735,741,749,752,753,755,761,767,768,769,771,780,782,785,786,787,575,678,635,635,694,570,573,607,614,623,649,669,703,573,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,895,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,730,611,656,604,585,604,659,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,895,896,897,898,899,900,784,671,770,658,668,671,623,623,623,669,701,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,792,793,794,795,796,797,542,798,799,800,543,801,802,544,803,804,805,545,806,807,808,809,810,811,812,546,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,547,834,548,835,836,837,838,839,840,841,549,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,550,859,551,552,860,861,862,863,553,864,865,554,555,866,867,868,556,557,869,558,870,559,871,872,873,874,875,560,561,876,877,878,879,880,562,881,563,882,883,884,885,886,887,564,888,889,890,891,892,893,894,565,566,895,896,897,898,899,900,682,698,708,718,721,746,650,650,692,621,624,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,692,676,643,768,659,666,726,659,610,612,695,736,730,585,692,757,628,725,606,724,731,740,785,785,586,619,635,635,586,619,635,586,602,688,703,585,692,585,585,585,705,749,725,725,725,725,671,767,624,621,760,643,606,770,587,680,635,785,573,603,674,674,674,738,586,619,635,704,735,707,582,732,572,653,681,682,692,698,708,711,720,746,755,757,767,572,653,681,682,692,698,708,711,720,746,755,757,767,572,653,681,682,692,698,708,711,720,746,755,757,767,629,589,785,607,785,785,785,607,611,656,699,631,607,631,730,583,590,610,612,637,640,653,654,682,691,695,698,716,720,736,744,767,775,788,749,749,749,572,613,619,632,644,660,679,711,771,613,619,632,644,660,679,771,613,632,644,660,679,771,699,583,590,610,612,637,640,653,654,682,691,695,698,716,720,736,744,767,775,788,749,749,749,572,613,619,632,644,660,679,711,771,576,610,619,637,670,677,682,695,698,708,711,736,742,746,779,621,756,621,756,576,677,682,698,708,746,749,728,572,670,672,711,767,782,613,619,632,644,660,679,771,613,632,644,660,679,771,583,590,610,612,637,640,653,654,682,691,695,698,716,720,736,744,767,775,788,749,749,749,572,613,619,632,644,660,679,711,771,613,619,632,644,660,679,771,613,632,644,660,679,771,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,1258,1258,1258,1258,1258,1258,935,0,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,935,0,1175,1175,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,1261,913,913,913,913,913,913,913,913,913,913,935,0,917,917,917,917,917,917,917,917,917,917,917,917,917,1260,1260,1260,1260,1260,1260,1260,1260,1260,1260,1260,1260,1260,1260,1260,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,935,0,935,0,935,0,935,935,0,0,935,0,911,911,911,911,911,911,935,0,935,0,935,0,935,0,1162,1162,1162,1162,0,0,0,0,0,0,0,0,0,0,1172,935,0,935,0,935,0,918,918,918,918,918,918,918,918,918,918,918,918,935,0,935,0,935,0,1256,1256,1256,935,0,935,0,935,0,1250,1250,1250,1231,1231,1231,1269,1269,1269,1269,935,0,935,0,1177,935,0,1177,1177,935,0,935,1275,0,1275,1275,1275,1275,1201,1201,1201,1201,1167,1167,1167,1167,1167,935,0,1235,1235,1235,1235,1235,1235,1235,1235,1235,1235,1235,1235,1235,935,935,0,0,1117,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1190,1190,1190,1190,1190,1190,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,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,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,1270,1270,1270,1270,1270,1270,931,931,931,931,931,931,931,931,935,0,935,0,914,914,914,914,914,914,914,914,914,914,935,0,914,914,935,0,935,0,0,0,0,1225,1225,1225,1225,1225,1225,1225,1225,1168,1168,1168,1168,1168,1168,1168,1168,1168,1168,1168,1168,1168,1168,1168,1217,1217,1217,1217,1217,1217,1217,1217,1206,1206,1206,1206,1166,1166,1166,935,0,935,0,1267,1267,1267,1267,1267,935,0,1233,1233,1233,1233,1233,1233,1233,935,0,0,0,0,0,0,0,935,0,935,0,928,928,928,928,928,928,928,928,928,928,928,928,928,928,934,934,934,934,934,934,934,934,934,934,912,912,912,912,912,912,912,912,912,912,935,0,935,0,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,935,0,935,0,935,0,935,0,935,0,935,935,0,0,935,0,935,0,935,0,1204,1204,1204,1204,1204,1204,1204,1204,1204,935,0,935,0,935,0,930,930,930,930,930,930,930,930,935,0,935,0,935,0,935,0,1186,1186,0,0,0,0,0,0,0,0,935,0,935,0,907,907,907,907,907,907,907,907,907,907,907,907,907,907,907,935,935,0,0,935,0,935,0,935,0,935,0,935,0,935,0,923,923,923,923,923,923,923,923,923,923,923,923,923,923,923,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,1014,949,935,0,935,0,1193,1193,1193,1193,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,1228,1228,1228,1228,935,0,1228,1228,1228,1228,935,0,935,0,1230,1230,1230,1230,1230,1230,1196,1196,1196,1196,1196,1196,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1265,1265,1265,1265,1265,1265,1265,1265,1172,1172,1172,1172,1172,1172,1172,1172,1223,1223,1223,1223,1223,1234,1234,1234,1174,1174,1174,1174,1174,1198,1198,1198,1198,1198,1198,1198,1198,1198,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1244,1244,1244,1244,1244,1244,1244,1255,1255,1221,1221,1221,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1202,1229,1229,1229,1229,1229,1229,1229,1229,1229,1236,1236,1236,1236,1236,1237,1241,1241,1241,1241,1241,1241,1241,1241,1241,921,1271,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,925,925,925,925,925,925,925,925,925,925,925,925,925,925,925,925,925,925,925,925,925,925,925,1252,1252,1252,1252,1253,1253,1253,1253,1253,1245,1245,1245,1245,1245,1245,1245,1245,1245,1245,1245,1245,1245,1245,1178,1178,1178,1178,1245,1245,1184,1184,929,929,1171,1171,1171,1171,1171,1171,1171,1171,929,929,929,929,929,929,1184,1184,1184,1184,1184,1184,1184,1184,1184,1216,1216,1216,1216,1216,1216,1216,1161,1161,1251,1251,1251,1251,1251,1251,1169,1169,1169,1169,1170,1170,1195,1195,1195,1195,1195,1195,1195,1195,1266,1266,1266,1210,1210,1220,1220,1220,1220,1220,1220,1220,1220,1220,1220,1220,1220,1220,1263,1263,1263,1263,1263,1214,1182,1182,1182,1213,1213,1213,1213,1213,1200,1200,1200,1200,1200,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1259,1259,1259,1259,1259,1259,1259,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,908,908,908,908,908,908,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,1227,1227,1227,1227,1227,1227,1227,1185,1185,1185,1185,1185,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1181,1181,1181,1181,1181,1181,1181,1181,1194,1194,1194,1194,1194,1194,1194,1194,1194,927,927,927,927,927,927,1249,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1176,1176,1176,1176,1176,910,910,910,910,910,910,910,910,910,910,910,910,910,910,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,1226,1226,1226,1226,1226,1226,935,0,1274,1117,1212,1239,1239,1239,1212,1212,1212,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,1165,1165,1165,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,1199,1199,1199,1199,1199,0,1163,1163,1163,1187,1187,1187,1187,935,0,935,0,935,0,935,0,935,0,935,0,1208,935,0,935,0,1208,1208,1208,935,0,935,0,1208,935,0,935,0,935,0,935,0,935,0,920,920,920,920,920,920,920,920,920,920,920,920,935,0,1257,1257,1257,935,0,0,0,0,0,0,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1242,1242,935,0,935,0,935,0,935,0,1273,1273,0,0,935,0,935,0,935,935,0,935,0,0,935,935,0,935,0,0,935,0,1224,1224,1224,1224,1224,933,933,933,933,933,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,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,1248,1248,1248,1248,1243,1243,1243,1243,1243,1243,1243,1243,1243,1272,1272,1272,1272,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,919,919,935,0,0,1207,1207,1207,1207,935,0,1197,1197,1197,1197,1197,935,0,935,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,0,1160,1160,1160,1160,1160,1160,1160,1160,1238,1238,1180,935,0,1247,1247,1247,1247,1247,1247,924,924,924,924,924,1180,1180,1180,1180,1180,1180,916,916,916,1180,932,932,932,932,935,0,1260,909,909,909,909,909,909,909,909,1203,1203,1203,1203,1203,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,1205,1205,1262,1262,1262,1262,935,0,935,0,1276,1276,1276,1276,1276,1044,1100,0,0,1044,0,935,0,935,0,1218,1218,1218,1218,1232,1232,1232,1232,1232,1232,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,935,0,935,0,0,0,0,1246,1246,1246,1246,958,1060,1075,1119,1119,1119,988,994,1100,1100,1100,1136,985,1022,1022,1104,937,954,992,1132,937,954,992,1132,937,954,992,1132,1014,1003,1013,1083,1128,1013,1083,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,942,945,959,964,976,977,980,984,992,1075,1098,1108,1114,1128,1132,1137,1069,940,1069,947,949,957,1013,1071,1106,1083,1120,1053,1053,1120,985,1120,1120,1083,1120,949,1009,1009,1000,1046,1049,1000,1046,1049,1000,1046,1049,1076,1071,1106,1071,1106,1071,1106,987,987,987,987,1005,1070,996,940,1075,984,1051,1051,1029,1039,1066,965,1013,966,1122,1122,1122,1122,1001,1125,1084,1084,1084,1100,1053,1110,965,1081,1083,988,994,988,994,988,994,988,994,1130,1013,1130,1019,1126,1059,1083,1126,1032,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,1011,1015,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,1067,1026,1035,1026,1035,1026,1035,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,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,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,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,1276,1120,939,939,939,939,967,1056,1133,1130,1012,966,966,949,1014,1117,1139,1139,959,1087,1147,1067,1019,1019,959,987,944,1062,944,1062,944,1062,944,944,944,944,944,944,944,1062,1109,1157,1034,944,1062,1109,1157,1034,944,1062,1109,1157,1034,944,1062,1109,1157,1034,944,1062,1109,1157,1034,944,1062,1109,1157,1034,944,1062,1109,1157,1034,944,1062,1109,1157,1034,944,1062,944,1019,1042,987,987,1128,1013,1083,1033,1033,1033,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,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,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,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,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,964,976,1114,1023,1029,1039,1066,1088,1119,1146,1158,966,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,1088,1055,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,948,1136,1061,1063,1096,937,954,992,1132,974,1015,1032,1043,1055,1111,1131,1055,941,1084,1129,1137,1124,1124,1029,1039,1066,1097,1102,1059,1126,1126,1129,991,1013,1013,1013,1147,965,1013,1081,1083,1147,1075,1019,1110,967,1027,1028,1032,1056,1082,1103,1116,1131,1145,1051,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,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,1276,935,972,1064,1064,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,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,1276,1005,1005,1032,1019,1114,1114,966,966,966,958,1060,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,1117,1117,1117,1117,1053,1019,1098,974,1009,1123,1153,979,1059,1110,1100,1014,949,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,1076,1076,1107,983,986,1126,1110,964,976,1013,1114,964,976,1013,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,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,1276,999,1055,1059,1059,1059,1059,1059,1075,975,1084,1137,1005,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,935,981,1083,1000,1013,1055,1040,1124,975,958,1060,1025,959,1139,1147,1028,1082,1093,966,964,976,980,1114,1138,949,1000,1007,1011,1015,1032,1044,1046,1049,1058,1092,1095,1096,1103,1108,1117,1139,1159,1067,1108,1067,1070,950,950,950,950,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,1167,1168,908,908,908,908,908,1169,1170,1171,909,909,909,909,909,1172,1173,1174,910,910,910,910,910,1175,1176,1177,1178,1179,911,911,911,911,911,1180,1181,1182,1183,912,912,912,912,912,1184,1185,913,913,913,913,913,1186,1187,914,914,914,914,914,1188,1189,1190,1191,1192,1193,1194,915,915,915,915,915,1195,1196,1197,1198,1199,1200,1201,1202,916,916,916,916,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,917,917,917,917,1217,1218,1219,1220,1221,918,918,918,918,918,1222,1223,1224,1225,1226,1227,1228,919,919,919,919,919,1229,920,920,920,920,920,1230,1231,1232,921,921,921,921,921,1233,1234,922,922,922,922,922,1235,1236,1237,1238,1239,1240,1241,1242,923,923,923,923,923,1243,1244,1245,1246,1247,1248,1249,1250,924,924,924,924,924,1251,1252,1253,1254,1255,925,925,925,925,925,1256,926,926,926,926,926,1257,927,927,927,927,927,1258,1259,928,928,928,928,928,929,929,929,929,929,1260,1261,1262,1263,1264,1265,1266,1267,930,930,930,930,930,931,931,931,931,931,932,932,932,932,932,1268,1269,1270,1271,933,933,933,933,933,1272,1273,1274,1275,934,934,934,934,934,1276,1139,1004,1135,952,1008,1009,1029,1039,1066,1141,1042,1011,1015,1038,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,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,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,1110,1110,1136,1113,1113,1130,1130,1007,1049,1087,1092,1159,1100,1100,1100,1100,1014,1014,1083,980,1083,1124,1124,1027,1036,1027,950,1013,1083,1128,1061,1063,1098,1108,1058,1147,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,945,1098,1098,980,949,1013,1083,1117,1128,1083,968,1110,1053,1101,1053,1011,1015,1069,949,946,980,1053,985,982,961,961,961,988,994,967,982,985,1002,1005,1019,1043,1056,1126,1129,1131,987,989,1010,1051,1053,1064,1091,989,1133,1110,980,959,1125,1125,979,1072,984,1038,1055,1097,1055,1105,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,1110,1110,1123,1153,1123,1153,1123,1153,1123,1153,1123,1153,1123,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,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,971,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,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,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,1101,1024,1040,1158,975,1083,1142,1085,981,1002,1051,1093,942,945,949,959,964,976,977,980,984,991,1027,1036,1041,1075,1098,1108,1114,1117,1137,1069,1069,992,1132,947,957,1013,1053,1071,1083,1106,967,1056,1103,1116,1028,1051,1082,1139,1094,1102,1124,1124,1124,1124,1124,1059,1130,991,1005,942,945,949,959,964,976,977,980,984,991,1027,1036,1041,1075,1098,1108,1114,1117,1137,1069,1069,992,1132,947,957,1013,1053,1071,1083,1106,1058,1074,1036,965,965,1013,1015,1019,1040,1101,1104,1117,1124,1126,1129,1143,979,1129,1094,1040,935,971,935,935,943,1078,1091,951,951,951,1067,1067,979,1129,1094,1158,1158,1040,968,1096,1122,997,1074,1139,1147,1091,961,996,1015,1020,1021,1050,1117,940,1122,940,940,1117,1076,1108,1108,1108,1138,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,988,994,1100,1133,1002,966,966,966,1043,1131,966,966,966,943,1059,1059,1059,1133,987,1077,1010,1010,987,1077,987,987,1077,1129,1067,1067,952,1008,952,1008,952,1008,952,1008,952,1008,952,1008,1101,1029,1039,1066,1088,1029,1039,1066,1088,1029,1039,1066,1088,1029,1039,1066,1088,1088,1088,1088,956,1030,955,956,970,995,1006,1030,1057,1156,956,970,1006,1030,1057,955,955,956,995,1030,1156,955,956,995,1030,1156,1057,1057,1057,1057,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,948,1090,960,1078,1099,1101,1099,1099,991,1113,1113,1076,942,969,973,977,1007,1031,1048,1074,1083,1092,1152,1155,1122,1087,1147,1087,1147,1003,1007,1092,941,942,984,1042,1144,1155,1086,1086,1034,1151,1157,1058,1058,1003,1058,1058,972,1119,972,1119,972,1119,972,1119,1042,1075,1130,936,938,1018,1118,936,1018,1118,938,938,958,1060,1159,1159,1067,1110,1076,941,959,975,978,1000,1003,1026,1035,1042,1046,1049,1069,1071,1106,977,1144,977,1144,977,1144,977,1144,975,950,1040,1123,1153,1012,1086,1141,1124,1124,1075,1001,963,1086,1086,1086,1086,1125,1130,945,959,1108,1137,1138,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,1138,1121,1121,1054,1011,1015,1139,1011,1015,1139,1076,1019,1023,1073,1014,981,1076,942,969,973,977,1031,1048,1074,1083,1152,1155,1122,1087,1147,1087,1147,1003,941,942,984,1042,1144,1155,1011,1015,1097,1110,944,1034,1062,1138,1157,988,994,988,994,988,994,1130,951,951,951,951,981,1138,1158,1089,1089,1089,1089,1089,964,976,980,1089,1114,1057,1159,1159,1105,950,1123,1153,1139,1139,979,953,1029,1037,1045,1065,1066,1068,1079,1115,1145,963,1005,1028,1082,1095,1140,963,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,1019,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,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,1276,1151,1151,1151,1151,1151,1151,1151,1151,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,1127,981,1091,1002,1101,1009,1009,991,1110,1094,1102,980,1053,1053,1053,949,1100,985,1090,1014,1107,983,986,1121,1085,1100,999,1001,1040,1053,1102,1130,977,977,1054,1001,1001,1124,1124,1124,943,1011,1015,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,968,981,961,961,961,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,965,1070,1012,1013,940,952,954,960,963,967,970,975,983,986,987,989,990,992,995,998,1000,1004,1006,1007,1010,1026,1028,1029,1037,1039,1043,1045,1046,1049,1051,1053,1056,1057,1063,1064,1065,1066,1077,1078,1080,1082,1088,1091,1092,1093,1099,1105,1107,1109,1111,1112,1115,1116,1121,1133,1135,1140,1143,1146,1148,1149,1154,1156,1086,1013,1013,960,1078,1009,948,952,954,957,960,963,967,970,975,983,986,987,989,990,992,995,998,1000,1004,1006,1007,1010,1026,1028,1029,1037,1039,1043,1045,1046,1049,1051,1053,1056,1057,1063,1064,1065,1066,1071,1077,1078,1080,1081,1082,1088,1091,1092,1093,1099,1105,1107,1109,1111,1112,1115,1116,1121,1133,1135,1140,1143,1146,1148,1149,1154,1156,1058,962,936,938,958,982,1018,1055,1060,1083,1102,1118,1123,1126,1153,1013,1083,1124,1124,1102,991,1127,985,1013,1083,1122,1128,1110,1110,1026,1035,1074,1108,936,937,944,945,954,959,969,992,997,1000,1001,1016,1017,1018,1021,1025,1026,1034,1035,1048,1050,1052,1069,1070,1072,1074,1085,1087,1113,1118,1125,1129,1132,1134,1139,1144,1147,1150,1155,1157,1159,975,1123,1153,988,994,985,1052,1130,938,941,942,946,950,958,961,964,968,972,974,976,978,979,980,984,993,996,1003,1009,1020,1022,1033,1042,1055,1058,1060,1061,1062,1063,1068,1084,1096,1097,1102,1114,1115,1119,1120,1122,1123,1124,1137,1141,1151,1153,959,1002,980,980,1032,951,981,987,1013,1051,1053,1075,1077,1053,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,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,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,1001,988,994,1086,1086,1098,1054,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,1162,1163,907,1164,1165,1166,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,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,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,1276,962,949,1117,1112,1135,1117,951,951,951,981,1138,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,1167,1168,908,1169,1170,1171,909,1172,1173,1174,910,1175,1176,1177,1178,1179,911,1180,1181,1182,1183,912,1184,1185,913,1186,1187,914,1188,1189,1190,1191,1192,1193,1194,915,1195,1196,1197,1198,1199,1200,1201,1202,916,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,917,1217,1218,1219,1220,1221,918,1222,1223,1224,1225,1226,1227,1228,919,1229,920,1230,1231,1232,921,1233,1234,922,1235,1236,1237,1238,1239,1240,1241,1242,923,1243,1244,1245,1246,1247,1248,1249,1250,924,1251,1252,1253,1254,1255,925,1256,926,1257,927,1258,1259,928,929,1260,1261,1262,1263,1264,1265,1266,1267,930,931,932,1268,1269,1270,1271,933,1272,1273,1274,1275,934,1276,937,954,992,1026,1035,1132,989,989,1108,1067,1147,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,1108,1124,961,968,1015,1025,1054,1054,973,1031,1047,1152,1001,1100,1098,1108,975,972,1119,1021,1050,1072,1104,946,946,964,977,980,980,964,977,980,964,976,1075,1114,1100,1100,1098,1108,1098,1098,1098,1058,1003,1119,1119,1119,1119,1117,1042,1067,1139,1147,968,1104,949,948,1094,946,980,1053,1069,1033,1033,1033,1125,964,977,980,1097,1102,1059,1126,1142,937,942,945,954,975,984,992,1042,1084,1108,1132,1134,1137,937,942,945,954,975,984,992,1042,1084,1108,1132,1134,1137,937,942,945,954,975,984,992,1042,1084,1108,1132,1134,1137,1019,1101,946,1013,946,946,946,1013,988,994,940,1083,1013,1083,1001,937,954,973,978,1012,1020,1029,1031,1039,1042,1047,1048,1066,1071,1084,1106,1134,1141,1152,1003,1003,1003,942,958,977,984,993,1016,1017,1060,1150,958,977,993,1016,1017,1060,1150,958,993,1016,1017,1060,1150,940,937,954,973,978,1012,1020,1029,1031,1039,1042,1047,1048,1066,1071,1084,1106,1134,1141,1152,1003,1003,1003,942,958,977,984,993,1016,1017,1060,1150,937,942,954,969,973,977,992,1007,1031,1048,1074,1092,1132,1152,1155,1087,1147,1087,1147,937,954,992,1003,1007,1092,1132,1122,941,942,984,1042,1144,1155,958,977,993,1016,1017,1060,1150,958,993,1016,1017,1060,1150,937,954,973,978,1012,1020,1029,1031,1039,1042,1047,1048,1066,1071,1084,1106,1134,1141,1152,1003,1003,1003,942,958,977,984,993,1016,1017,1060,1150,958,977,993,1016,1017,1060,1150,958,993,1016,1017,1060,1150,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}{Dnb}{E`f}{EbBb}{EdBb}{Eff}{Ehf}{Ejf}{Elb}{Enf}{F`f}{Fbb}{Fdf}{Ffb}{Fhf}{Fjb}{FlBb}{Fnb}{G`Bb}{Gbf}{GdBb}{Gff}{GhHh}{GjHh}{Glf}{Gnb}{H`Bb}{Hbb}{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}{DhDh}{BMlBMl}{BMnBMn}{BN`BN`}{BNbBNb}{BNdBNd}{DjDj}{BNfBNf}{BNhBNh}{BNjBNj}{BNlBNl}{BNnBNn}{BO`BO`}{BObBOb}{BOdBOd}{BOfBOf}{BOhBOh}{BOjBOj}{BOlBOl}{DlDl}{BOnBOn}{DnDn}{C@`C@`}{C@bC@b}{C@dC@d}{E`E`}{EbEb}{EdEd}{C@fC@f}{C@hC@h}{C@jC@j}{C@lC@l}{EfEf}{C@nC@n}{CA`CA`}{CAbCAb}{CAdCAd}{CAfCAf}{CAhCAh}{EhEh}{CAjCAj}{CAlCAl}{CAnCAn}{EjEj}{CB`CB`}{CBbCBb}{CBdCBd}{CBfCBf}{CBhCBh}{CBjCBj}{CBlCBl}{ElEl}{CBnCBn}{CC`CC`}{CCbCCb}{EnEn}{CCdCCd}{F`F`}{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`}{CFbCFb}{FbFb}{CFdCFd}{CFfCFf}{FdFd}{CFhCFh}{CFjCFj}{CFlCFl}{CFnCFn}{CG`CG`}{CGbCGb}{CGdCGd}{FfFf}{FhFh}{CGfCGf}{CGhCGh}{CGjCGj}{FjFj}{CGlCGl}{CGnCGn}{CH`CH`}{FlFl}{CHbCHb}{CHdCHd}{CHfCHf}{FnFn}{CHhCHh}{CHjCHj}{CHlCHl}{G`G`}{CHnCHn}{CI`CI`}{CIbCIb}{CIdCId}{CIfCIf}{CIhCIh}{GbGb}{CIjCIj}{GdGd}{CIlCIl}{CInCIn}{CJ`CJ`}{CJbCJb}{CJdCJd}{GfGf}{CJfCJf}{CJhCJh}{CJjCJj}{CJlCJl}{CJnCJn}{CK`CK`}{CKbCKb}{CKdCKd}{CKfCKf}{CKhCKh}{CKjCKj}{CKlCKl}{CKnCKn}{CL`CL`}{CLbCLb}{CLdCLd}{CLfCLf}{CLhCLh}{CLjCLj}{CLlCLl}{CLnCLn}{CM`CM`}{GhGh}{CMbCMb}{CMdCMd}{CMfCMf}{CMhCMh}{CMjCMj}{GjGj}{CMlCMl}{CMnCMn}{CN`CN`}{CNbCNb}{CNdCNd}{CNfCNf}{CNhCNh}{GlGl}{GnGn}{CNjCNj}{H`H`}{CNlCNl}{HbHb}{CNnCNn}{CO`CO`}{CObCOb}{COdCOd}{COfCOf}{HdHd}{COhCOh}{COjCOj}{COlCOl}{COnCOn}{D@`D@`}{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}{HfHf}{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}{{}Dh}{{}BMl}{{}BMn}{{}BN`}{{}BNb}{{}BNd}{{}Dj}{{}BNf}{{}BNh}{{}BNj}{{}BNl}{{}BNn}{{}BO`}{{}BOb}{{}BOd}{{}BOf}{{}BOh}{{}BOj}{{}BOl}{{}Dl}{{}BOn}{{}Dn}{{}C@`}{{}C@b}{{}C@d}{{}E`}{{}Eb}{{}Ed}{{}C@f}{{}C@h}{{}C@j}{{}C@l}{{}Ef}{{}C@n}{{}CA`}{{}CAb}{{}CAd}{{}CAf}{{}CAh}{{}Eh}{{}CAj}{{}CAl}{{}CAn}{{}Ej}{{}CB`}{{}CBb}{{}CBd}{{}CBf}{{}CBh}{{}CBj}{{}CBl}{{}El}{{}CBn}{{}CC`}{{}CCb}{{}En}{{}CCd}{{}F`}{{}CCf}{{}CCh}{{}CCj}{{}CCl}{{}CCn}{{}CD`}{{}CDb}{{}CDd}{{}CDf}{{}CDh}{{}CDj}{{}CDl}{{}CDn}{{}CE`}{{}CEb}{{}CEd}{{}CEf}{{}CEh}{{}CEj}{{}CEl}{{}CEn}{{}CF`}{{}CFb}{{}Fb}{{}CFd}{{}CFf}{{}Fd}{{}CFh}{{}CFj}{{}CFl}{{}CFn}{{}CG`}{{}CGb}{{}CGd}{{}Ff}{{}Fh}{{}CGf}{{}CGh}{{}CGj}{{}Fj}{{}CGl}{{}CGn}{{}CH`}{{}Fl}{{}CHb}{{}CHd}{{}CHf}{{}Fn}{{}CHh}{{}CHj}{{}CHl}{{}G`}{{}CHn}{{}CI`}{{}CIb}{{}CId}{{}CIf}{{}CIh}{{}Gb}{{}CIj}{{}Gd}{{}CIl}{{}CIn}{{}CJ`}{{}CJb}{{}CJd}{{}Gf}{{}CJf}{{}CJh}{{}CJj}{{}CJl}{{}CJn}{{}CK`}{{}CKb}{{}CKd}{{}CKf}{{}CKh}{{}CKj}{{}CKl}{{}CKn}{{}CL`}{{}CLb}{{}CLd}{{}CLf}{{}CLh}{{}CLj}{{}CLl}{{}CLn}{{}CM`}{{}Gh}{{}CMb}{{}CMd}{{}CMf}{{}CMh}{{}CMj}{{}Gj}{{}CMl}{{}CMn}{{}CN`}{{}CNb}{{}CNd}{{}CNf}{{}CNh}{{}Gl}{{}Gn}{{}CNj}{{}H`}{{}CNl}{{}Hb}{{}CNn}{{}CO`}{{}COb}{{}COd}{{}COf}{{}Hd}{{}COh}{{}COj}{{}COl}{{}COn}{{}D@`}{{}D@b}{{}D@d}{{}D@f}{{}D@h}{{}D@j}{{}D@l}{{}D@n}{{}DA`}{{}DAb}{{}DAd}{{}DAf}{{}DAh}{{}Hf}{{}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`{Dh}}}Bj}{c{{B`{BMl}}}Bj}{c{{B`{BMn}}}Bj}{c{{B`{BN`}}}Bj}{c{{B`{BNb}}}Bj}{c{{B`{BNd}}}Bj}{c{{B`{Dj}}}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`{Dl}}}Bj}{c{{B`{BOn}}}Bj}{c{{B`{Dn}}}Bj}{c{{B`{C@`}}}Bj}{c{{B`{C@b}}}Bj}{c{{B`{C@d}}}Bj}{c{{B`{E`}}}Bj}{c{{B`{Eb}}}Bj}{c{{B`{Ed}}}Bj}{c{{B`{C@f}}}Bj}{c{{B`{C@h}}}Bj}{c{{B`{C@j}}}Bj}{c{{B`{C@l}}}Bj}{c{{B`{Ef}}}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`{Eh}}}Bj}{c{{B`{CAj}}}Bj}{c{{B`{CAl}}}Bj}{c{{B`{CAn}}}Bj}{c{{B`{Ej}}}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`{El}}}Bj}{c{{B`{CBn}}}Bj}{c{{B`{CC`}}}Bj}{c{{B`{CCb}}}Bj}{c{{B`{En}}}Bj}{c{{B`{CCd}}}Bj}{c{{B`{F`}}}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`{CFb}}}Bj}{c{{B`{Fb}}}Bj}{c{{B`{CFd}}}Bj}{c{{B`{CFf}}}Bj}{c{{B`{Fd}}}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`{Ff}}}Bj}{c{{B`{Fh}}}Bj}{c{{B`{CGf}}}Bj}{c{{B`{CGh}}}Bj}{c{{B`{CGj}}}Bj}{c{{B`{Fj}}}Bj}{c{{B`{CGl}}}Bj}{c{{B`{CGn}}}Bj}{c{{B`{CH`}}}Bj}{c{{B`{Fl}}}Bj}{c{{B`{CHb}}}Bj}{c{{B`{CHd}}}Bj}{c{{B`{CHf}}}Bj}{c{{B`{Fn}}}Bj}{c{{B`{CHh}}}Bj}{c{{B`{CHj}}}Bj}{c{{B`{CHl}}}Bj}{c{{B`{G`}}}Bj}{c{{B`{CHn}}}Bj}{c{{B`{CI`}}}Bj}{c{{B`{CIb}}}Bj}{c{{B`{CId}}}Bj}{c{{B`{CIf}}}Bj}{c{{B`{CIh}}}Bj}{c{{B`{Gb}}}Bj}{c{{B`{CIj}}}Bj}{c{{B`{Gd}}}Bj}{c{{B`{CIl}}}Bj}{c{{B`{CIn}}}Bj}{c{{B`{CJ`}}}Bj}{c{{B`{CJb}}}Bj}{c{{B`{CJd}}}Bj}{c{{B`{Gf}}}Bj}{c{{B`{CJf}}}Bj}{c{{B`{CJh}}}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`{CLd}}}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`{Gh}}}Bj}{c{{B`{CMb}}}Bj}{c{{B`{CMd}}}Bj}{c{{B`{CMf}}}Bj}{c{{B`{CMh}}}Bj}{c{{B`{CMj}}}Bj}{c{{B`{Gj}}}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`{Gl}}}Bj}{c{{B`{Gn}}}Bj}{c{{B`{CNj}}}Bj}{c{{B`{H`}}}Bj}{c{{B`{CNl}}}Bj}{c{{B`{Hb}}}Bj}{c{{B`{CNn}}}Bj}{c{{B`{CO`}}}Bj}{c{{B`{COb}}}Bj}{c{{B`{COd}}}Bj}{c{{B`{COf}}}Bj}{c{{B`{Hd}}}Bj}{c{{B`{COh}}}Bj}{c{{B`{COj}}}Bj}{c{{B`{COl}}}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`{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`{Hf}}}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}{{DhDh}Bl}{{BMlBMl}Bl}{{BMnBMn}Bl}{{BN`BN`}Bl}{{BNbBNb}Bl}{{BNdBNd}Bl}{{DjDj}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}{{DlDl}Bl}{{BOnBOn}Bl}{{DnDn}Bl}{{C@`C@`}Bl}{{C@bC@b}Bl}{{C@dC@d}Bl}{{E`E`}Bl}{{EbEb}Bl}{{EdEd}Bl}{{C@fC@f}Bl}{{C@hC@h}Bl}{{C@jC@j}Bl}{{C@lC@l}Bl}{{EfEf}Bl}{{C@nC@n}Bl}{{CA`CA`}Bl}{{CAbCAb}Bl}{{CAdCAd}Bl}{{CAfCAf}Bl}{{CAhCAh}Bl}{{EhEh}Bl}{{CAjCAj}Bl}{{CAlCAl}Bl}{{CAnCAn}Bl}{{EjEj}Bl}{{CB`CB`}Bl}{{CBbCBb}Bl}{{CBdCBd}Bl}{{CBfCBf}Bl}{{CBhCBh}Bl}{{CBjCBj}Bl}{{CBlCBl}Bl}{{ElEl}Bl}{{CBnCBn}Bl}{{CC`CC`}Bl}{{CCbCCb}Bl}{{EnEn}Bl}{{CCdCCd}Bl}{{F`F`}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}{{CFbCFb}Bl}{{FbFb}Bl}{{CFdCFd}Bl}{{CFfCFf}Bl}{{FdFd}Bl}{{CFhCFh}Bl}{{CFjCFj}Bl}{{CFlCFl}Bl}{{CFnCFn}Bl}{{CG`CG`}Bl}{{CGbCGb}Bl}{{CGdCGd}Bl}{{FfFf}Bl}{{FhFh}Bl}{{CGfCGf}Bl}{{CGhCGh}Bl}{{CGjCGj}Bl}{{FjFj}Bl}{{CGlCGl}Bl}{{CGnCGn}Bl}{{CH`CH`}Bl}{{FlFl}Bl}{{CHbCHb}Bl}{{CHdCHd}Bl}{{CHfCHf}Bl}{{FnFn}Bl}{{CHhCHh}Bl}{{CHjCHj}Bl}{{CHlCHl}Bl}{{G`G`}Bl}{{CHnCHn}Bl}{{CI`CI`}Bl}{{CIbCIb}Bl}{{CIdCId}Bl}{{CIfCIf}Bl}{{CIhCIh}Bl}{{GbGb}Bl}{{CIjCIj}Bl}{{GdGd}Bl}{{CIlCIl}Bl}{{CInCIn}Bl}{{CJ`CJ`}Bl}{{CJbCJb}Bl}{{CJdCJd}Bl}{{GfGf}Bl}{{CJfCJf}Bl}{{CJhCJh}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}{{CLdCLd}Bl}{{CLfCLf}Bl}{{CLhCLh}Bl}{{CLjCLj}Bl}{{CLlCLl}Bl}{{CLnCLn}Bl}{{CM`CM`}Bl}{{GhGh}Bl}{{CMbCMb}Bl}{{CMdCMd}Bl}{{CMfCMf}Bl}{{CMhCMh}Bl}{{CMjCMj}Bl}{{GjGj}Bl}{{CMlCMl}Bl}{{CMnCMn}Bl}{{CN`CN`}Bl}{{CNbCNb}Bl}{{CNdCNd}Bl}{{CNfCNf}Bl}{{CNhCNh}Bl}{{GlGl}Bl}{{GnGn}Bl}{{CNjCNj}Bl}{{H`H`}Bl}{{CNlCNl}Bl}{{HbHb}Bl}{{CNnCNn}Bl}{{CO`CO`}Bl}{{CObCOb}Bl}{{COdCOd}Bl}{{COfCOf}Bl}{{HdHd}Bl}{{COhCOh}Bl}{{COjCOj}Bl}{{COlCOl}Bl}{{COnCOn}Bl}{{D@`D@`}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}{{HfHf}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}{{DhBn}DBd}0000{{BMlBn}DBd}{{BMnBn}DBd}{{BN`Bn}DBd}{{BNbBn}DBd}{{BNdBn}DBd}{{DjBn}DBd}0000{{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}{{DlBn}DBd}0000{{BOnBn}DBd}{{DnBn}DBd}0000{{C@`Bn}DBd}{{C@bBn}DBd}{{C@dBn}DBd}{{E`Bn}DBd}0000{{EbBn}DBd}0000{{EdBn}DBd}0000{{C@fBn}DBd}{{C@hBn}DBd}{{C@jBn}DBd}{{C@lBn}DBd}{{EfBn}DBd}0000{{C@nBn}DBd}{{CA`Bn}DBd}{{CAbBn}DBd}{{CAdBn}DBd}{{CAfBn}DBd}{{CAhBn}DBd}{{EhBn}DBd}0000{{CAjBn}DBd}{{CAlBn}DBd}{{CAnBn}DBd}{{EjBn}DBd}0000{{CB`Bn}DBd}{{CBbBn}DBd}{{CBdBn}DBd}{{CBfBn}DBd}{{CBhBn}DBd}{{CBjBn}DBd}{{CBlBn}DBd}{{ElBn}DBd}0000{{CBnBn}DBd}{{CC`Bn}DBd}{{CCbBn}DBd}{{EnBn}DBd}0000{{CCdBn}DBd}{{F`Bn}DBd}0000{{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}{{CFbBn}DBd}{{FbBn}DBd}0000{{CFdBn}DBd}{{CFfBn}DBd}{{FdBn}DBd}0000{{CFhBn}DBd}{{CFjBn}DBd}{{CFlBn}DBd}{{CFnBn}DBd}{{CG`Bn}DBd}{{CGbBn}DBd}{{CGdBn}DBd}{{FfBn}DBd}0000{{FhBn}DBd}0000{{CGfBn}DBd}{{CGhBn}DBd}{{CGjBn}DBd}{{FjBn}DBd}0000{{CGlBn}DBd}{{CGnBn}DBd}{{CH`Bn}DBd}{{FlBn}DBd}0000{{CHbBn}DBd}{{CHdBn}DBd}{{CHfBn}DBd}{{FnBn}DBd}0000{{CHhBn}DBd}{{CHjBn}DBd}{{CHlBn}DBd}{{G`Bn}DBd}0000{{CHnBn}DBd}{{CI`Bn}DBd}{{CIbBn}DBd}{{CIdBn}DBd}{{CIfBn}DBd}{{CIhBn}DBd}{{GbBn}DBd}0000{{CIjBn}DBd}{{GdBn}DBd}0000{{CIlBn}DBd}{{CInBn}DBd}{{CJ`Bn}DBd}{{CJbBn}DBd}{{CJdBn}DBd}{{GfBn}DBd}0000{{CJfBn}DBd}{{CJhBn}DBd}{{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}{{CLdBn}DBd}{{CLfBn}DBd}{{CLhBn}DBd}{{CLjBn}DBd}{{CLlBn}DBd}{{CLnBn}DBd}{{CM`Bn}DBd}{{GhBn}DBd}0000{{CMbBn}DBd}{{CMdBn}DBd}{{CMfBn}DBd}{{CMhBn}DBd}{{CMjBn}DBd}{{GjBn}DBd}0000{{CMlBn}DBd}{{CMnBn}DBd}{{CN`Bn}DBd}{{CNbBn}DBd}{{CNdBn}DBd}{{CNfBn}DBd}{{CNhBn}DBd}{{GlBn}DBd}0000{{GnBn}DBd}0000{{CNjBn}DBd}{{H`Bn}DBd}0000{{CNlBn}DBd}{{HbBn}DBd}0000{{CNnBn}DBd}{{CO`Bn}DBd}{{CObBn}DBd}{{COdBn}DBd}{{COfBn}DBd}{{HdBn}DBd}0000{{COhBn}DBd}{{COjBn}DBd}{{COlBn}DBd}{{COnBn}DBd}{{D@`Bn}DBd}{{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}{{HfBn}DBd}0000{{DAjBn}DBd}{{DAlBn}DBd}```````````````````{cc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{f{{DBf{Dh}}}}{f{{DBf{Dj}}}}{b{{DBf{Dl}}}}{b{{DBf{Dn}}}}{f{{DBf{E`}}}}{Bb{{DBf{Eb}}}}{Bb{{DBf{Ed}}}}{f{{DBf{Ef}}}}{f{{DBf{Eh}}}}{f{{DBf{Ej}}}}{b{{DBf{El}}}}{f{{DBf{En}}}}{f{{DBf{F`}}}}{b{{DBf{Fb}}}}{f{{DBf{Fd}}}}{b{{DBf{Ff}}}}{f{{DBf{Fh}}}}{b{{DBf{Fj}}}}{Bb{{DBf{Fl}}}}{b{{DBf{Fn}}}}{Bb{{DBf{G`}}}}{f{{DBf{Gb}}}}{Bb{{DBf{Gd}}}}{f{{DBf{Gf}}}}{Hh{{DBf{Gh}}}}{Hh{{DBf{Gj}}}}{f{{DBf{Gl}}}}{b{{DBf{Gn}}}}{Bb{{DBf{H`}}}}{b{{DBf{Hb}}}}{Bb{{DBf{Hd}}}}{b{{DBf{Hf}}}}{fDh}{fDj}{bDl}{bDn}{fE`}{BbEb}{BbEd}{fEf}{fEh}{fEj}{bEl}{fEn}{fF`}{bFb}{fFd}{bFf}{fFh}{bFj}{BbFl}{bFn}{BbG`}{fGb}{BbGd}{fGf}{HhGh}{HhGj}{fGl}{bGn}{BbH`}{bHb}{BbHd}{bHf}{fDh}{fDj}{bDl}{bDn}{fE`}{BbEb}{BbEd}{fEf}{fEh}{fEj}{bEl}{fEn}{fF`}{bFb}{fFd}{bFf}{fFh}{bFj}{BbFl}{bFn}{BbG`}{fGb}{BbGd}{fGf}{HhGh}{HhGj}{fGl}{bGn}{BbH`}{bHb}{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`}{{Dhc}B`D`}{{BMlc}B`D`}{{BMnc}B`D`}{{BN`c}B`D`}{{BNbc}B`D`}{{BNdc}B`D`}{{Djc}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`}{{Dlc}B`D`}{{BOnc}B`D`}{{Dnc}B`D`}{{C@`c}B`D`}{{C@bc}B`D`}{{C@dc}B`D`}{{E`c}B`D`}{{Ebc}B`D`}{{Edc}B`D`}{{C@fc}B`D`}{{C@hc}B`D`}{{C@jc}B`D`}{{C@lc}B`D`}{{Efc}B`D`}{{C@nc}B`D`}{{CA`c}B`D`}{{CAbc}B`D`}{{CAdc}B`D`}{{CAfc}B`D`}{{CAhc}B`D`}{{Ehc}B`D`}{{CAjc}B`D`}{{CAlc}B`D`}{{CAnc}B`D`}{{Ejc}B`D`}{{CB`c}B`D`}{{CBbc}B`D`}{{CBdc}B`D`}{{CBfc}B`D`}{{CBhc}B`D`}{{CBjc}B`D`}{{CBlc}B`D`}{{Elc}B`D`}{{CBnc}B`D`}{{CC`c}B`D`}{{CCbc}B`D`}{{Enc}B`D`}{{CCdc}B`D`}{{F`c}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`}{{CFbc}B`D`}{{Fbc}B`D`}{{CFdc}B`D`}{{CFfc}B`D`}{{Fdc}B`D`}{{CFhc}B`D`}{{CFjc}B`D`}{{CFlc}B`D`}{{CFnc}B`D`}{{CG`c}B`D`}{{CGbc}B`D`}{{CGdc}B`D`}{{Ffc}B`D`}{{Fhc}B`D`}{{CGfc}B`D`}{{CGhc}B`D`}{{CGjc}B`D`}{{Fjc}B`D`}{{CGlc}B`D`}{{CGnc}B`D`}{{CH`c}B`D`}{{Flc}B`D`}{{CHbc}B`D`}{{CHdc}B`D`}{{CHfc}B`D`}{{Fnc}B`D`}{{CHhc}B`D`}{{CHjc}B`D`}{{CHlc}B`D`}{{G`c}B`D`}{{CHnc}B`D`}{{CI`c}B`D`}{{CIbc}B`D`}{{CIdc}B`D`}{{CIfc}B`D`}{{CIhc}B`D`}{{Gbc}B`D`}{{CIjc}B`D`}{{Gdc}B`D`}{{CIlc}B`D`}{{CInc}B`D`}{{CJ`c}B`D`}{{CJbc}B`D`}{{CJdc}B`D`}{{Gfc}B`D`}{{CJfc}B`D`}{{CJhc}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`}{{CLdc}B`D`}{{CLfc}B`D`}{{CLhc}B`D`}{{CLjc}B`D`}{{CLlc}B`D`}{{CLnc}B`D`}{{CM`c}B`D`}{{Ghc}B`D`}{{CMbc}B`D`}{{CMdc}B`D`}{{CMfc}B`D`}{{CMhc}B`D`}{{CMjc}B`D`}{{Gjc}B`D`}{{CMlc}B`D`}{{CMnc}B`D`}{{CN`c}B`D`}{{CNbc}B`D`}{{CNdc}B`D`}{{CNfc}B`D`}{{CNhc}B`D`}{{Glc}B`D`}{{Gnc}B`D`}{{CNjc}B`D`}{{H`c}B`D`}{{CNlc}B`D`}{{Hbc}B`D`}{{CNnc}B`D`}{{CO`c}B`D`}{{CObc}B`D`}{{COdc}B`D`}{{COfc}B`D`}{{Hdc}B`D`}{{COhc}B`D`}{{COjc}B`D`}{{COlc}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`}{{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`}{{Hfc}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}{DCnBb}{DD`f}{DDbf}{DDdb}{DDff}{DDhb}{DDjf}{DDlf}{DDnBb}{DE`f}{DEbb}{DEdf}{DEff}{DEhBb}{DEjBb}{DElBb}{DEnb}{DF`Bb}{DFbBb}{DFdHh}{DFfb}{DFhHh}{DFjf}{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}{FC`FC`}{FCbFCb}{FCdFCd}{FCfFCf}{FChFCh}{FCjFCj}{DClDCl}{FClFCl}{FCnFCn}{FD`FD`}{DCnDCn}{FDbFDb}{FDdFDd}{DD`DD`}{FDfFDf}{FDhFDh}{FDjFDj}{DDbDDb}{FDlFDl}{FDnFDn}{FE`FE`}{FEbFEb}{FEdFEd}{FEfFEf}{FEhFEh}{DDdDDd}{FEjFEj}{FElFEl}{FEnFEn}{FF`FF`}{FFbFFb}{FFdFFd}{FFfFFf}{FFhFFh}{FFjFFj}{FFlFFl}{FFnFFn}{FG`FG`}{FGbFGb}{FGdFGd}{FGfFGf}{FGhFGh}{FGjFGj}{FGlFGl}{FGnFGn}{FH`FH`}{FHbFHb}{DDfDDf}{FHdFHd}{DDhDDh}{FHfFHf}{FHhFHh}{FHjFHj}{FHlFHl}{FHnFHn}{FI`FI`}{FIbFIb}{DDjDDj}{FIdFId}{FIfFIf}{FIhFIh}{FIjFIj}{FIlFIl}{FInFIn}{FJ`FJ`}{FJbFJb}{FJdFJd}{FJfFJf}{FJhFJh}{FJjFJj}{FJlFJl}{FJnFJn}{FK`FK`}{FKbFKb}{FKdFKd}{DDlDDl}{FKfFKf}{DDnDDn}{DE`DE`}{FKhFKh}{FKjFKj}{FKlFKl}{FKnFKn}{DEbDEb}{FL`FL`}{FLbFLb}{DEdDEd}{DEfDEf}{FLdFLd}{FLfFLf}{FLhFLh}{DEhDEh}{DEjDEj}{FLjFLj}{DElDEl}{FLlFLl}{DEnDEn}{FLnFLn}{FM`FM`}{FMbFMb}{FMdFMd}{FMfFMf}{DF`DF`}{DFbDFb}{FMhFMh}{FMjFMj}{FMlFMl}{FMnFMn}{FN`FN`}{DFdDFd}{FNbFNb}{DFfDFf}{FNdFNd}{FNfFNf}{FNhFNh}{FNjFNj}{FNlFNl}{FNnFNn}{DFhDFh}{FO`FO`}{FObFOb}{FOdFOd}{FOfFOf}{FOhFOh}{FOjFOj}{FOlFOl}{DFjDFj}{DFlDFl}{FOnFOn}{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}{{}FBn}{{}FC`}{{}FCb}{{}FCd}{{}FCf}{{}FCh}{{}FCj}{{}DCl}{{}FCl}{{}FCn}{{}FD`}{{}DCn}{{}FDb}{{}FDd}{{}DD`}{{}FDf}{{}FDh}{{}FDj}{{}DDb}{{}FDl}{{}FDn}{{}FE`}{{}FEb}{{}FEd}{{}FEf}{{}FEh}{{}DDd}{{}FEj}{{}FEl}{{}FEn}{{}FF`}{{}FFb}{{}FFd}{{}FFf}{{}FFh}{{}FFj}{{}FFl}{{}FFn}{{}FG`}{{}FGb}{{}FGd}{{}FGf}{{}FGh}{{}FGj}{{}FGl}{{}FGn}{{}FH`}{{}FHb}{{}DDf}{{}FHd}{{}DDh}{{}FHf}{{}FHh}{{}FHj}{{}FHl}{{}FHn}{{}FI`}{{}FIb}{{}DDj}{{}FId}{{}FIf}{{}FIh}{{}FIj}{{}FIl}{{}FIn}{{}FJ`}{{}FJb}{{}FJd}{{}FJf}{{}FJh}{{}FJj}{{}FJl}{{}FJn}{{}FK`}{{}FKb}{{}FKd}{{}DDl}{{}FKf}{{}DDn}{{}DE`}{{}FKh}{{}FKj}{{}FKl}{{}FKn}{{}DEb}{{}FL`}{{}FLb}{{}DEd}{{}DEf}{{}FLd}{{}FLf}{{}FLh}{{}DEh}{{}DEj}{{}FLj}{{}DEl}{{}FLl}{{}DEn}{{}FLn}{{}FM`}{{}FMb}{{}FMd}{{}FMf}{{}DF`}{{}DFb}{{}FMh}{{}FMj}{{}FMl}{{}FMn}{{}FN`}{{}DFd}{{}FNb}{{}DFf}{{}FNd}{{}FNf}{{}FNh}{{}FNj}{{}FNl}{{}FNn}{{}DFh}{{}FO`}{{}FOb}{{}FOd}{{}FOf}{{}FOh}{{}FOj}{{}FOl}{{}DFj}{{}DFl}{{}FOn}{{}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`{FBn}}}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`{DCl}}}Bj}{c{{B`{FCl}}}Bj}{c{{B`{FCn}}}Bj}{c{{B`{FD`}}}Bj}{c{{B`{DCn}}}Bj}{c{{B`{FDb}}}Bj}{c{{B`{FDd}}}Bj}{c{{B`{DD`}}}Bj}{c{{B`{FDf}}}Bj}{c{{B`{FDh}}}Bj}{c{{B`{FDj}}}Bj}{c{{B`{DDb}}}Bj}{c{{B`{FDl}}}Bj}{c{{B`{FDn}}}Bj}{c{{B`{FE`}}}Bj}{c{{B`{FEb}}}Bj}{c{{B`{FEd}}}Bj}{c{{B`{FEf}}}Bj}{c{{B`{FEh}}}Bj}{c{{B`{DDd}}}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`{FFf}}}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`{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`{DDf}}}Bj}{c{{B`{FHd}}}Bj}{c{{B`{DDh}}}Bj}{c{{B`{FHf}}}Bj}{c{{B`{FHh}}}Bj}{c{{B`{FHj}}}Bj}{c{{B`{FHl}}}Bj}{c{{B`{FHn}}}Bj}{c{{B`{FI`}}}Bj}{c{{B`{FIb}}}Bj}{c{{B`{DDj}}}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`{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`{DDl}}}Bj}{c{{B`{FKf}}}Bj}{c{{B`{DDn}}}Bj}{c{{B`{DE`}}}Bj}{c{{B`{FKh}}}Bj}{c{{B`{FKj}}}Bj}{c{{B`{FKl}}}Bj}{c{{B`{FKn}}}Bj}{c{{B`{DEb}}}Bj}{c{{B`{FL`}}}Bj}{c{{B`{FLb}}}Bj}{c{{B`{DEd}}}Bj}{c{{B`{DEf}}}Bj}{c{{B`{FLd}}}Bj}{c{{B`{FLf}}}Bj}{c{{B`{FLh}}}Bj}{c{{B`{DEh}}}Bj}{c{{B`{DEj}}}Bj}{c{{B`{FLj}}}Bj}{c{{B`{DEl}}}Bj}{c{{B`{FLl}}}Bj}{c{{B`{DEn}}}Bj}{c{{B`{FLn}}}Bj}{c{{B`{FM`}}}Bj}{c{{B`{FMb}}}Bj}{c{{B`{FMd}}}Bj}{c{{B`{FMf}}}Bj}{c{{B`{DF`}}}Bj}{c{{B`{DFb}}}Bj}{c{{B`{FMh}}}Bj}{c{{B`{FMj}}}Bj}{c{{B`{FMl}}}Bj}{c{{B`{FMn}}}Bj}{c{{B`{FN`}}}Bj}{c{{B`{DFd}}}Bj}{c{{B`{FNb}}}Bj}{c{{B`{DFf}}}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`{DFh}}}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`{DFj}}}Bj}{c{{B`{DFl}}}Bj}{c{{B`{FOn}}}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}{{FBnFBn}Bl}{{FC`FC`}Bl}{{FCbFCb}Bl}{{FCdFCd}Bl}{{FCfFCf}Bl}{{FChFCh}Bl}{{FCjFCj}Bl}{{DClDCl}Bl}{{FClFCl}Bl}{{FCnFCn}Bl}{{FD`FD`}Bl}{{DCnDCn}Bl}{{FDbFDb}Bl}{{FDdFDd}Bl}{{DD`DD`}Bl}{{FDfFDf}Bl}{{FDhFDh}Bl}{{FDjFDj}Bl}{{DDbDDb}Bl}{{FDlFDl}Bl}{{FDnFDn}Bl}{{FE`FE`}Bl}{{FEbFEb}Bl}{{FEdFEd}Bl}{{FEfFEf}Bl}{{FEhFEh}Bl}{{DDdDDd}Bl}{{FEjFEj}Bl}{{FElFEl}Bl}{{FEnFEn}Bl}{{FF`FF`}Bl}{{FFbFFb}Bl}{{FFdFFd}Bl}{{FFfFFf}Bl}{{FFhFFh}Bl}{{FFjFFj}Bl}{{FFlFFl}Bl}{{FFnFFn}Bl}{{FG`FG`}Bl}{{FGbFGb}Bl}{{FGdFGd}Bl}{{FGfFGf}Bl}{{FGhFGh}Bl}{{FGjFGj}Bl}{{FGlFGl}Bl}{{FGnFGn}Bl}{{FH`FH`}Bl}{{FHbFHb}Bl}{{DDfDDf}Bl}{{FHdFHd}Bl}{{DDhDDh}Bl}{{FHfFHf}Bl}{{FHhFHh}Bl}{{FHjFHj}Bl}{{FHlFHl}Bl}{{FHnFHn}Bl}{{FI`FI`}Bl}{{FIbFIb}Bl}{{DDjDDj}Bl}{{FIdFId}Bl}{{FIfFIf}Bl}{{FIhFIh}Bl}{{FIjFIj}Bl}{{FIlFIl}Bl}{{FInFIn}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}{{DDlDDl}Bl}{{FKfFKf}Bl}{{DDnDDn}Bl}{{DE`DE`}Bl}{{FKhFKh}Bl}{{FKjFKj}Bl}{{FKlFKl}Bl}{{FKnFKn}Bl}{{DEbDEb}Bl}{{FL`FL`}Bl}{{FLbFLb}Bl}{{DEdDEd}Bl}{{DEfDEf}Bl}{{FLdFLd}Bl}{{FLfFLf}Bl}{{FLhFLh}Bl}{{DEhDEh}Bl}{{DEjDEj}Bl}{{FLjFLj}Bl}{{DElDEl}Bl}{{FLlFLl}Bl}{{DEnDEn}Bl}{{FLnFLn}Bl}{{FM`FM`}Bl}{{FMbFMb}Bl}{{FMdFMd}Bl}{{FMfFMf}Bl}{{DF`DF`}Bl}{{DFbDFb}Bl}{{FMhFMh}Bl}{{FMjFMj}Bl}{{FMlFMl}Bl}{{FMnFMn}Bl}{{FN`FN`}Bl}{{DFdDFd}Bl}{{FNbFNb}Bl}{{DFfDFf}Bl}{{FNdFNd}Bl}{{FNfFNf}Bl}{{FNhFNh}Bl}{{FNjFNj}Bl}{{FNlFNl}Bl}{{FNnFNn}Bl}{{DFhDFh}Bl}{{FO`FO`}Bl}{{FObFOb}Bl}{{FOdFOd}Bl}{{FOfFOf}Bl}{{FOhFOh}Bl}{{FOjFOj}Bl}{{FOlFOl}Bl}{{DFjDFj}Bl}{{DFlDFl}Bl}{{FOnFOn}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}{{FBnBn}DBd}{{FC`Bn}DBd}{{FCbBn}DBd}{{FCdBn}DBd}{{FCfBn}DBd}{{FChBn}DBd}{{FCjBn}DBd}{{DClBn}DBd}0000{{FClBn}DBd}{{FCnBn}DBd}{{FD`Bn}DBd}{{DCnBn}DBd}0000{{FDbBn}DBd}{{FDdBn}DBd}{{DD`Bn}DBd}0000{{FDfBn}DBd}{{FDhBn}DBd}{{FDjBn}DBd}{{DDbBn}DBd}0000{{FDlBn}DBd}{{FDnBn}DBd}{{FE`Bn}DBd}{{FEbBn}DBd}{{FEdBn}DBd}{{FEfBn}DBd}{{FEhBn}DBd}{{DDdBn}DBd}0000{{FEjBn}DBd}{{FElBn}DBd}{{FEnBn}DBd}{{FF`Bn}DBd}{{FFbBn}DBd}{{FFdBn}DBd}{{FFfBn}DBd}{{FFhBn}DBd}{{FFjBn}DBd}{{FFlBn}DBd}{{FFnBn}DBd}{{FG`Bn}DBd}{{FGbBn}DBd}{{FGdBn}DBd}{{FGfBn}DBd}{{FGhBn}DBd}{{FGjBn}DBd}{{FGlBn}DBd}{{FGnBn}DBd}{{FH`Bn}DBd}{{FHbBn}DBd}{{DDfBn}DBd}0000{{FHdBn}DBd}{{DDhBn}DBd}0000{{FHfBn}DBd}{{FHhBn}DBd}{{FHjBn}DBd}{{FHlBn}DBd}{{FHnBn}DBd}{{FI`Bn}DBd}{{FIbBn}DBd}{{DDjBn}DBd}0000{{FIdBn}DBd}{{FIfBn}DBd}{{FIhBn}DBd}{{FIjBn}DBd}{{FIlBn}DBd}{{FInBn}DBd}{{FJ`Bn}DBd}{{FJbBn}DBd}{{FJdBn}DBd}{{FJfBn}DBd}{{FJhBn}DBd}{{FJjBn}DBd}{{FJlBn}DBd}{{FJnBn}DBd}{{FK`Bn}DBd}{{FKbBn}DBd}{{FKdBn}DBd}{{DDlBn}DBd}0000{{FKfBn}DBd}{{DDnBn}DBd}0000{{DE`Bn}DBd}0000{{FKhBn}DBd}{{FKjBn}DBd}{{FKlBn}DBd}{{FKnBn}DBd}{{DEbBn}DBd}0000{{FL`Bn}DBd}{{FLbBn}DBd}{{DEdBn}DBd}0000{{DEfBn}DBd}0000{{FLdBn}DBd}{{FLfBn}DBd}{{FLhBn}DBd}{{DEhBn}DBd}0000{{DEjBn}DBd}0000{{FLjBn}DBd}{{DElBn}DBd}0000{{FLlBn}DBd}{{DEnBn}DBd}0000{{FLnBn}DBd}{{FM`Bn}DBd}{{FMbBn}DBd}{{FMdBn}DBd}{{FMfBn}DBd}{{DF`Bn}DBd}0000{{DFbBn}DBd}0000{{FMhBn}DBd}{{FMjBn}DBd}{{FMlBn}DBd}{{FMnBn}DBd}{{FN`Bn}DBd}{{DFdBn}DBd}0000{{FNbBn}DBd}{{DFfBn}DBd}0000{{FNdBn}DBd}{{FNfBn}DBd}{{FNhBn}DBd}{{FNjBn}DBd}{{FNlBn}DBd}{{FNnBn}DBd}{{DFhBn}DBd}0000{{FO`Bn}DBd}{{FObBn}DBd}{{FOdBn}DBd}{{FOfBn}DBd}{{FOhBn}DBd}{{FOjBn}DBd}{{FOlBn}DBd}{{DFjBn}DBd}0000{{DFlBn}DBd}0000{{FOnBn}DBd}{{G@`Bn}DBd}{{G@bBn}DBd}{{G@dBn}DBd}{{G@fBn}DBd}{{G@hBn}DBd}``````````````{cc{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{f{{DBf{DCl}}}}{Bb{{DBf{DCn}}}}{f{{DBf{DD`}}}}{f{{DBf{DDb}}}}{b{{DBf{DDd}}}}{f{{DBf{DDf}}}}{b{{DBf{DDh}}}}{f{{DBf{DDj}}}}{f{{DBf{DDl}}}}{Bb{{DBf{DDn}}}}{f{{DBf{DE`}}}}{b{{DBf{DEb}}}}{f{{DBf{DEd}}}}{f{{DBf{DEf}}}}{Bb{{DBf{DEh}}}}{Bb{{DBf{DEj}}}}{Bb{{DBf{DEl}}}}{b{{DBf{DEn}}}}{Bb{{DBf{DF`}}}}{Bb{{DBf{DFb}}}}{Hh{{DBf{DFd}}}}{b{{DBf{DFf}}}}{Hh{{DBf{DFh}}}}{f{{DBf{DFj}}}}{f{{DBf{DFl}}}}{fDCl}{BbDCn}{fDD`}{fDDb}{bDDd}{fDDf}{bDDh}{fDDj}{fDDl}{BbDDn}{fDE`}{bDEb}{fDEd}{fDEf}{BbDEh}{BbDEj}{BbDEl}{bDEn}{BbDF`}{BbDFb}{HhDFd}{bDFf}{HhDFh}{fDFj}{fDFl}{fDCl}{BbDCn}{fDD`}{fDDb}{bDDd}{fDDf}{bDDh}{fDDj}{fDDl}{BbDDn}{fDE`}{bDEb}{fDEd}{fDEf}{BbDEh}{BbDEj}{BbDEl}{bDEn}{BbDF`}{BbDFb}{HhDFd}{bDFf}{HhDFh}{fDFj}{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`}{{FC`c}B`D`}{{FCbc}B`D`}{{FCdc}B`D`}{{FCfc}B`D`}{{FChc}B`D`}{{FCjc}B`D`}{{DClc}B`D`}{{FClc}B`D`}{{FCnc}B`D`}{{FD`c}B`D`}{{DCnc}B`D`}{{FDbc}B`D`}{{FDdc}B`D`}{{DD`c}B`D`}{{FDfc}B`D`}{{FDhc}B`D`}{{FDjc}B`D`}{{DDbc}B`D`}{{FDlc}B`D`}{{FDnc}B`D`}{{FE`c}B`D`}{{FEbc}B`D`}{{FEdc}B`D`}{{FEfc}B`D`}{{FEhc}B`D`}{{DDdc}B`D`}{{FEjc}B`D`}{{FElc}B`D`}{{FEnc}B`D`}{{FF`c}B`D`}{{FFbc}B`D`}{{FFdc}B`D`}{{FFfc}B`D`}{{FFhc}B`D`}{{FFjc}B`D`}{{FFlc}B`D`}{{FFnc}B`D`}{{FG`c}B`D`}{{FGbc}B`D`}{{FGdc}B`D`}{{FGfc}B`D`}{{FGhc}B`D`}{{FGjc}B`D`}{{FGlc}B`D`}{{FGnc}B`D`}{{FH`c}B`D`}{{FHbc}B`D`}{{DDfc}B`D`}{{FHdc}B`D`}{{DDhc}B`D`}{{FHfc}B`D`}{{FHhc}B`D`}{{FHjc}B`D`}{{FHlc}B`D`}{{FHnc}B`D`}{{FI`c}B`D`}{{FIbc}B`D`}{{DDjc}B`D`}{{FIdc}B`D`}{{FIfc}B`D`}{{FIhc}B`D`}{{FIjc}B`D`}{{FIlc}B`D`}{{FInc}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`}{{DDlc}B`D`}{{FKfc}B`D`}{{DDnc}B`D`}{{DE`c}B`D`}{{FKhc}B`D`}{{FKjc}B`D`}{{FKlc}B`D`}{{FKnc}B`D`}{{DEbc}B`D`}{{FL`c}B`D`}{{FLbc}B`D`}{{DEdc}B`D`}{{DEfc}B`D`}{{FLdc}B`D`}{{FLfc}B`D`}{{FLhc}B`D`}{{DEhc}B`D`}{{DEjc}B`D`}{{FLjc}B`D`}{{DElc}B`D`}{{FLlc}B`D`}{{DEnc}B`D`}{{FLnc}B`D`}{{FM`c}B`D`}{{FMbc}B`D`}{{FMdc}B`D`}{{FMfc}B`D`}{{DF`c}B`D`}{{DFbc}B`D`}{{FMhc}B`D`}{{FMjc}B`D`}{{FMlc}B`D`}{{FMnc}B`D`}{{FN`c}B`D`}{{DFdc}B`D`}{{FNbc}B`D`}{{DFfc}B`D`}{{FNdc}B`D`}{{FNfc}B`D`}{{FNhc}B`D`}{{FNjc}B`D`}{{FNlc}B`D`}{{FNnc}B`D`}{{DFhc}B`D`}{{FO`c}B`D`}{{FObc}B`D`}{{FOdc}B`D`}{{FOfc}B`D`}{{FOhc}B`D`}{{FOjc}B`D`}{{FOlc}B`D`}{{DFjc}B`D`}{{DFlc}B`D`}{{FOnc}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}22{AnCn}777{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}{GAhf}{GAjb}{GAlBb}{GAnb}{GB`f}{GBbf}{GBdf}{GBfHh}{GBhb}{GBjf}{GBlBb}{GBnBb}{GC`f}{GCbb}{GCdBb}{GCfBb}{GChf}{GCjHh}{GClf}{GCnBb}{GD`f}{GDbb}{GDdf}{GDff}{GDhb}{GDjb}{GDlBb}{{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}{IAnIAn}{IB`IB`}{GAhGAh}{IBbIBb}{IBdIBd}{IBfIBf}{GAjGAj}{IBhIBh}{IBjIBj}{IBlIBl}{GAlGAl}{IBnIBn}{IC`IC`}{ICbICb}{ICdICd}{ICfICf}{GAnGAn}{IChICh}{ICjICj}{IClICl}{ICnICn}{GB`GB`}{ID`ID`}{IDbIDb}{GBbGBb}{IDdIDd}{IDfIDf}{GBdGBd}{IDhIDh}{IDjIDj}{IDlIDl}{IDnIDn}{IE`IE`}{IEbIEb}{IEdIEd}{GBfGBf}{IEfIEf}{IEhIEh}{IEjIEj}{IElIEl}{IEnIEn}{IF`IF`}{IFbIFb}{IFdIFd}{GBhGBh}{IFfIFf}{IFhIFh}{IFjIFj}{IFlIFl}{IFnIFn}{IG`IG`}{IGbIGb}{IGdIGd}{IGfIGf}{IGhIGh}{IGjIGj}{IGlIGl}{IGnIGn}{IH`IH`}{GBjGBj}{IHbIHb}{IHdIHd}{IHfIHf}{IHhIHh}{IHjIHj}{GBlGBl}{IHlIHl}{IHnIHn}{II`II`}{IIbIIb}{IIdIId}{IIfIIf}{IIhIIh}{GBnGBn}{IIjIIj}{GC`GC`}{IIlIIl}{IInIIn}{IJ`IJ`}{GCbGCb}{IJbIJb}{IJdIJd}{GCdGCd}{IJfIJf}{IJhIJh}{IJjIJj}{IJlIJl}{IJnIJn}{IK`IK`}{IKbIKb}{IKdIKd}{GCfGCf}{IKfIKf}{IKhIKh}{IKjIKj}{IKlIKl}{IKnIKn}{IL`IL`}{ILbILb}{ILdILd}{GChGCh}{ILfILf}{ILhILh}{ILjILj}{ILlILl}{ILnILn}{GCjGCj}{IM`IM`}{GClGCl}{IMbIMb}{GCnGCn}{IMdIMd}{IMfIMf}{GD`GD`}{GDbGDb}{IMhIMh}{IMjIMj}{IMlIMl}{IMnIMn}{IN`IN`}{INbINb}{INdINd}{INfINf}{GDdGDd}{GDfGDf}{GDhGDh}{INhINh}{INjINj}{INlINl}{INnINn}{GDjGDj}{IO`IO`}{IObIOb}{IOdIOd}{IOfIOf}{GDlGDl}{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}{{}IAn}{{}IB`}{{}GAh}{{}IBb}{{}IBd}{{}IBf}{{}GAj}{{}IBh}{{}IBj}{{}IBl}{{}GAl}{{}IBn}{{}IC`}{{}ICb}{{}ICd}{{}ICf}{{}GAn}{{}ICh}{{}ICj}{{}ICl}{{}ICn}{{}GB`}{{}ID`}{{}IDb}{{}GBb}{{}IDd}{{}IDf}{{}GBd}{{}IDh}{{}IDj}{{}IDl}{{}IDn}{{}IE`}{{}IEb}{{}IEd}{{}GBf}{{}IEf}{{}IEh}{{}IEj}{{}IEl}{{}IEn}{{}IF`}{{}IFb}{{}IFd}{{}GBh}{{}IFf}{{}IFh}{{}IFj}{{}IFl}{{}IFn}{{}IG`}{{}IGb}{{}IGd}{{}IGf}{{}IGh}{{}IGj}{{}IGl}{{}IGn}{{}IH`}{{}GBj}{{}IHb}{{}IHd}{{}IHf}{{}IHh}{{}IHj}{{}GBl}{{}IHl}{{}IHn}{{}II`}{{}IIb}{{}IId}{{}IIf}{{}IIh}{{}GBn}{{}IIj}{{}GC`}{{}IIl}{{}IIn}{{}IJ`}{{}GCb}{{}IJb}{{}IJd}{{}GCd}{{}IJf}{{}IJh}{{}IJj}{{}IJl}{{}IJn}{{}IK`}{{}IKb}{{}IKd}{{}GCf}{{}IKf}{{}IKh}{{}IKj}{{}IKl}{{}IKn}{{}IL`}{{}ILb}{{}ILd}{{}GCh}{{}ILf}{{}ILh}{{}ILj}{{}ILl}{{}ILn}{{}GCj}{{}IM`}{{}GCl}{{}IMb}{{}GCn}{{}IMd}{{}IMf}{{}GD`}{{}GDb}{{}IMh}{{}IMj}{{}IMl}{{}IMn}{{}IN`}{{}INb}{{}INd}{{}INf}{{}GDd}{{}GDf}{{}GDh}{{}INh}{{}INj}{{}INl}{{}INn}{{}GDj}{{}IO`}{{}IOb}{{}IOd}{{}IOf}{{}GDl}{{}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`{IAn}}}Bj}{c{{B`{IB`}}}Bj}{c{{B`{GAh}}}Bj}{c{{B`{IBb}}}Bj}{c{{B`{IBd}}}Bj}{c{{B`{IBf}}}Bj}{c{{B`{GAj}}}Bj}{c{{B`{IBh}}}Bj}{c{{B`{IBj}}}Bj}{c{{B`{IBl}}}Bj}{c{{B`{GAl}}}Bj}{c{{B`{IBn}}}Bj}{c{{B`{IC`}}}Bj}{c{{B`{ICb}}}Bj}{c{{B`{ICd}}}Bj}{c{{B`{ICf}}}Bj}{c{{B`{GAn}}}Bj}{c{{B`{ICh}}}Bj}{c{{B`{ICj}}}Bj}{c{{B`{ICl}}}Bj}{c{{B`{ICn}}}Bj}{c{{B`{GB`}}}Bj}{c{{B`{ID`}}}Bj}{c{{B`{IDb}}}Bj}{c{{B`{GBb}}}Bj}{c{{B`{IDd}}}Bj}{c{{B`{IDf}}}Bj}{c{{B`{GBd}}}Bj}{c{{B`{IDh}}}Bj}{c{{B`{IDj}}}Bj}{c{{B`{IDl}}}Bj}{c{{B`{IDn}}}Bj}{c{{B`{IE`}}}Bj}{c{{B`{IEb}}}Bj}{c{{B`{IEd}}}Bj}{c{{B`{GBf}}}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`{IFd}}}Bj}{c{{B`{GBh}}}Bj}{c{{B`{IFf}}}Bj}{c{{B`{IFh}}}Bj}{c{{B`{IFj}}}Bj}{c{{B`{IFl}}}Bj}{c{{B`{IFn}}}Bj}{c{{B`{IG`}}}Bj}{c{{B`{IGb}}}Bj}{c{{B`{IGd}}}Bj}{c{{B`{IGf}}}Bj}{c{{B`{IGh}}}Bj}{c{{B`{IGj}}}Bj}{c{{B`{IGl}}}Bj}{c{{B`{IGn}}}Bj}{c{{B`{IH`}}}Bj}{c{{B`{GBj}}}Bj}{c{{B`{IHb}}}Bj}{c{{B`{IHd}}}Bj}{c{{B`{IHf}}}Bj}{c{{B`{IHh}}}Bj}{c{{B`{IHj}}}Bj}{c{{B`{GBl}}}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`{IIh}}}Bj}{c{{B`{GBn}}}Bj}{c{{B`{IIj}}}Bj}{c{{B`{GC`}}}Bj}{c{{B`{IIl}}}Bj}{c{{B`{IIn}}}Bj}{c{{B`{IJ`}}}Bj}{c{{B`{GCb}}}Bj}{c{{B`{IJb}}}Bj}{c{{B`{IJd}}}Bj}{c{{B`{GCd}}}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`{GCf}}}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`{GCh}}}Bj}{c{{B`{ILf}}}Bj}{c{{B`{ILh}}}Bj}{c{{B`{ILj}}}Bj}{c{{B`{ILl}}}Bj}{c{{B`{ILn}}}Bj}{c{{B`{GCj}}}Bj}{c{{B`{IM`}}}Bj}{c{{B`{GCl}}}Bj}{c{{B`{IMb}}}Bj}{c{{B`{GCn}}}Bj}{c{{B`{IMd}}}Bj}{c{{B`{IMf}}}Bj}{c{{B`{GD`}}}Bj}{c{{B`{GDb}}}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`{GDd}}}Bj}{c{{B`{GDf}}}Bj}{c{{B`{GDh}}}Bj}{c{{B`{INh}}}Bj}{c{{B`{INj}}}Bj}{c{{B`{INl}}}Bj}{c{{B`{INn}}}Bj}{c{{B`{GDj}}}Bj}{c{{B`{IO`}}}Bj}{c{{B`{IOb}}}Bj}{c{{B`{IOd}}}Bj}{c{{B`{IOf}}}Bj}{c{{B`{GDl}}}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}{{IAnIAn}Bl}{{IB`IB`}Bl}{{GAhGAh}Bl}{{IBbIBb}Bl}{{IBdIBd}Bl}{{IBfIBf}Bl}{{GAjGAj}Bl}{{IBhIBh}Bl}{{IBjIBj}Bl}{{IBlIBl}Bl}{{GAlGAl}Bl}{{IBnIBn}Bl}{{IC`IC`}Bl}{{ICbICb}Bl}{{ICdICd}Bl}{{ICfICf}Bl}{{GAnGAn}Bl}{{IChICh}Bl}{{ICjICj}Bl}{{IClICl}Bl}{{ICnICn}Bl}{{GB`GB`}Bl}{{ID`ID`}Bl}{{IDbIDb}Bl}{{GBbGBb}Bl}{{IDdIDd}Bl}{{IDfIDf}Bl}{{GBdGBd}Bl}{{IDhIDh}Bl}{{IDjIDj}Bl}{{IDlIDl}Bl}{{IDnIDn}Bl}{{IE`IE`}Bl}{{IEbIEb}Bl}{{IEdIEd}Bl}{{GBfGBf}Bl}{{IEfIEf}Bl}{{IEhIEh}Bl}{{IEjIEj}Bl}{{IElIEl}Bl}{{IEnIEn}Bl}{{IF`IF`}Bl}{{IFbIFb}Bl}{{IFdIFd}Bl}{{GBhGBh}Bl}{{IFfIFf}Bl}{{IFhIFh}Bl}{{IFjIFj}Bl}{{IFlIFl}Bl}{{IFnIFn}Bl}{{IG`IG`}Bl}{{IGbIGb}Bl}{{IGdIGd}Bl}{{IGfIGf}Bl}{{IGhIGh}Bl}{{IGjIGj}Bl}{{IGlIGl}Bl}{{IGnIGn}Bl}{{IH`IH`}Bl}{{GBjGBj}Bl}{{IHbIHb}Bl}{{IHdIHd}Bl}{{IHfIHf}Bl}{{IHhIHh}Bl}{{IHjIHj}Bl}{{GBlGBl}Bl}{{IHlIHl}Bl}{{IHnIHn}Bl}{{II`II`}Bl}{{IIbIIb}Bl}{{IIdIId}Bl}{{IIfIIf}Bl}{{IIhIIh}Bl}{{GBnGBn}Bl}{{IIjIIj}Bl}{{GC`GC`}Bl}{{IIlIIl}Bl}{{IInIIn}Bl}{{IJ`IJ`}Bl}{{GCbGCb}Bl}{{IJbIJb}Bl}{{IJdIJd}Bl}{{GCdGCd}Bl}{{IJfIJf}Bl}{{IJhIJh}Bl}{{IJjIJj}Bl}{{IJlIJl}Bl}{{IJnIJn}Bl}{{IK`IK`}Bl}{{IKbIKb}Bl}{{IKdIKd}Bl}{{GCfGCf}Bl}{{IKfIKf}Bl}{{IKhIKh}Bl}{{IKjIKj}Bl}{{IKlIKl}Bl}{{IKnIKn}Bl}{{IL`IL`}Bl}{{ILbILb}Bl}{{ILdILd}Bl}{{GChGCh}Bl}{{ILfILf}Bl}{{ILhILh}Bl}{{ILjILj}Bl}{{ILlILl}Bl}{{ILnILn}Bl}{{GCjGCj}Bl}{{IM`IM`}Bl}{{GClGCl}Bl}{{IMbIMb}Bl}{{GCnGCn}Bl}{{IMdIMd}Bl}{{IMfIMf}Bl}{{GD`GD`}Bl}{{GDbGDb}Bl}{{IMhIMh}Bl}{{IMjIMj}Bl}{{IMlIMl}Bl}{{IMnIMn}Bl}{{IN`IN`}Bl}{{INbINb}Bl}{{INdINd}Bl}{{INfINf}Bl}{{GDdGDd}Bl}{{GDfGDf}Bl}{{GDhGDh}Bl}{{INhINh}Bl}{{INjINj}Bl}{{INlINl}Bl}{{INnINn}Bl}{{GDjGDj}Bl}{{IO`IO`}Bl}{{IObIOb}Bl}{{IOdIOd}Bl}{{IOfIOf}Bl}{{GDlGDl}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}{{IAnBn}DBd}{{IB`Bn}DBd}{{GAhBn}DBd}0000{{IBbBn}DBd}{{IBdBn}DBd}{{IBfBn}DBd}{{GAjBn}DBd}0000{{IBhBn}DBd}{{IBjBn}DBd}{{IBlBn}DBd}{{GAlBn}DBd}0000{{IBnBn}DBd}{{IC`Bn}DBd}{{ICbBn}DBd}{{ICdBn}DBd}{{ICfBn}DBd}{{GAnBn}DBd}0000{{IChBn}DBd}{{ICjBn}DBd}{{IClBn}DBd}{{ICnBn}DBd}{{GB`Bn}DBd}0000{{ID`Bn}DBd}{{IDbBn}DBd}{{GBbBn}DBd}0000{{IDdBn}DBd}{{IDfBn}DBd}{{GBdBn}DBd}0000{{IDhBn}DBd}{{IDjBn}DBd}{{IDlBn}DBd}{{IDnBn}DBd}{{IE`Bn}DBd}{{IEbBn}DBd}{{IEdBn}DBd}{{GBfBn}DBd}0000{{IEfBn}DBd}{{IEhBn}DBd}{{IEjBn}DBd}{{IElBn}DBd}{{IEnBn}DBd}{{IF`Bn}DBd}{{IFbBn}DBd}{{IFdBn}DBd}{{GBhBn}DBd}0000{{IFfBn}DBd}{{IFhBn}DBd}{{IFjBn}DBd}{{IFlBn}DBd}{{IFnBn}DBd}{{IG`Bn}DBd}{{IGbBn}DBd}{{IGdBn}DBd}{{IGfBn}DBd}{{IGhBn}DBd}{{IGjBn}DBd}{{IGlBn}DBd}{{IGnBn}DBd}{{IH`Bn}DBd}{{GBjBn}DBd}0000{{IHbBn}DBd}{{IHdBn}DBd}{{IHfBn}DBd}{{IHhBn}DBd}{{IHjBn}DBd}{{GBlBn}DBd}0000{{IHlBn}DBd}{{IHnBn}DBd}{{II`Bn}DBd}{{IIbBn}DBd}{{IIdBn}DBd}{{IIfBn}DBd}{{IIhBn}DBd}{{GBnBn}DBd}0000{{IIjBn}DBd}{{GC`Bn}DBd}0000{{IIlBn}DBd}{{IInBn}DBd}{{IJ`Bn}DBd}{{GCbBn}DBd}0000{{IJbBn}DBd}{{IJdBn}DBd}{{GCdBn}DBd}0000{{IJfBn}DBd}{{IJhBn}DBd}{{IJjBn}DBd}{{IJlBn}DBd}{{IJnBn}DBd}{{IK`Bn}DBd}{{IKbBn}DBd}{{IKdBn}DBd}{{GCfBn}DBd}0000{{IKfBn}DBd}{{IKhBn}DBd}{{IKjBn}DBd}{{IKlBn}DBd}{{IKnBn}DBd}{{IL`Bn}DBd}{{ILbBn}DBd}{{ILdBn}DBd}{{GChBn}DBd}0000{{ILfBn}DBd}{{ILhBn}DBd}{{ILjBn}DBd}{{ILlBn}DBd}{{ILnBn}DBd}{{GCjBn}DBd}0000{{IM`Bn}DBd}{{GClBn}DBd}0000{{IMbBn}DBd}{{GCnBn}DBd}0000{{IMdBn}DBd}{{IMfBn}DBd}{{GD`Bn}DBd}0000{{GDbBn}DBd}0000{{IMhBn}DBd}{{IMjBn}DBd}{{IMlBn}DBd}{{IMnBn}DBd}{{IN`Bn}DBd}{{INbBn}DBd}{{INdBn}DBd}{{INfBn}DBd}{{GDdBn}DBd}0000{{GDfBn}DBd}0000{{GDhBn}DBd}0000{{INhBn}DBd}{{INjBn}DBd}{{INlBn}DBd}{{INnBn}DBd}{{GDjBn}DBd}0000{{IO`Bn}DBd}{{IObBn}DBd}{{IOdBn}DBd}{{IOfBn}DBd}{{GDlBn}DBd}0000{{IOhBn}DBd}``````````````{cc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{f{{DBf{GAf}}}}{f{{DBf{GAh}}}}{b{{DBf{GAj}}}}{Bb{{DBf{GAl}}}}{b{{DBf{GAn}}}}{f{{DBf{GB`}}}}{f{{DBf{GBb}}}}{f{{DBf{GBd}}}}{Hh{{DBf{GBf}}}}{b{{DBf{GBh}}}}{f{{DBf{GBj}}}}{Bb{{DBf{GBl}}}}{Bb{{DBf{GBn}}}}{f{{DBf{GC`}}}}{b{{DBf{GCb}}}}{Bb{{DBf{GCd}}}}{Bb{{DBf{GCf}}}}{f{{DBf{GCh}}}}{Hh{{DBf{GCj}}}}{f{{DBf{GCl}}}}{Bb{{DBf{GCn}}}}{f{{DBf{GD`}}}}{b{{DBf{GDb}}}}{f{{DBf{GDd}}}}{f{{DBf{GDf}}}}{b{{DBf{GDh}}}}{b{{DBf{GDj}}}}{Bb{{DBf{GDl}}}}{fGAf}{fGAh}{bGAj}{BbGAl}{bGAn}{fGB`}{fGBb}{fGBd}{HhGBf}{bGBh}{fGBj}{BbGBl}{BbGBn}{fGC`}{bGCb}{BbGCd}{BbGCf}{fGCh}{HhGCj}{fGCl}{BbGCn}{fGD`}{bGDb}{fGDd}{fGDf}{bGDh}{bGDj}{BbGDl}{fGAf}{fGAh}{bGAj}{BbGAl}{bGAn}{fGB`}{fGBb}{fGBd}{HhGBf}{bGBh}{fGBj}{BbGBl}{BbGBn}{fGC`}{bGCb}{BbGCd}{BbGCf}{fGCh}{HhGCj}{fGCl}{BbGCn}{fGD`}{bGDb}{fGDd}{fGDf}{bGDh}{bGDj}{BbGDl}{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`}{{IAnc}B`D`}{{IB`c}B`D`}{{GAhc}B`D`}{{IBbc}B`D`}{{IBdc}B`D`}{{IBfc}B`D`}{{GAjc}B`D`}{{IBhc}B`D`}{{IBjc}B`D`}{{IBlc}B`D`}{{GAlc}B`D`}{{IBnc}B`D`}{{IC`c}B`D`}{{ICbc}B`D`}{{ICdc}B`D`}{{ICfc}B`D`}{{GAnc}B`D`}{{IChc}B`D`}{{ICjc}B`D`}{{IClc}B`D`}{{ICnc}B`D`}{{GB`c}B`D`}{{ID`c}B`D`}{{IDbc}B`D`}{{GBbc}B`D`}{{IDdc}B`D`}{{IDfc}B`D`}{{GBdc}B`D`}{{IDhc}B`D`}{{IDjc}B`D`}{{IDlc}B`D`}{{IDnc}B`D`}{{IE`c}B`D`}{{IEbc}B`D`}{{IEdc}B`D`}{{GBfc}B`D`}{{IEfc}B`D`}{{IEhc}B`D`}{{IEjc}B`D`}{{IElc}B`D`}{{IEnc}B`D`}{{IF`c}B`D`}{{IFbc}B`D`}{{IFdc}B`D`}{{GBhc}B`D`}{{IFfc}B`D`}{{IFhc}B`D`}{{IFjc}B`D`}{{IFlc}B`D`}{{IFnc}B`D`}{{IG`c}B`D`}{{IGbc}B`D`}{{IGdc}B`D`}{{IGfc}B`D`}{{IGhc}B`D`}{{IGjc}B`D`}{{IGlc}B`D`}{{IGnc}B`D`}{{IH`c}B`D`}{{GBjc}B`D`}{{IHbc}B`D`}{{IHdc}B`D`}{{IHfc}B`D`}{{IHhc}B`D`}{{IHjc}B`D`}{{GBlc}B`D`}{{IHlc}B`D`}{{IHnc}B`D`}{{II`c}B`D`}{{IIbc}B`D`}{{IIdc}B`D`}{{IIfc}B`D`}{{IIhc}B`D`}{{GBnc}B`D`}{{IIjc}B`D`}{{GC`c}B`D`}{{IIlc}B`D`}{{IInc}B`D`}{{IJ`c}B`D`}{{GCbc}B`D`}{{IJbc}B`D`}{{IJdc}B`D`}{{GCdc}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`}{{GCfc}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`}{{GChc}B`D`}{{ILfc}B`D`}{{ILhc}B`D`}{{ILjc}B`D`}{{ILlc}B`D`}{{ILnc}B`D`}{{GCjc}B`D`}{{IM`c}B`D`}{{GClc}B`D`}{{IMbc}B`D`}{{GCnc}B`D`}{{IMdc}B`D`}{{IMfc}B`D`}{{GD`c}B`D`}{{GDbc}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`}{{GDdc}B`D`}{{GDfc}B`D`}{{GDhc}B`D`}{{INhc}B`D`}{{INjc}B`D`}{{INlc}B`D`}{{INnc}B`D`}{{GDjc}B`D`}{{IO`c}B`D`}{{IObc}B`D`}{{IOdc}B`D`}{{IOfc}B`D`}{{GDlc}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,"AisFlags",156],[5,"EscFailureFlags",156],[5,"UavionixAdsbOutRfSelect",156],[5,"UavionixAdsbRfHealth",156],[5,"HighresImuUpdatedFlags",156],[5,"CameraCapFlags",156],[5,"GimbalDeviceErrorFlags",156],[5,"GimbalDeviceCapFlags",156],[5,"HlFailureFlag",156],[5,"GpsInputIgnoreFlags",156],[5,"RallyFlags",156],[5,"PositionTargetTypemask",156],[5,"EkfStatusFlags",156],[5,"UtmDataAvailFlags",156],[5,"AdsbFlags",156],[5,"LimitModule",156],[5,"EstimatorStatusFlags",156],[5,"SerialControlFlag",156],[5,"HilSensorUpdatedFlags",156],[5,"MavEventCurrentSequenceFlags",156],[5,"TuneFormat",156],[5,"MavPowerStatus",156],[5,"MavSysStatusSensor",156],[5,"UavionixAdsbOutDynamicState",156],[5,"MavProtocolCapability",156],[5,"MavGeneratorStatusFlag",156],[5,"GimbalDeviceFlags",156],[5,"MavModeFlag",156],[5,"MavWinchStatusFlag",156],[5,"GoproHeartbeatFlags",156],[5,"GimbalManagerCapFlags",156],[5,"AttitudeTargetTypemask",156],[1,"u64"],[6,"MavMessage",156],[5,"ODOMETRY_DATA",156],[5,"WATER_DEPTH_DATA",156],[5,"VISION_POSITION_DELTA_DATA",156],[5,"ATTITUDE_QUATERNION_COV_DATA",156],[5,"ALTITUDE_DATA",156],[5,"SUPPORTED_TUNES_DATA",156],[5,"CHANGE_OPERATOR_CONTROL_DATA",156],[5,"RAW_RPM_DATA",156],[5,"SCALED_PRESSURE2_DATA",156],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",156],[5,"GLOBAL_POSITION_INT_DATA",156],[5,"HIGHRES_IMU_DATA",156],[5,"ONBOARD_COMPUTER_STATUS_DATA",156],[5,"DEBUG_DATA",156],[5,"SAFETY_ALLOWED_AREA_DATA",156],[5,"LOG_REQUEST_END_DATA",156],[5,"ESC_TELEMETRY_5_TO_8_DATA",156],[5,"WIFI_CONFIG_AP_DATA",156],[5,"EXTENDED_SYS_STATE_DATA",156],[5,"SETUP_SIGNING_DATA",156],[5,"HIL_SENSOR_DATA",156],[5,"AHRS_DATA",156],[5,"PARAM_REQUEST_READ_DATA",156],[5,"SCALED_PRESSURE_DATA",156],[5,"WINCH_STATUS_DATA",156],[5,"GPS_RTCM_DATA_DATA",156],[5,"DATA96_DATA",156],[5,"REQUEST_EVENT_DATA",156],[5,"PARAM_EXT_ACK_DATA",156],[5,"WIND_COV_DATA",156],[5,"ICAROUS_KINEMATIC_BANDS_DATA",156],[5,"GOPRO_GET_RESPONSE_DATA",156],[5,"RALLY_FETCH_POINT_DATA",156],[5,"HIGH_LATENCY2_DATA",156],[5,"MOUNT_STATUS_DATA",156],[5,"CELLULAR_CONFIG_DATA",156],[5,"TIME_ESTIMATE_TO_TARGET_DATA",156],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",156],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",156],[5,"SCALED_PRESSURE3_DATA",156],[5,"GOPRO_GET_REQUEST_DATA",156],[5,"OPTICAL_FLOW_DATA",156],[5,"MCU_STATUS_DATA",156],[5,"LOG_DATA_DATA",156],[5,"ESC_TELEMETRY_1_TO_4_DATA",156],[5,"MEMORY_VECT_DATA",156],[5,"SERIAL_CONTROL_DATA",156],[5,"CURRENT_EVENT_SEQUENCE_DATA",156],[5,"SCALED_IMU3_DATA",156],[5,"ORBIT_EXECUTION_STATUS_DATA",156],[5,"RAW_PRESSURE_DATA",156],[5,"TERRAIN_DATA_DATA",156],[5,"AUTOPILOT_VERSION_REQUEST_DATA",156],[5,"EKF_STATUS_REPORT_DATA",156],[5,"CUBEPILOT_FIRMWARE_UPDATE_START_DATA",156],[5,"SYS_STATUS_DATA",156],[5,"VIBRATION_DATA",156],[5,"MISSION_SET_CURRENT_DATA",156],[5,"POWER_STATUS_DATA",156],[5,"PARAM_MAP_RC_DATA",156],[5,"DEEPSTALL_DATA",156],[5,"LIMITS_STATUS_DATA",156],[5,"UAVIONIX_ADSB_OUT_CFG_DATA",156],[5,"VFR_HUD_DATA",156],[5,"RESPONSE_EVENT_ERROR_DATA",156],[5,"HERELINK_VIDEO_STREAM_INFORMATION_DATA",156],[5,"GPS_INJECT_DATA_DATA",156],[5,"HIL_RC_INPUTS_RAW_DATA",156],[5,"OPTICAL_FLOW_RAD_DATA",156],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",156],[5,"COLLISION_DATA",156],[5,"UTM_GLOBAL_POSITION_DATA",156],[5,"COMPONENT_INFORMATION_DATA",156],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",156],[5,"GIMBAL_CONTROL_DATA",156],[5,"AHRS2_DATA",156],[5,"LOG_ERASE_DATA",156],[5,"GIMBAL_TORQUE_CMD_REPORT_DATA",156],[5,"RESOURCE_REQUEST_DATA",156],[5,"PARAM_EXT_VALUE_DATA",156],[5,"GPS_GLOBAL_ORIGIN_DATA",156],[5,"HIL_STATE_QUATERNION_DATA",156],[5,"LANDING_TARGET_DATA",156],[5,"SMART_BATTERY_INFO_DATA",156],[5,"GLOBAL_POSITION_INT_COV_DATA",156],[5,"PID_TUNING_DATA",156],[5,"TUNNEL_DATA",156],[5,"GIMBAL_MANAGER_STATUS_DATA",156],[5,"STATUSTEXT_DATA",156],[5,"VISION_POSITION_ESTIMATE_DATA",156],[5,"GPS_RTK_DATA",156],[5,"UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA",156],[5,"GOPRO_SET_REQUEST_DATA",156],[5,"CAMERA_SETTINGS_DATA",156],[5,"FLIGHT_INFORMATION_DATA",156],[5,"SCALED_IMU_DATA",156],[5,"POSITION_TARGET_GLOBAL_INT_DATA",156],[5,"PARAM_EXT_REQUEST_LIST_DATA",156],[5,"DEVICE_OP_WRITE_DATA",156],[5,"SET_MODE_DATA",156],[5,"CAMERA_FEEDBACK_DATA",156],[5,"POSITION_TARGET_LOCAL_NED_DATA",156],[5,"SYSTEM_TIME_DATA",156],[5,"CELLULAR_STATUS_DATA",156],[5,"COMMAND_CANCEL_DATA",156],[5,"PARAM_VALUE_DATA",156],[5,"CAN_FILTER_MODIFY_DATA",156],[5,"VIDEO_STREAM_INFORMATION_DATA",156],[5,"RALLY_POINT_DATA",156],[5,"MOUNT_ORIENTATION_DATA",156],[5,"HIL_STATE_DATA",156],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",156],[5,"DEBUG_VECT_DATA",156],[5,"MESSAGE_INTERVAL_DATA",156],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",156],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",156],[5,"GPS_RAW_INT_DATA",156],[5,"HIGH_LATENCY_DATA",156],[5,"SET_MAG_OFFSETS_DATA",156],[5,"UAVCAN_NODE_INFO_DATA",156],[5,"MAG_CAL_PROGRESS_DATA",156],[5,"GPS_INPUT_DATA",156],[5,"CAMERA_FOV_STATUS_DATA",156],[5,"TERRAIN_REQUEST_DATA",156],[5,"MISSION_ITEM_REACHED_DATA",156],[5,"CAN_FRAME_DATA",156],[5,"AIS_VESSEL_DATA",156],[5,"AUTOPILOT_VERSION_DATA",156],[5,"MOUNT_CONTROL_DATA",156],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",156],[5,"OPEN_DRONE_ID_SELF_ID_DATA",156],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",156],[5,"CAMERA_CAPTURE_STATUS_DATA",156],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",156],[5,"ESC_STATUS_DATA",156],[5,"OSD_PARAM_SHOW_CONFIG_REPLY_DATA",156],[5,"HIL_CONTROLS_DATA",156],[5,"ATTITUDE_TARGET_DATA",156],[5,"MISSION_REQUEST_LIST_DATA",156],[5,"COMMAND_INT_DATA",156],[5,"OBSTACLE_DISTANCE_DATA",156],[5,"AIRSPEED_AUTOCAL_DATA",156],[5,"LOG_REQUEST_DATA_DATA",156],[5,"GENERATOR_STATUS_DATA",156],[5,"RAW_IMU_DATA",156],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",156],[5,"SET_ATTITUDE_TARGET_DATA",156],[5,"OSD_PARAM_SHOW_CONFIG_DATA",156],[5,"CAMERA_IMAGE_CAPTURED_DATA",156],[5,"MISSION_ACK_DATA",156],[5,"PROTOCOL_VERSION_DATA",156],[5,"NAMED_VALUE_INT_DATA",156],[5,"PLAY_TUNE_V2_DATA",156],[5,"DATA_STREAM_DATA",156],[5,"OPEN_DRONE_ID_LOCATION_DATA",156],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",156],[5,"DEBUG_FLOAT_ARRAY_DATA",156],[5,"ESC_INFO_DATA",156],[5,"RC_CHANNELS_DATA",156],[5,"RADIO_STATUS_DATA",156],[5,"EFI_STATUS_DATA",156],[5,"VIDEO_STREAM_STATUS_DATA",156],[5,"RPM_DATA",156],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",156],[5,"MISSION_CURRENT_DATA",156],[5,"VISION_SPEED_ESTIMATE_DATA",156],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",156],[5,"DIGICAM_CONFIGURE_DATA",156],[5,"MISSION_ITEM_INT_DATA",156],[5,"V2_EXTENSION_DATA",156],[5,"MAG_CAL_REPORT_DATA",156],[5,"LOGGING_DATA_DATA",156],[5,"COMPONENT_METADATA_DATA",156],[5,"GPS_STATUS_DATA",156],[5,"HOME_POSITION_DATA",156],[5,"CAMERA_TRIGGER_DATA",156],[5,"STORAGE_INFORMATION_DATA",156],[5,"MISSION_REQUEST_DATA",156],[5,"TERRAIN_CHECK_DATA",156],[5,"HIL_ACTUATOR_CONTROLS_DATA",156],[5,"AOA_SSA_DATA",156],[5,"ESTIMATOR_STATUS_DATA",156],[5,"ATT_POS_MOCAP_DATA",156],[5,"MISSION_COUNT_DATA",156],[5,"HIL_OPTICAL_FLOW_DATA",156],[5,"SCALED_IMU2_DATA",156],[5,"CONTROL_SYSTEM_STATE_DATA",156],[5,"OBSTACLE_DISTANCE_3D_DATA",156],[5,"COMMAND_LONG_DATA",156],[5,"SIMSTATE_DATA",156],[5,"TERRAIN_REPORT_DATA",156],[5,"DATA32_DATA",156],[5,"AP_ADC_DATA",156],[5,"RC_CHANNELS_SCALED_DATA",156],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",156],[5,"NAMED_VALUE_FLOAT_DATA",156],[5,"REMOTE_LOG_BLOCK_STATUS_DATA",156],[5,"LOGGING_ACK_DATA",156],[5,"MEMINFO_DATA",156],[5,"ATTITUDE_DATA",156],[5,"DISTANCE_SENSOR_DATA",156],[5,"SENSOR_OFFSETS_DATA",156],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",156],[5,"SAFETY_SET_ALLOWED_AREA_DATA",156],[5,"ATTITUDE_QUATERNION_DATA",156],[5,"LOGGING_DATA_ACKED_DATA",156],[5,"AUTH_KEY_DATA",156],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",156],[5,"BUTTON_CHANGE_DATA",156],[5,"ADAP_TUNING_DATA",156],[5,"REQUEST_DATA_STREAM_DATA",156],[5,"CUBEPILOT_RAW_RC_DATA",156],[5,"GPS2_RAW_DATA",156],[5,"GOPRO_SET_RESPONSE_DATA",156],[5,"GIMBAL_DEVICE_INFORMATION_DATA",156],[5,"GOPRO_HEARTBEAT_DATA",156],[5,"CAMERA_STATUS_DATA",156],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",156],[5,"UAVCAN_NODE_STATUS_DATA",156],[5,"PING_DATA",156],[5,"HERELINK_TELEM_DATA",156],[5,"MANUAL_CONTROL_DATA",156],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",156],[5,"DEVICE_OP_READ_DATA",156],[5,"FENCE_POINT_DATA",156],[5,"MOUNT_CONFIGURE_DATA",156],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",156],[5,"CANFD_FRAME_DATA",156],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",156],[5,"GIMBAL_MANAGER_INFORMATION_DATA",156],[5,"SET_HOME_POSITION_DATA",156],[5,"SERVO_OUTPUT_RAW_DATA",156],[5,"WHEEL_DISTANCE_DATA",156],[5,"PARAM_EXT_REQUEST_READ_DATA",156],[5,"NAV_CONTROLLER_OUTPUT_DATA",156],[5,"LED_CONTROL_DATA",156],[5,"TIMESYNC_DATA",156],[5,"ACTUATOR_OUTPUT_STATUS_DATA",156],[5,"RANGEFINDER_DATA",156],[5,"GIMBAL_REPORT_DATA",156],[5,"COMPASSMOT_STATUS_DATA",156],[5,"FENCE_STATUS_DATA",156],[5,"EVENT_DATA",156],[5,"LOG_REQUEST_LIST_DATA",156],[5,"ENCAPSULATED_DATA_DATA",156],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",156],[5,"SIM_STATE_DATA",156],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",156],[5,"ADSB_VEHICLE_DATA",156],[5,"HIL_GPS_DATA",156],[5,"VICON_POSITION_ESTIMATE_DATA",156],[5,"CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA",156],[5,"MISSION_REQUEST_INT_DATA",156],[5,"PARAM_REQUEST_LIST_DATA",156],[5,"RADIO_DATA",156],[5,"OPEN_DRONE_ID_SYSTEM_DATA",156],[5,"HEARTBEAT_DATA",156],[5,"FENCE_FETCH_POINT_DATA",156],[5,"DATA16_DATA",156],[5,"OSD_PARAM_CONFIG_DATA",156],[5,"RC_CHANNELS_OVERRIDE_DATA",156],[5,"ESC_TELEMETRY_9_TO_12_DATA",156],[5,"AHRS3_DATA",156],[5,"DIGICAM_CONTROL_DATA",156],[5,"LINK_NODE_STATUS_DATA",156],[5,"OSD_PARAM_CONFIG_REPLY_DATA",156],[5,"DATA64_DATA",156],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",156],[5,"GPS2_RTK_DATA",156],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",156],[5,"ICAROUS_HEARTBEAT_DATA",156],[5,"COMMAND_ACK_DATA",156],[5,"PLAY_TUNE_DATA",156],[5,"FOLLOW_TARGET_DATA",156],[5,"LOCAL_POSITION_NED_COV_DATA",156],[5,"BATTERY_STATUS_DATA",156],[5,"DEVICE_OP_WRITE_REPLY_DATA",156],[5,"MISSION_CLEAR_ALL_DATA",156],[5,"LOCAL_POSITION_NED_DATA",156],[5,"FILE_TRANSFER_PROTOCOL_DATA",156],[5,"REMOTE_LOG_DATA_BLOCK_DATA",156],[5,"UAVIONIX_ADSB_OUT_DYNAMIC_DATA",156],[5,"ACTUATOR_CONTROL_TARGET_DATA",156],[5,"WIND_DATA",156],[5,"PARAM_EXT_SET_DATA",156],[5,"ISBD_LINK_STATUS_DATA",156],[5,"MISSION_ITEM_DATA",156],[5,"BATTERY2_DATA",156],[5,"HYGROMETER_SENSOR_DATA",156],[5,"MANUAL_SETPOINT_DATA",156],[5,"LOG_ENTRY_DATA",156],[5,"CAMERA_INFORMATION_DATA",156],[5,"PARAM_SET_DATA",156],[5,"RC_CHANNELS_RAW_DATA",156],[5,"HWSTATUS_DATA",156],[5,"DEVICE_OP_READ_REPLY_DATA",156],[6,"MavCollisionSrc",156],[6,"MavOdidIdType",156],[6,"MavArmAuthDeniedReason",156],[6,"MavParamExtType",156],[6,"MavDistanceSensor",156],[6,"GoproVideoSettingsFlags",156],[6,"UavcanNodeHealth",156],[6,"SubMode",156],[6,"LedControlPattern",156],[6,"GoproProtuneSharpness",156],[6,"GoproResolution",156],[6,"SpeedType",156],[6,"SetFocusType",156],[6,"MavVtolState",156],[6,"MavEstimatorType",156],[6,"MavModeGimbal",156],[6,"CameraStatusTypes",156],[6,"UtmFlightState",156],[6,"MavBatteryFault",156],[6,"MavBatteryMode",156],[6,"MavComponent",156],[6,"MavCollisionThreatLevel",156],[6,"MavCmdAck",156],[6,"MavOdidSpeedAcc",156],[6,"UavionixAdsbOutCfgGpsOffsetLon",156],[6,"MavFtpOpcode",156],[6,"MavModeFlagDecodePosition",156],[6,"FenceMitigate",156],[6,"MavBatteryFunction",156],[6,"MavSensorOrientation",156],[6,"MavBatteryChargeState",156],[6,"AisNavStatus",156],[6,"GoproFieldOfView",156],[6,"MavFtpErr",156],[6,"MavAutopilot",156],[6,"GimbalAxisCalibrationRequired",156],[6,"OsdParamConfigError",156],[6,"GimbalAxisCalibrationStatus",156],[6,"WifiConfigApResponse",156],[6,"MavCmdDoAuxFunctionSwitchLevel",156],[6,"MavRemoteLogDataBlockCommands",156],[6,"MavBatteryType",156],[6,"MavOdidAuthType",156],[6,"WifiConfigApMode",156],[6,"MavOdidStatus",156],[6,"MavOdidUaType",156],[6,"MavMountMode",156],[6,"CameraMode",156],[6,"FenceBreach",156],[6,"GoproPhotoResolution",156],[6,"LimitsState",156],[6,"RtkBaselineCoordinateSystem",156],[6,"GoproHeartbeatStatus",156],[6,"MavGoto",156],[6,"PreflightStorageMissionAction",156],[6,"CellularConfigResponse",156],[6,"GripperActions",156],[6,"MavState",156],[6,"RcType",156],[6,"EscConnectionType",156],[6,"CameraZoomType",156],[6,"StorageStatus",156],[6,"FenceAction",156],[6,"VideoStreamStatusFlags",156],[6,"CameraTrackingStatusFlags",156],[6,"RoverMode",156],[6,"MavCollisionAction",156],[6,"CopterMode",156],[6,"GoproModel",156],[6,"AccelcalVehiclePos",156],[6,"MavMode",156],[6,"ParachuteAction",156],[6,"AdsbEmitterType",156],[6,"AutotuneAxis",156],[6,"GoproProtuneGain",156],[6,"GoproProtuneWhiteBalance",156],[6,"MavEventErrorReason",156],[6,"UavionixAdsbEmergencyStatus",156],[6,"GoproRequestStatus",156],[6,"MagCalStatus",156],[6,"ScriptingCmd",156],[6,"HeadingType",156],[6,"PrecisionLandMode",156],[6,"MavFrame",156],[6,"MavSeverity",156],[6,"GimbalManagerFlags",156],[6,"MissionState",156],[6,"CellularNetworkRadioType",156],[6,"AisType",156],[6,"NavVtolLandOptions",156],[6,"FirmwareVersionType",156],[6,"GpsFixType",156],[6,"UavcanNodeMode",156],[6,"WinchActions",156],[6,"MavOdidDescType",156],[6,"AdsbAltitudeType",156],[6,"MavOdidArmStatus",156],[6,"LandingTargetType",156],[6,"MavOdidHeightRef",156],[6,"VtolTransitionHeading",156],[6,"MotorTestThrottleType",156],[6,"MavOdidClassificationType",156],[6,"PreflightStorageParameterAction",156],[6,"MavOdidVerAcc",156],[6,"MavOdidCategoryEu",156],[6,"MavOdidTimeAcc",156],[6,"CameraTrackingTargetData",156],[6,"CellularNetworkFailedReason",156],[6,"DeepstallStage",156],[6,"GoproBurstRate",156],[6,"GimbalAxis",156],[6,"MavResult",156],[6,"SerialControlDev",156],[6,"MavMissionType",156],[6,"IcarousFmsState",156],[6,"CameraTrackingMode",156],[6,"ActuatorOutputFunction",156],[6,"GoproCharging",156],[6,"MavRoi",156],[6,"UavionixAdsbOutCfgAircraftSize",156],[6,"MavMissionResult",156],[6,"ParamAck",156],[6,"MavType",156],[6,"GoproCommand",156],[6,"GoproProtuneExposure",156],[6,"VideoStreamType",156],[6,"MavOdidOperatorLocationType",156],[6,"MavTunnelPayloadType",156],[6,"MavOdidHorAcc",156],[6,"MotorTestOrder",156],[6,"TrackerMode",156],[6,"CameraFeedbackFlags",156],[6,"FailureType",156],[6,"PlaneMode",156],[6,"MavRemoteLogDataBlockStatuses",156],[6,"CanFilterOp",156],[6,"PidTuningAxis",156],[6,"UavionixAdsbOutCfgGpsOffsetLat",156],[6,"ActuatorConfiguration",156],[6,"MavLandedState",156],[6,"CellularStatusFlag",156],[6,"CompMetadataType",156],[6,"UavionixAdsbOutDynamicGpsFix",156],[6,"MavDataStream",156],[6,"OsdParamConfigType",156],[6,"DeviceOpBustype",156],[6,"GoproProtuneColour",156],[6,"GoproCaptureMode",156],[6,"MavOdidOperatorIdType",156],[6,"IcarousTrackBandTypes",156],[6,"MavCmd",156],[6,"StorageType",156],[6,"MavlinkDataStreamType",156],[6,"StorageUsageFlag",156],[6,"MavDoRepositionFlags",156],[6,"GoproFrameRate",156],[6,"OrbitYawBehaviour",156],[6,"FailureUnit",156],[6,"MavOdidClassEu",156],[6,"MavParamType",156],[6,"MavSysStatusSensorExtended",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,"GimbalDeviceFlags",15547],[5,"GimbalDeviceErrorFlags",15547],[5,"EscFailureFlags",15547],[5,"HighresImuUpdatedFlags",15547],[5,"MavModeFlag",15547],[5,"HlFailureFlag",15547],[5,"SerialControlFlag",15547],[5,"AisFlags",15547],[5,"EstimatorStatusFlags",15547],[5,"CameraCapFlags",15547],[5,"GpsInputIgnoreFlags",15547],[5,"UtmDataAvailFlags",15547],[5,"PositionTargetTypemask",15547],[5,"MavPowerStatus",15547],[5,"TuneFormat",15547],[5,"MavSysStatusSensor",15547],[5,"MavWinchStatusFlag",15547],[5,"AttitudeTargetTypemask",15547],[5,"GimbalManagerCapFlags",15547],[5,"HilSensorUpdatedFlags",15547],[5,"MavGeneratorStatusFlag",15547],[5,"MavEventCurrentSequenceFlags",15547],[5,"MavProtocolCapability",15547],[5,"GimbalDeviceCapFlags",15547],[5,"AdsbFlags",15547],[6,"MavMessage",15547],[5,"SCALED_PRESSURE3_DATA",15547],[5,"EFI_STATUS_DATA",15547],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",15547],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",15547],[5,"HIL_STATE_QUATERNION_DATA",15547],[5,"OPEN_DRONE_ID_LOCATION_DATA",15547],[5,"OBSTACLE_DISTANCE_DATA",15547],[5,"LOG_ENTRY_DATA",15547],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",15547],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",15547],[5,"SYSTEM_TIME_DATA",15547],[5,"VIDEO_STREAM_STATUS_DATA",15547],[5,"CAMERA_SETTINGS_DATA",15547],[5,"COMMAND_ACK_DATA",15547],[5,"BATTERY_STATUS_DATA",15547],[5,"SET_HOME_POSITION_DATA",15547],[5,"STATUSTEXT_DATA",15547],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",15547],[5,"HIL_GPS_DATA",15547],[5,"CHANGE_OPERATOR_CONTROL_DATA",15547],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",15547],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",15547],[5,"DEBUG_VECT_DATA",15547],[5,"DATA_STREAM_DATA",15547],[5,"VFR_HUD_DATA",15547],[5,"CANFD_FRAME_DATA",15547],[5,"RC_CHANNELS_OVERRIDE_DATA",15547],[5,"PARAM_VALUE_DATA",15547],[5,"GPS_GLOBAL_ORIGIN_DATA",15547],[5,"SUPPORTED_TUNES_DATA",15547],[5,"FENCE_STATUS_DATA",15547],[5,"DISTANCE_SENSOR_DATA",15547],[5,"PARAM_SET_DATA",15547],[5,"CELLULAR_CONFIG_DATA",15547],[5,"GPS_RAW_INT_DATA",15547],[5,"CAMERA_FOV_STATUS_DATA",15547],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",15547],[5,"EVENT_DATA",15547],[5,"MEMORY_VECT_DATA",15547],[5,"HIGH_LATENCY2_DATA",15547],[5,"SAFETY_ALLOWED_AREA_DATA",15547],[5,"RESPONSE_EVENT_ERROR_DATA",15547],[5,"VICON_POSITION_ESTIMATE_DATA",15547],[5,"GPS_RTK_DATA",15547],[5,"VISION_SPEED_ESTIMATE_DATA",15547],[5,"SCALED_IMU_DATA",15547],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",15547],[5,"MISSION_ITEM_REACHED_DATA",15547],[5,"CAN_FILTER_MODIFY_DATA",15547],[5,"HIL_RC_INPUTS_RAW_DATA",15547],[5,"PARAM_REQUEST_LIST_DATA",15547],[5,"SIM_STATE_DATA",15547],[5,"MESSAGE_INTERVAL_DATA",15547],[5,"GIMBAL_DEVICE_INFORMATION_DATA",15547],[5,"COLLISION_DATA",15547],[5,"LINK_NODE_STATUS_DATA",15547],[5,"AUTOPILOT_VERSION_DATA",15547],[5,"MISSION_COUNT_DATA",15547],[5,"TERRAIN_REQUEST_DATA",15547],[5,"MISSION_REQUEST_DATA",15547],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",15547],[5,"SMART_BATTERY_INFO_DATA",15547],[5,"LOG_REQUEST_LIST_DATA",15547],[5,"HIGH_LATENCY_DATA",15547],[5,"SCALED_IMU2_DATA",15547],[5,"PARAM_EXT_REQUEST_READ_DATA",15547],[5,"SETUP_SIGNING_DATA",15547],[5,"GPS_INPUT_DATA",15547],[5,"SCALED_PRESSURE2_DATA",15547],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",15547],[5,"OPTICAL_FLOW_RAD_DATA",15547],[5,"RAW_RPM_DATA",15547],[5,"ATT_POS_MOCAP_DATA",15547],[5,"FLIGHT_INFORMATION_DATA",15547],[5,"CAN_FRAME_DATA",15547],[5,"UAVCAN_NODE_STATUS_DATA",15547],[5,"RAW_IMU_DATA",15547],[5,"HIL_OPTICAL_FLOW_DATA",15547],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",15547],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",15547],[5,"GENERATOR_STATUS_DATA",15547],[5,"OPEN_DRONE_ID_SYSTEM_DATA",15547],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",15547],[5,"CURRENT_EVENT_SEQUENCE_DATA",15547],[5,"TIME_ESTIMATE_TO_TARGET_DATA",15547],[5,"LOCAL_POSITION_NED_DATA",15547],[5,"MANUAL_CONTROL_DATA",15547],[5,"LOGGING_DATA_DATA",15547],[5,"GPS2_RTK_DATA",15547],[5,"BUTTON_CHANGE_DATA",15547],[5,"PLAY_TUNE_DATA",15547],[5,"RESOURCE_REQUEST_DATA",15547],[5,"HIGHRES_IMU_DATA",15547],[5,"PARAM_REQUEST_READ_DATA",15547],[5,"MISSION_REQUEST_LIST_DATA",15547],[5,"ACTUATOR_CONTROL_TARGET_DATA",15547],[5,"OPTICAL_FLOW_DATA",15547],[5,"MAG_CAL_REPORT_DATA",15547],[5,"COMPONENT_METADATA_DATA",15547],[5,"REQUEST_EVENT_DATA",15547],[5,"PLAY_TUNE_V2_DATA",15547],[5,"ISBD_LINK_STATUS_DATA",15547],[5,"ATTITUDE_DATA",15547],[5,"AIS_VESSEL_DATA",15547],[5,"ATTITUDE_QUATERNION_DATA",15547],[5,"CAMERA_TRIGGER_DATA",15547],[5,"VIBRATION_DATA",15547],[5,"MISSION_CLEAR_ALL_DATA",15547],[5,"ONBOARD_COMPUTER_STATUS_DATA",15547],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",15547],[5,"CAMERA_IMAGE_CAPTURED_DATA",15547],[5,"SCALED_IMU3_DATA",15547],[5,"PROTOCOL_VERSION_DATA",15547],[5,"GLOBAL_POSITION_INT_DATA",15547],[5,"POSITION_TARGET_LOCAL_NED_DATA",15547],[5,"MISSION_SET_CURRENT_DATA",15547],[5,"TERRAIN_REPORT_DATA",15547],[5,"OPEN_DRONE_ID_SELF_ID_DATA",15547],[5,"COMPONENT_INFORMATION_DATA",15547],[5,"GIMBAL_MANAGER_STATUS_DATA",15547],[5,"GPS2_RAW_DATA",15547],[5,"COMMAND_LONG_DATA",15547],[5,"ACTUATOR_OUTPUT_STATUS_DATA",15547],[5,"ORBIT_EXECUTION_STATUS_DATA",15547],[5,"UTM_GLOBAL_POSITION_DATA",15547],[5,"GPS_RTCM_DATA_DATA",15547],[5,"SERIAL_CONTROL_DATA",15547],[5,"VISION_POSITION_ESTIMATE_DATA",15547],[5,"LOG_REQUEST_DATA_DATA",15547],[5,"MISSION_ACK_DATA",15547],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",15547],[5,"NAV_CONTROLLER_OUTPUT_DATA",15547],[5,"CELLULAR_STATUS_DATA",15547],[5,"RADIO_STATUS_DATA",15547],[5,"PARAM_EXT_REQUEST_LIST_DATA",15547],[5,"FOLLOW_TARGET_DATA",15547],[5,"ESC_STATUS_DATA",15547],[5,"ESTIMATOR_STATUS_DATA",15547],[5,"COMMAND_CANCEL_DATA",15547],[5,"SYS_STATUS_DATA",15547],[5,"POSITION_TARGET_GLOBAL_INT_DATA",15547],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",15547],[5,"RC_CHANNELS_RAW_DATA",15547],[5,"HIL_STATE_DATA",15547],[5,"SET_MODE_DATA",15547],[5,"TERRAIN_DATA_DATA",15547],[5,"MISSION_CURRENT_DATA",15547],[5,"GPS_STATUS_DATA",15547],[5,"COMMAND_INT_DATA",15547],[5,"RC_CHANNELS_SCALED_DATA",15547],[5,"ATTITUDE_TARGET_DATA",15547],[5,"FILE_TRANSFER_PROTOCOL_DATA",15547],[5,"LOCAL_POSITION_NED_COV_DATA",15547],[5,"SET_ATTITUDE_TARGET_DATA",15547],[5,"PING_DATA",15547],[5,"RC_CHANNELS_DATA",15547],[5,"DEBUG_DATA",15547],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",15547],[5,"VIDEO_STREAM_INFORMATION_DATA",15547],[5,"AUTH_KEY_DATA",15547],[5,"HIL_CONTROLS_DATA",15547],[5,"DEBUG_FLOAT_ARRAY_DATA",15547],[5,"STORAGE_INFORMATION_DATA",15547],[5,"NAMED_VALUE_FLOAT_DATA",15547],[5,"EXTENDED_SYS_STATE_DATA",15547],[5,"HEARTBEAT_DATA",15547],[5,"HYGROMETER_SENSOR_DATA",15547],[5,"WINCH_STATUS_DATA",15547],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",15547],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",15547],[5,"CAMERA_CAPTURE_STATUS_DATA",15547],[5,"WIFI_CONFIG_AP_DATA",15547],[5,"NAMED_VALUE_INT_DATA",15547],[5,"RAW_PRESSURE_DATA",15547],[5,"MOUNT_ORIENTATION_DATA",15547],[5,"PARAM_EXT_VALUE_DATA",15547],[5,"HOME_POSITION_DATA",15547],[5,"GPS_INJECT_DATA_DATA",15547],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",15547],[5,"TUNNEL_DATA",15547],[5,"PARAM_EXT_SET_DATA",15547],[5,"CONTROL_SYSTEM_STATE_DATA",15547],[5,"LOG_REQUEST_END_DATA",15547],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",15547],[5,"ESC_INFO_DATA",15547],[5,"HIL_ACTUATOR_CONTROLS_DATA",15547],[5,"LOG_DATA_DATA",15547],[5,"GLOBAL_POSITION_INT_COV_DATA",15547],[5,"GIMBAL_MANAGER_INFORMATION_DATA",15547],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",15547],[5,"MISSION_REQUEST_INT_DATA",15547],[5,"LOGGING_ACK_DATA",15547],[5,"CAMERA_INFORMATION_DATA",15547],[5,"WHEEL_DISTANCE_DATA",15547],[5,"PARAM_EXT_ACK_DATA",15547],[5,"POWER_STATUS_DATA",15547],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",15547],[5,"LOGGING_DATA_ACKED_DATA",15547],[5,"SCALED_PRESSURE_DATA",15547],[5,"ODOMETRY_DATA",15547],[5,"UAVCAN_NODE_INFO_DATA",15547],[5,"ALTITUDE_DATA",15547],[5,"ADSB_VEHICLE_DATA",15547],[5,"HIL_SENSOR_DATA",15547],[5,"REQUEST_DATA_STREAM_DATA",15547],[5,"TERRAIN_CHECK_DATA",15547],[5,"SAFETY_SET_ALLOWED_AREA_DATA",15547],[5,"MISSION_ITEM_INT_DATA",15547],[5,"PARAM_MAP_RC_DATA",15547],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",15547],[5,"LOG_ERASE_DATA",15547],[5,"MANUAL_SETPOINT_DATA",15547],[5,"SERVO_OUTPUT_RAW_DATA",15547],[5,"ENCAPSULATED_DATA_DATA",15547],[5,"ATTITUDE_QUATERNION_COV_DATA",15547],[5,"V2_EXTENSION_DATA",15547],[5,"TIMESYNC_DATA",15547],[5,"WIND_COV_DATA",15547],[5,"LANDING_TARGET_DATA",15547],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",15547],[5,"MISSION_ITEM_DATA",15547],[6,"MotorTestOrder",15547],[6,"MavFtpOpcode",15547],[6,"CameraZoomType",15547],[6,"CanFilterOp",15547],[6,"StorageStatus",15547],[6,"MavState",15547],[6,"MavOdidOperatorIdType",15547],[6,"MavFrame",15547],[6,"AisType",15547],[6,"ActuatorConfiguration",15547],[6,"AutotuneAxis",15547],[6,"MavCollisionAction",15547],[6,"VtolTransitionHeading",15547],[6,"CellularNetworkRadioType",15547],[6,"UtmFlightState",15547],[6,"CompMetadataType",15547],[6,"MavBatteryChargeState",15547],[6,"MavDistanceSensor",15547],[6,"CellularConfigResponse",15547],[6,"MissionState",15547],[6,"VideoStreamType",15547],[6,"MavTunnelPayloadType",15547],[6,"MavSeverity",15547],[6,"CameraTrackingStatusFlags",15547],[6,"GimbalManagerFlags",15547],[6,"FirmwareVersionType",15547],[6,"MavResult",15547],[6,"MavOdidArmStatus",15547],[6,"MavOdidClassEu",15547],[6,"MavArmAuthDeniedReason",15547],[6,"AdsbAltitudeType",15547],[6,"MavParamType",15547],[6,"MavSysStatusSensorExtended",15547],[6,"MavOdidDescType",15547],[6,"MotorTestThrottleType",15547],[6,"SerialControlDev",15547],[6,"MavCmd",15547],[6,"PreflightStorageParameterAction",15547],[6,"MavMode",15547],[6,"CameraTrackingTargetData",15547],[6,"VideoStreamStatusFlags",15547],[6,"MavOdidSpeedAcc",15547],[6,"MavFtpErr",15547],[6,"MavOdidClassificationType",15547],[6,"MavBatteryType",15547],[6,"FenceAction",15547],[6,"WinchActions",15547],[6,"CameraMode",15547],[6,"MavOdidHorAcc",15547],[6,"GpsFixType",15547],[6,"MavMountMode",15547],[6,"MavOdidVerAcc",15547],[6,"OrbitYawBehaviour",15547],[6,"MavVtolState",15547],[6,"MavOdidCategoryEu",15547],[6,"MavParamExtType",15547],[6,"PrecisionLandMode",15547],[6,"MavOdidStatus",15547],[6,"RcType",15547],[6,"NavVtolLandOptions",15547],[6,"MavModeFlagDecodePosition",15547],[6,"WifiConfigApMode",15547],[6,"RtkBaselineCoordinateSystem",15547],[6,"ParamAck",15547],[6,"WifiConfigApResponse",15547],[6,"FenceMitigate",15547],[6,"MavOdidHeightRef",15547],[6,"MavType",15547],[6,"MavSensorOrientation",15547],[6,"MavCollisionSrc",15547],[6,"MavBatteryFunction",15547],[6,"StorageType",15547],[6,"MavOdidAuthType",15547],[6,"MavOdidUaType",15547],[6,"MavCmdAck",15547],[6,"CellularStatusFlag",15547],[6,"MavDataStream",15547],[6,"AdsbEmitterType",15547],[6,"MavOdidTimeAcc",15547],[6,"MavGoto",15547],[6,"MavMissionResult",15547],[6,"MavDoRepositionFlags",15547],[6,"FailureUnit",15547],[6,"EscConnectionType",15547],[6,"MavOdidOperatorLocationType",15547],[6,"MavEventErrorReason",15547],[6,"PreflightStorageMissionAction",15547],[6,"SetFocusType",15547],[6,"MavMissionType",15547],[6,"CameraTrackingMode",15547],[6,"MavAutopilot",15547],[6,"MavComponent",15547],[6,"FenceBreach",15547],[6,"MagCalStatus",15547],[6,"FailureType",15547],[6,"MavBatteryFault",15547],[6,"MavBatteryMode",15547],[6,"ActuatorOutputFunction",15547],[6,"MavOdidIdType",15547],[6,"MavEstimatorType",15547],[6,"UavcanNodeHealth",15547],[6,"MavRoi",15547],[6,"MavlinkDataStreamType",15547],[6,"GripperActions",15547],[6,"UavcanNodeMode",15547],[6,"StorageUsageFlag",15547],[6,"MavLandedState",15547],[6,"AisNavStatus",15547],[6,"CellularNetworkFailedReason",15547],[6,"ParachuteAction",15547],[6,"MavCollisionThreatLevel",15547],[6,"LandingTargetType",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,"HighresImuUpdatedFlags",27254],[5,"MavPowerStatus",27254],[5,"UtmDataAvailFlags",27254],[5,"MavWinchStatusFlag",27254],[5,"AttitudeTargetTypemask",27254],[5,"GimbalDeviceFlags",27254],[5,"AdsbFlags",27254],[5,"EstimatorStatusFlags",27254],[5,"MavProtocolCapability",27254],[5,"UavionixAdsbOutRfSelect",27254],[5,"AisFlags",27254],[5,"CameraCapFlags",27254],[5,"TuneFormat",27254],[5,"PositionTargetTypemask",27254],[5,"MavEventCurrentSequenceFlags",27254],[5,"GimbalManagerCapFlags",27254],[5,"HilSensorUpdatedFlags",27254],[5,"UavionixAdsbOutDynamicState",27254],[5,"MavGeneratorStatusFlag",27254],[5,"HlFailureFlag",27254],[5,"MavSysStatusSensor",27254],[5,"GimbalDeviceCapFlags",27254],[5,"MavModeFlag",27254],[5,"GpsInputIgnoreFlags",27254],[5,"EscFailureFlags",27254],[5,"UavionixAdsbRfHealth",27254],[5,"SerialControlFlag",27254],[5,"GimbalDeviceErrorFlags",27254],[6,"MavMessage",27254],[5,"SCALED_PRESSURE2_DATA",27254],[5,"POSITION_TARGET_LOCAL_NED_DATA",27254],[5,"RAW_PRESSURE_DATA",27254],[5,"FENCE_STATUS_DATA",27254],[5,"NAV_CONTROLLER_OUTPUT_DATA",27254],[5,"ATTITUDE_QUATERNION_COV_DATA",27254],[5,"HIL_STATE_DATA",27254],[5,"DATA_STREAM_DATA",27254],[5,"RC_CHANNELS_DATA",27254],[5,"GLOBAL_POSITION_INT_DATA",27254],[5,"WIND_COV_DATA",27254],[5,"GPS_GLOBAL_ORIGIN_DATA",27254],[5,"CHANGE_OPERATOR_CONTROL_DATA",27254],[5,"ADSB_VEHICLE_DATA",27254],[5,"OPTICAL_FLOW_DATA",27254],[5,"LINK_NODE_STATUS_DATA",27254],[5,"SAFETY_SET_ALLOWED_AREA_DATA",27254],[5,"MISSION_CURRENT_DATA",27254],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",27254],[5,"PARAM_EXT_ACK_DATA",27254],[5,"PARAM_EXT_VALUE_DATA",27254],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",27254],[5,"HIL_SENSOR_DATA",27254],[5,"CAMERA_IMAGE_CAPTURED_DATA",27254],[5,"FILE_TRANSFER_PROTOCOL_DATA",27254],[5,"UAVCAN_NODE_INFO_DATA",27254],[5,"TIMESYNC_DATA",27254],[5,"RESPONSE_EVENT_ERROR_DATA",27254],[5,"HIL_GPS_DATA",27254],[5,"HEARTBEAT_DATA",27254],[5,"MAG_CAL_REPORT_DATA",27254],[5,"CANFD_FRAME_DATA",27254],[5,"UAVCAN_NODE_STATUS_DATA",27254],[5,"MOUNT_ORIENTATION_DATA",27254],[5,"PARAM_REQUEST_READ_DATA",27254],[5,"MESSAGE_INTERVAL_DATA",27254],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",27254],[5,"VICON_POSITION_ESTIMATE_DATA",27254],[5,"WHEEL_DISTANCE_DATA",27254],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",27254],[5,"GPS_RAW_INT_DATA",27254],[5,"SIM_STATE_DATA",27254],[5,"ATT_POS_MOCAP_DATA",27254],[5,"OBSTACLE_DISTANCE_DATA",27254],[5,"GPS_INPUT_DATA",27254],[5,"ISBD_LINK_STATUS_DATA",27254],[5,"HYGROMETER_SENSOR_DATA",27254],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",27254],[5,"HIL_STATE_QUATERNION_DATA",27254],[5,"COLLISION_DATA",27254],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",27254],[5,"OPEN_DRONE_ID_SYSTEM_DATA",27254],[5,"GPS2_RTK_DATA",27254],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",27254],[5,"PARAM_REQUEST_LIST_DATA",27254],[5,"TERRAIN_REPORT_DATA",27254],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",27254],[5,"RAW_IMU_DATA",27254],[5,"GPS_RTK_DATA",27254],[5,"PARAM_SET_DATA",27254],[5,"DEBUG_FLOAT_ARRAY_DATA",27254],[5,"CAMERA_SETTINGS_DATA",27254],[5,"MISSION_REQUEST_LIST_DATA",27254],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",27254],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",27254],[5,"STORAGE_INFORMATION_DATA",27254],[5,"LOG_ENTRY_DATA",27254],[5,"CONTROL_SYSTEM_STATE_DATA",27254],[5,"SUPPORTED_TUNES_DATA",27254],[5,"EVENT_DATA",27254],[5,"PARAM_EXT_REQUEST_READ_DATA",27254],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",27254],[5,"SAFETY_ALLOWED_AREA_DATA",27254],[5,"LANDING_TARGET_DATA",27254],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",27254],[5,"VIDEO_STREAM_STATUS_DATA",27254],[5,"MANUAL_CONTROL_DATA",27254],[5,"HIGH_LATENCY2_DATA",27254],[5,"UAVIONIX_ADSB_OUT_CFG_DATA",27254],[5,"VIDEO_STREAM_INFORMATION_DATA",27254],[5,"SCALED_IMU_DATA",27254],[5,"SCALED_IMU2_DATA",27254],[5,"SCALED_PRESSURE_DATA",27254],[5,"SMART_BATTERY_INFO_DATA",27254],[5,"DEBUG_VECT_DATA",27254],[5,"NAMED_VALUE_INT_DATA",27254],[5,"ACTUATOR_OUTPUT_STATUS_DATA",27254],[5,"COMMAND_ACK_DATA",27254],[5,"AUTH_KEY_DATA",27254],[5,"COMPONENT_METADATA_DATA",27254],[5,"SET_ATTITUDE_TARGET_DATA",27254],[5,"TERRAIN_DATA_DATA",27254],[5,"LOGGING_DATA_DATA",27254],[5,"MISSION_ITEM_INT_DATA",27254],[5,"PARAM_VALUE_DATA",27254],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",27254],[5,"SERIAL_CONTROL_DATA",27254],[5,"VIBRATION_DATA",27254],[5,"RC_CHANNELS_SCALED_DATA",27254],[5,"ATTITUDE_TARGET_DATA",27254],[5,"TERRAIN_REQUEST_DATA",27254],[5,"MISSION_REQUEST_INT_DATA",27254],[5,"RAW_RPM_DATA",27254],[5,"COMMAND_INT_DATA",27254],[5,"CELLULAR_STATUS_DATA",27254],[5,"TERRAIN_CHECK_DATA",27254],[5,"ODOMETRY_DATA",27254],[5,"LOG_REQUEST_DATA_DATA",27254],[5,"POWER_STATUS_DATA",27254],[5,"MISSION_SET_CURRENT_DATA",27254],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",27254],[5,"VISION_SPEED_ESTIMATE_DATA",27254],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",27254],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",27254],[5,"NAMED_VALUE_FLOAT_DATA",27254],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",27254],[5,"SYSTEM_TIME_DATA",27254],[5,"OPEN_DRONE_ID_LOCATION_DATA",27254],[5,"RESOURCE_REQUEST_DATA",27254],[5,"ESC_INFO_DATA",27254],[5,"CAN_FRAME_DATA",27254],[5,"PARAM_MAP_RC_DATA",27254],[5,"ESTIMATOR_STATUS_DATA",27254],[5,"SYS_STATUS_DATA",27254],[5,"HIGHRES_IMU_DATA",27254],[5,"ACTUATOR_CONTROL_TARGET_DATA",27254],[5,"HIL_RC_INPUTS_RAW_DATA",27254],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",27254],[5,"OPEN_DRONE_ID_SELF_ID_DATA",27254],[5,"MISSION_REQUEST_DATA",27254],[5,"MISSION_ITEM_DATA",27254],[5,"AUTOPILOT_VERSION_DATA",27254],[5,"CAMERA_TRIGGER_DATA",27254],[5,"CAMERA_FOV_STATUS_DATA",27254],[5,"FLIGHT_INFORMATION_DATA",27254],[5,"SET_HOME_POSITION_DATA",27254],[5,"DEBUG_DATA",27254],[5,"UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA",27254],[5,"MANUAL_SETPOINT_DATA",27254],[5,"FOLLOW_TARGET_DATA",27254],[5,"CELLULAR_CONFIG_DATA",27254],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",27254],[5,"V2_EXTENSION_DATA",27254],[5,"MISSION_ITEM_REACHED_DATA",27254],[5,"MISSION_CLEAR_ALL_DATA",27254],[5,"SET_MODE_DATA",27254],[5,"LOGGING_DATA_ACKED_DATA",27254],[5,"HIGH_LATENCY_DATA",27254],[5,"LOCAL_POSITION_NED_COV_DATA",27254],[5,"BUTTON_CHANGE_DATA",27254],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",27254],[5,"GIMBAL_MANAGER_INFORMATION_DATA",27254],[5,"COMMAND_LONG_DATA",27254],[5,"GPS_STATUS_DATA",27254],[5,"WIFI_CONFIG_AP_DATA",27254],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",27254],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",27254],[5,"REQUEST_EVENT_DATA",27254],[5,"PROTOCOL_VERSION_DATA",27254],[5,"CURRENT_EVENT_SEQUENCE_DATA",27254],[5,"HIL_ACTUATOR_CONTROLS_DATA",27254],[5,"ESC_STATUS_DATA",27254],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",27254],[5,"TUNNEL_DATA",27254],[5,"UAVIONIX_ADSB_OUT_DYNAMIC_DATA",27254],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",27254],[5,"WINCH_STATUS_DATA",27254],[5,"GPS_RTCM_DATA_DATA",27254],[5,"MEMORY_VECT_DATA",27254],[5,"SETUP_SIGNING_DATA",27254],[5,"HOME_POSITION_DATA",27254],[5,"LOG_REQUEST_LIST_DATA",27254],[5,"UTM_GLOBAL_POSITION_DATA",27254],[5,"RC_CHANNELS_OVERRIDE_DATA",27254],[5,"EFI_STATUS_DATA",27254],[5,"MISSION_COUNT_DATA",27254],[5,"PLAY_TUNE_DATA",27254],[5,"COMPONENT_INFORMATION_DATA",27254],[5,"GPS2_RAW_DATA",27254],[5,"PING_DATA",27254],[5,"GPS_INJECT_DATA_DATA",27254],[5,"AIS_VESSEL_DATA",27254],[5,"SCALED_PRESSURE3_DATA",27254],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",27254],[5,"ALTITUDE_DATA",27254],[5,"REQUEST_DATA_STREAM_DATA",27254],[5,"HIL_CONTROLS_DATA",27254],[5,"OPTICAL_FLOW_RAD_DATA",27254],[5,"ONBOARD_COMPUTER_STATUS_DATA",27254],[5,"CAMERA_CAPTURE_STATUS_DATA",27254],[5,"BATTERY_STATUS_DATA",27254],[5,"STATUSTEXT_DATA",27254],[5,"VFR_HUD_DATA",27254],[5,"DISTANCE_SENSOR_DATA",27254],[5,"GENERATOR_STATUS_DATA",27254],[5,"LOG_DATA_DATA",27254],[5,"POSITION_TARGET_GLOBAL_INT_DATA",27254],[5,"CAN_FILTER_MODIFY_DATA",27254],[5,"LOCAL_POSITION_NED_DATA",27254],[5,"PLAY_TUNE_V2_DATA",27254],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",27254],[5,"GLOBAL_POSITION_INT_COV_DATA",27254],[5,"RADIO_STATUS_DATA",27254],[5,"CAMERA_INFORMATION_DATA",27254],[5,"LOGGING_ACK_DATA",27254],[5,"ORBIT_EXECUTION_STATUS_DATA",27254],[5,"EXTENDED_SYS_STATE_DATA",27254],[5,"MISSION_ACK_DATA",27254],[5,"ATTITUDE_QUATERNION_DATA",27254],[5,"ENCAPSULATED_DATA_DATA",27254],[5,"COMMAND_CANCEL_DATA",27254],[5,"GIMBAL_DEVICE_INFORMATION_DATA",27254],[5,"LOG_REQUEST_END_DATA",27254],[5,"LOG_ERASE_DATA",27254],[5,"SCALED_IMU3_DATA",27254],[5,"SERVO_OUTPUT_RAW_DATA",27254],[5,"VISION_POSITION_ESTIMATE_DATA",27254],[5,"HIL_OPTICAL_FLOW_DATA",27254],[5,"PARAM_EXT_REQUEST_LIST_DATA",27254],[5,"ATTITUDE_DATA",27254],[5,"PARAM_EXT_SET_DATA",27254],[5,"RC_CHANNELS_RAW_DATA",27254],[5,"TIME_ESTIMATE_TO_TARGET_DATA",27254],[5,"GIMBAL_MANAGER_STATUS_DATA",27254],[6,"UavionixAdsbOutCfgGpsOffsetLat",27254],[6,"MavOdidArmStatus",27254],[6,"AutotuneAxis",27254],[6,"ParachuteAction",27254],[6,"MavParamType",27254],[6,"NavVtolLandOptions",27254],[6,"FenceMitigate",27254],[6,"CellularNetworkRadioType",27254],[6,"FailureUnit",27254],[6,"MavOdidCategoryEu",27254],[6,"MavOdidClassificationType",27254],[6,"MavModeFlagDecodePosition",27254],[6,"MavBatteryFault",27254],[6,"GimbalManagerFlags",27254],[6,"MavBatteryType",27254],[6,"AdsbAltitudeType",27254],[6,"MavVtolState",27254],[6,"CanFilterOp",27254],[6,"MavMissionType",27254],[6,"MavCmd",27254],[6,"UavionixAdsbEmergencyStatus",27254],[6,"MavSeverity",27254],[6,"MavOdidOperatorLocationType",27254],[6,"ActuatorOutputFunction",27254],[6,"MavMode",27254],[6,"MavRoi",27254],[6,"GripperActions",27254],[6,"ParamAck",27254],[6,"MavTunnelPayloadType",27254],[6,"AisType",27254],[6,"CompMetadataType",27254],[6,"MavOdidUaType",27254],[6,"MavFtpErr",27254],[6,"LandingTargetType",27254],[6,"MavState",27254],[6,"MavOdidClassEu",27254],[6,"MavArmAuthDeniedReason",27254],[6,"UavcanNodeMode",27254],[6,"MavCmdAck",27254],[6,"OrbitYawBehaviour",27254],[6,"MavOdidStatus",27254],[6,"CellularNetworkFailedReason",27254],[6,"MavComponent",27254],[6,"UtmFlightState",27254],[6,"GpsFixType",27254],[6,"VideoStreamStatusFlags",27254],[6,"FenceBreach",27254],[6,"UavcanNodeHealth",27254],[6,"PreflightStorageParameterAction",27254],[6,"MavFrame",27254],[6,"MavOdidHeightRef",27254],[6,"MavType",27254],[6,"MotorTestThrottleType",27254],[6,"MavOdidSpeedAcc",27254],[6,"MavOdidOperatorIdType",27254],[6,"MavFtpOpcode",27254],[6,"MavMountMode",27254],[6,"FenceAction",27254],[6,"WifiConfigApMode",27254],[6,"MavOdidTimeAcc",27254],[6,"MavOdidHorAcc",27254],[6,"MavCollisionThreatLevel",27254],[6,"MavAutopilot",27254],[6,"MavBatteryFunction",27254],[6,"SerialControlDev",27254],[6,"FailureType",27254],[6,"MissionState",27254],[6,"MavResult",27254],[6,"MagCalStatus",27254],[6,"MavDataStream",27254],[6,"MavlinkDataStreamType",27254],[6,"CameraTrackingStatusFlags",27254],[6,"WifiConfigApResponse",27254],[6,"SetFocusType",27254],[6,"MavBatteryMode",27254],[6,"CellularStatusFlag",27254],[6,"MavDistanceSensor",27254],[6,"MavDoRepositionFlags",27254],[6,"UavionixAdsbOutCfgGpsOffsetLon",27254],[6,"MotorTestOrder",27254],[6,"WinchActions",27254],[6,"MavEstimatorType",27254],[6,"RcType",27254],[6,"StorageType",27254],[6,"MavCollisionAction",27254],[6,"MavMissionResult",27254],[6,"CameraZoomType",27254],[6,"UavionixAdsbOutDynamicGpsFix",27254],[6,"StorageStatus",27254],[6,"MavSysStatusSensorExtended",27254],[6,"CameraTrackingMode",27254],[6,"MavOdidAuthType",27254],[6,"MavGoto",27254],[6,"MavLandedState",27254],[6,"MavParamExtType",27254],[6,"MavCollisionSrc",27254],[6,"CameraMode",27254],[6,"PrecisionLandMode",27254],[6,"ActuatorConfiguration",27254],[6,"MavOdidVerAcc",27254],[6,"AisNavStatus",27254],[6,"AdsbEmitterType",27254],[6,"VideoStreamType",27254],[6,"MavOdidIdType",27254],[6,"UavionixAdsbOutCfgAircraftSize",27254],[6,"MavBatteryChargeState",27254],[6,"MavOdidDescType",27254],[6,"FirmwareVersionType",27254],[6,"MavSensorOrientation",27254],[6,"CameraTrackingTargetData",27254],[6,"EscConnectionType",27254],[6,"MavEventErrorReason",27254],[6,"StorageUsageFlag",27254],[6,"RtkBaselineCoordinateSystem",27254],[6,"PreflightStorageMissionAction",27254],[6,"CellularConfigResponse",27254],[6,"VtolTransitionHeading",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":[[8648,"impl-Binary-for-AisFlags"],[8649,"impl-Debug-for-AisFlags"],[8650,"impl-LowerHex-for-AisFlags"],[8651,"impl-Octal-for-AisFlags"],[8652,"impl-UpperHex-for-AisFlags"],[8658,"impl-LowerHex-for-EscFailureFlags"],[8659,"impl-Debug-for-EscFailureFlags"],[8660,"impl-Binary-for-EscFailureFlags"],[8661,"impl-Octal-for-EscFailureFlags"],[8662,"impl-UpperHex-for-EscFailureFlags"],[8675,"impl-Debug-for-UavionixAdsbOutRfSelect"],[8676,"impl-Octal-for-UavionixAdsbOutRfSelect"],[8677,"impl-LowerHex-for-UavionixAdsbOutRfSelect"],[8678,"impl-UpperHex-for-UavionixAdsbOutRfSelect"],[8679,"impl-Binary-for-UavionixAdsbOutRfSelect"],[8681,"impl-Debug-for-UavionixAdsbRfHealth"],[8682,"impl-Octal-for-UavionixAdsbRfHealth"],[8683,"impl-Binary-for-UavionixAdsbRfHealth"],[8684,"impl-LowerHex-for-UavionixAdsbRfHealth"],[8685,"impl-UpperHex-for-UavionixAdsbRfHealth"],[8689,"impl-Octal-for-HighresImuUpdatedFlags"],[8690,"impl-LowerHex-for-HighresImuUpdatedFlags"],[8691,"impl-Binary-for-HighresImuUpdatedFlags"],[8692,"impl-UpperHex-for-HighresImuUpdatedFlags"],[8693,"impl-Debug-for-HighresImuUpdatedFlags"],[8694,"impl-Binary-for-CameraCapFlags"],[8695,"impl-UpperHex-for-CameraCapFlags"],[8696,"impl-Debug-for-CameraCapFlags"],[8697,"impl-Octal-for-CameraCapFlags"],[8698,"impl-LowerHex-for-CameraCapFlags"],[8699,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[8700,"impl-Binary-for-GimbalDeviceErrorFlags"],[8701,"impl-Debug-for-GimbalDeviceErrorFlags"],[8702,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[8703,"impl-Octal-for-GimbalDeviceErrorFlags"],[8708,"impl-UpperHex-for-GimbalDeviceCapFlags"],[8709,"impl-Octal-for-GimbalDeviceCapFlags"],[8710,"impl-Debug-for-GimbalDeviceCapFlags"],[8711,"impl-Binary-for-GimbalDeviceCapFlags"],[8712,"impl-LowerHex-for-GimbalDeviceCapFlags"],[8719,"impl-LowerHex-for-HlFailureFlag"],[8720,"impl-Debug-for-HlFailureFlag"],[8721,"impl-UpperHex-for-HlFailureFlag"],[8722,"impl-Binary-for-HlFailureFlag"],[8723,"impl-Octal-for-HlFailureFlag"],[8727,"impl-Octal-for-GpsInputIgnoreFlags"],[8728,"impl-Binary-for-GpsInputIgnoreFlags"],[8729,"impl-LowerHex-for-GpsInputIgnoreFlags"],[8730,"impl-UpperHex-for-GpsInputIgnoreFlags"],[8731,"impl-Debug-for-GpsInputIgnoreFlags"],[8739,"impl-Binary-for-RallyFlags"],[8740,"impl-UpperHex-for-RallyFlags"],[8741,"impl-LowerHex-for-RallyFlags"],[8742,"impl-Octal-for-RallyFlags"],[8743,"impl-Debug-for-RallyFlags"],[8747,"impl-Binary-for-PositionTargetTypemask"],[8748,"impl-UpperHex-for-PositionTargetTypemask"],[8749,"impl-Octal-for-PositionTargetTypemask"],[8750,"impl-Debug-for-PositionTargetTypemask"],[8751,"impl-LowerHex-for-PositionTargetTypemask"],[8753,"impl-LowerHex-for-EkfStatusFlags"],[8754,"impl-UpperHex-for-EkfStatusFlags"],[8755,"impl-Binary-for-EkfStatusFlags"],[8756,"impl-Octal-for-EkfStatusFlags"],[8757,"impl-Debug-for-EkfStatusFlags"],[8781,"impl-UpperHex-for-UtmDataAvailFlags"],[8782,"impl-LowerHex-for-UtmDataAvailFlags"],[8783,"impl-Binary-for-UtmDataAvailFlags"],[8784,"impl-Octal-for-UtmDataAvailFlags"],[8785,"impl-Debug-for-UtmDataAvailFlags"],[8788,"impl-Debug-for-AdsbFlags"],[8789,"impl-Binary-for-AdsbFlags"],[8790,"impl-Octal-for-AdsbFlags"],[8791,"impl-LowerHex-for-AdsbFlags"],[8792,"impl-UpperHex-for-AdsbFlags"],[8800,"impl-LowerHex-for-LimitModule"],[8801,"impl-Binary-for-LimitModule"],[8802,"impl-Octal-for-LimitModule"],[8803,"impl-Debug-for-LimitModule"],[8804,"impl-UpperHex-for-LimitModule"],[8805,"impl-Debug-for-EstimatorStatusFlags"],[8806,"impl-UpperHex-for-EstimatorStatusFlags"],[8807,"impl-LowerHex-for-EstimatorStatusFlags"],[8808,"impl-Octal-for-EstimatorStatusFlags"],[8809,"impl-Binary-for-EstimatorStatusFlags"],[8813,"impl-Debug-for-SerialControlFlag"],[8814,"impl-LowerHex-for-SerialControlFlag"],[8815,"impl-UpperHex-for-SerialControlFlag"],[8816,"impl-Octal-for-SerialControlFlag"],[8817,"impl-Binary-for-SerialControlFlag"],[8821,"impl-Binary-for-HilSensorUpdatedFlags"],[8822,"impl-UpperHex-for-HilSensorUpdatedFlags"],[8823,"impl-Debug-for-HilSensorUpdatedFlags"],[8824,"impl-LowerHex-for-HilSensorUpdatedFlags"],[8825,"impl-Octal-for-HilSensorUpdatedFlags"],[8829,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[8830,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[8831,"impl-Octal-for-MavEventCurrentSequenceFlags"],[8832,"impl-Binary-for-MavEventCurrentSequenceFlags"],[8833,"impl-Debug-for-MavEventCurrentSequenceFlags"],[8837,"impl-Binary-for-TuneFormat"],[8838,"impl-Octal-for-TuneFormat"],[8839,"impl-LowerHex-for-TuneFormat"],[8840,"impl-UpperHex-for-TuneFormat"],[8841,"impl-Debug-for-TuneFormat"],[8848,"impl-Binary-for-MavPowerStatus"],[8849,"impl-UpperHex-for-MavPowerStatus"],[8850,"impl-LowerHex-for-MavPowerStatus"],[8851,"impl-Octal-for-MavPowerStatus"],[8852,"impl-Debug-for-MavPowerStatus"],[8854,"impl-Debug-for-MavSysStatusSensor"],[8855,"impl-UpperHex-for-MavSysStatusSensor"],[8856,"impl-Binary-for-MavSysStatusSensor"],[8857,"impl-LowerHex-for-MavSysStatusSensor"],[8858,"impl-Octal-for-MavSysStatusSensor"],[8864,"impl-Binary-for-UavionixAdsbOutDynamicState"],[8865,"impl-Debug-for-UavionixAdsbOutDynamicState"],[8866,"impl-Octal-for-UavionixAdsbOutDynamicState"],[8867,"impl-UpperHex-for-UavionixAdsbOutDynamicState"],[8868,"impl-LowerHex-for-UavionixAdsbOutDynamicState"],[8891,"impl-Debug-for-MavProtocolCapability"],[8892,"impl-Octal-for-MavProtocolCapability"],[8893,"impl-LowerHex-for-MavProtocolCapability"],[8894,"impl-UpperHex-for-MavProtocolCapability"],[8895,"impl-Binary-for-MavProtocolCapability"],[8901,"impl-UpperHex-for-MavGeneratorStatusFlag"],[8902,"impl-Debug-for-MavGeneratorStatusFlag"],[8903,"impl-LowerHex-for-MavGeneratorStatusFlag"],[8904,"impl-Octal-for-MavGeneratorStatusFlag"],[8905,"impl-Binary-for-MavGeneratorStatusFlag"],[8913,"impl-Octal-for-GimbalDeviceFlags"],[8914,"impl-LowerHex-for-GimbalDeviceFlags"],[8915,"impl-Debug-for-GimbalDeviceFlags"],[8916,"impl-Binary-for-GimbalDeviceFlags"],[8917,"impl-UpperHex-for-GimbalDeviceFlags"],[8918,"impl-Octal-for-MavModeFlag"],[8919,"impl-Debug-for-MavModeFlag"],[8920,"impl-LowerHex-for-MavModeFlag"],[8921,"impl-Binary-for-MavModeFlag"],[8922,"impl-UpperHex-for-MavModeFlag"],[8924,"impl-Binary-for-MavWinchStatusFlag"],[8925,"impl-Debug-for-MavWinchStatusFlag"],[8926,"impl-LowerHex-for-MavWinchStatusFlag"],[8927,"impl-Octal-for-MavWinchStatusFlag"],[8928,"impl-UpperHex-for-MavWinchStatusFlag"],[8930,"impl-Debug-for-GoproHeartbeatFlags"],[8931,"impl-UpperHex-for-GoproHeartbeatFlags"],[8932,"impl-LowerHex-for-GoproHeartbeatFlags"],[8933,"impl-Octal-for-GoproHeartbeatFlags"],[8934,"impl-Binary-for-GoproHeartbeatFlags"],[8940,"impl-Binary-for-GimbalManagerCapFlags"],[8941,"impl-Octal-for-GimbalManagerCapFlags"],[8942,"impl-LowerHex-for-GimbalManagerCapFlags"],[8943,"impl-Debug-for-GimbalManagerCapFlags"],[8944,"impl-UpperHex-for-GimbalManagerCapFlags"],[8962,"impl-Octal-for-AttitudeTargetTypemask"],[8963,"impl-LowerHex-for-AttitudeTargetTypemask"],[8964,"impl-Debug-for-AttitudeTargetTypemask"],[8965,"impl-UpperHex-for-AttitudeTargetTypemask"],[8966,"impl-Binary-for-AttitudeTargetTypemask"],[21929,"impl-UpperHex-for-GimbalDeviceFlags"],[21930,"impl-Debug-for-GimbalDeviceFlags"],[21931,"impl-LowerHex-for-GimbalDeviceFlags"],[21932,"impl-Binary-for-GimbalDeviceFlags"],[21933,"impl-Octal-for-GimbalDeviceFlags"],[21937,"impl-Debug-for-GimbalDeviceErrorFlags"],[21938,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[21939,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[21940,"impl-Octal-for-GimbalDeviceErrorFlags"],[21941,"impl-Binary-for-GimbalDeviceErrorFlags"],[21944,"impl-UpperHex-for-EscFailureFlags"],[21945,"impl-LowerHex-for-EscFailureFlags"],[21946,"impl-Debug-for-EscFailureFlags"],[21947,"impl-Binary-for-EscFailureFlags"],[21948,"impl-Octal-for-EscFailureFlags"],[21952,"impl-LowerHex-for-HighresImuUpdatedFlags"],[21953,"impl-UpperHex-for-HighresImuUpdatedFlags"],[21954,"impl-Debug-for-HighresImuUpdatedFlags"],[21955,"impl-Binary-for-HighresImuUpdatedFlags"],[21956,"impl-Octal-for-HighresImuUpdatedFlags"],[21964,"impl-Octal-for-MavModeFlag"],[21965,"impl-Debug-for-MavModeFlag"],[21966,"impl-Binary-for-MavModeFlag"],[21967,"impl-UpperHex-for-MavModeFlag"],[21968,"impl-LowerHex-for-MavModeFlag"],[21990,"impl-LowerHex-for-HlFailureFlag"],[21991,"impl-Binary-for-HlFailureFlag"],[21992,"impl-UpperHex-for-HlFailureFlag"],[21993,"impl-Debug-for-HlFailureFlag"],[21994,"impl-Octal-for-HlFailureFlag"],[21996,"impl-Octal-for-SerialControlFlag"],[21997,"impl-Binary-for-SerialControlFlag"],[21998,"impl-LowerHex-for-SerialControlFlag"],[21999,"impl-UpperHex-for-SerialControlFlag"],[22000,"impl-Debug-for-SerialControlFlag"],[22008,"impl-Binary-for-AisFlags"],[22009,"impl-LowerHex-for-AisFlags"],[22010,"impl-Debug-for-AisFlags"],[22011,"impl-UpperHex-for-AisFlags"],[22012,"impl-Octal-for-AisFlags"],[22030,"impl-Debug-for-EstimatorStatusFlags"],[22031,"impl-LowerHex-for-EstimatorStatusFlags"],[22032,"impl-Octal-for-EstimatorStatusFlags"],[22033,"impl-Binary-for-EstimatorStatusFlags"],[22034,"impl-UpperHex-for-EstimatorStatusFlags"],[22036,"impl-Binary-for-CameraCapFlags"],[22037,"impl-Debug-for-CameraCapFlags"],[22038,"impl-Octal-for-CameraCapFlags"],[22039,"impl-LowerHex-for-CameraCapFlags"],[22040,"impl-UpperHex-for-CameraCapFlags"],[22041,"impl-Octal-for-GpsInputIgnoreFlags"],[22042,"impl-LowerHex-for-GpsInputIgnoreFlags"],[22043,"impl-Binary-for-GpsInputIgnoreFlags"],[22044,"impl-UpperHex-for-GpsInputIgnoreFlags"],[22045,"impl-Debug-for-GpsInputIgnoreFlags"],[22050,"impl-Binary-for-UtmDataAvailFlags"],[22051,"impl-LowerHex-for-UtmDataAvailFlags"],[22052,"impl-UpperHex-for-UtmDataAvailFlags"],[22053,"impl-Octal-for-UtmDataAvailFlags"],[22054,"impl-Debug-for-UtmDataAvailFlags"],[22057,"impl-Binary-for-PositionTargetTypemask"],[22058,"impl-LowerHex-for-PositionTargetTypemask"],[22059,"impl-Debug-for-PositionTargetTypemask"],[22060,"impl-Octal-for-PositionTargetTypemask"],[22061,"impl-UpperHex-for-PositionTargetTypemask"],[22062,"impl-UpperHex-for-MavPowerStatus"],[22063,"impl-Debug-for-MavPowerStatus"],[22064,"impl-LowerHex-for-MavPowerStatus"],[22065,"impl-Octal-for-MavPowerStatus"],[22066,"impl-Binary-for-MavPowerStatus"],[22070,"impl-UpperHex-for-TuneFormat"],[22071,"impl-Binary-for-TuneFormat"],[22072,"impl-Octal-for-TuneFormat"],[22073,"impl-Debug-for-TuneFormat"],[22074,"impl-LowerHex-for-TuneFormat"],[22075,"impl-UpperHex-for-MavSysStatusSensor"],[22076,"impl-LowerHex-for-MavSysStatusSensor"],[22077,"impl-Debug-for-MavSysStatusSensor"],[22078,"impl-Binary-for-MavSysStatusSensor"],[22079,"impl-Octal-for-MavSysStatusSensor"],[22081,"impl-Octal-for-MavWinchStatusFlag"],[22082,"impl-LowerHex-for-MavWinchStatusFlag"],[22083,"impl-UpperHex-for-MavWinchStatusFlag"],[22084,"impl-Debug-for-MavWinchStatusFlag"],[22085,"impl-Binary-for-MavWinchStatusFlag"],[22087,"impl-UpperHex-for-AttitudeTargetTypemask"],[22088,"impl-Debug-for-AttitudeTargetTypemask"],[22089,"impl-Octal-for-AttitudeTargetTypemask"],[22090,"impl-LowerHex-for-AttitudeTargetTypemask"],[22091,"impl-Binary-for-AttitudeTargetTypemask"],[22097,"impl-UpperHex-for-GimbalManagerCapFlags"],[22098,"impl-LowerHex-for-GimbalManagerCapFlags"],[22099,"impl-Binary-for-GimbalManagerCapFlags"],[22100,"impl-Debug-for-GimbalManagerCapFlags"],[22101,"impl-Octal-for-GimbalManagerCapFlags"],[22102,"impl-Debug-for-HilSensorUpdatedFlags"],[22103,"impl-Octal-for-HilSensorUpdatedFlags"],[22104,"impl-Binary-for-HilSensorUpdatedFlags"],[22105,"impl-LowerHex-for-HilSensorUpdatedFlags"],[22106,"impl-UpperHex-for-HilSensorUpdatedFlags"],[22112,"impl-Octal-for-MavGeneratorStatusFlag"],[22113,"impl-LowerHex-for-MavGeneratorStatusFlag"],[22114,"impl-Binary-for-MavGeneratorStatusFlag"],[22115,"impl-UpperHex-for-MavGeneratorStatusFlag"],[22116,"impl-Debug-for-MavGeneratorStatusFlag"],[22118,"impl-Debug-for-MavEventCurrentSequenceFlags"],[22119,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[22120,"impl-Binary-for-MavEventCurrentSequenceFlags"],[22121,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[22122,"impl-Octal-for-MavEventCurrentSequenceFlags"],[22129,"impl-LowerHex-for-MavProtocolCapability"],[22130,"impl-Octal-for-MavProtocolCapability"],[22131,"impl-Debug-for-MavProtocolCapability"],[22132,"impl-UpperHex-for-MavProtocolCapability"],[22133,"impl-Binary-for-MavProtocolCapability"],[22141,"impl-Binary-for-GimbalDeviceCapFlags"],[22142,"impl-Debug-for-GimbalDeviceCapFlags"],[22143,"impl-LowerHex-for-GimbalDeviceCapFlags"],[22144,"impl-UpperHex-for-GimbalDeviceCapFlags"],[22145,"impl-Octal-for-GimbalDeviceCapFlags"],[22146,"impl-Binary-for-AdsbFlags"],[22147,"impl-LowerHex-for-AdsbFlags"],[22148,"impl-Octal-for-AdsbFlags"],[22149,"impl-UpperHex-for-AdsbFlags"],[22150,"impl-Debug-for-AdsbFlags"],[27075,"impl-Display-for-ParserError"],[27076,"impl-Debug-for-ParserError"],[27077,"impl-Debug-for-MessageReadError"],[27078,"impl-Display-for-MessageReadError"],[27079,"impl-Display-for-MessageWriteError"],[27080,"impl-Debug-for-MessageWriteError"],[27082,"impl-From%3CParserError%3E-for-MessageReadError"],[27083,"impl-From%3CError%3E-for-MessageReadError"],[33846,"impl-Binary-for-HighresImuUpdatedFlags"],[33847,"impl-UpperHex-for-HighresImuUpdatedFlags"],[33848,"impl-Octal-for-HighresImuUpdatedFlags"],[33849,"impl-LowerHex-for-HighresImuUpdatedFlags"],[33850,"impl-Debug-for-HighresImuUpdatedFlags"],[33856,"impl-UpperHex-for-MavPowerStatus"],[33857,"impl-Binary-for-MavPowerStatus"],[33858,"impl-Octal-for-MavPowerStatus"],[33859,"impl-LowerHex-for-MavPowerStatus"],[33860,"impl-Debug-for-MavPowerStatus"],[33864,"impl-LowerHex-for-UtmDataAvailFlags"],[33865,"impl-Octal-for-UtmDataAvailFlags"],[33866,"impl-Debug-for-UtmDataAvailFlags"],[33867,"impl-Binary-for-UtmDataAvailFlags"],[33868,"impl-UpperHex-for-UtmDataAvailFlags"],[33872,"impl-UpperHex-for-MavWinchStatusFlag"],[33873,"impl-Binary-for-MavWinchStatusFlag"],[33874,"impl-Debug-for-MavWinchStatusFlag"],[33875,"impl-LowerHex-for-MavWinchStatusFlag"],[33876,"impl-Octal-for-MavWinchStatusFlag"],[33882,"impl-LowerHex-for-AttitudeTargetTypemask"],[33883,"impl-Binary-for-AttitudeTargetTypemask"],[33884,"impl-Debug-for-AttitudeTargetTypemask"],[33885,"impl-Octal-for-AttitudeTargetTypemask"],[33886,"impl-UpperHex-for-AttitudeTargetTypemask"],[33891,"impl-Binary-for-GimbalDeviceFlags"],[33892,"impl-Debug-for-GimbalDeviceFlags"],[33893,"impl-UpperHex-for-GimbalDeviceFlags"],[33894,"impl-LowerHex-for-GimbalDeviceFlags"],[33895,"impl-Octal-for-GimbalDeviceFlags"],[33898,"impl-Debug-for-AdsbFlags"],[33899,"impl-UpperHex-for-AdsbFlags"],[33900,"impl-Binary-for-AdsbFlags"],[33901,"impl-LowerHex-for-AdsbFlags"],[33902,"impl-Octal-for-AdsbFlags"],[33905,"impl-Octal-for-EstimatorStatusFlags"],[33906,"impl-Binary-for-EstimatorStatusFlags"],[33907,"impl-Debug-for-EstimatorStatusFlags"],[33908,"impl-LowerHex-for-EstimatorStatusFlags"],[33909,"impl-UpperHex-for-EstimatorStatusFlags"],[33917,"impl-Octal-for-MavProtocolCapability"],[33918,"impl-Debug-for-MavProtocolCapability"],[33919,"impl-Binary-for-MavProtocolCapability"],[33920,"impl-UpperHex-for-MavProtocolCapability"],[33921,"impl-LowerHex-for-MavProtocolCapability"],[33930,"impl-Octal-for-UavionixAdsbOutRfSelect"],[33931,"impl-Debug-for-UavionixAdsbOutRfSelect"],[33932,"impl-Binary-for-UavionixAdsbOutRfSelect"],[33933,"impl-LowerHex-for-UavionixAdsbOutRfSelect"],[33934,"impl-UpperHex-for-UavionixAdsbOutRfSelect"],[33949,"impl-Octal-for-AisFlags"],[33950,"impl-Binary-for-AisFlags"],[33951,"impl-LowerHex-for-AisFlags"],[33952,"impl-Debug-for-AisFlags"],[33953,"impl-UpperHex-for-AisFlags"],[33959,"impl-UpperHex-for-CameraCapFlags"],[33960,"impl-Debug-for-CameraCapFlags"],[33961,"impl-Binary-for-CameraCapFlags"],[33962,"impl-Octal-for-CameraCapFlags"],[33963,"impl-LowerHex-for-CameraCapFlags"],[33971,"impl-Octal-for-TuneFormat"],[33972,"impl-UpperHex-for-TuneFormat"],[33973,"impl-Binary-for-TuneFormat"],[33974,"impl-Debug-for-TuneFormat"],[33975,"impl-LowerHex-for-TuneFormat"],[33977,"impl-Binary-for-PositionTargetTypemask"],[33978,"impl-UpperHex-for-PositionTargetTypemask"],[33979,"impl-LowerHex-for-PositionTargetTypemask"],[33980,"impl-Octal-for-PositionTargetTypemask"],[33981,"impl-Debug-for-PositionTargetTypemask"],[33985,"impl-Octal-for-MavEventCurrentSequenceFlags"],[33986,"impl-Debug-for-MavEventCurrentSequenceFlags"],[33987,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[33988,"impl-Binary-for-MavEventCurrentSequenceFlags"],[33989,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[33992,"impl-Octal-for-GimbalManagerCapFlags"],[33993,"impl-LowerHex-for-GimbalManagerCapFlags"],[33994,"impl-Binary-for-GimbalManagerCapFlags"],[33995,"impl-UpperHex-for-GimbalManagerCapFlags"],[33996,"impl-Debug-for-GimbalManagerCapFlags"],[34005,"impl-LowerHex-for-HilSensorUpdatedFlags"],[34006,"impl-Octal-for-HilSensorUpdatedFlags"],[34007,"impl-Binary-for-HilSensorUpdatedFlags"],[34008,"impl-UpperHex-for-HilSensorUpdatedFlags"],[34009,"impl-Debug-for-HilSensorUpdatedFlags"],[34018,"impl-Binary-for-UavionixAdsbOutDynamicState"],[34019,"impl-Debug-for-UavionixAdsbOutDynamicState"],[34020,"impl-Octal-for-UavionixAdsbOutDynamicState"],[34021,"impl-LowerHex-for-UavionixAdsbOutDynamicState"],[34022,"impl-UpperHex-for-UavionixAdsbOutDynamicState"],[34028,"impl-LowerHex-for-MavGeneratorStatusFlag"],[34029,"impl-Octal-for-MavGeneratorStatusFlag"],[34030,"impl-Binary-for-MavGeneratorStatusFlag"],[34031,"impl-Debug-for-MavGeneratorStatusFlag"],[34032,"impl-UpperHex-for-MavGeneratorStatusFlag"],[34034,"impl-Binary-for-HlFailureFlag"],[34035,"impl-UpperHex-for-HlFailureFlag"],[34036,"impl-Debug-for-HlFailureFlag"],[34037,"impl-LowerHex-for-HlFailureFlag"],[34038,"impl-Octal-for-HlFailureFlag"],[34040,"impl-Binary-for-MavSysStatusSensor"],[34041,"impl-Octal-for-MavSysStatusSensor"],[34042,"impl-LowerHex-for-MavSysStatusSensor"],[34043,"impl-UpperHex-for-MavSysStatusSensor"],[34044,"impl-Debug-for-MavSysStatusSensor"],[34047,"impl-UpperHex-for-GimbalDeviceCapFlags"],[34048,"impl-Octal-for-GimbalDeviceCapFlags"],[34049,"impl-Binary-for-GimbalDeviceCapFlags"],[34050,"impl-LowerHex-for-GimbalDeviceCapFlags"],[34051,"impl-Debug-for-GimbalDeviceCapFlags"],[34052,"impl-Octal-for-MavModeFlag"],[34053,"impl-UpperHex-for-MavModeFlag"],[34054,"impl-Binary-for-MavModeFlag"],[34055,"impl-Debug-for-MavModeFlag"],[34056,"impl-LowerHex-for-MavModeFlag"],[34065,"impl-LowerHex-for-GpsInputIgnoreFlags"],[34066,"impl-Debug-for-GpsInputIgnoreFlags"],[34067,"impl-UpperHex-for-GpsInputIgnoreFlags"],[34068,"impl-Binary-for-GpsInputIgnoreFlags"],[34069,"impl-Octal-for-GpsInputIgnoreFlags"],[34070,"impl-UpperHex-for-EscFailureFlags"],[34071,"impl-Debug-for-EscFailureFlags"],[34072,"impl-Octal-for-EscFailureFlags"],[34073,"impl-LowerHex-for-EscFailureFlags"],[34074,"impl-Binary-for-EscFailureFlags"],[34075,"impl-UpperHex-for-UavionixAdsbRfHealth"],[34076,"impl-Debug-for-UavionixAdsbRfHealth"],[34077,"impl-Binary-for-UavionixAdsbRfHealth"],[34078,"impl-Octal-for-UavionixAdsbRfHealth"],[34079,"impl-LowerHex-for-UavionixAdsbRfHealth"],[34084,"impl-Binary-for-SerialControlFlag"],[34085,"impl-Debug-for-SerialControlFlag"],[34086,"impl-LowerHex-for-SerialControlFlag"],[34087,"impl-UpperHex-for-SerialControlFlag"],[34088,"impl-Octal-for-SerialControlFlag"],[34093,"impl-Octal-for-GimbalDeviceErrorFlags"],[34094,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[34095,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[34096,"impl-Debug-for-GimbalDeviceErrorFlags"],[34097,"impl-Binary-for-GimbalDeviceErrorFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPCFUgAAAAUACAAAAA0ABQAUABgALgADADMABAA5AAsASgACAE4AAgBSAAAAWAAMAGYAAgBtAAAAcwACAHcAAAB5AB4AmQAAAJ0AzA2KDnYAgQ8CAOQPSwhQGAYAdxhmBf4dFwA2HuYEZyX1AX0nDwDNJwAA+CnYAPEqHAEuLKED8C8+AG8wBACUMIkEPjXlBUQ7SQGPPA0AnjwHAKg8lApWR2YAIUgBAG5IIAaoTgEAw07wA81SDgD1UqYDTlhuAdZZDQAWWgAAsFuZAGNc7QBqXa4CMmAnAIxgBACqYGEDJWRSBJFoOAHLaQEAz2kAANNpUQAqagMAM2o0AGlqAQB0atkKanVnAEJ2AQCYdlAGBX0BACN9CQRJgRAAdoHLAwiHhAGpiA0A74gAAJqKmQBQi/EAXoy+AjmPKgCcjwQAvY92A1CTcwTglyYB"}],\ +["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,470,470,470,470,470,470,470,470,456,456,456,456,456,456,69,0,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,69,0,69,0,378,378,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,40,40,40,40,40,40,40,40,40,40,69,0,69,69,0,69,0,0,69,0,38,38,38,38,38,38,38,38,38,38,38,38,38,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,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,69,0,69,0,324,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,432,432,432,432,0,0,0,0,0,0,0,0,0,0,0,69,0,399,69,0,69,0,69,0,60,60,60,60,60,60,60,60,60,60,60,60,69,486,486,0,486,486,486,69,0,69,0,69,0,413,413,413,69,0,69,0,514,514,514,514,514,514,514,69,0,69,0,369,369,369,510,510,510,511,511,511,511,69,0,69,0,377,69,0,377,377,69,0,69,396,0,396,396,396,396,442,442,442,442,500,500,500,500,500,69,0,446,446,446,446,446,446,446,446,446,446,446,446,446,69,69,0,0,339,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,493,493,493,493,493,493,69,0,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,69,0,69,0,69,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,365,365,365,0,282,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,490,490,490,490,490,490,490,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,525,526,501,501,69,0,69,0,69,0,69,0,69,0,69,0,69,0,0,0,211,69,0,64,64,64,64,64,64,64,64,69,0,64,64,64,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,371,371,371,371,371,371,59,59,59,59,59,59,59,59,69,0,69,0,69,0,69,0,69,0,57,57,57,57,57,57,57,57,57,57,69,0,57,57,69,0,69,0,0,0,0,0,374,374,374,374,374,374,374,374,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,54,476,476,476,476,476,476,476,476,491,491,491,491,69,0,483,483,483,69,0,69,0,282,69,0,478,478,478,478,478,69,0,475,475,475,475,475,475,475,69,0,0,0,0,0,0,0,69,0,525,525,525,422,422,422,428,428,428,69,0,69,0,50,50,50,50,50,50,50,50,50,50,50,50,50,50,65,65,65,65,65,65,65,65,65,65,45,45,45,45,45,45,45,45,45,45,69,0,69,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,507,507,507,507,507,507,507,507,507,507,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,69,0,0,69,0,434,434,434,434,434,434,434,434,434,416,416,416,416,416,416,416,416,504,504,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,457,457,457,41,458,458,458,458,458,458,458,458,458,458,458,458,458,458,69,0,69,0,69,0,452,452,452,452,502,502,502,502,502,386,386,386,386,386,474,474,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,385,385,385,385,385,505,505,505,450,450,450,450,450,421,421,394,394,394,394,394,394,394,394,394,394,394,394,394,394,69,0,69,0,467,69,0,69,0,465,465,465,465,465,465,465,465,465,69,0,69,0,69,0,66,66,66,66,66,66,66,66,69,0,69,0,69,0,69,0,481,481,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,440,440,69,0,69,0,69,0,69,0,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,69,69,0,0,69,0,69,0,69,0,69,0,69,0,69,0,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,69,0,69,0,46,46,46,46,46,46,46,46,46,46,46,46,46,46,69,0,69,0,69,0,0,0,0,0,282,200,124,293,472,472,472,472,472,472,69,0,69,0,506,506,506,69,0,0,0,69,0,463,463,463,463,54,69,0,414,414,414,526,526,526,526,526,69,0,526,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,438,438,438,438,69,0,69,0,438,438,438,438,69,0,69,0,503,503,503,503,503,503,381,381,381,381,381,381,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,494,494,494,494,494,494,494,494,399,399,399,399,399,399,399,399,430,430,430,430,430,380,380,380,423,423,423,423,423,443,366,366,366,366,366,366,366,366,366,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,449,449,449,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,415,415,415,415,415,415,415,398,398,460,460,460,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,515,515,515,515,515,515,515,515,515,513,513,513,513,513,404,466,466,466,466,466,466,466,466,466,53,376,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,454,454,454,454,454,454,454,454,454,454,454,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,409,409,409,409,402,402,402,402,402,395,395,395,395,395,395,395,395,395,395,395,395,395,395,447,447,447,447,395,395,508,508,48,48,400,400,400,400,400,400,400,400,48,48,48,48,48,48,499,499,499,499,499,499,499,508,508,508,508,508,508,508,508,508,468,468,468,468,468,468,468,498,498,431,431,431,431,431,431,509,509,509,509,437,437,462,462,462,462,462,462,462,462,393,393,393,455,455,516,516,516,516,516,516,516,516,516,516,516,516,516,480,480,480,480,480,417,424,424,424,387,387,387,387,387,367,367,367,367,367,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,390,390,390,390,390,390,390,372,372,372,372,372,372,372,372,372,372,372,479,479,479,479,479,479,479,479,479,479,56,56,56,56,56,56,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,517,517,448,448,388,388,388,388,388,388,388,518,518,518,518,518,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,444,444,444,444,444,444,444,444,370,370,370,370,370,370,370,370,370,52,52,52,52,52,52,403,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,411,411,411,411,411,411,411,411,411,411,411,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,469,469,469,469,469,49,49,49,49,49,49,49,49,49,49,49,49,49,49,69,0,207,207,207,207,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,392,69,0,69,0,69,0,69,0,392,69,0,429,429,429,429,429,429,69,0,392,339,384,495,495,495,384,384,384,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,420,420,420,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,435,435,435,435,435,523,69,0,69,0,523,523,523,523,425,425,425,523,523,523,523,69,0,69,0,425,0,0,0,282,492,492,492,524,524,524,524,69,0,69,0,69,0,69,0,69,0,69,0,512,69,0,69,0,512,512,512,69,0,69,0,512,69,379,0,379,379,379,379,379,69,0,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,69,0,69,0,69,0,69,0,39,39,39,39,39,39,39,39,39,39,39,39,69,0,368,368,368,69,0,0,0,211,211,211,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,418,418,69,0,69,0,69,0,69,0,69,0,69,0,383,383,383,383,383,383,383,383,383,383,383,383,69,0,436,436,0,0,0,0,69,0,69,0,69,69,0,69,0,0,69,69,0,69,0,0,453,453,453,453,69,0,69,0,445,445,445,445,445,62,62,62,62,62,445,445,445,445,445,445,445,445,445,445,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,485,485,324,69,0,69,0,461,461,461,461,412,412,412,412,412,412,412,412,412,459,459,459,459,441,441,441,441,441,441,441,441,441,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,497,497,497,497,497,497,69,0,69,0,44,44,69,0,0,0,406,406,406,406,69,0,397,397,397,397,397,69,0,69,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,0,405,405,405,405,405,405,405,405,464,464,487,69,0,471,471,471,471,471,471,36,36,36,36,36,487,487,487,487,487,487,63,63,63,487,47,47,47,47,69,0,401,51,51,51,51,51,51,51,51,520,520,520,520,520,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,389,389,482,482,482,482,69,0,69,0,69,0,410,410,410,410,410,89,200,161,0,0,89,0,69,0,69,0,69,0,391,391,391,391,484,484,484,484,484,484,426,426,426,426,426,426,426,426,426,426,69,0,69,69,0,0,0,0,0,419,419,419,419,70,358,334,298,298,298,240,240,240,213,147,250,161,161,161,282,347,110,105,261,261,208,208,208,208,208,208,86,184,357,133,149,153,169,133,149,153,169,133,149,153,169,124,97,303,359,361,97,303,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,75,79,100,133,143,145,153,164,165,171,172,178,181,182,239,305,334,359,346,265,346,330,330,93,97,116,174,224,293,294,336,351,134,303,275,275,134,105,134,134,303,134,293,266,244,244,106,268,289,106,268,289,106,268,289,120,362,294,351,294,351,294,351,93,93,95,95,95,95,304,157,102,265,162,334,75,112,112,127,243,310,97,278,219,128,128,128,128,73,188,272,282,347,272,272,199,161,275,299,126,278,303,147,250,147,250,147,250,147,250,315,97,315,166,226,166,295,303,228,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,77,292,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,192,85,255,85,255,85,255,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,525,526,134,220,323,323,323,323,239,258,101,183,184,264,357,315,184,357,184,357,348,162,219,162,219,124,293,339,84,84,279,330,164,292,118,284,192,226,226,195,164,95,82,109,82,109,82,109,82,82,82,82,82,82,82,109,216,249,331,82,109,216,249,331,82,109,216,249,331,82,109,216,249,331,82,109,216,249,331,82,109,216,249,331,82,109,216,249,331,82,109,216,249,331,82,109,82,226,212,95,95,359,97,303,281,281,281,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,525,526,194,222,267,350,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,145,181,182,92,127,202,243,256,298,310,88,120,344,162,219,254,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,162,162,266,326,360,92,234,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,110,271,81,167,231,133,149,153,169,74,121,155,156,173,184,185,201,228,234,239,321,355,357,363,234,87,210,272,305,125,125,332,93,121,127,156,201,243,251,310,313,365,129,166,295,166,87,227,97,97,97,274,118,274,97,126,278,303,118,334,226,299,74,80,101,115,183,184,185,196,228,253,283,285,318,342,343,345,364,112,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,525,526,69,322,317,317,317,317,317,317,317,78,78,78,170,170,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,525,526,282,347,304,304,228,226,182,182,219,219,219,70,211,358,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,339,339,339,339,263,275,162,162,162,226,143,171,173,198,244,262,291,246,295,299,199,161,124,293,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,362,362,98,122,245,166,120,299,97,145,181,182,97,145,181,182,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,525,526,131,347,234,213,213,295,295,295,295,295,334,130,272,305,279,304,299,93,120,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,88,120,88,120,347,347,306,303,97,234,268,223,125,130,70,358,119,164,84,118,115,364,260,219,145,178,181,182,76,154,77,81,84,89,100,106,107,111,195,215,225,228,239,254,268,288,289,293,318,330,339,363,192,100,192,157,340,340,340,340,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,370,371,372,373,374,375,36,36,36,36,36,376,377,37,37,37,37,37,378,379,38,38,38,38,38,380,381,382,383,384,385,386,387,39,39,39,39,39,388,389,390,391,392,393,394,395,396,40,40,40,40,40,397,398,399,400,401,41,41,41,41,41,402,403,404,42,42,42,42,42,405,406,407,408,43,43,43,43,43,44,44,44,44,44,409,410,411,45,45,45,45,45,412,413,46,46,46,46,46,414,415,416,417,418,419,420,421,422,47,47,47,47,47,423,424,425,48,48,48,48,48,426,427,428,49,49,49,49,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,50,50,50,50,443,444,51,51,51,51,51,445,446,447,448,449,450,451,452,52,52,52,52,52,453,53,53,53,53,53,454,455,456,457,458,459,54,54,54,54,54,55,55,55,55,55,460,461,462,56,56,56,56,56,463,464,57,57,57,57,57,465,466,467,468,469,470,471,472,473,474,58,58,58,58,58,59,59,59,59,59,475,476,477,478,60,60,60,60,60,479,480,481,61,61,61,61,61,482,483,484,62,62,62,62,62,485,63,63,63,63,63,486,487,488,489,490,491,492,493,494,495,496,497,64,64,64,64,64,498,499,500,501,502,503,504,505,506,65,65,65,65,65,507,508,509,510,511,512,513,514,515,516,66,66,66,66,66,517,518,519,520,521,522,523,524,67,67,67,67,67,525,526,330,84,88,175,247,117,127,243,244,257,310,325,341,212,77,292,363,258,316,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,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,299,299,110,242,242,315,315,215,225,284,288,289,161,161,161,161,124,124,303,178,303,125,125,196,297,196,340,97,303,359,167,231,240,240,240,100,143,107,118,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,143,165,143,178,97,293,303,339,359,303,205,299,171,176,275,275,77,346,363,293,178,349,275,105,356,197,197,197,147,250,87,101,105,166,171,183,185,207,226,304,321,354,356,83,95,112,170,203,275,280,203,264,136,193,239,355,299,178,164,73,73,279,330,246,326,360,296,75,234,313,316,234,237,299,236,236,236,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,274,299,299,198,262,198,262,198,262,198,262,198,262,198,262,365,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,301,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,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,120,317,317,317,176,319,223,344,239,108,130,303,93,93,220,177,220,306,354,112,220,260,220,75,79,100,116,143,145,164,165,171,172,178,180,181,182,196,224,227,239,252,293,297,305,330,334,339,355,346,346,133,153,97,174,275,294,303,336,351,80,101,183,253,318,342,343,345,112,115,364,84,96,220,251,125,125,125,125,125,116,171,180,224,239,330,355,295,315,227,304,75,79,100,143,145,164,165,172,178,181,182,196,227,252,293,297,305,334,339,346,346,133,153,97,174,275,294,303,336,351,240,148,240,148,240,148,240,107,269,297,278,80,86,87,97,125,140,166,176,223,226,253,278,339,343,345,363,241,241,241,241,241,87,246,341,326,360,96,223,69,301,69,69,163,160,280,186,186,186,192,192,241,241,241,241,241,87,246,341,326,360,96,344,344,223,81,120,128,205,312,269,84,118,220,220,220,217,280,102,114,197,329,338,339,363,265,128,265,265,339,362,100,100,100,76,154,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,147,250,241,161,264,354,341,219,219,219,142,185,321,219,219,219,347,213,213,213,347,163,295,295,295,264,95,290,83,83,95,290,95,95,290,87,192,192,191,360,191,360,279,257,325,257,325,257,325,279,257,325,257,325,257,325,279,279,176,92,127,243,310,92,127,243,310,92,127,243,310,92,127,243,310,92,92,92,141,229,113,123,141,146,150,179,229,277,326,360,113,141,146,229,277,179,123,141,150,179,229,123,141,150,179,229,277,277,277,277,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,271,352,93,93,274,71,160,176,328,328,328,227,242,242,362,79,94,99,116,171,172,180,209,224,225,269,288,300,303,309,330,337,128,118,284,118,284,225,288,361,75,79,138,210,212,309,232,232,286,286,286,235,249,331,107,107,254,361,107,107,254,298,322,298,322,298,322,298,322,212,334,266,315,72,204,206,233,72,206,233,204,204,70,358,215,215,192,299,362,85,106,130,164,210,212,255,268,270,289,294,346,351,361,138,172,138,172,138,172,138,172,130,198,223,262,340,348,117,232,125,125,334,211,240,240,188,320,232,232,232,232,73,315,74,184,357,100,164,165,305,76,154,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,76,154,213,276,276,74,168,184,191,248,314,326,357,360,77,84,292,363,77,84,292,363,362,226,74,202,248,314,326,221,124,306,199,362,79,94,99,116,171,172,180,209,224,269,300,303,309,330,337,128,118,284,118,284,361,75,79,138,210,212,309,77,292,363,121,156,201,299,313,190,190,76,82,109,154,249,331,147,250,147,250,147,250,315,186,186,186,186,306,76,154,344,287,287,287,287,287,145,178,181,182,287,236,277,215,215,237,198,262,340,84,84,246,341,90,127,135,152,159,307,308,310,353,139,285,283,111,115,187,304,320,364,320,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,226,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,525,526,235,235,235,235,235,235,235,235,88,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,311,88,120,347,347,306,280,176,332,354,244,244,227,299,96,251,263,178,275,275,275,263,161,293,105,352,217,217,217,93,124,98,122,245,276,161,177,211,211,211,131,139,188,195,222,223,251,275,292,315,333,350,172,172,168,188,188,125,125,125,77,163,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,205,306,197,197,197,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,278,157,348,97,265,71,78,83,88,90,91,92,95,98,101,104,106,112,113,115,120,122,123,127,130,132,136,137,139,140,142,146,148,150,153,155,158,159,160,169,170,175,183,184,187,191,193,194,199,203,216,217,225,231,236,237,239,243,245,247,255,256,257,259,260,264,267,268,274,275,276,277,280,285,286,288,289,290,302,307,310,317,320,321,327,328,332,342,353,355,357,360,364,232,97,97,71,160,244,71,78,83,88,90,91,92,95,98,101,104,106,112,113,115,120,122,123,126,127,130,132,136,137,139,140,142,146,148,150,153,155,158,159,160,169,170,174,175,183,184,187,191,193,194,199,203,216,217,225,231,236,237,239,243,245,247,255,256,257,259,260,264,267,268,271,274,275,276,277,279,280,285,286,288,289,290,302,307,310,317,320,321,327,328,330,332,342,351,353,355,357,360,364,107,214,70,72,121,156,166,171,198,201,204,206,233,234,251,262,303,356,358,97,303,125,125,251,254,227,311,347,347,105,97,128,303,359,365,299,299,85,255,269,100,72,73,82,84,85,87,94,114,118,119,133,138,144,149,151,153,157,164,165,169,171,177,188,189,206,209,215,233,238,242,249,255,268,269,284,296,309,312,329,331,335,341,346,130,198,262,266,147,250,105,151,315,70,75,79,81,90,102,107,109,117,125,128,134,135,145,167,173,178,181,182,197,198,204,205,210,212,218,231,234,235,244,246,251,261,262,266,270,272,279,281,298,305,313,322,324,330,338,340,349,358,361,164,354,178,178,228,95,97,112,186,275,290,306,334,275,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,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,188,121,156,201,147,250,232,143,232,168,75,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,525,526,214,293,339,247,302,339,186,186,186,306,76,154,241,241,241,241,241,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,370,371,372,373,374,375,36,376,377,37,378,379,38,380,381,382,383,384,385,386,387,39,388,389,390,391,392,393,394,395,396,40,397,398,399,400,401,41,402,403,404,42,405,406,407,408,43,44,409,410,411,45,412,413,46,414,415,416,417,418,419,420,421,422,47,423,424,425,48,426,427,428,49,429,430,431,432,433,434,435,436,437,438,439,440,441,442,50,443,444,51,445,446,447,448,449,450,451,452,52,453,53,454,455,456,457,458,459,54,55,460,461,462,56,463,464,57,465,466,467,468,469,470,471,472,473,474,58,59,475,476,477,478,60,479,480,481,61,482,483,484,62,485,63,486,487,488,489,490,491,492,493,494,495,496,497,64,498,499,500,501,502,503,504,505,506,65,507,508,509,510,511,512,513,514,515,516,66,517,518,519,520,521,522,523,524,67,525,526,85,133,149,153,169,255,347,203,100,203,118,192,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,125,197,205,119,168,292,363,168,99,273,300,337,188,161,224,224,224,224,100,143,130,298,322,86,114,267,296,329,350,349,349,172,178,181,178,172,178,181,145,181,182,334,161,161,100,143,143,143,143,107,361,298,298,298,298,339,212,254,192,84,118,205,86,293,96,271,178,349,275,346,281,281,281,73,172,178,181,121,129,156,201,251,291,313,295,166,108,75,79,100,130,133,149,153,165,169,189,211,212,272,305,75,79,100,130,133,149,153,165,169,189,211,212,272,305,75,79,100,130,133,149,153,165,169,189,211,212,272,305,226,176,349,97,349,349,349,97,147,250,265,303,97,303,188,99,117,127,149,169,189,209,212,243,270,272,273,294,300,310,337,338,341,348,351,361,361,361,70,75,79,144,172,180,218,238,335,358,70,144,172,180,218,238,335,358,70,144,218,238,335,358,265,99,117,127,149,169,189,209,212,243,270,272,273,294,300,310,337,338,341,348,351,361,361,361,70,75,79,144,172,180,218,238,335,358,79,94,99,116,133,149,153,169,171,172,180,209,224,225,269,288,300,309,330,337,118,284,118,284,133,149,153,169,225,288,361,128,75,79,138,210,212,309,70,144,172,180,218,238,335,358,70,144,218,238,335,358,99,117,127,149,169,189,209,212,243,270,272,273,294,300,310,337,338,341,348,351,361,361,361,70,75,79,144,172,180,218,238,335,358,70,144,172,180,218,238,335,358,70,144,218,238,335,358,88,88,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,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,567,0,799,799,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,544,544,544,544,544,544,544,544,544,544,567,0,565,565,565,565,565,565,565,565,565,565,565,565,565,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,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,808,808,808,808,0,0,0,0,0,0,0,0,0,0,831,567,0,567,0,567,0,562,562,562,562,562,562,562,562,562,562,562,562,567,0,567,0,567,0,812,812,812,567,0,567,0,567,0,856,856,856,810,810,810,892,892,892,892,567,0,567,0,874,567,0,874,874,567,0,567,861,0,861,861,861,861,789,789,789,789,855,855,855,855,855,567,0,829,829,829,829,829,829,829,829,829,829,829,829,829,567,567,0,0,677,567,0,567,0,567,0,567,0,567,0,567,0,567,0,871,871,871,871,871,871,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,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,889,890,891,892,893,894,895,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,806,806,806,806,806,806,546,546,546,546,546,546,546,546,567,0,567,0,554,554,554,554,554,554,554,554,554,554,567,0,554,554,567,0,567,0,0,0,0,859,859,859,859,859,859,859,859,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,837,837,837,837,837,837,837,837,804,804,804,804,823,823,823,567,0,567,0,858,858,858,858,858,567,0,869,869,869,869,869,869,869,567,0,0,0,0,0,0,0,567,0,567,0,557,557,557,557,557,557,557,557,557,557,557,557,557,557,556,556,556,556,556,556,556,556,556,556,555,555,555,555,555,555,555,555,555,555,567,0,567,0,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,897,897,897,897,897,897,897,897,897,897,567,0,567,0,567,0,567,0,567,0,567,567,0,0,567,0,567,0,567,0,888,888,888,888,888,888,888,888,888,567,0,567,0,567,0,553,553,553,553,553,553,553,553,567,0,567,0,567,0,567,0,790,790,0,0,0,0,0,0,0,0,567,0,567,0,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,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,560,560,560,560,560,560,560,560,560,560,560,560,560,560,567,0,567,0,0,0,0,703,567,0,567,0,894,894,894,894,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,900,900,900,900,567,0,900,900,900,900,567,0,567,0,796,796,796,796,796,796,863,863,863,863,863,863,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,801,801,801,801,801,801,801,801,831,831,831,831,831,831,831,831,847,847,847,847,847,896,896,896,850,850,850,850,850,867,867,867,867,867,867,867,867,867,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,882,882,882,882,882,882,882,865,865,886,886,886,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,824,824,824,824,824,824,824,824,824,839,839,839,839,839,895,891,891,891,891,891,891,891,891,891,542,872,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,797,797,797,797,797,797,797,797,797,797,797,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,802,802,802,802,800,800,800,800,800,860,860,860,860,860,860,860,860,860,860,860,860,860,860,835,835,835,835,860,860,889,889,561,561,811,811,811,811,811,811,811,811,561,561,561,561,561,561,889,889,889,889,889,889,889,889,889,816,816,816,816,816,816,816,879,879,840,840,840,840,840,840,845,845,845,845,832,832,880,880,880,880,880,880,880,880,873,873,873,870,870,830,830,830,830,830,830,830,830,830,830,830,830,830,849,849,849,849,849,887,868,868,868,854,854,854,854,854,833,833,833,833,833,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,877,877,877,877,877,877,877,877,877,877,877,877,877,877,877,877,805,805,805,805,805,805,805,821,821,821,821,821,821,821,821,821,821,821,878,878,878,878,878,878,878,878,878,878,563,563,563,563,563,563,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,899,899,899,899,899,899,899,841,841,841,841,841,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,884,884,884,884,884,884,884,884,842,842,842,842,842,842,842,842,842,547,547,547,547,547,547,826,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,836,836,836,836,836,836,836,836,836,836,836,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,795,795,795,795,795,549,549,549,549,549,549,549,549,549,549,549,549,549,549,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,851,567,0,567,0,567,0,567,0,851,567,0,813,813,813,813,813,813,567,0,851,677,893,848,848,848,893,893,893,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,792,792,792,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,883,883,883,883,883,0,862,862,862,875,875,875,875,567,0,567,0,567,0,567,0,567,0,567,0,803,567,0,567,0,803,803,803,567,0,567,0,803,567,0,567,0,567,0,567,0,567,0,551,551,551,551,551,551,551,551,551,551,551,551,567,0,817,817,817,567,0,0,0,0,0,0,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,890,890,567,0,567,0,567,0,567,0,798,798,0,0,567,0,567,0,567,567,0,567,0,0,567,567,0,567,0,0,567,0,822,822,822,822,822,543,543,543,543,543,822,822,822,822,822,822,822,822,822,822,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,834,834,834,834,828,828,828,828,828,828,828,828,828,825,825,825,825,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,564,564,567,0,0,876,876,876,876,567,0,898,898,898,898,898,567,0,846,550,550,550,550,550,550,550,550,853,853,853,853,853,567,0,0,0,0,0,567,0,567,0,567,0,567,0,567,0,567,0,844,844,809,809,809,809,567,0,567,0,819,819,819,819,819,676,0,0,676,0,567,0,567,0,866,866,866,866,857,857,857,857,857,857,843,843,843,843,843,843,843,843,843,843,567,0,567,0,0,0,0,864,864,864,864,660,707,598,674,674,674,663,727,682,782,773,773,741,661,698,738,742,661,698,738,742,661,698,738,742,650,716,719,775,650,775,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,595,598,599,603,612,637,669,690,691,716,736,738,742,746,747,749,626,596,626,652,657,668,703,762,775,582,650,573,573,582,782,582,582,650,582,703,638,638,571,622,734,571,622,734,571,622,734,581,657,762,657,762,657,762,693,693,693,693,743,585,752,596,598,749,608,608,602,630,713,720,775,704,588,588,588,588,723,769,643,643,643,573,678,621,650,720,663,727,663,727,663,727,663,727,692,775,692,633,659,589,650,659,740,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,681,695,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,577,737,763,737,763,737,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,789,790,791,542,792,793,794,795,796,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,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,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,889,890,891,892,893,894,895,896,897,898,899,900,582,610,610,610,610,632,672,765,692,590,704,704,677,703,635,635,746,605,711,577,633,633,746,693,728,735,728,735,728,735,735,735,735,735,735,735,651,728,735,788,666,651,728,735,788,666,651,728,735,788,666,651,728,735,788,666,651,728,735,788,666,651,728,735,788,666,651,728,735,788,666,651,728,735,788,666,728,735,735,633,675,693,693,716,650,775,578,578,578,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,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,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,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,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,612,669,747,570,602,630,674,709,713,760,579,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,760,680,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,627,682,667,759,772,661,698,738,742,618,680,695,712,740,764,766,680,611,615,637,643,628,628,602,630,671,713,725,589,659,659,615,569,775,775,775,605,621,650,720,775,605,598,633,678,584,617,632,640,642,688,712,740,754,765,608,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,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,889,890,891,892,893,894,895,896,897,898,899,900,567,721,600,600,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,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,889,890,891,892,893,894,895,896,897,898,899,900,743,743,740,633,612,612,704,704,704,660,707,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,677,677,677,677,573,633,736,592,638,705,764,733,589,678,703,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,581,768,606,714,659,678,612,669,747,775,612,669,747,775,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,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,889,890,891,892,893,894,895,896,897,898,899,900,751,680,589,589,589,589,589,598,604,637,643,743,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,567,619,650,622,680,775,673,628,604,660,707,731,746,605,635,584,754,784,704,599,612,669,747,786,571,622,635,676,677,681,688,689,691,695,703,724,732,734,740,744,772,783,577,691,577,585,787,787,787,787,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,543,543,543,543,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,544,544,544,544,811,545,545,545,545,545,812,813,546,546,546,546,546,814,815,816,817,547,547,547,547,547,818,548,548,548,548,548,819,549,549,549,549,549,550,550,550,550,550,820,821,551,551,551,551,551,552,552,552,552,552,822,823,824,553,553,553,553,553,825,826,827,828,829,830,554,554,554,554,554,831,555,555,555,555,555,832,556,556,556,556,556,833,834,835,836,837,838,557,557,557,557,557,839,840,841,558,558,558,558,558,842,843,844,845,846,847,848,559,559,559,559,559,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,560,560,560,560,560,876,561,561,561,561,561,877,878,562,562,562,562,562,879,563,563,563,563,563,880,881,564,564,564,564,564,882,883,884,885,565,565,565,565,565,886,887,888,566,566,566,566,566,889,890,891,892,893,894,895,896,897,898,899,900,635,700,718,572,602,630,638,697,713,785,675,681,695,629,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,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,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,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,678,678,682,613,613,692,692,711,724,732,734,744,650,599,650,628,628,640,750,640,787,650,716,775,667,759,691,736,689,605,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,603,736,736,599,650,677,703,716,775,650,655,678,573,780,573,626,681,695,703,599,658,573,782,575,645,645,645,663,727,575,615,618,632,633,648,659,712,743,765,782,573,576,600,608,623,693,776,576,672,678,599,746,723,723,733,653,749,629,680,725,680,586,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,678,678,592,705,592,705,592,705,592,705,592,705,592,705,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,777,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,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,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,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,780,644,673,579,604,650,757,609,619,648,608,784,569,595,598,599,603,612,637,640,669,677,687,690,691,703,736,746,747,749,750,626,626,738,742,573,650,652,657,668,762,775,632,642,688,765,584,608,754,635,717,671,628,628,628,628,628,589,692,569,743,569,595,598,599,603,612,637,640,669,677,687,690,691,703,736,746,747,749,750,626,626,738,742,573,650,652,657,668,762,775,689,726,750,720,615,628,633,659,673,677,695,720,741,745,775,780,615,733,717,673,567,777,567,567,639,656,623,748,748,748,577,577,615,733,717,579,579,673,588,655,772,770,726,605,635,623,601,645,677,695,752,771,781,596,588,596,596,677,581,691,691,691,786,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,663,727,672,648,704,704,704,618,712,704,704,704,639,589,589,589,672,693,699,776,776,693,699,693,693,699,615,577,577,572,697,572,697,572,697,572,697,572,697,572,697,780,602,630,713,760,602,630,713,760,602,630,713,760,602,630,713,760,760,760,760,647,761,568,583,624,625,647,722,756,761,583,624,625,647,761,568,568,647,722,756,761,568,647,722,756,761,583,583,583,583,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,627,616,614,656,694,780,694,694,569,613,613,581,587,595,650,684,685,690,696,708,724,726,744,753,588,605,711,605,711,719,724,744,595,611,631,675,684,749,634,634,666,715,788,689,689,719,689,689,674,721,674,721,674,721,674,721,675,598,692,574,620,755,758,620,755,758,574,574,660,707,732,732,577,678,581,571,604,611,622,626,646,657,675,719,734,737,746,762,763,631,690,631,690,631,690,631,690,604,592,673,705,787,590,634,785,628,628,598,769,580,634,634,634,634,723,692,603,637,691,746,786,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,786,664,664,706,635,681,695,635,681,695,581,633,570,619,581,587,595,650,684,685,690,696,708,726,753,588,605,711,605,711,719,595,611,631,675,684,749,681,695,678,725,666,728,735,786,788,663,727,663,727,663,727,692,748,748,748,748,619,786,579,636,636,636,636,636,599,612,636,669,747,583,732,732,586,592,705,787,635,635,733,591,630,654,683,710,713,729,767,774,617,580,584,743,754,779,783,580,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,633,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,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,889,890,891,892,893,894,895,896,897,898,899,900,715,715,715,715,715,715,715,715,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,593,619,623,648,780,638,638,569,678,717,671,573,599,573,573,703,782,616,768,606,714,664,609,573,671,673,692,751,769,690,690,706,769,769,628,628,628,639,681,695,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,655,619,645,645,645,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,720,585,590,775,596,571,572,573,576,580,583,584,586,591,600,602,604,606,607,608,614,618,622,623,624,625,630,632,642,649,651,654,656,662,664,672,686,693,694,698,699,700,701,702,709,713,714,718,722,724,734,737,738,739,744,745,754,756,759,760,765,766,767,768,774,776,779,784,634,775,775,614,656,638,571,572,573,576,580,583,584,586,591,600,602,604,606,607,608,614,618,621,622,623,624,625,627,630,632,642,649,651,652,654,656,662,664,672,686,693,694,698,699,700,701,702,709,713,714,718,722,724,734,737,738,739,744,745,754,756,759,760,762,765,766,767,768,774,776,779,784,689,730,574,575,592,620,650,659,660,671,680,705,707,755,758,650,775,628,628,671,569,593,782,588,650,716,775,678,678,726,737,763,691,585,594,603,605,609,613,615,620,622,626,631,635,641,653,661,665,666,670,679,684,685,698,708,711,723,726,731,732,735,737,738,742,746,755,758,763,769,770,771,781,788,604,592,705,663,727,782,641,692,574,578,582,588,592,595,597,599,601,611,612,628,637,638,643,645,646,655,658,660,667,669,671,674,675,680,689,705,707,710,715,719,721,725,728,733,747,749,752,759,764,772,773,774,785,787,648,746,599,599,740,573,598,608,619,693,699,748,775,573,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,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,889,890,891,892,893,894,895,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,769,663,727,634,634,736,706,749,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,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,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,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,889,890,891,892,893,894,895,896,897,898,899,900,730,677,703,686,718,677,748,748,748,619,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,792,793,794,795,796,543,797,798,799,800,801,802,803,804,805,806,807,808,809,810,544,811,545,812,813,546,814,815,816,817,547,818,548,819,549,550,820,821,551,552,822,823,824,553,825,826,827,828,829,830,554,831,555,832,556,833,834,835,836,837,838,557,839,840,841,558,842,843,844,845,846,847,848,559,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,560,876,561,877,878,562,879,563,880,881,564,882,883,884,885,565,886,887,888,566,889,890,891,892,893,894,895,896,897,898,899,900,661,698,737,738,742,763,576,576,691,577,605,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,691,628,645,655,695,706,731,706,587,696,753,778,769,691,736,604,674,721,653,741,771,781,658,658,599,690,747,599,599,690,747,598,612,669,747,691,736,736,736,736,689,719,674,674,674,674,677,675,577,605,635,655,741,703,627,717,599,658,573,626,578,578,578,723,599,690,747,671,725,589,659,757,595,603,604,637,643,661,665,675,691,698,738,742,749,595,603,604,637,643,661,665,675,691,698,738,742,749,595,603,604,637,643,661,665,675,691,698,738,742,749,633,780,658,775,658,658,658,775,663,727,596,650,650,775,769,587,590,601,602,630,643,646,657,661,665,675,696,698,708,713,753,762,778,785,719,719,719,594,595,597,660,670,679,690,707,749,594,597,660,670,679,690,707,594,597,660,670,679,707,596,587,590,601,602,630,643,646,657,661,665,675,696,698,708,713,753,762,778,785,719,719,719,594,595,597,660,670,679,690,707,749,587,595,661,684,685,690,696,698,708,724,726,738,742,744,753,605,711,605,711,661,698,719,724,738,742,744,588,595,611,631,675,684,749,594,597,660,670,679,690,707,594,597,660,670,679,707,587,590,601,602,630,643,646,657,661,665,675,696,698,708,713,753,762,778,785,719,719,719,594,595,597,660,670,679,690,707,749,594,597,660,670,679,690,707,594,597,660,670,679,707,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,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,1204,1204,1204,1204,1204,1204,935,0,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,1201,935,0,1249,1249,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,907,907,907,907,907,907,907,907,907,907,935,0,933,933,933,933,933,933,933,933,933,933,933,933,933,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,1185,935,0,935,0,935,0,935,935,0,0,935,0,928,928,928,928,928,928,935,0,935,0,935,0,935,0,1238,1238,1238,1238,0,0,0,0,0,0,0,0,0,0,1192,935,0,935,0,935,0,916,916,916,916,916,916,916,916,916,916,916,916,935,0,935,0,935,0,1208,1208,1208,935,0,935,0,935,0,1186,1186,1186,1171,1171,1171,1220,1220,1220,1220,935,0,935,0,1191,935,0,1191,1191,935,0,935,1194,0,1194,1194,1194,1194,1200,1200,1200,1200,1235,1235,1235,1235,1235,935,0,1218,1218,1218,1218,1218,1218,1218,1218,1218,1218,1218,1218,1218,935,935,0,0,994,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1174,1174,1174,1174,1174,1174,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,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,1257,1257,1257,1257,1257,1257,912,912,912,912,912,912,912,912,935,0,935,0,920,920,920,920,920,920,920,920,920,920,935,0,920,920,935,0,935,0,0,0,0,1266,1266,1266,1266,1266,1266,1266,1266,1160,1160,1160,1160,1160,1160,1160,1160,1160,1160,1160,1160,1160,1160,1160,1222,1222,1222,1222,1222,1222,1222,1222,1244,1244,1244,1244,1243,1243,1243,935,0,935,0,1226,1226,1226,1226,1226,935,0,1247,1247,1247,1247,1247,1247,1247,935,0,0,0,0,0,0,0,935,0,935,0,911,911,911,911,911,911,911,911,911,911,911,911,911,911,934,934,934,934,934,934,934,934,934,934,930,930,930,930,930,930,930,930,930,930,935,0,935,0,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,1210,1210,1210,1210,1210,1210,1210,1210,1210,1210,935,0,935,0,935,0,935,0,935,0,935,935,0,0,935,0,935,0,935,0,1251,1251,1251,1251,1251,1251,1251,1251,1251,935,0,935,0,935,0,917,917,917,917,917,917,917,917,935,0,935,0,935,0,935,0,1221,1221,0,0,0,0,0,0,0,0,935,0,935,0,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,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,915,915,915,915,915,915,915,915,915,915,915,915,915,915,935,0,935,0,0,0,0,997,1122,935,0,935,0,1248,1248,1248,1248,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,1205,1205,1205,1205,935,0,1205,1205,1205,1205,935,0,935,0,1189,1189,1189,1189,1189,1189,1254,1254,1254,1254,1254,1254,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1203,1203,1203,1203,1203,1203,1203,1203,1192,1192,1192,1192,1192,1192,1192,1192,1196,1196,1196,1196,1196,1172,1172,1172,1224,1224,1224,1224,1224,1271,1271,1271,1271,1271,1271,1271,1271,1271,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1267,1267,1267,1267,1267,1267,1267,1242,1242,1261,1261,1261,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1187,1187,1187,1187,1187,1187,1187,1187,1187,1264,1264,1264,1264,1264,1260,1190,1190,1190,1190,1190,1190,1190,1190,1190,921,1225,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1217,1217,1217,1217,1217,1217,1217,1217,1217,1217,1217,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,1230,1230,1230,1230,1263,1263,1263,1263,1263,1195,1195,1195,1195,1195,1195,1195,1195,1195,1195,1195,1195,1195,1195,1236,1236,1236,1236,1195,1195,1214,1214,914,914,1231,1231,1231,1231,1231,1231,1231,1231,914,914,914,914,914,914,1214,1214,1214,1214,1214,1214,1214,1214,1214,1223,1223,1223,1223,1223,1223,1223,1170,1170,1163,1163,1163,1163,1163,1163,1259,1259,1259,1259,1167,1167,1188,1188,1188,1188,1188,1188,1188,1188,1164,1164,1164,1176,1176,1274,1274,1274,1274,1274,1274,1274,1274,1274,1274,1274,1274,1274,1240,1240,1240,1240,1240,1245,1183,1183,1183,1233,1233,1233,1233,1233,1202,1202,1202,1202,1202,1246,1246,1246,1246,1246,1246,1246,1246,1246,1246,1246,1246,1246,1246,1246,1246,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1239,1239,1239,1239,1239,1239,1239,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1270,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,926,926,926,926,926,926,929,929,929,929,929,929,929,929,929,929,929,929,929,929,929,929,929,929,1177,1177,1177,1177,1177,1177,1177,1250,1250,1250,1250,1250,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1227,1227,1227,1227,1227,1227,1227,1227,1219,1219,1219,1219,1219,1219,1219,1219,1219,932,932,932,932,932,932,1256,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,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,1178,1178,1178,1178,1178,923,923,923,923,923,923,923,923,923,923,923,923,923,923,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1180,935,0,935,0,935,0,935,0,1180,935,0,1269,1269,1269,1269,1269,1269,935,0,1180,994,1262,1276,1276,1276,1262,1262,1262,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,1193,1193,1193,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,1215,1215,1215,1215,1215,0,1228,1228,1228,1253,1253,1253,1253,935,0,935,0,935,0,935,0,935,0,935,0,1216,935,0,935,0,1216,1216,1216,935,0,935,0,1216,935,0,935,0,935,0,935,0,935,0,925,925,925,925,925,925,925,925,925,925,925,925,935,0,1209,1209,1209,935,0,0,0,0,0,0,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1199,1199,935,0,935,0,935,0,935,0,1179,1179,0,0,935,0,935,0,935,935,0,935,0,0,935,935,0,935,0,0,935,0,1161,1161,1161,1161,1161,922,922,922,922,922,1161,1161,1161,1161,1161,1161,1161,1161,1161,1161,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,1275,1275,1275,1275,1275,1275,1275,1275,1275,1252,1252,1252,1252,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,918,918,935,0,0,1229,1229,1229,1229,935,0,1181,1181,1181,1181,1181,935,0,935,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,0,1168,1168,1168,1168,1168,1168,1168,1168,1234,1234,1211,935,0,1255,1255,1255,1255,1255,1255,913,913,913,913,913,1211,1211,1211,1211,1211,1211,908,908,908,1211,927,927,927,927,935,0,1272,919,919,919,919,919,919,919,919,1273,1273,1273,1273,1273,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,1184,1184,1175,1175,1175,1175,935,0,935,0,1206,1206,1206,1206,1206,1153,996,0,0,1153,0,935,0,935,0,1197,1197,1197,1197,1198,1198,1198,1198,1198,1198,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,935,0,935,0,0,0,0,1165,1165,1165,1165,956,1008,1068,984,984,984,966,1047,996,996,996,981,1003,1135,1135,1005,952,1018,1087,1108,952,1018,1087,1108,952,1018,1087,1108,997,958,1024,1037,1081,1024,1081,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,939,946,950,952,958,987,1016,1027,1038,1049,1068,1073,1076,1077,1084,1108,1080,1102,1080,1024,1029,1031,1075,1122,1136,947,1081,1010,1010,947,1003,947,947,1081,947,1122,1021,1021,1011,1088,1096,1011,1088,1096,1011,1088,1096,1112,1031,1136,1031,1136,1031,1136,1022,1022,1022,1022,1034,1069,1051,1102,1068,1084,1056,1056,973,1095,1146,1024,1045,1030,993,993,993,993,959,1150,1154,1154,1154,996,1010,982,1045,1081,1106,966,1047,966,1047,966,1047,966,1047,1078,1024,1078,960,1086,1081,1086,1138,1053,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,1017,1044,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,1093,1050,1061,1050,1061,1050,1061,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,947,1137,1137,1137,1137,951,1023,1064,1078,1158,1030,1030,994,997,1122,990,990,1027,1040,1149,1093,960,960,1027,1022,1028,1062,1028,1062,1028,1062,1028,1028,1028,1028,1028,1028,1028,1062,1114,1140,995,1028,1062,1114,1140,995,1028,1062,1114,1140,995,1028,1062,1114,1140,995,1028,1062,1114,1140,995,1028,1062,1114,1140,995,1028,1062,1114,1140,995,1028,1062,1114,1140,995,1028,1062,1028,960,1052,1022,1022,958,1024,1081,1097,1097,1097,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,939,1016,1038,973,984,1006,1095,1105,1145,1146,1143,1030,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,1145,1126,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,981,1141,974,1026,1130,952,1018,1087,1108,969,985,1044,1053,1057,1126,1133,1126,950,1019,1099,1154,1082,1082,973,1059,1095,1125,1146,1086,1138,1086,1099,957,1024,1024,1024,1149,1024,1045,1081,1106,1149,1068,960,982,951,967,976,979,1023,1048,1053,1057,1123,1127,1056,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,1020,964,964,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,1034,1034,1053,960,939,939,1030,1030,1030,956,1008,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,994,994,994,994,1010,960,1049,943,969,1021,1144,1110,1138,982,996,997,1122,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,1112,1112,1103,1054,1118,1086,982,939,1016,1024,1038,939,1016,1024,1038,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,1098,1126,1138,1138,1138,1138,1138,1068,1142,950,1154,1034,982,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,971,1081,1011,1024,1126,1121,1082,1142,956,1008,1067,1027,990,1149,967,1048,1007,1030,939,946,1016,1038,1156,942,962,987,990,994,999,1004,1011,1017,1026,1039,1044,1053,1088,1096,1122,1127,1153,1093,987,1093,1069,991,991,991,991,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,907,907,907,907,907,1161,908,908,908,908,908,1162,909,909,909,909,909,1163,1164,910,910,910,910,910,911,911,911,911,911,1165,1166,1167,1168,912,912,912,912,912,1169,1170,913,913,913,913,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,914,914,914,914,1182,1183,1184,915,915,915,915,915,1185,1186,1187,1188,916,916,916,916,916,917,917,917,917,917,918,918,918,918,918,919,919,919,919,919,1189,1190,1191,1192,1193,920,920,920,920,920,1194,921,921,921,921,921,922,922,922,922,922,1195,1196,1197,923,923,923,923,923,1198,1199,1200,924,924,924,924,924,1201,1202,925,925,925,925,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,926,926,926,926,1219,1220,1221,1222,1223,1224,1225,1226,927,927,927,927,927,1227,928,928,928,928,928,929,929,929,929,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,930,930,930,930,1241,1242,1243,931,931,931,931,931,1244,1245,1246,932,932,932,932,932,1247,1248,933,933,933,933,933,1249,1250,934,934,934,934,934,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,990,989,1025,972,973,1013,1021,1095,1124,1146,1052,1017,1044,1063,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,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,982,982,981,948,948,1078,1078,942,999,1039,1040,1088,996,996,996,996,997,997,1081,946,1081,1082,1082,949,1123,1123,991,958,1024,1081,974,1130,987,1049,1004,1149,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,1049,1076,1049,946,958,994,1024,1081,1122,1081,982,1083,1010,1033,1010,1017,1044,1080,1122,946,1032,1010,1003,944,1117,1117,1117,966,1047,944,951,960,985,1003,1023,1034,1057,1086,1099,1159,963,964,980,1009,1010,1022,1056,963,1064,982,946,1027,959,959,1110,1035,1084,1063,1125,1126,1126,1085,982,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,982,982,943,1144,943,1144,943,1144,943,1144,943,1144,943,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,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,1101,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,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,1033,1014,1121,1143,975,1081,1142,998,971,1159,1056,1007,939,946,949,950,957,987,994,1016,1027,1038,1049,1068,1073,1076,1077,1084,1119,1122,1123,1080,1080,952,1108,1010,1024,1029,1031,1075,1081,1136,951,979,1023,1127,967,1048,1056,990,1043,1059,1082,1082,1082,1082,1082,1138,1078,957,1034,939,946,949,950,957,987,994,1016,1027,1038,1049,1068,1073,1076,1077,1084,1119,1122,1123,1080,1080,952,1108,1010,1024,1029,1031,1075,1081,1136,1004,1058,949,1045,960,994,1005,1024,1033,1044,1045,1082,1086,1099,1104,1121,1099,1110,1043,1121,935,1101,935,935,968,1015,980,1041,1041,1041,1093,1093,1099,1110,1043,1143,1143,1121,993,1026,1083,1046,1058,990,1149,980,940,945,994,1044,1051,1116,1117,1102,993,1102,1102,994,1112,987,987,987,1156,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,966,1047,996,1064,1159,1030,1030,1030,985,1057,1030,1030,1030,968,1138,1138,1138,1064,1022,1129,1009,1009,1022,1129,1022,1022,1129,1099,1093,1093,972,1124,972,1124,972,1124,972,1124,972,1124,972,1124,1033,973,1095,1145,1146,973,1095,1145,1146,973,1095,1145,1146,973,1095,1145,1146,1145,1145,1145,1066,1155,1066,1070,1089,1113,1147,1148,1152,1155,1066,1113,1147,1148,1155,1070,1066,1070,1089,1152,1155,1066,1070,1089,1152,1155,1147,1147,1147,1147,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,1141,938,1002,1015,1033,1131,1131,1131,957,948,948,1112,936,942,1039,1058,1071,1073,1077,1081,1109,1120,1128,1139,993,1040,1149,1040,1149,942,1037,1039,1019,1052,1055,1077,1084,1109,1000,1000,995,1134,1140,1004,1004,1037,1004,1004,984,1020,984,1020,984,1020,984,1020,1052,1068,1078,941,978,1012,1100,941,978,1100,1012,1012,956,1008,999,999,1093,982,1112,983,1011,1019,1027,1031,1037,1050,1052,1061,1080,1088,1096,1136,1142,1055,1073,1055,1073,1055,1073,1055,1073,1142,943,991,1121,1144,1158,1000,1013,1082,1082,1068,1150,1091,1000,1000,1000,1000,959,1078,950,987,1027,1076,1156,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,1156,1115,1115,1092,990,1017,1044,990,1017,1044,1112,960,1105,954,997,971,1112,936,1058,1071,1073,1077,1081,1109,1120,1128,1139,993,1040,1149,1040,1149,1037,1019,1052,1055,1077,1084,1109,1017,1044,982,1125,995,1028,1062,1140,1156,966,1047,966,1047,966,1047,1078,1041,1041,1041,1041,971,1156,1143,955,955,955,955,955,939,946,955,1016,1038,1147,999,999,1085,943,991,1144,990,990,1110,953,965,973,1001,1072,1074,1095,1107,1157,976,962,967,1034,1048,1065,1091,1091,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,960,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,1134,1134,1134,1134,1134,1134,1134,1134,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,992,971,980,1033,1159,1021,1021,957,982,1043,1059,946,1010,1010,1010,996,1122,1003,938,997,1103,1054,1118,1115,996,998,1010,1059,1078,1098,1121,1150,1073,1073,1092,1150,1150,1082,1082,1082,968,1017,1044,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,1083,971,1117,1117,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,1045,1069,1158,1024,1102,937,942,951,952,953,963,964,965,967,970,973,979,980,985,989,1002,1006,1007,1009,1010,1011,1015,1022,1023,1025,1039,1042,1048,1054,1056,1060,1061,1064,1065,1072,1074,1079,1085,1087,1088,1089,1091,1095,1096,1103,1104,1111,1113,1114,1115,1118,1124,1129,1130,1131,1132,1133,1142,1145,1146,1147,1148,1152,1000,1024,1024,1002,1015,1021,937,942,951,952,953,963,964,965,967,970,973,979,980,985,989,1002,1006,1007,1009,1010,1011,1015,1022,1023,1025,1031,1039,1042,1048,1054,1056,1060,1061,1064,1065,1072,1074,1075,1079,1085,1087,1088,1089,1091,1095,1096,1103,1104,1106,1111,1113,1114,1115,1118,1124,1129,1130,1131,1132,1133,1141,1142,1145,1146,1147,1148,1152,1004,1094,941,943,944,956,978,1008,1012,1059,1081,1086,1100,1126,1144,1024,1081,1082,1082,1059,957,992,1003,958,993,1024,1081,982,982,1050,1058,1061,987,936,940,941,945,948,952,959,961,978,986,990,995,998,999,1011,1018,1027,1028,1035,1036,1040,1046,1050,1055,1058,1061,1067,1069,1071,1076,1080,1087,1090,1099,1100,1108,1109,1140,1149,1150,1151,1142,943,1144,966,1047,1003,1090,1078,939,943,946,947,950,953,956,969,974,977,983,984,991,993,1004,1008,1012,1013,1016,1019,1020,1021,1026,1032,1037,1038,1051,1052,1059,1062,1077,1082,1083,1084,1097,1107,1110,1116,1117,1125,1126,1130,1134,1135,1144,1154,1027,1159,946,946,1053,971,1010,1022,1024,1041,1056,1068,1129,1010,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,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,1150,966,1047,1000,1000,1049,1092,1084,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,1094,994,1122,937,989,994,1041,1041,1041,971,1156,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,907,1161,908,1162,909,1163,1164,910,911,1165,1166,1167,1168,912,1169,1170,913,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,914,1182,1183,1184,915,1185,1186,1187,1188,916,917,918,919,1189,1190,1191,1192,1193,920,1194,921,922,1195,1196,1197,923,1198,1199,1200,924,1201,1202,925,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,926,1219,1220,1221,1222,1223,1224,1225,1226,927,1227,928,929,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,930,1241,1242,1243,931,1244,1245,1246,932,1247,1248,933,1249,1250,934,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,952,1018,1050,1061,1087,1108,963,963,987,1093,1149,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,987,1082,1083,1117,1044,1067,1092,1092,988,1120,1128,1139,1150,996,987,1049,1142,984,1020,940,945,1005,1035,1032,1032,946,1016,1073,946,946,1016,1073,939,1016,1038,1068,996,996,987,1049,1049,1049,1049,1004,1037,984,984,984,984,994,1052,1093,990,1149,1083,1005,1122,1043,1141,946,1032,1010,1080,1097,1097,1097,959,946,1016,1073,1059,1125,1138,1086,975,950,952,961,987,1018,1052,1076,1077,1084,1087,1108,1142,1154,950,952,961,987,1018,1052,1076,1077,1084,1087,1108,1142,1154,950,952,961,987,1018,1052,1076,1077,1084,1087,1108,1142,1154,960,1033,1032,1024,1032,1032,1032,1024,966,1047,1102,1081,1024,1081,1150,961,973,983,988,1013,1018,1031,1052,1071,1087,1095,1116,1120,1128,1136,1139,1146,1154,1158,1037,1037,1037,956,977,986,1008,1036,1073,1077,1084,1151,956,977,986,1008,1036,1073,1151,956,977,986,1008,1036,1151,1102,961,973,983,988,1013,1018,1031,1052,1071,1087,1095,1116,1120,1128,1136,1139,1146,1154,1158,1037,1037,1037,956,977,986,1008,1036,1073,1077,1084,1151,936,942,952,1018,1039,1058,1071,1073,1077,1087,1108,1109,1120,1128,1139,1040,1149,1040,1149,942,952,1018,1037,1039,1087,1108,993,1019,1052,1055,1077,1084,1109,956,977,986,1008,1036,1073,1151,956,977,986,1008,1036,1151,961,973,983,988,1013,1018,1031,1052,1071,1087,1095,1116,1120,1128,1136,1139,1146,1154,1158,1037,1037,1037,956,977,986,1008,1036,1073,1077,1084,1151,956,977,986,1008,1036,1073,1151,956,977,986,1008,1036,1151,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}{DjHh}{Dlf}{Dnf}{E`f}{Ebb}{EdBb}{Efb}{EhBb}{Ejf}{Elf}{Enb}{F`b}{FbBb}{Fdf}{Ffb}{FhBb}{Fjb}{Flb}{Fnb}{G`f}{Gbf}{GdBb}{Gff}{GhBb}{Gjf}{Glb}{Gnb}{H`f}{HbBb}{Hdf}{HfHh}{{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}{BNdBNd}{BNfBNf}{BNhBNh}{BNjBNj}{BNlBNl}{BNnBNn}{DhDh}{BO`BO`}{BObBOb}{DjDj}{BOdBOd}{BOfBOf}{DlDl}{BOhBOh}{BOjBOj}{BOlBOl}{BOnBOn}{C@`C@`}{C@bC@b}{C@dC@d}{C@fC@f}{DnDn}{C@hC@h}{C@jC@j}{C@lC@l}{C@nC@n}{CA`CA`}{CAbCAb}{CAdCAd}{CAfCAf}{CAhCAh}{E`E`}{CAjCAj}{CAlCAl}{CAnCAn}{CB`CB`}{CBbCBb}{EbEb}{CBdCBd}{CBfCBf}{CBhCBh}{EdEd}{CBjCBj}{CBlCBl}{CBnCBn}{CC`CC`}{EfEf}{EhEh}{CCbCCb}{CCdCCd}{CCfCCf}{EjEj}{CChCCh}{CCjCCj}{ElEl}{CClCCl}{CCnCCn}{CD`CD`}{CDbCDb}{CDdCDd}{CDfCDf}{CDhCDh}{CDjCDj}{CDlCDl}{EnEn}{CDnCDn}{CE`CE`}{CEbCEb}{F`F`}{CEdCEd}{CEfCEf}{CEhCEh}{FbFb}{CEjCEj}{CElCEl}{CEnCEn}{CF`CF`}{CFbCFb}{CFdCFd}{CFfCFf}{CFhCFh}{CFjCFj}{CFlCFl}{CFnCFn}{CG`CG`}{CGbCGb}{CGdCGd}{FdFd}{CGfCGf}{CGhCGh}{FfFf}{CGjCGj}{CGlCGl}{CGnCGn}{CH`CH`}{CHbCHb}{CHdCHd}{CHfCHf}{CHhCHh}{FhFh}{CHjCHj}{FjFj}{CHlCHl}{CHnCHn}{CI`CI`}{CIbCIb}{CIdCId}{CIfCIf}{FlFl}{FnFn}{CIhCIh}{CIjCIj}{CIlCIl}{G`G`}{CInCIn}{CJ`CJ`}{GbGb}{CJbCJb}{CJdCJd}{CJfCJf}{CJhCJh}{CJjCJj}{CJlCJl}{CJnCJn}{CK`CK`}{CKbCKb}{CKdCKd}{GdGd}{GfGf}{CKfCKf}{CKhCKh}{CKjCKj}{CKlCKl}{GhGh}{CKnCKn}{CL`CL`}{CLbCLb}{GjGj}{CLdCLd}{CLfCLf}{CLhCLh}{GlGl}{CLjCLj}{GnGn}{CLlCLl}{CLnCLn}{CM`CM`}{CMbCMb}{CMdCMd}{CMfCMf}{CMhCMh}{CMjCMj}{CMlCMl}{CMnCMn}{CN`CN`}{CNbCNb}{H`H`}{CNdCNd}{CNfCNf}{CNhCNh}{CNjCNj}{CNlCNl}{CNnCNn}{CO`CO`}{CObCOb}{COdCOd}{HbHb}{COfCOf}{COhCOh}{COjCOj}{COlCOl}{COnCOn}{D@`D@`}{D@bD@b}{D@dD@d}{D@fD@f}{D@hD@h}{HdHd}{D@jD@j}{D@lD@l}{D@nD@n}{DA`DA`}{DAbDAb}{DAdDAd}{DAfDAf}{DAhDAh}{HfHf}{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}{{}BNd}{{}BNf}{{}BNh}{{}BNj}{{}BNl}{{}BNn}{{}Dh}{{}BO`}{{}BOb}{{}Dj}{{}BOd}{{}BOf}{{}Dl}{{}BOh}{{}BOj}{{}BOl}{{}BOn}{{}C@`}{{}C@b}{{}C@d}{{}C@f}{{}Dn}{{}C@h}{{}C@j}{{}C@l}{{}C@n}{{}CA`}{{}CAb}{{}CAd}{{}CAf}{{}CAh}{{}E`}{{}CAj}{{}CAl}{{}CAn}{{}CB`}{{}CBb}{{}Eb}{{}CBd}{{}CBf}{{}CBh}{{}Ed}{{}CBj}{{}CBl}{{}CBn}{{}CC`}{{}Ef}{{}Eh}{{}CCb}{{}CCd}{{}CCf}{{}Ej}{{}CCh}{{}CCj}{{}El}{{}CCl}{{}CCn}{{}CD`}{{}CDb}{{}CDd}{{}CDf}{{}CDh}{{}CDj}{{}CDl}{{}En}{{}CDn}{{}CE`}{{}CEb}{{}F`}{{}CEd}{{}CEf}{{}CEh}{{}Fb}{{}CEj}{{}CEl}{{}CEn}{{}CF`}{{}CFb}{{}CFd}{{}CFf}{{}CFh}{{}CFj}{{}CFl}{{}CFn}{{}CG`}{{}CGb}{{}CGd}{{}Fd}{{}CGf}{{}CGh}{{}Ff}{{}CGj}{{}CGl}{{}CGn}{{}CH`}{{}CHb}{{}CHd}{{}CHf}{{}CHh}{{}Fh}{{}CHj}{{}Fj}{{}CHl}{{}CHn}{{}CI`}{{}CIb}{{}CId}{{}CIf}{{}Fl}{{}Fn}{{}CIh}{{}CIj}{{}CIl}{{}G`}{{}CIn}{{}CJ`}{{}Gb}{{}CJb}{{}CJd}{{}CJf}{{}CJh}{{}CJj}{{}CJl}{{}CJn}{{}CK`}{{}CKb}{{}CKd}{{}Gd}{{}Gf}{{}CKf}{{}CKh}{{}CKj}{{}CKl}{{}Gh}{{}CKn}{{}CL`}{{}CLb}{{}Gj}{{}CLd}{{}CLf}{{}CLh}{{}Gl}{{}CLj}{{}Gn}{{}CLl}{{}CLn}{{}CM`}{{}CMb}{{}CMd}{{}CMf}{{}CMh}{{}CMj}{{}CMl}{{}CMn}{{}CN`}{{}CNb}{{}H`}{{}CNd}{{}CNf}{{}CNh}{{}CNj}{{}CNl}{{}CNn}{{}CO`}{{}COb}{{}COd}{{}Hb}{{}COf}{{}COh}{{}COj}{{}COl}{{}COn}{{}D@`}{{}D@b}{{}D@d}{{}D@f}{{}D@h}{{}Hd}{{}D@j}{{}D@l}{{}D@n}{{}DA`}{{}DAb}{{}DAd}{{}DAf}{{}DAh}{{}Hf}{{}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`{BNd}}}Bj}{c{{B`{BNf}}}Bj}{c{{B`{BNh}}}Bj}{c{{B`{BNj}}}Bj}{c{{B`{BNl}}}Bj}{c{{B`{BNn}}}Bj}{c{{B`{Dh}}}Bj}{c{{B`{BO`}}}Bj}{c{{B`{BOb}}}Bj}{c{{B`{Dj}}}Bj}{c{{B`{BOd}}}Bj}{c{{B`{BOf}}}Bj}{c{{B`{Dl}}}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`{C@f}}}Bj}{c{{B`{Dn}}}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`{E`}}}Bj}{c{{B`{CAj}}}Bj}{c{{B`{CAl}}}Bj}{c{{B`{CAn}}}Bj}{c{{B`{CB`}}}Bj}{c{{B`{CBb}}}Bj}{c{{B`{Eb}}}Bj}{c{{B`{CBd}}}Bj}{c{{B`{CBf}}}Bj}{c{{B`{CBh}}}Bj}{c{{B`{Ed}}}Bj}{c{{B`{CBj}}}Bj}{c{{B`{CBl}}}Bj}{c{{B`{CBn}}}Bj}{c{{B`{CC`}}}Bj}{c{{B`{Ef}}}Bj}{c{{B`{Eh}}}Bj}{c{{B`{CCb}}}Bj}{c{{B`{CCd}}}Bj}{c{{B`{CCf}}}Bj}{c{{B`{Ej}}}Bj}{c{{B`{CCh}}}Bj}{c{{B`{CCj}}}Bj}{c{{B`{El}}}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`{En}}}Bj}{c{{B`{CDn}}}Bj}{c{{B`{CE`}}}Bj}{c{{B`{CEb}}}Bj}{c{{B`{F`}}}Bj}{c{{B`{CEd}}}Bj}{c{{B`{CEf}}}Bj}{c{{B`{CEh}}}Bj}{c{{B`{Fb}}}Bj}{c{{B`{CEj}}}Bj}{c{{B`{CEl}}}Bj}{c{{B`{CEn}}}Bj}{c{{B`{CF`}}}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`{CFn}}}Bj}{c{{B`{CG`}}}Bj}{c{{B`{CGb}}}Bj}{c{{B`{CGd}}}Bj}{c{{B`{Fd}}}Bj}{c{{B`{CGf}}}Bj}{c{{B`{CGh}}}Bj}{c{{B`{Ff}}}Bj}{c{{B`{CGj}}}Bj}{c{{B`{CGl}}}Bj}{c{{B`{CGn}}}Bj}{c{{B`{CH`}}}Bj}{c{{B`{CHb}}}Bj}{c{{B`{CHd}}}Bj}{c{{B`{CHf}}}Bj}{c{{B`{CHh}}}Bj}{c{{B`{Fh}}}Bj}{c{{B`{CHj}}}Bj}{c{{B`{Fj}}}Bj}{c{{B`{CHl}}}Bj}{c{{B`{CHn}}}Bj}{c{{B`{CI`}}}Bj}{c{{B`{CIb}}}Bj}{c{{B`{CId}}}Bj}{c{{B`{CIf}}}Bj}{c{{B`{Fl}}}Bj}{c{{B`{Fn}}}Bj}{c{{B`{CIh}}}Bj}{c{{B`{CIj}}}Bj}{c{{B`{CIl}}}Bj}{c{{B`{G`}}}Bj}{c{{B`{CIn}}}Bj}{c{{B`{CJ`}}}Bj}{c{{B`{Gb}}}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`{CK`}}}Bj}{c{{B`{CKb}}}Bj}{c{{B`{CKd}}}Bj}{c{{B`{Gd}}}Bj}{c{{B`{Gf}}}Bj}{c{{B`{CKf}}}Bj}{c{{B`{CKh}}}Bj}{c{{B`{CKj}}}Bj}{c{{B`{CKl}}}Bj}{c{{B`{Gh}}}Bj}{c{{B`{CKn}}}Bj}{c{{B`{CL`}}}Bj}{c{{B`{CLb}}}Bj}{c{{B`{Gj}}}Bj}{c{{B`{CLd}}}Bj}{c{{B`{CLf}}}Bj}{c{{B`{CLh}}}Bj}{c{{B`{Gl}}}Bj}{c{{B`{CLj}}}Bj}{c{{B`{Gn}}}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`{CMl}}}Bj}{c{{B`{CMn}}}Bj}{c{{B`{CN`}}}Bj}{c{{B`{CNb}}}Bj}{c{{B`{H`}}}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`{Hb}}}Bj}{c{{B`{COf}}}Bj}{c{{B`{COh}}}Bj}{c{{B`{COj}}}Bj}{c{{B`{COl}}}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`{Hd}}}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`{Hf}}}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}{{BNdBNd}Bl}{{BNfBNf}Bl}{{BNhBNh}Bl}{{BNjBNj}Bl}{{BNlBNl}Bl}{{BNnBNn}Bl}{{DhDh}Bl}{{BO`BO`}Bl}{{BObBOb}Bl}{{DjDj}Bl}{{BOdBOd}Bl}{{BOfBOf}Bl}{{DlDl}Bl}{{BOhBOh}Bl}{{BOjBOj}Bl}{{BOlBOl}Bl}{{BOnBOn}Bl}{{C@`C@`}Bl}{{C@bC@b}Bl}{{C@dC@d}Bl}{{C@fC@f}Bl}{{DnDn}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}{{E`E`}Bl}{{CAjCAj}Bl}{{CAlCAl}Bl}{{CAnCAn}Bl}{{CB`CB`}Bl}{{CBbCBb}Bl}{{EbEb}Bl}{{CBdCBd}Bl}{{CBfCBf}Bl}{{CBhCBh}Bl}{{EdEd}Bl}{{CBjCBj}Bl}{{CBlCBl}Bl}{{CBnCBn}Bl}{{CC`CC`}Bl}{{EfEf}Bl}{{EhEh}Bl}{{CCbCCb}Bl}{{CCdCCd}Bl}{{CCfCCf}Bl}{{EjEj}Bl}{{CChCCh}Bl}{{CCjCCj}Bl}{{ElEl}Bl}{{CClCCl}Bl}{{CCnCCn}Bl}{{CD`CD`}Bl}{{CDbCDb}Bl}{{CDdCDd}Bl}{{CDfCDf}Bl}{{CDhCDh}Bl}{{CDjCDj}Bl}{{CDlCDl}Bl}{{EnEn}Bl}{{CDnCDn}Bl}{{CE`CE`}Bl}{{CEbCEb}Bl}{{F`F`}Bl}{{CEdCEd}Bl}{{CEfCEf}Bl}{{CEhCEh}Bl}{{FbFb}Bl}{{CEjCEj}Bl}{{CElCEl}Bl}{{CEnCEn}Bl}{{CF`CF`}Bl}{{CFbCFb}Bl}{{CFdCFd}Bl}{{CFfCFf}Bl}{{CFhCFh}Bl}{{CFjCFj}Bl}{{CFlCFl}Bl}{{CFnCFn}Bl}{{CG`CG`}Bl}{{CGbCGb}Bl}{{CGdCGd}Bl}{{FdFd}Bl}{{CGfCGf}Bl}{{CGhCGh}Bl}{{FfFf}Bl}{{CGjCGj}Bl}{{CGlCGl}Bl}{{CGnCGn}Bl}{{CH`CH`}Bl}{{CHbCHb}Bl}{{CHdCHd}Bl}{{CHfCHf}Bl}{{CHhCHh}Bl}{{FhFh}Bl}{{CHjCHj}Bl}{{FjFj}Bl}{{CHlCHl}Bl}{{CHnCHn}Bl}{{CI`CI`}Bl}{{CIbCIb}Bl}{{CIdCId}Bl}{{CIfCIf}Bl}{{FlFl}Bl}{{FnFn}Bl}{{CIhCIh}Bl}{{CIjCIj}Bl}{{CIlCIl}Bl}{{G`G`}Bl}{{CInCIn}Bl}{{CJ`CJ`}Bl}{{GbGb}Bl}{{CJbCJb}Bl}{{CJdCJd}Bl}{{CJfCJf}Bl}{{CJhCJh}Bl}{{CJjCJj}Bl}{{CJlCJl}Bl}{{CJnCJn}Bl}{{CK`CK`}Bl}{{CKbCKb}Bl}{{CKdCKd}Bl}{{GdGd}Bl}{{GfGf}Bl}{{CKfCKf}Bl}{{CKhCKh}Bl}{{CKjCKj}Bl}{{CKlCKl}Bl}{{GhGh}Bl}{{CKnCKn}Bl}{{CL`CL`}Bl}{{CLbCLb}Bl}{{GjGj}Bl}{{CLdCLd}Bl}{{CLfCLf}Bl}{{CLhCLh}Bl}{{GlGl}Bl}{{CLjCLj}Bl}{{GnGn}Bl}{{CLlCLl}Bl}{{CLnCLn}Bl}{{CM`CM`}Bl}{{CMbCMb}Bl}{{CMdCMd}Bl}{{CMfCMf}Bl}{{CMhCMh}Bl}{{CMjCMj}Bl}{{CMlCMl}Bl}{{CMnCMn}Bl}{{CN`CN`}Bl}{{CNbCNb}Bl}{{H`H`}Bl}{{CNdCNd}Bl}{{CNfCNf}Bl}{{CNhCNh}Bl}{{CNjCNj}Bl}{{CNlCNl}Bl}{{CNnCNn}Bl}{{CO`CO`}Bl}{{CObCOb}Bl}{{COdCOd}Bl}{{HbHb}Bl}{{COfCOf}Bl}{{COhCOh}Bl}{{COjCOj}Bl}{{COlCOl}Bl}{{COnCOn}Bl}{{D@`D@`}Bl}{{D@bD@b}Bl}{{D@dD@d}Bl}{{D@fD@f}Bl}{{D@hD@h}Bl}{{HdHd}Bl}{{D@jD@j}Bl}{{D@lD@l}Bl}{{D@nD@n}Bl}{{DA`DA`}Bl}{{DAbDAb}Bl}{{DAdDAd}Bl}{{DAfDAf}Bl}{{DAhDAh}Bl}{{HfHf}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}{{BNdBn}DBd}{{BNfBn}DBd}{{BNhBn}DBd}{{BNjBn}DBd}{{BNlBn}DBd}{{BNnBn}DBd}{{DhBn}DBd}0000{{BO`Bn}DBd}{{BObBn}DBd}{{DjBn}DBd}0000{{BOdBn}DBd}{{BOfBn}DBd}{{DlBn}DBd}0000{{BOhBn}DBd}{{BOjBn}DBd}{{BOlBn}DBd}{{BOnBn}DBd}{{C@`Bn}DBd}{{C@bBn}DBd}{{C@dBn}DBd}{{C@fBn}DBd}{{DnBn}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}{{E`Bn}DBd}0000{{CAjBn}DBd}{{CAlBn}DBd}{{CAnBn}DBd}{{CB`Bn}DBd}{{CBbBn}DBd}{{EbBn}DBd}0000{{CBdBn}DBd}{{CBfBn}DBd}{{CBhBn}DBd}{{EdBn}DBd}0000{{CBjBn}DBd}{{CBlBn}DBd}{{CBnBn}DBd}{{CC`Bn}DBd}{{EfBn}DBd}0000{{EhBn}DBd}0000{{CCbBn}DBd}{{CCdBn}DBd}{{CCfBn}DBd}{{EjBn}DBd}0000{{CChBn}DBd}{{CCjBn}DBd}{{ElBn}DBd}0000{{CClBn}DBd}{{CCnBn}DBd}{{CD`Bn}DBd}{{CDbBn}DBd}{{CDdBn}DBd}{{CDfBn}DBd}{{CDhBn}DBd}{{CDjBn}DBd}{{CDlBn}DBd}{{EnBn}DBd}0000{{CDnBn}DBd}{{CE`Bn}DBd}{{CEbBn}DBd}{{F`Bn}DBd}0000{{CEdBn}DBd}{{CEfBn}DBd}{{CEhBn}DBd}{{FbBn}DBd}0000{{CEjBn}DBd}{{CElBn}DBd}{{CEnBn}DBd}{{CF`Bn}DBd}{{CFbBn}DBd}{{CFdBn}DBd}{{CFfBn}DBd}{{CFhBn}DBd}{{CFjBn}DBd}{{CFlBn}DBd}{{CFnBn}DBd}{{CG`Bn}DBd}{{CGbBn}DBd}{{CGdBn}DBd}{{FdBn}DBd}0000{{CGfBn}DBd}{{CGhBn}DBd}{{FfBn}DBd}0000{{CGjBn}DBd}{{CGlBn}DBd}{{CGnBn}DBd}{{CH`Bn}DBd}{{CHbBn}DBd}{{CHdBn}DBd}{{CHfBn}DBd}{{CHhBn}DBd}{{FhBn}DBd}0000{{CHjBn}DBd}{{FjBn}DBd}0000{{CHlBn}DBd}{{CHnBn}DBd}{{CI`Bn}DBd}{{CIbBn}DBd}{{CIdBn}DBd}{{CIfBn}DBd}{{FlBn}DBd}0000{{FnBn}DBd}0000{{CIhBn}DBd}{{CIjBn}DBd}{{CIlBn}DBd}{{G`Bn}DBd}0000{{CInBn}DBd}{{CJ`Bn}DBd}{{GbBn}DBd}0000{{CJbBn}DBd}{{CJdBn}DBd}{{CJfBn}DBd}{{CJhBn}DBd}{{CJjBn}DBd}{{CJlBn}DBd}{{CJnBn}DBd}{{CK`Bn}DBd}{{CKbBn}DBd}{{CKdBn}DBd}{{GdBn}DBd}0000{{GfBn}DBd}0000{{CKfBn}DBd}{{CKhBn}DBd}{{CKjBn}DBd}{{CKlBn}DBd}{{GhBn}DBd}0000{{CKnBn}DBd}{{CL`Bn}DBd}{{CLbBn}DBd}{{GjBn}DBd}0000{{CLdBn}DBd}{{CLfBn}DBd}{{CLhBn}DBd}{{GlBn}DBd}0000{{CLjBn}DBd}{{GnBn}DBd}0000{{CLlBn}DBd}{{CLnBn}DBd}{{CM`Bn}DBd}{{CMbBn}DBd}{{CMdBn}DBd}{{CMfBn}DBd}{{CMhBn}DBd}{{CMjBn}DBd}{{CMlBn}DBd}{{CMnBn}DBd}{{CN`Bn}DBd}{{CNbBn}DBd}{{H`Bn}DBd}0000{{CNdBn}DBd}{{CNfBn}DBd}{{CNhBn}DBd}{{CNjBn}DBd}{{CNlBn}DBd}{{CNnBn}DBd}{{CO`Bn}DBd}{{CObBn}DBd}{{COdBn}DBd}{{HbBn}DBd}0000{{COfBn}DBd}{{COhBn}DBd}{{COjBn}DBd}{{COlBn}DBd}{{COnBn}DBd}{{D@`Bn}DBd}{{D@bBn}DBd}{{D@dBn}DBd}{{D@fBn}DBd}{{D@hBn}DBd}{{HdBn}DBd}0000{{D@jBn}DBd}{{D@lBn}DBd}{{D@nBn}DBd}{{DA`Bn}DBd}{{DAbBn}DBd}{{DAdBn}DBd}{{DAfBn}DBd}{{DAhBn}DBd}{{HfBn}DBd}0000{{DAjBn}DBd}{{DAlBn}DBd}```````````````````{cc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{f{{DBf{Dh}}}}{Hh{{DBf{Dj}}}}{f{{DBf{Dl}}}}{f{{DBf{Dn}}}}{f{{DBf{E`}}}}{b{{DBf{Eb}}}}{Bb{{DBf{Ed}}}}{b{{DBf{Ef}}}}{Bb{{DBf{Eh}}}}{f{{DBf{Ej}}}}{f{{DBf{El}}}}{b{{DBf{En}}}}{b{{DBf{F`}}}}{Bb{{DBf{Fb}}}}{f{{DBf{Fd}}}}{b{{DBf{Ff}}}}{Bb{{DBf{Fh}}}}{b{{DBf{Fj}}}}{b{{DBf{Fl}}}}{b{{DBf{Fn}}}}{f{{DBf{G`}}}}{f{{DBf{Gb}}}}{Bb{{DBf{Gd}}}}{f{{DBf{Gf}}}}{Bb{{DBf{Gh}}}}{f{{DBf{Gj}}}}{b{{DBf{Gl}}}}{b{{DBf{Gn}}}}{f{{DBf{H`}}}}{Bb{{DBf{Hb}}}}{f{{DBf{Hd}}}}{Hh{{DBf{Hf}}}}{fDh}{HhDj}{fDl}{fDn}{fE`}{bEb}{BbEd}{bEf}{BbEh}{fEj}{fEl}{bEn}{bF`}{BbFb}{fFd}{bFf}{BbFh}{bFj}{bFl}{bFn}{fG`}{fGb}{BbGd}{fGf}{BbGh}{fGj}{bGl}{bGn}{fH`}{BbHb}{fHd}{HhHf}{fDh}{HhDj}{fDl}{fDn}{fE`}{bEb}{BbEd}{bEf}{BbEh}{fEj}{fEl}{bEn}{bF`}{BbFb}{fFd}{bFf}{BbFh}{bFj}{bFl}{bFn}{fG`}{fGb}{BbGd}{fGf}{BbGh}{fGj}{bGl}{bGn}{fH`}{BbHb}{fHd}{HhHf}{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`}{{BNdc}B`D`}{{BNfc}B`D`}{{BNhc}B`D`}{{BNjc}B`D`}{{BNlc}B`D`}{{BNnc}B`D`}{{Dhc}B`D`}{{BO`c}B`D`}{{BObc}B`D`}{{Djc}B`D`}{{BOdc}B`D`}{{BOfc}B`D`}{{Dlc}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`}{{C@fc}B`D`}{{Dnc}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`}{{E`c}B`D`}{{CAjc}B`D`}{{CAlc}B`D`}{{CAnc}B`D`}{{CB`c}B`D`}{{CBbc}B`D`}{{Ebc}B`D`}{{CBdc}B`D`}{{CBfc}B`D`}{{CBhc}B`D`}{{Edc}B`D`}{{CBjc}B`D`}{{CBlc}B`D`}{{CBnc}B`D`}{{CC`c}B`D`}{{Efc}B`D`}{{Ehc}B`D`}{{CCbc}B`D`}{{CCdc}B`D`}{{CCfc}B`D`}{{Ejc}B`D`}{{CChc}B`D`}{{CCjc}B`D`}{{Elc}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`}{{Enc}B`D`}{{CDnc}B`D`}{{CE`c}B`D`}{{CEbc}B`D`}{{F`c}B`D`}{{CEdc}B`D`}{{CEfc}B`D`}{{CEhc}B`D`}{{Fbc}B`D`}{{CEjc}B`D`}{{CElc}B`D`}{{CEnc}B`D`}{{CF`c}B`D`}{{CFbc}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`}{{Fdc}B`D`}{{CGfc}B`D`}{{CGhc}B`D`}{{Ffc}B`D`}{{CGjc}B`D`}{{CGlc}B`D`}{{CGnc}B`D`}{{CH`c}B`D`}{{CHbc}B`D`}{{CHdc}B`D`}{{CHfc}B`D`}{{CHhc}B`D`}{{Fhc}B`D`}{{CHjc}B`D`}{{Fjc}B`D`}{{CHlc}B`D`}{{CHnc}B`D`}{{CI`c}B`D`}{{CIbc}B`D`}{{CIdc}B`D`}{{CIfc}B`D`}{{Flc}B`D`}{{Fnc}B`D`}{{CIhc}B`D`}{{CIjc}B`D`}{{CIlc}B`D`}{{G`c}B`D`}{{CInc}B`D`}{{CJ`c}B`D`}{{Gbc}B`D`}{{CJbc}B`D`}{{CJdc}B`D`}{{CJfc}B`D`}{{CJhc}B`D`}{{CJjc}B`D`}{{CJlc}B`D`}{{CJnc}B`D`}{{CK`c}B`D`}{{CKbc}B`D`}{{CKdc}B`D`}{{Gdc}B`D`}{{Gfc}B`D`}{{CKfc}B`D`}{{CKhc}B`D`}{{CKjc}B`D`}{{CKlc}B`D`}{{Ghc}B`D`}{{CKnc}B`D`}{{CL`c}B`D`}{{CLbc}B`D`}{{Gjc}B`D`}{{CLdc}B`D`}{{CLfc}B`D`}{{CLhc}B`D`}{{Glc}B`D`}{{CLjc}B`D`}{{Gnc}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`}{{CMlc}B`D`}{{CMnc}B`D`}{{CN`c}B`D`}{{CNbc}B`D`}{{H`c}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`}{{Hbc}B`D`}{{COfc}B`D`}{{COhc}B`D`}{{COjc}B`D`}{{COlc}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`}{{Hdc}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`}{{Hfc}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}``{DClb}{DCnb}{DD`f}{DDbBb}{DDdf}{DDfBb}{DDhHh}{DDjBb}{DDlb}{DDnf}{DE`f}{DEbf}{DEdf}{DEff}{DEhBb}{DEjf}{DElHh}{DEnBb}{DF`f}{DFbb}{DFdBb}{DFff}{DFhBb}{DFjf}{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}{FBnFBn}{DClDCl}{FC`FC`}{FCbFCb}{FCdFCd}{FCfFCf}{FChFCh}{DCnDCn}{FCjFCj}{FClFCl}{FCnFCn}{FD`FD`}{FDbFDb}{FDdFDd}{FDfFDf}{FDhFDh}{FDjFDj}{FDlFDl}{FDnFDn}{FE`FE`}{FEbFEb}{FEdFEd}{DD`DD`}{FEfFEf}{DDbDDb}{FEhFEh}{FEjFEj}{DDdDDd}{FElFEl}{FEnFEn}{FF`FF`}{FFbFFb}{DDfDDf}{FFdFFd}{DDhDDh}{FFfFFf}{DDjDDj}{DDlDDl}{FFhFFh}{FFjFFj}{DDnDDn}{DE`DE`}{FFlFFl}{FFnFFn}{FG`FG`}{DEbDEb}{FGbFGb}{FGdFGd}{FGfFGf}{FGhFGh}{FGjFGj}{FGlFGl}{DEdDEd}{FGnFGn}{DEfDEf}{FH`FH`}{DEhDEh}{FHbFHb}{FHdFHd}{FHfFHf}{FHhFHh}{FHjFHj}{FHlFHl}{DEjDEj}{FHnFHn}{FI`FI`}{FIbFIb}{DElDEl}{FIdFId}{FIfFIf}{FIhFIh}{FIjFIj}{FIlFIl}{FInFIn}{FJ`FJ`}{DEnDEn}{FJbFJb}{FJdFJd}{FJfFJf}{FJhFJh}{FJjFJj}{FJlFJl}{FJnFJn}{FK`FK`}{FKbFKb}{FKdFKd}{FKfFKf}{FKhFKh}{FKjFKj}{FKlFKl}{FKnFKn}{FL`FL`}{FLbFLb}{FLdFLd}{FLfFLf}{FLhFLh}{FLjFLj}{FLlFLl}{FLnFLn}{FM`FM`}{FMbFMb}{FMdFMd}{FMfFMf}{DF`DF`}{FMhFMh}{DFbDFb}{FMjFMj}{FMlFMl}{DFdDFd}{FMnFMn}{DFfDFf}{FN`FN`}{FNbFNb}{DFhDFh}{FNdFNd}{FNfFNf}{FNhFNh}{FNjFNj}{DFjDFj}{FNlFNl}{FNnFNn}{FO`FO`}{DFlDFl}{FObFOb}{FOdFOd}{FOfFOf}{FOhFOh}{FOjFOj}{FOlFOl}{FOnFOn}{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}{{}FBn}{{}DCl}{{}FC`}{{}FCb}{{}FCd}{{}FCf}{{}FCh}{{}DCn}{{}FCj}{{}FCl}{{}FCn}{{}FD`}{{}FDb}{{}FDd}{{}FDf}{{}FDh}{{}FDj}{{}FDl}{{}FDn}{{}FE`}{{}FEb}{{}FEd}{{}DD`}{{}FEf}{{}DDb}{{}FEh}{{}FEj}{{}DDd}{{}FEl}{{}FEn}{{}FF`}{{}FFb}{{}DDf}{{}FFd}{{}DDh}{{}FFf}{{}DDj}{{}DDl}{{}FFh}{{}FFj}{{}DDn}{{}DE`}{{}FFl}{{}FFn}{{}FG`}{{}DEb}{{}FGb}{{}FGd}{{}FGf}{{}FGh}{{}FGj}{{}FGl}{{}DEd}{{}FGn}{{}DEf}{{}FH`}{{}DEh}{{}FHb}{{}FHd}{{}FHf}{{}FHh}{{}FHj}{{}FHl}{{}DEj}{{}FHn}{{}FI`}{{}FIb}{{}DEl}{{}FId}{{}FIf}{{}FIh}{{}FIj}{{}FIl}{{}FIn}{{}FJ`}{{}DEn}{{}FJb}{{}FJd}{{}FJf}{{}FJh}{{}FJj}{{}FJl}{{}FJn}{{}FK`}{{}FKb}{{}FKd}{{}FKf}{{}FKh}{{}FKj}{{}FKl}{{}FKn}{{}FL`}{{}FLb}{{}FLd}{{}FLf}{{}FLh}{{}FLj}{{}FLl}{{}FLn}{{}FM`}{{}FMb}{{}FMd}{{}FMf}{{}DF`}{{}FMh}{{}DFb}{{}FMj}{{}FMl}{{}DFd}{{}FMn}{{}DFf}{{}FN`}{{}FNb}{{}DFh}{{}FNd}{{}FNf}{{}FNh}{{}FNj}{{}DFj}{{}FNl}{{}FNn}{{}FO`}{{}DFl}{{}FOb}{{}FOd}{{}FOf}{{}FOh}{{}FOj}{{}FOl}{{}FOn}{{}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`{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`{DCn}}}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`{FDf}}}Bj}{c{{B`{FDh}}}Bj}{c{{B`{FDj}}}Bj}{c{{B`{FDl}}}Bj}{c{{B`{FDn}}}Bj}{c{{B`{FE`}}}Bj}{c{{B`{FEb}}}Bj}{c{{B`{FEd}}}Bj}{c{{B`{DD`}}}Bj}{c{{B`{FEf}}}Bj}{c{{B`{DDb}}}Bj}{c{{B`{FEh}}}Bj}{c{{B`{FEj}}}Bj}{c{{B`{DDd}}}Bj}{c{{B`{FEl}}}Bj}{c{{B`{FEn}}}Bj}{c{{B`{FF`}}}Bj}{c{{B`{FFb}}}Bj}{c{{B`{DDf}}}Bj}{c{{B`{FFd}}}Bj}{c{{B`{DDh}}}Bj}{c{{B`{FFf}}}Bj}{c{{B`{DDj}}}Bj}{c{{B`{DDl}}}Bj}{c{{B`{FFh}}}Bj}{c{{B`{FFj}}}Bj}{c{{B`{DDn}}}Bj}{c{{B`{DE`}}}Bj}{c{{B`{FFl}}}Bj}{c{{B`{FFn}}}Bj}{c{{B`{FG`}}}Bj}{c{{B`{DEb}}}Bj}{c{{B`{FGb}}}Bj}{c{{B`{FGd}}}Bj}{c{{B`{FGf}}}Bj}{c{{B`{FGh}}}Bj}{c{{B`{FGj}}}Bj}{c{{B`{FGl}}}Bj}{c{{B`{DEd}}}Bj}{c{{B`{FGn}}}Bj}{c{{B`{DEf}}}Bj}{c{{B`{FH`}}}Bj}{c{{B`{DEh}}}Bj}{c{{B`{FHb}}}Bj}{c{{B`{FHd}}}Bj}{c{{B`{FHf}}}Bj}{c{{B`{FHh}}}Bj}{c{{B`{FHj}}}Bj}{c{{B`{FHl}}}Bj}{c{{B`{DEj}}}Bj}{c{{B`{FHn}}}Bj}{c{{B`{FI`}}}Bj}{c{{B`{FIb}}}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`{FJ`}}}Bj}{c{{B`{DEn}}}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`{FKh}}}Bj}{c{{B`{FKj}}}Bj}{c{{B`{FKl}}}Bj}{c{{B`{FKn}}}Bj}{c{{B`{FL`}}}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`{FMf}}}Bj}{c{{B`{DF`}}}Bj}{c{{B`{FMh}}}Bj}{c{{B`{DFb}}}Bj}{c{{B`{FMj}}}Bj}{c{{B`{FMl}}}Bj}{c{{B`{DFd}}}Bj}{c{{B`{FMn}}}Bj}{c{{B`{DFf}}}Bj}{c{{B`{FN`}}}Bj}{c{{B`{FNb}}}Bj}{c{{B`{DFh}}}Bj}{c{{B`{FNd}}}Bj}{c{{B`{FNf}}}Bj}{c{{B`{FNh}}}Bj}{c{{B`{FNj}}}Bj}{c{{B`{DFj}}}Bj}{c{{B`{FNl}}}Bj}{c{{B`{FNn}}}Bj}{c{{B`{FO`}}}Bj}{c{{B`{DFl}}}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`{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}{{FBnFBn}Bl}{{DClDCl}Bl}{{FC`FC`}Bl}{{FCbFCb}Bl}{{FCdFCd}Bl}{{FCfFCf}Bl}{{FChFCh}Bl}{{DCnDCn}Bl}{{FCjFCj}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}{{FEbFEb}Bl}{{FEdFEd}Bl}{{DD`DD`}Bl}{{FEfFEf}Bl}{{DDbDDb}Bl}{{FEhFEh}Bl}{{FEjFEj}Bl}{{DDdDDd}Bl}{{FElFEl}Bl}{{FEnFEn}Bl}{{FF`FF`}Bl}{{FFbFFb}Bl}{{DDfDDf}Bl}{{FFdFFd}Bl}{{DDhDDh}Bl}{{FFfFFf}Bl}{{DDjDDj}Bl}{{DDlDDl}Bl}{{FFhFFh}Bl}{{FFjFFj}Bl}{{DDnDDn}Bl}{{DE`DE`}Bl}{{FFlFFl}Bl}{{FFnFFn}Bl}{{FG`FG`}Bl}{{DEbDEb}Bl}{{FGbFGb}Bl}{{FGdFGd}Bl}{{FGfFGf}Bl}{{FGhFGh}Bl}{{FGjFGj}Bl}{{FGlFGl}Bl}{{DEdDEd}Bl}{{FGnFGn}Bl}{{DEfDEf}Bl}{{FH`FH`}Bl}{{DEhDEh}Bl}{{FHbFHb}Bl}{{FHdFHd}Bl}{{FHfFHf}Bl}{{FHhFHh}Bl}{{FHjFHj}Bl}{{FHlFHl}Bl}{{DEjDEj}Bl}{{FHnFHn}Bl}{{FI`FI`}Bl}{{FIbFIb}Bl}{{DElDEl}Bl}{{FIdFId}Bl}{{FIfFIf}Bl}{{FIhFIh}Bl}{{FIjFIj}Bl}{{FIlFIl}Bl}{{FInFIn}Bl}{{FJ`FJ`}Bl}{{DEnDEn}Bl}{{FJbFJb}Bl}{{FJdFJd}Bl}{{FJfFJf}Bl}{{FJhFJh}Bl}{{FJjFJj}Bl}{{FJlFJl}Bl}{{FJnFJn}Bl}{{FK`FK`}Bl}{{FKbFKb}Bl}{{FKdFKd}Bl}{{FKfFKf}Bl}{{FKhFKh}Bl}{{FKjFKj}Bl}{{FKlFKl}Bl}{{FKnFKn}Bl}{{FL`FL`}Bl}{{FLbFLb}Bl}{{FLdFLd}Bl}{{FLfFLf}Bl}{{FLhFLh}Bl}{{FLjFLj}Bl}{{FLlFLl}Bl}{{FLnFLn}Bl}{{FM`FM`}Bl}{{FMbFMb}Bl}{{FMdFMd}Bl}{{FMfFMf}Bl}{{DF`DF`}Bl}{{FMhFMh}Bl}{{DFbDFb}Bl}{{FMjFMj}Bl}{{FMlFMl}Bl}{{DFdDFd}Bl}{{FMnFMn}Bl}{{DFfDFf}Bl}{{FN`FN`}Bl}{{FNbFNb}Bl}{{DFhDFh}Bl}{{FNdFNd}Bl}{{FNfFNf}Bl}{{FNhFNh}Bl}{{FNjFNj}Bl}{{DFjDFj}Bl}{{FNlFNl}Bl}{{FNnFNn}Bl}{{FO`FO`}Bl}{{DFlDFl}Bl}{{FObFOb}Bl}{{FOdFOd}Bl}{{FOfFOf}Bl}{{FOhFOh}Bl}{{FOjFOj}Bl}{{FOlFOl}Bl}{{FOnFOn}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}{{FBnBn}DBd}{{DClBn}DBd}0000{{FC`Bn}DBd}{{FCbBn}DBd}{{FCdBn}DBd}{{FCfBn}DBd}{{FChBn}DBd}{{DCnBn}DBd}0000{{FCjBn}DBd}{{FClBn}DBd}{{FCnBn}DBd}{{FD`Bn}DBd}{{FDbBn}DBd}{{FDdBn}DBd}{{FDfBn}DBd}{{FDhBn}DBd}{{FDjBn}DBd}{{FDlBn}DBd}{{FDnBn}DBd}{{FE`Bn}DBd}{{FEbBn}DBd}{{FEdBn}DBd}{{DD`Bn}DBd}0000{{FEfBn}DBd}{{DDbBn}DBd}0000{{FEhBn}DBd}{{FEjBn}DBd}{{DDdBn}DBd}0000{{FElBn}DBd}{{FEnBn}DBd}{{FF`Bn}DBd}{{FFbBn}DBd}{{DDfBn}DBd}0000{{FFdBn}DBd}{{DDhBn}DBd}0000{{FFfBn}DBd}{{DDjBn}DBd}0000{{DDlBn}DBd}0000{{FFhBn}DBd}{{FFjBn}DBd}{{DDnBn}DBd}0000{{DE`Bn}DBd}0000{{FFlBn}DBd}{{FFnBn}DBd}{{FG`Bn}DBd}{{DEbBn}DBd}0000{{FGbBn}DBd}{{FGdBn}DBd}{{FGfBn}DBd}{{FGhBn}DBd}{{FGjBn}DBd}{{FGlBn}DBd}{{DEdBn}DBd}0000{{FGnBn}DBd}{{DEfBn}DBd}0000{{FH`Bn}DBd}{{DEhBn}DBd}0000{{FHbBn}DBd}{{FHdBn}DBd}{{FHfBn}DBd}{{FHhBn}DBd}{{FHjBn}DBd}{{FHlBn}DBd}{{DEjBn}DBd}0000{{FHnBn}DBd}{{FI`Bn}DBd}{{FIbBn}DBd}{{DElBn}DBd}0000{{FIdBn}DBd}{{FIfBn}DBd}{{FIhBn}DBd}{{FIjBn}DBd}{{FIlBn}DBd}{{FInBn}DBd}{{FJ`Bn}DBd}{{DEnBn}DBd}0000{{FJbBn}DBd}{{FJdBn}DBd}{{FJfBn}DBd}{{FJhBn}DBd}{{FJjBn}DBd}{{FJlBn}DBd}{{FJnBn}DBd}{{FK`Bn}DBd}{{FKbBn}DBd}{{FKdBn}DBd}{{FKfBn}DBd}{{FKhBn}DBd}{{FKjBn}DBd}{{FKlBn}DBd}{{FKnBn}DBd}{{FL`Bn}DBd}{{FLbBn}DBd}{{FLdBn}DBd}{{FLfBn}DBd}{{FLhBn}DBd}{{FLjBn}DBd}{{FLlBn}DBd}{{FLnBn}DBd}{{FM`Bn}DBd}{{FMbBn}DBd}{{FMdBn}DBd}{{FMfBn}DBd}{{DF`Bn}DBd}0000{{FMhBn}DBd}{{DFbBn}DBd}0000{{FMjBn}DBd}{{FMlBn}DBd}{{DFdBn}DBd}0000{{FMnBn}DBd}{{DFfBn}DBd}0000{{FN`Bn}DBd}{{FNbBn}DBd}{{DFhBn}DBd}0000{{FNdBn}DBd}{{FNfBn}DBd}{{FNhBn}DBd}{{FNjBn}DBd}{{DFjBn}DBd}0000{{FNlBn}DBd}{{FNnBn}DBd}{{FO`Bn}DBd}{{DFlBn}DBd}0000{{FObBn}DBd}{{FOdBn}DBd}{{FOfBn}DBd}{{FOhBn}DBd}{{FOjBn}DBd}{{FOlBn}DBd}{{FOnBn}DBd}{{G@`Bn}DBd}{{G@bBn}DBd}{{G@dBn}DBd}{{G@fBn}DBd}{{G@hBn}DBd}``````````````{cc{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{b{{DBf{DCl}}}}{b{{DBf{DCn}}}}{f{{DBf{DD`}}}}{Bb{{DBf{DDb}}}}{f{{DBf{DDd}}}}{Bb{{DBf{DDf}}}}{Hh{{DBf{DDh}}}}{Bb{{DBf{DDj}}}}{b{{DBf{DDl}}}}{f{{DBf{DDn}}}}{f{{DBf{DE`}}}}{f{{DBf{DEb}}}}{f{{DBf{DEd}}}}{f{{DBf{DEf}}}}{Bb{{DBf{DEh}}}}{f{{DBf{DEj}}}}{Hh{{DBf{DEl}}}}{Bb{{DBf{DEn}}}}{f{{DBf{DF`}}}}{b{{DBf{DFb}}}}{Bb{{DBf{DFd}}}}{f{{DBf{DFf}}}}{Bb{{DBf{DFh}}}}{f{{DBf{DFj}}}}{b{{DBf{DFl}}}}{bDCl}{bDCn}{fDD`}{BbDDb}{fDDd}{BbDDf}{HhDDh}{BbDDj}{bDDl}{fDDn}{fDE`}{fDEb}{fDEd}{fDEf}{BbDEh}{fDEj}{HhDEl}{BbDEn}{fDF`}{bDFb}{BbDFd}{fDFf}{BbDFh}{fDFj}{bDFl}{bDCl}{bDCn}{fDD`}{BbDDb}{fDDd}{BbDDf}{HhDDh}{BbDDj}{bDDl}{fDDn}{fDE`}{fDEb}{fDEd}{fDEf}{BbDEh}{fDEj}{HhDEl}{BbDEn}{fDF`}{bDFb}{BbDFd}{fDFf}{BbDFh}{fDFj}{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`}{{FBnc}B`D`}{{DClc}B`D`}{{FC`c}B`D`}{{FCbc}B`D`}{{FCdc}B`D`}{{FCfc}B`D`}{{FChc}B`D`}{{DCnc}B`D`}{{FCjc}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`}{{FEbc}B`D`}{{FEdc}B`D`}{{DD`c}B`D`}{{FEfc}B`D`}{{DDbc}B`D`}{{FEhc}B`D`}{{FEjc}B`D`}{{DDdc}B`D`}{{FElc}B`D`}{{FEnc}B`D`}{{FF`c}B`D`}{{FFbc}B`D`}{{DDfc}B`D`}{{FFdc}B`D`}{{DDhc}B`D`}{{FFfc}B`D`}{{DDjc}B`D`}{{DDlc}B`D`}{{FFhc}B`D`}{{FFjc}B`D`}{{DDnc}B`D`}{{DE`c}B`D`}{{FFlc}B`D`}{{FFnc}B`D`}{{FG`c}B`D`}{{DEbc}B`D`}{{FGbc}B`D`}{{FGdc}B`D`}{{FGfc}B`D`}{{FGhc}B`D`}{{FGjc}B`D`}{{FGlc}B`D`}{{DEdc}B`D`}{{FGnc}B`D`}{{DEfc}B`D`}{{FH`c}B`D`}{{DEhc}B`D`}{{FHbc}B`D`}{{FHdc}B`D`}{{FHfc}B`D`}{{FHhc}B`D`}{{FHjc}B`D`}{{FHlc}B`D`}{{DEjc}B`D`}{{FHnc}B`D`}{{FI`c}B`D`}{{FIbc}B`D`}{{DElc}B`D`}{{FIdc}B`D`}{{FIfc}B`D`}{{FIhc}B`D`}{{FIjc}B`D`}{{FIlc}B`D`}{{FInc}B`D`}{{FJ`c}B`D`}{{DEnc}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`}{{FKhc}B`D`}{{FKjc}B`D`}{{FKlc}B`D`}{{FKnc}B`D`}{{FL`c}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`}{{FMfc}B`D`}{{DF`c}B`D`}{{FMhc}B`D`}{{DFbc}B`D`}{{FMjc}B`D`}{{FMlc}B`D`}{{DFdc}B`D`}{{FMnc}B`D`}{{DFfc}B`D`}{{FN`c}B`D`}{{FNbc}B`D`}{{DFhc}B`D`}{{FNdc}B`D`}{{FNfc}B`D`}{{FNhc}B`D`}{{FNjc}B`D`}{{DFjc}B`D`}{{FNlc}B`D`}{{FNnc}B`D`}{{FO`c}B`D`}{{DFlc}B`D`}{{FObc}B`D`}{{FOdc}B`D`}{{FOfc}B`D`}{{FOhc}B`D`}{{FOjc}B`D`}{{FOlc}B`D`}{{FOnc}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{}}{AnCh}{BhCh}22{AnCn}777{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}{GAhb}{GAjBb}{GAlHh}{GAnf}{GB`f}{GBbf}{GBdb}{GBff}{GBhBb}{GBjf}{GBlBb}{GBnb}{GC`f}{GCbb}{GCdb}{GCfBb}{GChf}{GCjf}{GClf}{GCnb}{GD`b}{GDbHh}{GDdf}{GDfBb}{GDhBb}{GDjf}{GDlBb}{{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`}{GAfGAf}{IAbIAb}{GAhGAh}{IAdIAd}{GAjGAj}{IAfIAf}{IAhIAh}{GAlGAl}{GAnGAn}{IAjIAj}{IAlIAl}{IAnIAn}{IB`IB`}{GB`GB`}{IBbIBb}{IBdIBd}{GBbGBb}{IBfIBf}{IBhIBh}{IBjIBj}{IBlIBl}{IBnIBn}{IC`IC`}{ICbICb}{ICdICd}{ICfICf}{IChICh}{ICjICj}{GBdGBd}{IClICl}{ICnICn}{ID`ID`}{GBfGBf}{IDbIDb}{IDdIDd}{IDfIDf}{IDhIDh}{GBhGBh}{GBjGBj}{GBlGBl}{GBnGBn}{IDjIDj}{IDlIDl}{IDnIDn}{IE`IE`}{IEbIEb}{GC`GC`}{IEdIEd}{GCbGCb}{GCdGCd}{IEfIEf}{IEhIEh}{IEjIEj}{GCfGCf}{IElIEl}{IEnIEn}{IF`IF`}{GChGCh}{IFbIFb}{IFdIFd}{GCjGCj}{IFfIFf}{IFhIFh}{IFjIFj}{IFlIFl}{IFnIFn}{IG`IG`}{IGbIGb}{IGdIGd}{IGfIGf}{IGhIGh}{IGjIGj}{IGlIGl}{IGnIGn}{IH`IH`}{IHbIHb}{IHdIHd}{GClGCl}{IHfIHf}{IHhIHh}{IHjIHj}{IHlIHl}{IHnIHn}{II`II`}{IIbIIb}{IIdIId}{GCnGCn}{IIfIIf}{GD`GD`}{GDbGDb}{IIhIIh}{IIjIIj}{IIlIIl}{IInIIn}{IJ`IJ`}{IJbIJb}{IJdIJd}{IJfIJf}{IJhIJh}{IJjIJj}{IJlIJl}{IJnIJn}{IK`IK`}{GDdGDd}{IKbIKb}{IKdIKd}{IKfIKf}{GDfGDf}{IKhIKh}{IKjIKj}{IKlIKl}{GDhGDh}{IKnIKn}{IL`IL`}{GDjGDj}{ILbILb}{ILdILd}{GDlGDl}{ILfILf}{ILhILh}{ILjILj}{ILlILl}{ILnILn}{IM`IM`}{IMbIMb}{IMdIMd}{IMfIMf}{IMhIMh}{IMjIMj}{IMlIMl}{IMnIMn}{IN`IN`}{INbINb}{INdINd}{INfINf}{INhINh}{INjINj}{INlINl}{INnINn}{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`}{{}GAf}{{}IAb}{{}GAh}{{}IAd}{{}GAj}{{}IAf}{{}IAh}{{}GAl}{{}GAn}{{}IAj}{{}IAl}{{}IAn}{{}IB`}{{}GB`}{{}IBb}{{}IBd}{{}GBb}{{}IBf}{{}IBh}{{}IBj}{{}IBl}{{}IBn}{{}IC`}{{}ICb}{{}ICd}{{}ICf}{{}ICh}{{}ICj}{{}GBd}{{}ICl}{{}ICn}{{}ID`}{{}GBf}{{}IDb}{{}IDd}{{}IDf}{{}IDh}{{}GBh}{{}GBj}{{}GBl}{{}GBn}{{}IDj}{{}IDl}{{}IDn}{{}IE`}{{}IEb}{{}GC`}{{}IEd}{{}GCb}{{}GCd}{{}IEf}{{}IEh}{{}IEj}{{}GCf}{{}IEl}{{}IEn}{{}IF`}{{}GCh}{{}IFb}{{}IFd}{{}GCj}{{}IFf}{{}IFh}{{}IFj}{{}IFl}{{}IFn}{{}IG`}{{}IGb}{{}IGd}{{}IGf}{{}IGh}{{}IGj}{{}IGl}{{}IGn}{{}IH`}{{}IHb}{{}IHd}{{}GCl}{{}IHf}{{}IHh}{{}IHj}{{}IHl}{{}IHn}{{}II`}{{}IIb}{{}IId}{{}GCn}{{}IIf}{{}GD`}{{}GDb}{{}IIh}{{}IIj}{{}IIl}{{}IIn}{{}IJ`}{{}IJb}{{}IJd}{{}IJf}{{}IJh}{{}IJj}{{}IJl}{{}IJn}{{}IK`}{{}GDd}{{}IKb}{{}IKd}{{}IKf}{{}GDf}{{}IKh}{{}IKj}{{}IKl}{{}GDh}{{}IKn}{{}IL`}{{}GDj}{{}ILb}{{}ILd}{{}GDl}{{}ILf}{{}ILh}{{}ILj}{{}ILl}{{}ILn}{{}IM`}{{}IMb}{{}IMd}{{}IMf}{{}IMh}{{}IMj}{{}IMl}{{}IMn}{{}IN`}{{}INb}{{}INd}{{}INf}{{}INh}{{}INj}{{}INl}{{}INn}{{}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`{GAf}}}Bj}{c{{B`{IAb}}}Bj}{c{{B`{GAh}}}Bj}{c{{B`{IAd}}}Bj}{c{{B`{GAj}}}Bj}{c{{B`{IAf}}}Bj}{c{{B`{IAh}}}Bj}{c{{B`{GAl}}}Bj}{c{{B`{GAn}}}Bj}{c{{B`{IAj}}}Bj}{c{{B`{IAl}}}Bj}{c{{B`{IAn}}}Bj}{c{{B`{IB`}}}Bj}{c{{B`{GB`}}}Bj}{c{{B`{IBb}}}Bj}{c{{B`{IBd}}}Bj}{c{{B`{GBb}}}Bj}{c{{B`{IBf}}}Bj}{c{{B`{IBh}}}Bj}{c{{B`{IBj}}}Bj}{c{{B`{IBl}}}Bj}{c{{B`{IBn}}}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`{GBd}}}Bj}{c{{B`{ICl}}}Bj}{c{{B`{ICn}}}Bj}{c{{B`{ID`}}}Bj}{c{{B`{GBf}}}Bj}{c{{B`{IDb}}}Bj}{c{{B`{IDd}}}Bj}{c{{B`{IDf}}}Bj}{c{{B`{IDh}}}Bj}{c{{B`{GBh}}}Bj}{c{{B`{GBj}}}Bj}{c{{B`{GBl}}}Bj}{c{{B`{GBn}}}Bj}{c{{B`{IDj}}}Bj}{c{{B`{IDl}}}Bj}{c{{B`{IDn}}}Bj}{c{{B`{IE`}}}Bj}{c{{B`{IEb}}}Bj}{c{{B`{GC`}}}Bj}{c{{B`{IEd}}}Bj}{c{{B`{GCb}}}Bj}{c{{B`{GCd}}}Bj}{c{{B`{IEf}}}Bj}{c{{B`{IEh}}}Bj}{c{{B`{IEj}}}Bj}{c{{B`{GCf}}}Bj}{c{{B`{IEl}}}Bj}{c{{B`{IEn}}}Bj}{c{{B`{IF`}}}Bj}{c{{B`{GCh}}}Bj}{c{{B`{IFb}}}Bj}{c{{B`{IFd}}}Bj}{c{{B`{GCj}}}Bj}{c{{B`{IFf}}}Bj}{c{{B`{IFh}}}Bj}{c{{B`{IFj}}}Bj}{c{{B`{IFl}}}Bj}{c{{B`{IFn}}}Bj}{c{{B`{IG`}}}Bj}{c{{B`{IGb}}}Bj}{c{{B`{IGd}}}Bj}{c{{B`{IGf}}}Bj}{c{{B`{IGh}}}Bj}{c{{B`{IGj}}}Bj}{c{{B`{IGl}}}Bj}{c{{B`{IGn}}}Bj}{c{{B`{IH`}}}Bj}{c{{B`{IHb}}}Bj}{c{{B`{IHd}}}Bj}{c{{B`{GCl}}}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`{IIb}}}Bj}{c{{B`{IId}}}Bj}{c{{B`{GCn}}}Bj}{c{{B`{IIf}}}Bj}{c{{B`{GD`}}}Bj}{c{{B`{GDb}}}Bj}{c{{B`{IIh}}}Bj}{c{{B`{IIj}}}Bj}{c{{B`{IIl}}}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`{GDd}}}Bj}{c{{B`{IKb}}}Bj}{c{{B`{IKd}}}Bj}{c{{B`{IKf}}}Bj}{c{{B`{GDf}}}Bj}{c{{B`{IKh}}}Bj}{c{{B`{IKj}}}Bj}{c{{B`{IKl}}}Bj}{c{{B`{GDh}}}Bj}{c{{B`{IKn}}}Bj}{c{{B`{IL`}}}Bj}{c{{B`{GDj}}}Bj}{c{{B`{ILb}}}Bj}{c{{B`{ILd}}}Bj}{c{{B`{GDl}}}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`{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}{{GAfGAf}Bl}{{IAbIAb}Bl}{{GAhGAh}Bl}{{IAdIAd}Bl}{{GAjGAj}Bl}{{IAfIAf}Bl}{{IAhIAh}Bl}{{GAlGAl}Bl}{{GAnGAn}Bl}{{IAjIAj}Bl}{{IAlIAl}Bl}{{IAnIAn}Bl}{{IB`IB`}Bl}{{GB`GB`}Bl}{{IBbIBb}Bl}{{IBdIBd}Bl}{{GBbGBb}Bl}{{IBfIBf}Bl}{{IBhIBh}Bl}{{IBjIBj}Bl}{{IBlIBl}Bl}{{IBnIBn}Bl}{{IC`IC`}Bl}{{ICbICb}Bl}{{ICdICd}Bl}{{ICfICf}Bl}{{IChICh}Bl}{{ICjICj}Bl}{{GBdGBd}Bl}{{IClICl}Bl}{{ICnICn}Bl}{{ID`ID`}Bl}{{GBfGBf}Bl}{{IDbIDb}Bl}{{IDdIDd}Bl}{{IDfIDf}Bl}{{IDhIDh}Bl}{{GBhGBh}Bl}{{GBjGBj}Bl}{{GBlGBl}Bl}{{GBnGBn}Bl}{{IDjIDj}Bl}{{IDlIDl}Bl}{{IDnIDn}Bl}{{IE`IE`}Bl}{{IEbIEb}Bl}{{GC`GC`}Bl}{{IEdIEd}Bl}{{GCbGCb}Bl}{{GCdGCd}Bl}{{IEfIEf}Bl}{{IEhIEh}Bl}{{IEjIEj}Bl}{{GCfGCf}Bl}{{IElIEl}Bl}{{IEnIEn}Bl}{{IF`IF`}Bl}{{GChGCh}Bl}{{IFbIFb}Bl}{{IFdIFd}Bl}{{GCjGCj}Bl}{{IFfIFf}Bl}{{IFhIFh}Bl}{{IFjIFj}Bl}{{IFlIFl}Bl}{{IFnIFn}Bl}{{IG`IG`}Bl}{{IGbIGb}Bl}{{IGdIGd}Bl}{{IGfIGf}Bl}{{IGhIGh}Bl}{{IGjIGj}Bl}{{IGlIGl}Bl}{{IGnIGn}Bl}{{IH`IH`}Bl}{{IHbIHb}Bl}{{IHdIHd}Bl}{{GClGCl}Bl}{{IHfIHf}Bl}{{IHhIHh}Bl}{{IHjIHj}Bl}{{IHlIHl}Bl}{{IHnIHn}Bl}{{II`II`}Bl}{{IIbIIb}Bl}{{IIdIId}Bl}{{GCnGCn}Bl}{{IIfIIf}Bl}{{GD`GD`}Bl}{{GDbGDb}Bl}{{IIhIIh}Bl}{{IIjIIj}Bl}{{IIlIIl}Bl}{{IInIIn}Bl}{{IJ`IJ`}Bl}{{IJbIJb}Bl}{{IJdIJd}Bl}{{IJfIJf}Bl}{{IJhIJh}Bl}{{IJjIJj}Bl}{{IJlIJl}Bl}{{IJnIJn}Bl}{{IK`IK`}Bl}{{GDdGDd}Bl}{{IKbIKb}Bl}{{IKdIKd}Bl}{{IKfIKf}Bl}{{GDfGDf}Bl}{{IKhIKh}Bl}{{IKjIKj}Bl}{{IKlIKl}Bl}{{GDhGDh}Bl}{{IKnIKn}Bl}{{IL`IL`}Bl}{{GDjGDj}Bl}{{ILbILb}Bl}{{ILdILd}Bl}{{GDlGDl}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}{{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}{{GAfBn}DBd}0000{{IAbBn}DBd}{{GAhBn}DBd}0000{{IAdBn}DBd}{{GAjBn}DBd}0000{{IAfBn}DBd}{{IAhBn}DBd}{{GAlBn}DBd}0000{{GAnBn}DBd}0000{{IAjBn}DBd}{{IAlBn}DBd}{{IAnBn}DBd}{{IB`Bn}DBd}{{GB`Bn}DBd}0000{{IBbBn}DBd}{{IBdBn}DBd}{{GBbBn}DBd}0000{{IBfBn}DBd}{{IBhBn}DBd}{{IBjBn}DBd}{{IBlBn}DBd}{{IBnBn}DBd}{{IC`Bn}DBd}{{ICbBn}DBd}{{ICdBn}DBd}{{ICfBn}DBd}{{IChBn}DBd}{{ICjBn}DBd}{{GBdBn}DBd}0000{{IClBn}DBd}{{ICnBn}DBd}{{ID`Bn}DBd}{{GBfBn}DBd}0000{{IDbBn}DBd}{{IDdBn}DBd}{{IDfBn}DBd}{{IDhBn}DBd}{{GBhBn}DBd}0000{{GBjBn}DBd}0000{{GBlBn}DBd}0000{{GBnBn}DBd}0000{{IDjBn}DBd}{{IDlBn}DBd}{{IDnBn}DBd}{{IE`Bn}DBd}{{IEbBn}DBd}{{GC`Bn}DBd}0000{{IEdBn}DBd}{{GCbBn}DBd}0000{{GCdBn}DBd}0000{{IEfBn}DBd}{{IEhBn}DBd}{{IEjBn}DBd}{{GCfBn}DBd}0000{{IElBn}DBd}{{IEnBn}DBd}{{IF`Bn}DBd}{{GChBn}DBd}0000{{IFbBn}DBd}{{IFdBn}DBd}{{GCjBn}DBd}0000{{IFfBn}DBd}{{IFhBn}DBd}{{IFjBn}DBd}{{IFlBn}DBd}{{IFnBn}DBd}{{IG`Bn}DBd}{{IGbBn}DBd}{{IGdBn}DBd}{{IGfBn}DBd}{{IGhBn}DBd}{{IGjBn}DBd}{{IGlBn}DBd}{{IGnBn}DBd}{{IH`Bn}DBd}{{IHbBn}DBd}{{IHdBn}DBd}{{GClBn}DBd}0000{{IHfBn}DBd}{{IHhBn}DBd}{{IHjBn}DBd}{{IHlBn}DBd}{{IHnBn}DBd}{{II`Bn}DBd}{{IIbBn}DBd}{{IIdBn}DBd}{{GCnBn}DBd}0000{{IIfBn}DBd}{{GD`Bn}DBd}0000{{GDbBn}DBd}0000{{IIhBn}DBd}{{IIjBn}DBd}{{IIlBn}DBd}{{IInBn}DBd}{{IJ`Bn}DBd}{{IJbBn}DBd}{{IJdBn}DBd}{{IJfBn}DBd}{{IJhBn}DBd}{{IJjBn}DBd}{{IJlBn}DBd}{{IJnBn}DBd}{{IK`Bn}DBd}{{GDdBn}DBd}0000{{IKbBn}DBd}{{IKdBn}DBd}{{IKfBn}DBd}{{GDfBn}DBd}0000{{IKhBn}DBd}{{IKjBn}DBd}{{IKlBn}DBd}{{GDhBn}DBd}0000{{IKnBn}DBd}{{IL`Bn}DBd}{{GDjBn}DBd}0000{{ILbBn}DBd}{{ILdBn}DBd}{{GDlBn}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}{{IO`Bn}DBd}{{IObBn}DBd}{{IOdBn}DBd}{{IOfBn}DBd}{{IOhBn}DBd}``````````````{cc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{f{{DBf{GAf}}}}{b{{DBf{GAh}}}}{Bb{{DBf{GAj}}}}{Hh{{DBf{GAl}}}}{f{{DBf{GAn}}}}{f{{DBf{GB`}}}}{f{{DBf{GBb}}}}{b{{DBf{GBd}}}}{f{{DBf{GBf}}}}{Bb{{DBf{GBh}}}}{f{{DBf{GBj}}}}{Bb{{DBf{GBl}}}}{b{{DBf{GBn}}}}{f{{DBf{GC`}}}}{b{{DBf{GCb}}}}{b{{DBf{GCd}}}}{Bb{{DBf{GCf}}}}{f{{DBf{GCh}}}}{f{{DBf{GCj}}}}{f{{DBf{GCl}}}}{b{{DBf{GCn}}}}{b{{DBf{GD`}}}}{Hh{{DBf{GDb}}}}{f{{DBf{GDd}}}}{Bb{{DBf{GDf}}}}{Bb{{DBf{GDh}}}}{f{{DBf{GDj}}}}{Bb{{DBf{GDl}}}}{fGAf}{bGAh}{BbGAj}{HhGAl}{fGAn}{fGB`}{fGBb}{bGBd}{fGBf}{BbGBh}{fGBj}{BbGBl}{bGBn}{fGC`}{bGCb}{bGCd}{BbGCf}{fGCh}{fGCj}{fGCl}{bGCn}{bGD`}{HhGDb}{fGDd}{BbGDf}{BbGDh}{fGDj}{BbGDl}{fGAf}{bGAh}{BbGAj}{HhGAl}{fGAn}{fGB`}{fGBb}{bGBd}{fGBf}{BbGBh}{fGBj}{BbGBl}{bGBn}{fGC`}{bGCb}{bGCd}{BbGCf}{fGCh}{fGCj}{fGCl}{bGCn}{bGD`}{HhGDb}{fGDd}{BbGDf}{BbGDh}{fGDj}{BbGDl}{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`}{{GAfc}B`D`}{{IAbc}B`D`}{{GAhc}B`D`}{{IAdc}B`D`}{{GAjc}B`D`}{{IAfc}B`D`}{{IAhc}B`D`}{{GAlc}B`D`}{{GAnc}B`D`}{{IAjc}B`D`}{{IAlc}B`D`}{{IAnc}B`D`}{{IB`c}B`D`}{{GB`c}B`D`}{{IBbc}B`D`}{{IBdc}B`D`}{{GBbc}B`D`}{{IBfc}B`D`}{{IBhc}B`D`}{{IBjc}B`D`}{{IBlc}B`D`}{{IBnc}B`D`}{{IC`c}B`D`}{{ICbc}B`D`}{{ICdc}B`D`}{{ICfc}B`D`}{{IChc}B`D`}{{ICjc}B`D`}{{GBdc}B`D`}{{IClc}B`D`}{{ICnc}B`D`}{{ID`c}B`D`}{{GBfc}B`D`}{{IDbc}B`D`}{{IDdc}B`D`}{{IDfc}B`D`}{{IDhc}B`D`}{{GBhc}B`D`}{{GBjc}B`D`}{{GBlc}B`D`}{{GBnc}B`D`}{{IDjc}B`D`}{{IDlc}B`D`}{{IDnc}B`D`}{{IE`c}B`D`}{{IEbc}B`D`}{{GC`c}B`D`}{{IEdc}B`D`}{{GCbc}B`D`}{{GCdc}B`D`}{{IEfc}B`D`}{{IEhc}B`D`}{{IEjc}B`D`}{{GCfc}B`D`}{{IElc}B`D`}{{IEnc}B`D`}{{IF`c}B`D`}{{GChc}B`D`}{{IFbc}B`D`}{{IFdc}B`D`}{{GCjc}B`D`}{{IFfc}B`D`}{{IFhc}B`D`}{{IFjc}B`D`}{{IFlc}B`D`}{{IFnc}B`D`}{{IG`c}B`D`}{{IGbc}B`D`}{{IGdc}B`D`}{{IGfc}B`D`}{{IGhc}B`D`}{{IGjc}B`D`}{{IGlc}B`D`}{{IGnc}B`D`}{{IH`c}B`D`}{{IHbc}B`D`}{{IHdc}B`D`}{{GClc}B`D`}{{IHfc}B`D`}{{IHhc}B`D`}{{IHjc}B`D`}{{IHlc}B`D`}{{IHnc}B`D`}{{II`c}B`D`}{{IIbc}B`D`}{{IIdc}B`D`}{{GCnc}B`D`}{{IIfc}B`D`}{{GD`c}B`D`}{{GDbc}B`D`}{{IIhc}B`D`}{{IIjc}B`D`}{{IIlc}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`}{{GDdc}B`D`}{{IKbc}B`D`}{{IKdc}B`D`}{{IKfc}B`D`}{{GDfc}B`D`}{{IKhc}B`D`}{{IKjc}B`D`}{{IKlc}B`D`}{{GDhc}B`D`}{{IKnc}B`D`}{{IL`c}B`D`}{{GDjc}B`D`}{{ILbc}B`D`}{{ILdc}B`D`}{{GDlc}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`}{{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,"UavionixAdsbOutDynamicState",156],[5,"MavGeneratorStatusFlag",156],[5,"AisFlags",156],[5,"PositionTargetTypemask",156],[5,"AdsbFlags",156],[5,"GoproHeartbeatFlags",156],[5,"GimbalManagerCapFlags",156],[5,"LimitModule",156],[5,"TuneFormat",156],[5,"GimbalDeviceFlags",156],[5,"HlFailureFlag",156],[5,"UavionixAdsbRfHealth",156],[5,"MavModeFlag",156],[5,"MavWinchStatusFlag",156],[5,"GimbalDeviceCapFlags",156],[5,"UtmDataAvailFlags",156],[5,"MavSysStatusSensor",156],[5,"MavEventCurrentSequenceFlags",156],[5,"RallyFlags",156],[5,"AttitudeTargetTypemask",156],[5,"MavPowerStatus",156],[5,"EstimatorStatusFlags",156],[5,"HilSensorUpdatedFlags",156],[5,"EscFailureFlags",156],[5,"CameraCapFlags",156],[5,"HighresImuUpdatedFlags",156],[5,"SerialControlFlag",156],[5,"UavionixAdsbOutRfSelect",156],[5,"EkfStatusFlags",156],[5,"GimbalDeviceErrorFlags",156],[5,"GpsInputIgnoreFlags",156],[5,"MavProtocolCapability",156],[1,"u64"],[6,"MavMessage",156],[5,"HIL_SENSOR_DATA",156],[5,"FILE_TRANSFER_PROTOCOL_DATA",156],[5,"SCALED_PRESSURE2_DATA",156],[5,"CAMERA_CAPTURE_STATUS_DATA",156],[5,"DEVICE_OP_READ_REPLY_DATA",156],[5,"HIL_STATE_QUATERNION_DATA",156],[5,"RADIO_DATA",156],[5,"VIDEO_STREAM_STATUS_DATA",156],[5,"GIMBAL_CONTROL_DATA",156],[5,"HIL_STATE_DATA",156],[5,"DATA32_DATA",156],[5,"HIL_ACTUATOR_CONTROLS_DATA",156],[5,"RC_CHANNELS_DATA",156],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",156],[5,"CAMERA_INFORMATION_DATA",156],[5,"ATTITUDE_TARGET_DATA",156],[5,"MEMORY_VECT_DATA",156],[5,"DISTANCE_SENSOR_DATA",156],[5,"DIGICAM_CONTROL_DATA",156],[5,"POWER_STATUS_DATA",156],[5,"PING_DATA",156],[5,"MISSION_CLEAR_ALL_DATA",156],[5,"COMMAND_LONG_DATA",156],[5,"DEEPSTALL_DATA",156],[5,"MOUNT_ORIENTATION_DATA",156],[5,"OPEN_DRONE_ID_SYSTEM_DATA",156],[5,"PROTOCOL_VERSION_DATA",156],[5,"HIGH_LATENCY2_DATA",156],[5,"LOG_REQUEST_LIST_DATA",156],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",156],[5,"UTM_GLOBAL_POSITION_DATA",156],[5,"CANFD_FRAME_DATA",156],[5,"DEBUG_FLOAT_ARRAY_DATA",156],[5,"CUBEPILOT_RAW_RC_DATA",156],[5,"LOG_REQUEST_END_DATA",156],[5,"COLLISION_DATA",156],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",156],[5,"ESTIMATOR_STATUS_DATA",156],[5,"EXTENDED_SYS_STATE_DATA",156],[5,"HIL_RC_INPUTS_RAW_DATA",156],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",156],[5,"CURRENT_EVENT_SEQUENCE_DATA",156],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",156],[5,"PARAM_EXT_REQUEST_READ_DATA",156],[5,"NAMED_VALUE_FLOAT_DATA",156],[5,"LOGGING_DATA_ACKED_DATA",156],[5,"AHRS2_DATA",156],[5,"ORBIT_EXECUTION_STATUS_DATA",156],[5,"GIMBAL_DEVICE_INFORMATION_DATA",156],[5,"COMPONENT_METADATA_DATA",156],[5,"DIGICAM_CONFIGURE_DATA",156],[5,"ESC_TELEMETRY_5_TO_8_DATA",156],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",156],[5,"PARAM_SET_DATA",156],[5,"UAVIONIX_ADSB_OUT_CFG_DATA",156],[5,"ONBOARD_COMPUTER_STATUS_DATA",156],[5,"SET_MODE_DATA",156],[5,"MISSION_ITEM_DATA",156],[5,"HIL_CONTROLS_DATA",156],[5,"BATTERY2_DATA",156],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",156],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",156],[5,"PARAM_EXT_REQUEST_LIST_DATA",156],[5,"POSITION_TARGET_GLOBAL_INT_DATA",156],[5,"ALTITUDE_DATA",156],[5,"CAMERA_TRIGGER_DATA",156],[5,"FENCE_FETCH_POINT_DATA",156],[5,"PARAM_REQUEST_LIST_DATA",156],[5,"ATTITUDE_QUATERNION_DATA",156],[5,"REMOTE_LOG_BLOCK_STATUS_DATA",156],[5,"MISSION_ACK_DATA",156],[5,"PARAM_EXT_VALUE_DATA",156],[5,"CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA",156],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",156],[5,"SCALED_IMU_DATA",156],[5,"GPS_RAW_INT_DATA",156],[5,"PARAM_REQUEST_READ_DATA",156],[5,"GPS_RTK_DATA",156],[5,"SET_MAG_OFFSETS_DATA",156],[5,"POSITION_TARGET_LOCAL_NED_DATA",156],[5,"PARAM_EXT_SET_DATA",156],[5,"SYSTEM_TIME_DATA",156],[5,"MISSION_CURRENT_DATA",156],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",156],[5,"RADIO_STATUS_DATA",156],[5,"MISSION_COUNT_DATA",156],[5,"ESC_TELEMETRY_9_TO_12_DATA",156],[5,"FLIGHT_INFORMATION_DATA",156],[5,"LOG_ERASE_DATA",156],[5,"MISSION_REQUEST_DATA",156],[5,"V2_EXTENSION_DATA",156],[5,"UAVIONIX_ADSB_OUT_DYNAMIC_DATA",156],[5,"MAG_CAL_PROGRESS_DATA",156],[5,"DATA_STREAM_DATA",156],[5,"CAMERA_IMAGE_CAPTURED_DATA",156],[5,"GLOBAL_POSITION_INT_DATA",156],[5,"BATTERY_STATUS_DATA",156],[5,"ACTUATOR_CONTROL_TARGET_DATA",156],[5,"RESOURCE_REQUEST_DATA",156],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",156],[5,"OPEN_DRONE_ID_SELF_ID_DATA",156],[5,"WATER_DEPTH_DATA",156],[5,"SIM_STATE_DATA",156],[5,"WHEEL_DISTANCE_DATA",156],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",156],[5,"SUPPORTED_TUNES_DATA",156],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",156],[5,"BUTTON_CHANGE_DATA",156],[5,"GPS_INPUT_DATA",156],[5,"PARAM_EXT_ACK_DATA",156],[5,"SIMSTATE_DATA",156],[5,"HIL_GPS_DATA",156],[5,"GPS2_RAW_DATA",156],[5,"CAN_FRAME_DATA",156],[5,"DEVICE_OP_WRITE_DATA",156],[5,"LOG_DATA_DATA",156],[5,"LINK_NODE_STATUS_DATA",156],[5,"LOGGING_ACK_DATA",156],[5,"STORAGE_INFORMATION_DATA",156],[5,"LOCAL_POSITION_NED_DATA",156],[5,"RPM_DATA",156],[5,"OSD_PARAM_SHOW_CONFIG_DATA",156],[5,"AUTOPILOT_VERSION_DATA",156],[5,"RALLY_FETCH_POINT_DATA",156],[5,"GOPRO_GET_REQUEST_DATA",156],[5,"GOPRO_HEARTBEAT_DATA",156],[5,"TERRAIN_DATA_DATA",156],[5,"UAVCAN_NODE_INFO_DATA",156],[5,"OPTICAL_FLOW_RAD_DATA",156],[5,"GIMBAL_TORQUE_CMD_REPORT_DATA",156],[5,"HWSTATUS_DATA",156],[5,"ESC_TELEMETRY_1_TO_4_DATA",156],[5,"COMMAND_ACK_DATA",156],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",156],[5,"RAW_PRESSURE_DATA",156],[5,"UAVCAN_NODE_STATUS_DATA",156],[5,"SCALED_PRESSURE3_DATA",156],[5,"MCU_STATUS_DATA",156],[5,"AP_ADC_DATA",156],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",156],[5,"ATTITUDE_QUATERNION_COV_DATA",156],[5,"AIRSPEED_AUTOCAL_DATA",156],[5,"ODOMETRY_DATA",156],[5,"AHRS_DATA",156],[5,"TIMESYNC_DATA",156],[5,"GIMBAL_MANAGER_STATUS_DATA",156],[5,"RC_CHANNELS_OVERRIDE_DATA",156],[5,"MOUNT_CONFIGURE_DATA",156],[5,"RAW_IMU_DATA",156],[5,"MAG_CAL_REPORT_DATA",156],[5,"LIMITS_STATUS_DATA",156],[5,"UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA",156],[5,"GOPRO_SET_RESPONSE_DATA",156],[5,"CELLULAR_STATUS_DATA",156],[5,"AHRS3_DATA",156],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",156],[5,"SMART_BATTERY_INFO_DATA",156],[5,"TERRAIN_REPORT_DATA",156],[5,"SERIAL_CONTROL_DATA",156],[5,"PARAM_VALUE_DATA",156],[5,"HERELINK_TELEM_DATA",156],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",156],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",156],[5,"SCALED_PRESSURE_DATA",156],[5,"ESC_INFO_DATA",156],[5,"SERVO_OUTPUT_RAW_DATA",156],[5,"MOUNT_CONTROL_DATA",156],[5,"SETUP_SIGNING_DATA",156],[5,"SCALED_IMU3_DATA",156],[5,"RALLY_POINT_DATA",156],[5,"SENSOR_OFFSETS_DATA",156],[5,"ICAROUS_KINEMATIC_BANDS_DATA",156],[5,"COMPONENT_INFORMATION_DATA",156],[5,"COMMAND_INT_DATA",156],[5,"LANDING_TARGET_DATA",156],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",156],[5,"OBSTACLE_DISTANCE_DATA",156],[5,"PLAY_TUNE_V2_DATA",156],[5,"DEVICE_OP_WRITE_REPLY_DATA",156],[5,"RC_CHANNELS_RAW_DATA",156],[5,"GPS2_RTK_DATA",156],[5,"WINCH_STATUS_DATA",156],[5,"TERRAIN_CHECK_DATA",156],[5,"DATA96_DATA",156],[5,"EKF_STATUS_REPORT_DATA",156],[5,"SET_ATTITUDE_TARGET_DATA",156],[5,"COMMAND_CANCEL_DATA",156],[5,"SAFETY_SET_ALLOWED_AREA_DATA",156],[5,"MEMINFO_DATA",156],[5,"MISSION_REQUEST_LIST_DATA",156],[5,"REQUEST_EVENT_DATA",156],[5,"ACTUATOR_OUTPUT_STATUS_DATA",156],[5,"HIL_OPTICAL_FLOW_DATA",156],[5,"WIND_DATA",156],[5,"CAN_FILTER_MODIFY_DATA",156],[5,"NAV_CONTROLLER_OUTPUT_DATA",156],[5,"VISION_POSITION_DELTA_DATA",156],[5,"GOPRO_SET_REQUEST_DATA",156],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",156],[5,"MANUAL_SETPOINT_DATA",156],[5,"ATT_POS_MOCAP_DATA",156],[5,"CHANGE_OPERATOR_CONTROL_DATA",156],[5,"LOCAL_POSITION_NED_COV_DATA",156],[5,"VISION_SPEED_ESTIMATE_DATA",156],[5,"LED_CONTROL_DATA",156],[5,"OPEN_DRONE_ID_LOCATION_DATA",156],[5,"REQUEST_DATA_STREAM_DATA",156],[5,"PARAM_MAP_RC_DATA",156],[5,"HEARTBEAT_DATA",156],[5,"CAMERA_STATUS_DATA",156],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",156],[5,"VIBRATION_DATA",156],[5,"PID_TUNING_DATA",156],[5,"ENCAPSULATED_DATA_DATA",156],[5,"GIMBAL_MANAGER_INFORMATION_DATA",156],[5,"REMOTE_LOG_DATA_BLOCK_DATA",156],[5,"MOUNT_STATUS_DATA",156],[5,"GPS_STATUS_DATA",156],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",156],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",156],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",156],[5,"RANGEFINDER_DATA",156],[5,"HERELINK_VIDEO_STREAM_INFORMATION_DATA",156],[5,"ADSB_VEHICLE_DATA",156],[5,"HOME_POSITION_DATA",156],[5,"SYS_STATUS_DATA",156],[5,"DEBUG_DATA",156],[5,"TERRAIN_REQUEST_DATA",156],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",156],[5,"EFI_STATUS_DATA",156],[5,"VICON_POSITION_ESTIMATE_DATA",156],[5,"MESSAGE_INTERVAL_DATA",156],[5,"PLAY_TUNE_DATA",156],[5,"HIGH_LATENCY_DATA",156],[5,"EVENT_DATA",156],[5,"GLOBAL_POSITION_INT_COV_DATA",156],[5,"ISBD_LINK_STATUS_DATA",156],[5,"MISSION_REQUEST_INT_DATA",156],[5,"MISSION_ITEM_REACHED_DATA",156],[5,"ATTITUDE_DATA",156],[5,"MISSION_ITEM_INT_DATA",156],[5,"STATUSTEXT_DATA",156],[5,"CAMERA_SETTINGS_DATA",156],[5,"ESC_STATUS_DATA",156],[5,"OSD_PARAM_CONFIG_REPLY_DATA",156],[5,"GENERATOR_STATUS_DATA",156],[5,"RAW_RPM_DATA",156],[5,"GIMBAL_REPORT_DATA",156],[5,"GPS_RTCM_DATA_DATA",156],[5,"AUTH_KEY_DATA",156],[5,"RESPONSE_EVENT_ERROR_DATA",156],[5,"LOG_REQUEST_DATA_DATA",156],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",156],[5,"FENCE_STATUS_DATA",156],[5,"AOA_SSA_DATA",156],[5,"SAFETY_ALLOWED_AREA_DATA",156],[5,"OSD_PARAM_SHOW_CONFIG_REPLY_DATA",156],[5,"AUTOPILOT_VERSION_REQUEST_DATA",156],[5,"TUNNEL_DATA",156],[5,"NAMED_VALUE_INT_DATA",156],[5,"CAMERA_FEEDBACK_DATA",156],[5,"RC_CHANNELS_SCALED_DATA",156],[5,"CUBEPILOT_FIRMWARE_UPDATE_START_DATA",156],[5,"ICAROUS_HEARTBEAT_DATA",156],[5,"FOLLOW_TARGET_DATA",156],[5,"SCALED_IMU2_DATA",156],[5,"GPS_GLOBAL_ORIGIN_DATA",156],[5,"VISION_POSITION_ESTIMATE_DATA",156],[5,"DEBUG_VECT_DATA",156],[5,"AIS_VESSEL_DATA",156],[5,"OPTICAL_FLOW_DATA",156],[5,"OBSTACLE_DISTANCE_3D_DATA",156],[5,"GPS_INJECT_DATA_DATA",156],[5,"DATA64_DATA",156],[5,"TIME_ESTIMATE_TO_TARGET_DATA",156],[5,"DATA16_DATA",156],[5,"CAMERA_FOV_STATUS_DATA",156],[5,"ADAP_TUNING_DATA",156],[5,"MANUAL_CONTROL_DATA",156],[5,"WIND_COV_DATA",156],[5,"GOPRO_GET_RESPONSE_DATA",156],[5,"SET_HOME_POSITION_DATA",156],[5,"WIFI_CONFIG_AP_DATA",156],[5,"MISSION_SET_CURRENT_DATA",156],[5,"LOG_ENTRY_DATA",156],[5,"FENCE_POINT_DATA",156],[5,"HYGROMETER_SENSOR_DATA",156],[5,"DEVICE_OP_READ_DATA",156],[5,"HIGHRES_IMU_DATA",156],[5,"VFR_HUD_DATA",156],[5,"OSD_PARAM_CONFIG_DATA",156],[5,"CONTROL_SYSTEM_STATE_DATA",156],[5,"CELLULAR_CONFIG_DATA",156],[5,"VIDEO_STREAM_INFORMATION_DATA",156],[5,"LOGGING_DATA_DATA",156],[5,"COMPASSMOT_STATUS_DATA",156],[6,"MavCmdAck",156],[6,"MavOdidStatus",156],[6,"PrecisionLandMode",156],[6,"CameraTrackingMode",156],[6,"MavState",156],[6,"EscConnectionType",156],[6,"MavParamExtType",156],[6,"MavFrame",156],[6,"FailureType",156],[6,"UavionixAdsbOutCfgAircraftSize",156],[6,"MavEventErrorReason",156],[6,"CanFilterOp",156],[6,"AdsbAltitudeType",156],[6,"PidTuningAxis",156],[6,"MavBatteryMode",156],[6,"MavArmAuthDeniedReason",156],[6,"MavOdidUaType",156],[6,"RoverMode",156],[6,"MotorTestThrottleType",156],[6,"GoproProtuneGain",156],[6,"GoproPhotoResolution",156],[6,"MavOdidSpeedAcc",156],[6,"MavResult",156],[6,"VideoStreamStatusFlags",156],[6,"MavOdidVerAcc",156],[6,"WifiConfigApMode",156],[6,"PreflightStorageMissionAction",156],[6,"MavOdidDescType",156],[6,"GoproResolution",156],[6,"MavMissionResult",156],[6,"CellularConfigResponse",156],[6,"UavcanNodeMode",156],[6,"MavCollisionSrc",156],[6,"MavBatteryFault",156],[6,"MavModeFlagDecodePosition",156],[6,"AisNavStatus",156],[6,"MavLandedState",156],[6,"MavSysStatusSensorExtended",156],[6,"MavDoRepositionFlags",156],[6,"UavionixAdsbOutCfgGpsOffsetLat",156],[6,"UavcanNodeHealth",156],[6,"MavAutopilot",156],[6,"GoproCommand",156],[6,"MavGoto",156],[6,"VtolTransitionHeading",156],[6,"MavTunnelPayloadType",156],[6,"StorageType",156],[6,"CameraMode",156],[6,"LedControlPattern",156],[6,"MavCollisionAction",156],[6,"GoproCaptureMode",156],[6,"MavOdidOperatorIdType",156],[6,"RcType",156],[6,"CameraZoomType",156],[6,"NavVtolLandOptions",156],[6,"GoproRequestStatus",156],[6,"GimbalAxisCalibrationStatus",156],[6,"MavBatteryType",156],[6,"MavOdidOperatorLocationType",156],[6,"OsdParamConfigError",156],[6,"WinchActions",156],[6,"CopterMode",156],[6,"GimbalAxis",156],[6,"MissionState",156],[6,"MavBatteryFunction",156],[6,"MavOdidAuthType",156],[6,"AutotuneAxis",156],[6,"MavType",156],[6,"GoproBurstRate",156],[6,"OrbitYawBehaviour",156],[6,"RtkBaselineCoordinateSystem",156],[6,"MavOdidClassificationType",156],[6,"MagCalStatus",156],[6,"ActuatorOutputFunction",156],[6,"HeadingType",156],[6,"SubMode",156],[6,"CellularNetworkFailedReason",156],[6,"MavCmd",156],[6,"MavSeverity",156],[6,"SerialControlDev",156],[6,"CellularStatusFlag",156],[6,"MavMissionType",156],[6,"MavRemoteLogDataBlockCommands",156],[6,"MavCmdDoAuxFunctionSwitchLevel",156],[6,"GoproProtuneWhiteBalance",156],[6,"AisType",156],[6,"GoproHeartbeatStatus",156],[6,"ScriptingCmd",156],[6,"MavFtpErr",156],[6,"MavOdidHeightRef",156],[6,"ActuatorConfiguration",156],[6,"GoproFieldOfView",156],[6,"GoproFrameRate",156],[6,"StorageUsageFlag",156],[6,"MavCollisionThreatLevel",156],[6,"StorageStatus",156],[6,"MavOdidClassEu",156],[6,"LandingTargetType",156],[6,"UavionixAdsbOutCfgGpsOffsetLon",156],[6,"GpsFixType",156],[6,"MavEstimatorType",156],[6,"GoproVideoSettingsFlags",156],[6,"MavMountMode",156],[6,"MavVtolState",156],[6,"AccelcalVehiclePos",156],[6,"UavionixAdsbOutDynamicGpsFix",156],[6,"IcarousFmsState",156],[6,"GoproProtuneExposure",156],[6,"GoproProtuneColour",156],[6,"SetFocusType",156],[6,"FenceAction",156],[6,"AdsbEmitterType",156],[6,"FirmwareVersionType",156],[6,"MavParamType",156],[6,"MavOdidIdType",156],[6,"GripperActions",156],[6,"VideoStreamType",156],[6,"FenceMitigate",156],[6,"WifiConfigApResponse",156],[6,"SpeedType",156],[6,"CameraFeedbackFlags",156],[6,"UavionixAdsbEmergencyStatus",156],[6,"MavFtpOpcode",156],[6,"MavComponent",156],[6,"DeepstallStage",156],[6,"FenceBreach",156],[6,"ParachuteAction",156],[6,"CompMetadataType",156],[6,"MavBatteryChargeState",156],[6,"MotorTestOrder",156],[6,"PlaneMode",156],[6,"TrackerMode",156],[6,"MavOdidArmStatus",156],[6,"MavModeGimbal",156],[6,"CellularNetworkRadioType",156],[6,"DeviceOpBustype",156],[6,"GoproModel",156],[6,"MavlinkDataStreamType",156],[6,"GoproCharging",156],[6,"GoproProtuneSharpness",156],[6,"IcarousTrackBandTypes",156],[6,"GimbalManagerFlags",156],[6,"MavMode",156],[6,"MavOdidCategoryEu",156],[6,"CameraTrackingStatusFlags",156],[6,"CameraTrackingTargetData",156],[6,"PreflightStorageParameterAction",156],[6,"MavDistanceSensor",156],[6,"CameraStatusTypes",156],[6,"MavDataStream",156],[6,"MavOdidHorAcc",156],[6,"MavRemoteLogDataBlockStatuses",156],[6,"MavRoi",156],[6,"MavOdidTimeAcc",156],[6,"UtmFlightState",156],[6,"FailureUnit",156],[6,"MavSensorOrientation",156],[6,"OsdParamConfigType",156],[6,"ParamAck",156],[6,"GimbalAxisCalibrationRequired",156],[6,"LimitsState",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,"MavEventCurrentSequenceFlags",15547],[5,"SerialControlFlag",15547],[5,"AdsbFlags",15547],[5,"HilSensorUpdatedFlags",15547],[5,"EscFailureFlags",15547],[5,"MavSysStatusSensor",15547],[5,"MavProtocolCapability",15547],[5,"MavWinchStatusFlag",15547],[5,"UtmDataAvailFlags",15547],[5,"PositionTargetTypemask",15547],[5,"HighresImuUpdatedFlags",15547],[5,"GpsInputIgnoreFlags",15547],[5,"EstimatorStatusFlags",15547],[5,"GimbalDeviceFlags",15547],[5,"GimbalDeviceErrorFlags",15547],[5,"GimbalDeviceCapFlags",15547],[5,"MavGeneratorStatusFlag",15547],[5,"GimbalManagerCapFlags",15547],[5,"HlFailureFlag",15547],[5,"MavModeFlag",15547],[5,"CameraCapFlags",15547],[5,"MavPowerStatus",15547],[5,"TuneFormat",15547],[5,"AisFlags",15547],[5,"AttitudeTargetTypemask",15547],[6,"MavMessage",15547],[5,"PARAM_EXT_ACK_DATA",15547],[5,"TERRAIN_REPORT_DATA",15547],[5,"COMMAND_ACK_DATA",15547],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",15547],[5,"SAFETY_SET_ALLOWED_AREA_DATA",15547],[5,"OPEN_DRONE_ID_LOCATION_DATA",15547],[5,"RAW_PRESSURE_DATA",15547],[5,"HYGROMETER_SENSOR_DATA",15547],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",15547],[5,"AUTOPILOT_VERSION_DATA",15547],[5,"VIBRATION_DATA",15547],[5,"TIME_ESTIMATE_TO_TARGET_DATA",15547],[5,"RESPONSE_EVENT_ERROR_DATA",15547],[5,"CELLULAR_CONFIG_DATA",15547],[5,"ALTITUDE_DATA",15547],[5,"PARAM_MAP_RC_DATA",15547],[5,"LOGGING_DATA_DATA",15547],[5,"FLIGHT_INFORMATION_DATA",15547],[5,"SETUP_SIGNING_DATA",15547],[5,"VICON_POSITION_ESTIMATE_DATA",15547],[5,"HIL_CONTROLS_DATA",15547],[5,"SYS_STATUS_DATA",15547],[5,"MANUAL_CONTROL_DATA",15547],[5,"MISSION_SET_CURRENT_DATA",15547],[5,"HIL_OPTICAL_FLOW_DATA",15547],[5,"STATUSTEXT_DATA",15547],[5,"SCALED_IMU3_DATA",15547],[5,"HIL_STATE_DATA",15547],[5,"NAV_CONTROLLER_OUTPUT_DATA",15547],[5,"RAW_IMU_DATA",15547],[5,"FOLLOW_TARGET_DATA",15547],[5,"GPS_INPUT_DATA",15547],[5,"OPEN_DRONE_ID_SELF_ID_DATA",15547],[5,"DEBUG_VECT_DATA",15547],[5,"COMMAND_INT_DATA",15547],[5,"GLOBAL_POSITION_INT_DATA",15547],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",15547],[5,"GIMBAL_DEVICE_INFORMATION_DATA",15547],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",15547],[5,"MISSION_REQUEST_LIST_DATA",15547],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",15547],[5,"BUTTON_CHANGE_DATA",15547],[5,"FENCE_STATUS_DATA",15547],[5,"ATTITUDE_QUATERNION_COV_DATA",15547],[5,"GPS2_RAW_DATA",15547],[5,"COMPONENT_INFORMATION_DATA",15547],[5,"FILE_TRANSFER_PROTOCOL_DATA",15547],[5,"DISTANCE_SENSOR_DATA",15547],[5,"WIFI_CONFIG_AP_DATA",15547],[5,"ENCAPSULATED_DATA_DATA",15547],[5,"LOG_REQUEST_DATA_DATA",15547],[5,"ISBD_LINK_STATUS_DATA",15547],[5,"SCALED_PRESSURE2_DATA",15547],[5,"SET_MODE_DATA",15547],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",15547],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",15547],[5,"PARAM_REQUEST_READ_DATA",15547],[5,"PARAM_EXT_REQUEST_READ_DATA",15547],[5,"CAMERA_FOV_STATUS_DATA",15547],[5,"CHANGE_OPERATOR_CONTROL_DATA",15547],[5,"ONBOARD_COMPUTER_STATUS_DATA",15547],[5,"RAW_RPM_DATA",15547],[5,"MISSION_ITEM_INT_DATA",15547],[5,"ATTITUDE_QUATERNION_DATA",15547],[5,"CAN_FRAME_DATA",15547],[5,"SMART_BATTERY_INFO_DATA",15547],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",15547],[5,"CAMERA_INFORMATION_DATA",15547],[5,"GPS_STATUS_DATA",15547],[5,"GLOBAL_POSITION_INT_COV_DATA",15547],[5,"LANDING_TARGET_DATA",15547],[5,"DATA_STREAM_DATA",15547],[5,"TERRAIN_DATA_DATA",15547],[5,"SYSTEM_TIME_DATA",15547],[5,"GPS_INJECT_DATA_DATA",15547],[5,"LOCAL_POSITION_NED_COV_DATA",15547],[5,"AUTH_KEY_DATA",15547],[5,"UAVCAN_NODE_INFO_DATA",15547],[5,"ATT_POS_MOCAP_DATA",15547],[5,"PARAM_EXT_VALUE_DATA",15547],[5,"LOG_ENTRY_DATA",15547],[5,"PARAM_EXT_REQUEST_LIST_DATA",15547],[5,"HIGH_LATENCY_DATA",15547],[5,"RC_CHANNELS_OVERRIDE_DATA",15547],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",15547],[5,"DEBUG_DATA",15547],[5,"MISSION_REQUEST_DATA",15547],[5,"UAVCAN_NODE_STATUS_DATA",15547],[5,"V2_EXTENSION_DATA",15547],[5,"HOME_POSITION_DATA",15547],[5,"WIND_COV_DATA",15547],[5,"BATTERY_STATUS_DATA",15547],[5,"HIGHRES_IMU_DATA",15547],[5,"POSITION_TARGET_LOCAL_NED_DATA",15547],[5,"MISSION_CLEAR_ALL_DATA",15547],[5,"GPS2_RTK_DATA",15547],[5,"REQUEST_DATA_STREAM_DATA",15547],[5,"LOCAL_POSITION_NED_DATA",15547],[5,"RC_CHANNELS_SCALED_DATA",15547],[5,"ACTUATOR_CONTROL_TARGET_DATA",15547],[5,"GPS_GLOBAL_ORIGIN_DATA",15547],[5,"GPS_RAW_INT_DATA",15547],[5,"SCALED_IMU_DATA",15547],[5,"WINCH_STATUS_DATA",15547],[5,"CAN_FILTER_MODIFY_DATA",15547],[5,"CELLULAR_STATUS_DATA",15547],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",15547],[5,"ODOMETRY_DATA",15547],[5,"POWER_STATUS_DATA",15547],[5,"AIS_VESSEL_DATA",15547],[5,"EFI_STATUS_DATA",15547],[5,"SCALED_IMU2_DATA",15547],[5,"ESC_INFO_DATA",15547],[5,"VIDEO_STREAM_STATUS_DATA",15547],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",15547],[5,"MISSION_CURRENT_DATA",15547],[5,"ATTITUDE_DATA",15547],[5,"MOUNT_ORIENTATION_DATA",15547],[5,"PLAY_TUNE_DATA",15547],[5,"TERRAIN_CHECK_DATA",15547],[5,"GPS_RTCM_DATA_DATA",15547],[5,"ESTIMATOR_STATUS_DATA",15547],[5,"SIM_STATE_DATA",15547],[5,"UTM_GLOBAL_POSITION_DATA",15547],[5,"GENERATOR_STATUS_DATA",15547],[5,"OPEN_DRONE_ID_SYSTEM_DATA",15547],[5,"TUNNEL_DATA",15547],[5,"VIDEO_STREAM_INFORMATION_DATA",15547],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",15547],[5,"SAFETY_ALLOWED_AREA_DATA",15547],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",15547],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",15547],[5,"SUPPORTED_TUNES_DATA",15547],[5,"LOG_ERASE_DATA",15547],[5,"LOG_REQUEST_END_DATA",15547],[5,"ADSB_VEHICLE_DATA",15547],[5,"MAG_CAL_REPORT_DATA",15547],[5,"OPTICAL_FLOW_RAD_DATA",15547],[5,"RESOURCE_REQUEST_DATA",15547],[5,"HIL_SENSOR_DATA",15547],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",15547],[5,"COMMAND_CANCEL_DATA",15547],[5,"CAMERA_TRIGGER_DATA",15547],[5,"GIMBAL_MANAGER_INFORMATION_DATA",15547],[5,"LOG_DATA_DATA",15547],[5,"MISSION_ITEM_DATA",15547],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",15547],[5,"SERVO_OUTPUT_RAW_DATA",15547],[5,"VFR_HUD_DATA",15547],[5,"PROTOCOL_VERSION_DATA",15547],[5,"PLAY_TUNE_V2_DATA",15547],[5,"CONTROL_SYSTEM_STATE_DATA",15547],[5,"HEARTBEAT_DATA",15547],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",15547],[5,"PARAM_EXT_SET_DATA",15547],[5,"CAMERA_CAPTURE_STATUS_DATA",15547],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",15547],[5,"ESC_STATUS_DATA",15547],[5,"MANUAL_SETPOINT_DATA",15547],[5,"GPS_RTK_DATA",15547],[5,"HIL_RC_INPUTS_RAW_DATA",15547],[5,"MISSION_ITEM_REACHED_DATA",15547],[5,"TIMESYNC_DATA",15547],[5,"COMPONENT_METADATA_DATA",15547],[5,"GIMBAL_MANAGER_STATUS_DATA",15547],[5,"OBSTACLE_DISTANCE_DATA",15547],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",15547],[5,"RC_CHANNELS_DATA",15547],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",15547],[5,"SET_ATTITUDE_TARGET_DATA",15547],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",15547],[5,"PARAM_REQUEST_LIST_DATA",15547],[5,"SERIAL_CONTROL_DATA",15547],[5,"MEMORY_VECT_DATA",15547],[5,"POSITION_TARGET_GLOBAL_INT_DATA",15547],[5,"EVENT_DATA",15547],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",15547],[5,"MISSION_ACK_DATA",15547],[5,"CAMERA_IMAGE_CAPTURED_DATA",15547],[5,"HIL_GPS_DATA",15547],[5,"LINK_NODE_STATUS_DATA",15547],[5,"HIL_STATE_QUATERNION_DATA",15547],[5,"TERRAIN_REQUEST_DATA",15547],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",15547],[5,"DEBUG_FLOAT_ARRAY_DATA",15547],[5,"VISION_POSITION_ESTIMATE_DATA",15547],[5,"LOGGING_DATA_ACKED_DATA",15547],[5,"SCALED_PRESSURE3_DATA",15547],[5,"PARAM_SET_DATA",15547],[5,"EXTENDED_SYS_STATE_DATA",15547],[5,"SCALED_PRESSURE_DATA",15547],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",15547],[5,"COMMAND_LONG_DATA",15547],[5,"PARAM_VALUE_DATA",15547],[5,"SET_HOME_POSITION_DATA",15547],[5,"ATTITUDE_TARGET_DATA",15547],[5,"WHEEL_DISTANCE_DATA",15547],[5,"CANFD_FRAME_DATA",15547],[5,"MISSION_COUNT_DATA",15547],[5,"MISSION_REQUEST_INT_DATA",15547],[5,"LOG_REQUEST_LIST_DATA",15547],[5,"STORAGE_INFORMATION_DATA",15547],[5,"CAMERA_SETTINGS_DATA",15547],[5,"NAMED_VALUE_FLOAT_DATA",15547],[5,"HIL_ACTUATOR_CONTROLS_DATA",15547],[5,"ACTUATOR_OUTPUT_STATUS_DATA",15547],[5,"PING_DATA",15547],[5,"HIGH_LATENCY2_DATA",15547],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",15547],[5,"MESSAGE_INTERVAL_DATA",15547],[5,"VISION_SPEED_ESTIMATE_DATA",15547],[5,"LOGGING_ACK_DATA",15547],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",15547],[5,"NAMED_VALUE_INT_DATA",15547],[5,"COLLISION_DATA",15547],[5,"CURRENT_EVENT_SEQUENCE_DATA",15547],[5,"REQUEST_EVENT_DATA",15547],[5,"ORBIT_EXECUTION_STATUS_DATA",15547],[5,"RADIO_STATUS_DATA",15547],[5,"OPTICAL_FLOW_DATA",15547],[5,"RC_CHANNELS_RAW_DATA",15547],[6,"CellularNetworkFailedReason",15547],[6,"GripperActions",15547],[6,"MavFtpOpcode",15547],[6,"NavVtolLandOptions",15547],[6,"FailureUnit",15547],[6,"AisType",15547],[6,"MavVtolState",15547],[6,"MavlinkDataStreamType",15547],[6,"MavFtpErr",15547],[6,"RtkBaselineCoordinateSystem",15547],[6,"AdsbAltitudeType",15547],[6,"MavLandedState",15547],[6,"MavBatteryChargeState",15547],[6,"MavGoto",15547],[6,"PreflightStorageParameterAction",15547],[6,"FenceBreach",15547],[6,"MavOdidVerAcc",15547],[6,"EscConnectionType",15547],[6,"MavComponent",15547],[6,"AutotuneAxis",15547],[6,"VideoStreamType",15547],[6,"CameraTrackingStatusFlags",15547],[6,"MavModeFlagDecodePosition",15547],[6,"CameraMode",15547],[6,"MissionState",15547],[6,"MavType",15547],[6,"MavAutopilot",15547],[6,"MavMountMode",15547],[6,"PrecisionLandMode",15547],[6,"AdsbEmitterType",15547],[6,"VtolTransitionHeading",15547],[6,"MavFrame",15547],[6,"MavParamExtType",15547],[6,"SerialControlDev",15547],[6,"FenceMitigate",15547],[6,"MavDataStream",15547],[6,"StorageUsageFlag",15547],[6,"MavSysStatusSensorExtended",15547],[6,"MavCmd",15547],[6,"StorageType",15547],[6,"CellularStatusFlag",15547],[6,"MavOdidHorAcc",15547],[6,"MavBatteryFault",15547],[6,"MavOdidClassificationType",15547],[6,"MavOdidStatus",15547],[6,"StorageStatus",15547],[6,"MavMissionType",15547],[6,"MavTunnelPayloadType",15547],[6,"FenceAction",15547],[6,"ActuatorOutputFunction",15547],[6,"MavDistanceSensor",15547],[6,"MavOdidAuthType",15547],[6,"MavRoi",15547],[6,"MavState",15547],[6,"WinchActions",15547],[6,"VideoStreamStatusFlags",15547],[6,"MavOdidCategoryEu",15547],[6,"AisNavStatus",15547],[6,"MavBatteryFunction",15547],[6,"MotorTestOrder",15547],[6,"MavOdidIdType",15547],[6,"MavBatteryType",15547],[6,"PreflightStorageMissionAction",15547],[6,"MavOdidTimeAcc",15547],[6,"UtmFlightState",15547],[6,"MavOdidSpeedAcc",15547],[6,"CellularNetworkRadioType",15547],[6,"CameraTrackingMode",15547],[6,"WifiConfigApResponse",15547],[6,"FirmwareVersionType",15547],[6,"FailureType",15547],[6,"MavMissionResult",15547],[6,"CellularConfigResponse",15547],[6,"ParachuteAction",15547],[6,"MavArmAuthDeniedReason",15547],[6,"CameraZoomType",15547],[6,"MavCollisionSrc",15547],[6,"WifiConfigApMode",15547],[6,"MavCmdAck",15547],[6,"MavOdidOperatorLocationType",15547],[6,"SetFocusType",15547],[6,"MavOdidHeightRef",15547],[6,"CompMetadataType",15547],[6,"MavEventErrorReason",15547],[6,"MavOdidDescType",15547],[6,"CanFilterOp",15547],[6,"ParamAck",15547],[6,"UavcanNodeHealth",15547],[6,"MavOdidUaType",15547],[6,"MavParamType",15547],[6,"MavOdidArmStatus",15547],[6,"MavOdidClassEu",15547],[6,"MavSensorOrientation",15547],[6,"MavCollisionAction",15547],[6,"OrbitYawBehaviour",15547],[6,"MavSeverity",15547],[6,"ActuatorConfiguration",15547],[6,"MavCollisionThreatLevel",15547],[6,"MavOdidOperatorIdType",15547],[6,"GpsFixType",15547],[6,"MavMode",15547],[6,"RcType",15547],[6,"MavEstimatorType",15547],[6,"CameraTrackingTargetData",15547],[6,"MotorTestThrottleType",15547],[6,"LandingTargetType",15547],[6,"MavDoRepositionFlags",15547],[6,"MavBatteryMode",15547],[6,"GimbalManagerFlags",15547],[6,"UavcanNodeMode",15547],[6,"MavResult",15547],[6,"MagCalStatus",15547],[5,"String",39194],[6,"MavMessage",27107],[5,"ICAROUS_KINEMATIC_BANDS_DATA",27107],[5,"ICAROUS_HEARTBEAT_DATA",27107],[6,"IcarousFmsState",27107],[6,"IcarousTrackBandTypes",27107],[5,"AdsbFlags",27254],[5,"UavionixAdsbOutRfSelect",27254],[5,"GimbalManagerCapFlags",27254],[5,"MavGeneratorStatusFlag",27254],[5,"GimbalDeviceCapFlags",27254],[5,"EscFailureFlags",27254],[5,"UavionixAdsbOutDynamicState",27254],[5,"MavModeFlag",27254],[5,"HlFailureFlag",27254],[5,"CameraCapFlags",27254],[5,"GpsInputIgnoreFlags",27254],[5,"TuneFormat",27254],[5,"UtmDataAvailFlags",27254],[5,"EstimatorStatusFlags",27254],[5,"MavEventCurrentSequenceFlags",27254],[5,"SerialControlFlag",27254],[5,"MavWinchStatusFlag",27254],[5,"HighresImuUpdatedFlags",27254],[5,"PositionTargetTypemask",27254],[5,"MavPowerStatus",27254],[5,"UavionixAdsbRfHealth",27254],[5,"AttitudeTargetTypemask",27254],[5,"MavProtocolCapability",27254],[5,"GimbalDeviceFlags",27254],[5,"HilSensorUpdatedFlags",27254],[5,"MavSysStatusSensor",27254],[5,"AisFlags",27254],[5,"GimbalDeviceErrorFlags",27254],[6,"MavMessage",27254],[5,"MOUNT_ORIENTATION_DATA",27254],[5,"PLAY_TUNE_DATA",27254],[5,"WIFI_CONFIG_AP_DATA",27254],[5,"GPS2_RAW_DATA",27254],[5,"NAMED_VALUE_FLOAT_DATA",27254],[5,"SCALED_PRESSURE_DATA",27254],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",27254],[5,"HIL_OPTICAL_FLOW_DATA",27254],[5,"HYGROMETER_SENSOR_DATA",27254],[5,"NAMED_VALUE_INT_DATA",27254],[5,"GPS_INPUT_DATA",27254],[5,"ALTITUDE_DATA",27254],[5,"COMPONENT_INFORMATION_DATA",27254],[5,"TERRAIN_REQUEST_DATA",27254],[5,"GLOBAL_POSITION_INT_COV_DATA",27254],[5,"CANFD_FRAME_DATA",27254],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",27254],[5,"PING_DATA",27254],[5,"UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA",27254],[5,"GPS_STATUS_DATA",27254],[5,"HIGHRES_IMU_DATA",27254],[5,"TERRAIN_REPORT_DATA",27254],[5,"VFR_HUD_DATA",27254],[5,"CAMERA_CAPTURE_STATUS_DATA",27254],[5,"SMART_BATTERY_INFO_DATA",27254],[5,"LOCAL_POSITION_NED_DATA",27254],[5,"CURRENT_EVENT_SEQUENCE_DATA",27254],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",27254],[5,"OPEN_DRONE_ID_SELF_ID_DATA",27254],[5,"MISSION_SET_CURRENT_DATA",27254],[5,"GPS2_RTK_DATA",27254],[5,"LOGGING_DATA_ACKED_DATA",27254],[5,"DATA_STREAM_DATA",27254],[5,"WHEEL_DISTANCE_DATA",27254],[5,"MISSION_CLEAR_ALL_DATA",27254],[5,"ISBD_LINK_STATUS_DATA",27254],[5,"SAFETY_ALLOWED_AREA_DATA",27254],[5,"MISSION_ITEM_DATA",27254],[5,"ACTUATOR_CONTROL_TARGET_DATA",27254],[5,"EXTENDED_SYS_STATE_DATA",27254],[5,"ENCAPSULATED_DATA_DATA",27254],[5,"RAW_IMU_DATA",27254],[5,"SCALED_PRESSURE3_DATA",27254],[5,"GPS_INJECT_DATA_DATA",27254],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",27254],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",27254],[5,"EFI_STATUS_DATA",27254],[5,"ATT_POS_MOCAP_DATA",27254],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",27254],[5,"LOG_REQUEST_DATA_DATA",27254],[5,"SCALED_IMU_DATA",27254],[5,"UTM_GLOBAL_POSITION_DATA",27254],[5,"VISION_SPEED_ESTIMATE_DATA",27254],[5,"PLAY_TUNE_V2_DATA",27254],[5,"CAMERA_INFORMATION_DATA",27254],[5,"OPTICAL_FLOW_DATA",27254],[5,"STATUSTEXT_DATA",27254],[5,"HIL_CONTROLS_DATA",27254],[5,"AIS_VESSEL_DATA",27254],[5,"RC_CHANNELS_SCALED_DATA",27254],[5,"UAVIONIX_ADSB_OUT_DYNAMIC_DATA",27254],[5,"UAVIONIX_ADSB_OUT_CFG_DATA",27254],[5,"BUTTON_CHANGE_DATA",27254],[5,"GIMBAL_MANAGER_STATUS_DATA",27254],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",27254],[5,"MISSION_ITEM_REACHED_DATA",27254],[5,"FILE_TRANSFER_PROTOCOL_DATA",27254],[5,"COLLISION_DATA",27254],[5,"ESTIMATOR_STATUS_DATA",27254],[5,"MEMORY_VECT_DATA",27254],[5,"COMMAND_CANCEL_DATA",27254],[5,"REQUEST_EVENT_DATA",27254],[5,"HIL_SENSOR_DATA",27254],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",27254],[5,"OPEN_DRONE_ID_LOCATION_DATA",27254],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",27254],[5,"RAW_PRESSURE_DATA",27254],[5,"ORBIT_EXECUTION_STATUS_DATA",27254],[5,"AUTH_KEY_DATA",27254],[5,"V2_EXTENSION_DATA",27254],[5,"HIL_GPS_DATA",27254],[5,"VIDEO_STREAM_STATUS_DATA",27254],[5,"POSITION_TARGET_LOCAL_NED_DATA",27254],[5,"ATTITUDE_QUATERNION_COV_DATA",27254],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",27254],[5,"LANDING_TARGET_DATA",27254],[5,"OPEN_DRONE_ID_SYSTEM_DATA",27254],[5,"CAN_FRAME_DATA",27254],[5,"HIGH_LATENCY2_DATA",27254],[5,"SUPPORTED_TUNES_DATA",27254],[5,"HIL_ACTUATOR_CONTROLS_DATA",27254],[5,"CAMERA_IMAGE_CAPTURED_DATA",27254],[5,"RC_CHANNELS_DATA",27254],[5,"GPS_GLOBAL_ORIGIN_DATA",27254],[5,"MAG_CAL_REPORT_DATA",27254],[5,"SET_HOME_POSITION_DATA",27254],[5,"WIND_COV_DATA",27254],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",27254],[5,"EVENT_DATA",27254],[5,"DEBUG_DATA",27254],[5,"SCALED_IMU2_DATA",27254],[5,"CONTROL_SYSTEM_STATE_DATA",27254],[5,"GPS_RAW_INT_DATA",27254],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",27254],[5,"GIMBAL_MANAGER_INFORMATION_DATA",27254],[5,"LINK_NODE_STATUS_DATA",27254],[5,"LOG_ERASE_DATA",27254],[5,"PROTOCOL_VERSION_DATA",27254],[5,"VIDEO_STREAM_INFORMATION_DATA",27254],[5,"HEARTBEAT_DATA",27254],[5,"CAMERA_SETTINGS_DATA",27254],[5,"GPS_RTK_DATA",27254],[5,"LOGGING_DATA_DATA",27254],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",27254],[5,"ATTITUDE_TARGET_DATA",27254],[5,"DEBUG_FLOAT_ARRAY_DATA",27254],[5,"ODOMETRY_DATA",27254],[5,"SERIAL_CONTROL_DATA",27254],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",27254],[5,"ATTITUDE_QUATERNION_DATA",27254],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",27254],[5,"LOG_DATA_DATA",27254],[5,"MANUAL_SETPOINT_DATA",27254],[5,"WINCH_STATUS_DATA",27254],[5,"PARAM_EXT_REQUEST_LIST_DATA",27254],[5,"SET_ATTITUDE_TARGET_DATA",27254],[5,"HIL_RC_INPUTS_RAW_DATA",27254],[5,"RAW_RPM_DATA",27254],[5,"CAN_FILTER_MODIFY_DATA",27254],[5,"LOGGING_ACK_DATA",27254],[5,"PARAM_EXT_VALUE_DATA",27254],[5,"COMPONENT_METADATA_DATA",27254],[5,"FOLLOW_TARGET_DATA",27254],[5,"FLIGHT_INFORMATION_DATA",27254],[5,"PARAM_EXT_ACK_DATA",27254],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",27254],[5,"MISSION_REQUEST_INT_DATA",27254],[5,"SIM_STATE_DATA",27254],[5,"MISSION_REQUEST_DATA",27254],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",27254],[5,"GLOBAL_POSITION_INT_DATA",27254],[5,"HIL_STATE_DATA",27254],[5,"GENERATOR_STATUS_DATA",27254],[5,"LOG_REQUEST_END_DATA",27254],[5,"CAMERA_FOV_STATUS_DATA",27254],[5,"HIGH_LATENCY_DATA",27254],[5,"ONBOARD_COMPUTER_STATUS_DATA",27254],[5,"UAVCAN_NODE_STATUS_DATA",27254],[5,"HIL_STATE_QUATERNION_DATA",27254],[5,"SETUP_SIGNING_DATA",27254],[5,"BATTERY_STATUS_DATA",27254],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",27254],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",27254],[5,"PARAM_EXT_SET_DATA",27254],[5,"SYSTEM_TIME_DATA",27254],[5,"RESPONSE_EVENT_ERROR_DATA",27254],[5,"RESOURCE_REQUEST_DATA",27254],[5,"AUTOPILOT_VERSION_DATA",27254],[5,"TIMESYNC_DATA",27254],[5,"MISSION_ITEM_INT_DATA",27254],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",27254],[5,"VIBRATION_DATA",27254],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",27254],[5,"DISTANCE_SENSOR_DATA",27254],[5,"SCALED_PRESSURE2_DATA",27254],[5,"MESSAGE_INTERVAL_DATA",27254],[5,"NAV_CONTROLLER_OUTPUT_DATA",27254],[5,"LOG_REQUEST_LIST_DATA",27254],[5,"MISSION_ACK_DATA",27254],[5,"COMMAND_ACK_DATA",27254],[5,"SET_MODE_DATA",27254],[5,"CAMERA_TRIGGER_DATA",27254],[5,"POSITION_TARGET_GLOBAL_INT_DATA",27254],[5,"ATTITUDE_DATA",27254],[5,"OBSTACLE_DISTANCE_DATA",27254],[5,"PARAM_REQUEST_LIST_DATA",27254],[5,"CELLULAR_CONFIG_DATA",27254],[5,"PARAM_EXT_REQUEST_READ_DATA",27254],[5,"RC_CHANNELS_OVERRIDE_DATA",27254],[5,"REQUEST_DATA_STREAM_DATA",27254],[5,"DEBUG_VECT_DATA",27254],[5,"UAVCAN_NODE_INFO_DATA",27254],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",27254],[5,"TERRAIN_CHECK_DATA",27254],[5,"VICON_POSITION_ESTIMATE_DATA",27254],[5,"CELLULAR_STATUS_DATA",27254],[5,"ADSB_VEHICLE_DATA",27254],[5,"TERRAIN_DATA_DATA",27254],[5,"SAFETY_SET_ALLOWED_AREA_DATA",27254],[5,"ESC_STATUS_DATA",27254],[5,"ESC_INFO_DATA",27254],[5,"GPS_RTCM_DATA_DATA",27254],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",27254],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",27254],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",27254],[5,"TUNNEL_DATA",27254],[5,"MISSION_REQUEST_LIST_DATA",27254],[5,"MISSION_COUNT_DATA",27254],[5,"SERVO_OUTPUT_RAW_DATA",27254],[5,"ACTUATOR_OUTPUT_STATUS_DATA",27254],[5,"HOME_POSITION_DATA",27254],[5,"FENCE_STATUS_DATA",27254],[5,"SYS_STATUS_DATA",27254],[5,"VISION_POSITION_ESTIMATE_DATA",27254],[5,"RC_CHANNELS_RAW_DATA",27254],[5,"CHANGE_OPERATOR_CONTROL_DATA",27254],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",27254],[5,"TIME_ESTIMATE_TO_TARGET_DATA",27254],[5,"OPTICAL_FLOW_RAD_DATA",27254],[5,"COMMAND_LONG_DATA",27254],[5,"COMMAND_INT_DATA",27254],[5,"PARAM_MAP_RC_DATA",27254],[5,"PARAM_REQUEST_READ_DATA",27254],[5,"GIMBAL_DEVICE_INFORMATION_DATA",27254],[5,"STORAGE_INFORMATION_DATA",27254],[5,"SCALED_IMU3_DATA",27254],[5,"PARAM_SET_DATA",27254],[5,"POWER_STATUS_DATA",27254],[5,"LOCAL_POSITION_NED_COV_DATA",27254],[5,"PARAM_VALUE_DATA",27254],[5,"RADIO_STATUS_DATA",27254],[5,"MISSION_CURRENT_DATA",27254],[5,"MANUAL_CONTROL_DATA",27254],[5,"LOG_ENTRY_DATA",27254],[6,"FailureUnit",27254],[6,"SerialControlDev",27254],[6,"MavSensorOrientation",27254],[6,"MavOdidAuthType",27254],[6,"MavOdidDescType",27254],[6,"CameraZoomType",27254],[6,"AdsbEmitterType",27254],[6,"MavOdidClassificationType",27254],[6,"UavionixAdsbOutCfgGpsOffsetLat",27254],[6,"MavFtpOpcode",27254],[6,"MavOdidArmStatus",27254],[6,"CameraTrackingStatusFlags",27254],[6,"MavBatteryMode",27254],[6,"MavParamType",27254],[6,"CompMetadataType",27254],[6,"VideoStreamType",27254],[6,"MavOdidHeightRef",27254],[6,"MavResult",27254],[6,"MavVtolState",27254],[6,"RtkBaselineCoordinateSystem",27254],[6,"PreflightStorageMissionAction",27254],[6,"UavcanNodeMode",27254],[6,"StorageStatus",27254],[6,"MavOdidOperatorLocationType",27254],[6,"VideoStreamStatusFlags",27254],[6,"AisType",27254],[6,"CameraTrackingMode",27254],[6,"MavDataStream",27254],[6,"MavOdidClassEu",27254],[6,"MavlinkDataStreamType",27254],[6,"MavEstimatorType",27254],[6,"CanFilterOp",27254],[6,"MavBatteryFault",27254],[6,"NavVtolLandOptions",27254],[6,"CellularConfigResponse",27254],[6,"MavMissionResult",27254],[6,"MavBatteryFunction",27254],[6,"WifiConfigApMode",27254],[6,"WifiConfigApResponse",27254],[6,"RcType",27254],[6,"CellularNetworkFailedReason",27254],[6,"ActuatorOutputFunction",27254],[6,"MavOdidStatus",27254],[6,"MavBatteryChargeState",27254],[6,"ActuatorConfiguration",27254],[6,"MagCalStatus",27254],[6,"VtolTransitionHeading",27254],[6,"MavAutopilot",27254],[6,"CameraMode",27254],[6,"PrecisionLandMode",27254],[6,"GimbalManagerFlags",27254],[6,"UavionixAdsbEmergencyStatus",27254],[6,"MavType",27254],[6,"MavComponent",27254],[6,"MavMode",27254],[6,"OrbitYawBehaviour",27254],[6,"PreflightStorageParameterAction",27254],[6,"MavFtpErr",27254],[6,"CellularStatusFlag",27254],[6,"MavState",27254],[6,"CameraTrackingTargetData",27254],[6,"GripperActions",27254],[6,"FenceAction",27254],[6,"MavMountMode",27254],[6,"MavBatteryType",27254],[6,"MavEventErrorReason",27254],[6,"FirmwareVersionType",27254],[6,"MavSeverity",27254],[6,"ParachuteAction",27254],[6,"UavcanNodeHealth",27254],[6,"MavGoto",27254],[6,"MavModeFlagDecodePosition",27254],[6,"MavOdidUaType",27254],[6,"MavOdidSpeedAcc",27254],[6,"UavionixAdsbOutCfgGpsOffsetLon",27254],[6,"CellularNetworkRadioType",27254],[6,"MavMissionType",27254],[6,"MavFrame",27254],[6,"AutotuneAxis",27254],[6,"MavOdidVerAcc",27254],[6,"MavOdidIdType",27254],[6,"UavionixAdsbOutCfgAircraftSize",27254],[6,"MavCollisionSrc",27254],[6,"FenceMitigate",27254],[6,"FenceBreach",27254],[6,"MavOdidOperatorIdType",27254],[6,"MavOdidTimeAcc",27254],[6,"SetFocusType",27254],[6,"LandingTargetType",27254],[6,"AdsbAltitudeType",27254],[6,"MavRoi",27254],[6,"GpsFixType",27254],[6,"StorageUsageFlag",27254],[6,"ParamAck",27254],[6,"MavArmAuthDeniedReason",27254],[6,"UavionixAdsbOutDynamicGpsFix",27254],[6,"MavSysStatusSensorExtended",27254],[6,"EscConnectionType",27254],[6,"MavTunnelPayloadType",27254],[6,"MavOdidCategoryEu",27254],[6,"MavDoRepositionFlags",27254],[6,"MavCollisionThreatLevel",27254],[6,"MotorTestThrottleType",27254],[6,"MavLandedState",27254],[6,"MavDistanceSensor",27254],[6,"MavCmd",27254],[6,"FailureType",27254],[6,"MavCollisionAction",27254],[6,"WinchActions",27254],[6,"MissionState",27254],[6,"MavParamExtType",27254],[6,"MavCmdAck",27254],[6,"AisNavStatus",27254],[6,"UtmFlightState",27254],[6,"MavOdidHorAcc",27254],[6,"StorageType",27254],[6,"MotorTestOrder",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":[[8658,"impl-UpperHex-for-UavionixAdsbOutDynamicState"],[8659,"impl-Octal-for-UavionixAdsbOutDynamicState"],[8660,"impl-Debug-for-UavionixAdsbOutDynamicState"],[8661,"impl-LowerHex-for-UavionixAdsbOutDynamicState"],[8662,"impl-Binary-for-UavionixAdsbOutDynamicState"],[8665,"impl-UpperHex-for-MavGeneratorStatusFlag"],[8666,"impl-LowerHex-for-MavGeneratorStatusFlag"],[8667,"impl-Debug-for-MavGeneratorStatusFlag"],[8668,"impl-Binary-for-MavGeneratorStatusFlag"],[8669,"impl-Octal-for-MavGeneratorStatusFlag"],[8672,"impl-UpperHex-for-AisFlags"],[8673,"impl-Debug-for-AisFlags"],[8674,"impl-Binary-for-AisFlags"],[8675,"impl-LowerHex-for-AisFlags"],[8676,"impl-Octal-for-AisFlags"],[8685,"impl-UpperHex-for-PositionTargetTypemask"],[8686,"impl-Octal-for-PositionTargetTypemask"],[8687,"impl-LowerHex-for-PositionTargetTypemask"],[8688,"impl-Debug-for-PositionTargetTypemask"],[8689,"impl-Binary-for-PositionTargetTypemask"],[8699,"impl-Octal-for-AdsbFlags"],[8700,"impl-Binary-for-AdsbFlags"],[8701,"impl-LowerHex-for-AdsbFlags"],[8702,"impl-Debug-for-AdsbFlags"],[8703,"impl-UpperHex-for-AdsbFlags"],[8709,"impl-Octal-for-GoproHeartbeatFlags"],[8710,"impl-Binary-for-GoproHeartbeatFlags"],[8711,"impl-Debug-for-GoproHeartbeatFlags"],[8712,"impl-UpperHex-for-GoproHeartbeatFlags"],[8713,"impl-LowerHex-for-GoproHeartbeatFlags"],[8717,"impl-LowerHex-for-GimbalManagerCapFlags"],[8718,"impl-Octal-for-GimbalManagerCapFlags"],[8719,"impl-Debug-for-GimbalManagerCapFlags"],[8720,"impl-UpperHex-for-GimbalManagerCapFlags"],[8721,"impl-Binary-for-GimbalManagerCapFlags"],[8726,"impl-UpperHex-for-LimitModule"],[8727,"impl-Octal-for-LimitModule"],[8728,"impl-Binary-for-LimitModule"],[8729,"impl-Debug-for-LimitModule"],[8730,"impl-LowerHex-for-LimitModule"],[8731,"impl-Binary-for-TuneFormat"],[8732,"impl-Debug-for-TuneFormat"],[8733,"impl-LowerHex-for-TuneFormat"],[8734,"impl-UpperHex-for-TuneFormat"],[8735,"impl-Octal-for-TuneFormat"],[8739,"impl-UpperHex-for-GimbalDeviceFlags"],[8740,"impl-Octal-for-GimbalDeviceFlags"],[8741,"impl-Binary-for-GimbalDeviceFlags"],[8742,"impl-LowerHex-for-GimbalDeviceFlags"],[8743,"impl-Debug-for-GimbalDeviceFlags"],[8746,"impl-Debug-for-HlFailureFlag"],[8747,"impl-Binary-for-HlFailureFlag"],[8748,"impl-Octal-for-HlFailureFlag"],[8749,"impl-UpperHex-for-HlFailureFlag"],[8750,"impl-LowerHex-for-HlFailureFlag"],[8760,"impl-Binary-for-UavionixAdsbRfHealth"],[8761,"impl-UpperHex-for-UavionixAdsbRfHealth"],[8762,"impl-LowerHex-for-UavionixAdsbRfHealth"],[8763,"impl-Debug-for-UavionixAdsbRfHealth"],[8764,"impl-Octal-for-UavionixAdsbRfHealth"],[8768,"impl-Binary-for-MavModeFlag"],[8769,"impl-Octal-for-MavModeFlag"],[8770,"impl-UpperHex-for-MavModeFlag"],[8771,"impl-Debug-for-MavModeFlag"],[8772,"impl-LowerHex-for-MavModeFlag"],[8776,"impl-LowerHex-for-MavWinchStatusFlag"],[8777,"impl-Debug-for-MavWinchStatusFlag"],[8778,"impl-Binary-for-MavWinchStatusFlag"],[8779,"impl-Octal-for-MavWinchStatusFlag"],[8780,"impl-UpperHex-for-MavWinchStatusFlag"],[8795,"impl-UpperHex-for-GimbalDeviceCapFlags"],[8796,"impl-LowerHex-for-GimbalDeviceCapFlags"],[8797,"impl-Octal-for-GimbalDeviceCapFlags"],[8798,"impl-Binary-for-GimbalDeviceCapFlags"],[8799,"impl-Debug-for-GimbalDeviceCapFlags"],[8802,"impl-UpperHex-for-UtmDataAvailFlags"],[8803,"impl-Binary-for-UtmDataAvailFlags"],[8804,"impl-LowerHex-for-UtmDataAvailFlags"],[8805,"impl-Octal-for-UtmDataAvailFlags"],[8806,"impl-Debug-for-UtmDataAvailFlags"],[8815,"impl-Octal-for-MavSysStatusSensor"],[8816,"impl-LowerHex-for-MavSysStatusSensor"],[8817,"impl-Debug-for-MavSysStatusSensor"],[8818,"impl-UpperHex-for-MavSysStatusSensor"],[8819,"impl-Binary-for-MavSysStatusSensor"],[8821,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[8822,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[8823,"impl-Debug-for-MavEventCurrentSequenceFlags"],[8824,"impl-Binary-for-MavEventCurrentSequenceFlags"],[8825,"impl-Octal-for-MavEventCurrentSequenceFlags"],[8832,"impl-Octal-for-RallyFlags"],[8833,"impl-Debug-for-RallyFlags"],[8834,"impl-UpperHex-for-RallyFlags"],[8835,"impl-Binary-for-RallyFlags"],[8836,"impl-LowerHex-for-RallyFlags"],[8837,"impl-Octal-for-AttitudeTargetTypemask"],[8838,"impl-Debug-for-AttitudeTargetTypemask"],[8839,"impl-Binary-for-AttitudeTargetTypemask"],[8840,"impl-UpperHex-for-AttitudeTargetTypemask"],[8841,"impl-LowerHex-for-AttitudeTargetTypemask"],[8845,"impl-LowerHex-for-MavPowerStatus"],[8846,"impl-Binary-for-MavPowerStatus"],[8847,"impl-Debug-for-MavPowerStatus"],[8848,"impl-Octal-for-MavPowerStatus"],[8849,"impl-UpperHex-for-MavPowerStatus"],[8852,"impl-Octal-for-EstimatorStatusFlags"],[8853,"impl-Debug-for-EstimatorStatusFlags"],[8854,"impl-LowerHex-for-EstimatorStatusFlags"],[8855,"impl-Binary-for-EstimatorStatusFlags"],[8856,"impl-UpperHex-for-EstimatorStatusFlags"],[8867,"impl-Binary-for-HilSensorUpdatedFlags"],[8868,"impl-Debug-for-HilSensorUpdatedFlags"],[8869,"impl-UpperHex-for-HilSensorUpdatedFlags"],[8870,"impl-Octal-for-HilSensorUpdatedFlags"],[8871,"impl-LowerHex-for-HilSensorUpdatedFlags"],[8872,"impl-Octal-for-EscFailureFlags"],[8873,"impl-UpperHex-for-EscFailureFlags"],[8874,"impl-Debug-for-EscFailureFlags"],[8875,"impl-Binary-for-EscFailureFlags"],[8876,"impl-LowerHex-for-EscFailureFlags"],[8881,"impl-Octal-for-CameraCapFlags"],[8882,"impl-Binary-for-CameraCapFlags"],[8883,"impl-LowerHex-for-CameraCapFlags"],[8884,"impl-UpperHex-for-CameraCapFlags"],[8885,"impl-Debug-for-CameraCapFlags"],[8889,"impl-Octal-for-HighresImuUpdatedFlags"],[8890,"impl-LowerHex-for-HighresImuUpdatedFlags"],[8891,"impl-UpperHex-for-HighresImuUpdatedFlags"],[8892,"impl-Debug-for-HighresImuUpdatedFlags"],[8893,"impl-Binary-for-HighresImuUpdatedFlags"],[8897,"impl-LowerHex-for-SerialControlFlag"],[8898,"impl-Binary-for-SerialControlFlag"],[8899,"impl-Octal-for-SerialControlFlag"],[8900,"impl-UpperHex-for-SerialControlFlag"],[8901,"impl-Debug-for-SerialControlFlag"],[8903,"impl-UpperHex-for-UavionixAdsbOutRfSelect"],[8904,"impl-LowerHex-for-UavionixAdsbOutRfSelect"],[8905,"impl-Debug-for-UavionixAdsbOutRfSelect"],[8906,"impl-Octal-for-UavionixAdsbOutRfSelect"],[8907,"impl-Binary-for-UavionixAdsbOutRfSelect"],[8920,"impl-UpperHex-for-EkfStatusFlags"],[8921,"impl-Octal-for-EkfStatusFlags"],[8922,"impl-Binary-for-EkfStatusFlags"],[8923,"impl-Debug-for-EkfStatusFlags"],[8924,"impl-LowerHex-for-EkfStatusFlags"],[8934,"impl-Debug-for-GimbalDeviceErrorFlags"],[8935,"impl-Octal-for-GimbalDeviceErrorFlags"],[8936,"impl-Binary-for-GimbalDeviceErrorFlags"],[8937,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[8938,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[8949,"impl-Binary-for-GpsInputIgnoreFlags"],[8950,"impl-LowerHex-for-GpsInputIgnoreFlags"],[8951,"impl-UpperHex-for-GpsInputIgnoreFlags"],[8952,"impl-Debug-for-GpsInputIgnoreFlags"],[8953,"impl-Octal-for-GpsInputIgnoreFlags"],[8962,"impl-UpperHex-for-MavProtocolCapability"],[8963,"impl-Debug-for-MavProtocolCapability"],[8964,"impl-Octal-for-MavProtocolCapability"],[8965,"impl-LowerHex-for-MavProtocolCapability"],[8966,"impl-Binary-for-MavProtocolCapability"],[21923,"impl-Octal-for-MavEventCurrentSequenceFlags"],[21924,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[21925,"impl-Binary-for-MavEventCurrentSequenceFlags"],[21926,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[21927,"impl-Debug-for-MavEventCurrentSequenceFlags"],[21933,"impl-LowerHex-for-SerialControlFlag"],[21934,"impl-Octal-for-SerialControlFlag"],[21935,"impl-Binary-for-SerialControlFlag"],[21936,"impl-Debug-for-SerialControlFlag"],[21937,"impl-UpperHex-for-SerialControlFlag"],[21952,"impl-LowerHex-for-AdsbFlags"],[21953,"impl-UpperHex-for-AdsbFlags"],[21954,"impl-Octal-for-AdsbFlags"],[21955,"impl-Binary-for-AdsbFlags"],[21956,"impl-Debug-for-AdsbFlags"],[21958,"impl-UpperHex-for-HilSensorUpdatedFlags"],[21959,"impl-Binary-for-HilSensorUpdatedFlags"],[21960,"impl-LowerHex-for-HilSensorUpdatedFlags"],[21961,"impl-Debug-for-HilSensorUpdatedFlags"],[21962,"impl-Octal-for-HilSensorUpdatedFlags"],[21965,"impl-Octal-for-EscFailureFlags"],[21966,"impl-LowerHex-for-EscFailureFlags"],[21967,"impl-Debug-for-EscFailureFlags"],[21968,"impl-UpperHex-for-EscFailureFlags"],[21969,"impl-Binary-for-EscFailureFlags"],[21974,"impl-Octal-for-MavSysStatusSensor"],[21975,"impl-Debug-for-MavSysStatusSensor"],[21976,"impl-Binary-for-MavSysStatusSensor"],[21977,"impl-UpperHex-for-MavSysStatusSensor"],[21978,"impl-LowerHex-for-MavSysStatusSensor"],[21980,"impl-Binary-for-MavProtocolCapability"],[21981,"impl-Debug-for-MavProtocolCapability"],[21982,"impl-LowerHex-for-MavProtocolCapability"],[21983,"impl-Octal-for-MavProtocolCapability"],[21984,"impl-UpperHex-for-MavProtocolCapability"],[21986,"impl-Binary-for-MavWinchStatusFlag"],[21987,"impl-Octal-for-MavWinchStatusFlag"],[21988,"impl-Debug-for-MavWinchStatusFlag"],[21989,"impl-UpperHex-for-MavWinchStatusFlag"],[21990,"impl-LowerHex-for-MavWinchStatusFlag"],[21991,"impl-UpperHex-for-UtmDataAvailFlags"],[21992,"impl-Debug-for-UtmDataAvailFlags"],[21993,"impl-Octal-for-UtmDataAvailFlags"],[21994,"impl-Binary-for-UtmDataAvailFlags"],[21995,"impl-LowerHex-for-UtmDataAvailFlags"],[21998,"impl-UpperHex-for-PositionTargetTypemask"],[21999,"impl-LowerHex-for-PositionTargetTypemask"],[22000,"impl-Octal-for-PositionTargetTypemask"],[22001,"impl-Binary-for-PositionTargetTypemask"],[22002,"impl-Debug-for-PositionTargetTypemask"],[22003,"impl-LowerHex-for-HighresImuUpdatedFlags"],[22004,"impl-Octal-for-HighresImuUpdatedFlags"],[22005,"impl-Debug-for-HighresImuUpdatedFlags"],[22006,"impl-UpperHex-for-HighresImuUpdatedFlags"],[22007,"impl-Binary-for-HighresImuUpdatedFlags"],[22011,"impl-Binary-for-GpsInputIgnoreFlags"],[22012,"impl-UpperHex-for-GpsInputIgnoreFlags"],[22013,"impl-Octal-for-GpsInputIgnoreFlags"],[22014,"impl-LowerHex-for-GpsInputIgnoreFlags"],[22015,"impl-Debug-for-GpsInputIgnoreFlags"],[22022,"impl-LowerHex-for-EstimatorStatusFlags"],[22023,"impl-UpperHex-for-EstimatorStatusFlags"],[22024,"impl-Binary-for-EstimatorStatusFlags"],[22025,"impl-Octal-for-EstimatorStatusFlags"],[22026,"impl-Debug-for-EstimatorStatusFlags"],[22028,"impl-LowerHex-for-GimbalDeviceFlags"],[22029,"impl-Octal-for-GimbalDeviceFlags"],[22030,"impl-Binary-for-GimbalDeviceFlags"],[22031,"impl-Debug-for-GimbalDeviceFlags"],[22032,"impl-UpperHex-for-GimbalDeviceFlags"],[22034,"impl-Octal-for-GimbalDeviceErrorFlags"],[22035,"impl-Binary-for-GimbalDeviceErrorFlags"],[22036,"impl-Debug-for-GimbalDeviceErrorFlags"],[22037,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[22038,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[22045,"impl-LowerHex-for-GimbalDeviceCapFlags"],[22046,"impl-Debug-for-GimbalDeviceCapFlags"],[22047,"impl-Binary-for-GimbalDeviceCapFlags"],[22048,"impl-Octal-for-GimbalDeviceCapFlags"],[22049,"impl-UpperHex-for-GimbalDeviceCapFlags"],[22053,"impl-Octal-for-MavGeneratorStatusFlag"],[22054,"impl-Debug-for-MavGeneratorStatusFlag"],[22055,"impl-LowerHex-for-MavGeneratorStatusFlag"],[22056,"impl-Binary-for-MavGeneratorStatusFlag"],[22057,"impl-UpperHex-for-MavGeneratorStatusFlag"],[22065,"impl-LowerHex-for-GimbalManagerCapFlags"],[22066,"impl-Binary-for-GimbalManagerCapFlags"],[22067,"impl-UpperHex-for-GimbalManagerCapFlags"],[22068,"impl-Octal-for-GimbalManagerCapFlags"],[22069,"impl-Debug-for-GimbalManagerCapFlags"],[22097,"impl-UpperHex-for-HlFailureFlag"],[22098,"impl-Octal-for-HlFailureFlag"],[22099,"impl-Debug-for-HlFailureFlag"],[22100,"impl-LowerHex-for-HlFailureFlag"],[22101,"impl-Binary-for-HlFailureFlag"],[22103,"impl-Binary-for-MavModeFlag"],[22104,"impl-LowerHex-for-MavModeFlag"],[22105,"impl-Debug-for-MavModeFlag"],[22106,"impl-Octal-for-MavModeFlag"],[22107,"impl-UpperHex-for-MavModeFlag"],[22110,"impl-LowerHex-for-CameraCapFlags"],[22111,"impl-Debug-for-CameraCapFlags"],[22112,"impl-Octal-for-CameraCapFlags"],[22113,"impl-Binary-for-CameraCapFlags"],[22114,"impl-UpperHex-for-CameraCapFlags"],[22116,"impl-LowerHex-for-MavPowerStatus"],[22117,"impl-Binary-for-MavPowerStatus"],[22118,"impl-Octal-for-MavPowerStatus"],[22119,"impl-UpperHex-for-MavPowerStatus"],[22120,"impl-Debug-for-MavPowerStatus"],[22123,"impl-UpperHex-for-TuneFormat"],[22124,"impl-Debug-for-TuneFormat"],[22125,"impl-LowerHex-for-TuneFormat"],[22126,"impl-Binary-for-TuneFormat"],[22127,"impl-Octal-for-TuneFormat"],[22132,"impl-Binary-for-AisFlags"],[22133,"impl-Octal-for-AisFlags"],[22134,"impl-UpperHex-for-AisFlags"],[22135,"impl-LowerHex-for-AisFlags"],[22136,"impl-Debug-for-AisFlags"],[22140,"impl-Octal-for-AttitudeTargetTypemask"],[22141,"impl-Binary-for-AttitudeTargetTypemask"],[22142,"impl-LowerHex-for-AttitudeTargetTypemask"],[22143,"impl-UpperHex-for-AttitudeTargetTypemask"],[22144,"impl-Debug-for-AttitudeTargetTypemask"],[27075,"impl-Debug-for-ParserError"],[27076,"impl-Display-for-ParserError"],[27077,"impl-Display-for-MessageReadError"],[27078,"impl-Debug-for-MessageReadError"],[27079,"impl-Display-for-MessageWriteError"],[27080,"impl-Debug-for-MessageWriteError"],[27082,"impl-From%3CError%3E-for-MessageReadError"],[27083,"impl-From%3CParserError%3E-for-MessageReadError"],[33843,"impl-LowerHex-for-AdsbFlags"],[33844,"impl-UpperHex-for-AdsbFlags"],[33845,"impl-Binary-for-AdsbFlags"],[33846,"impl-Debug-for-AdsbFlags"],[33847,"impl-Octal-for-AdsbFlags"],[33849,"impl-LowerHex-for-UavionixAdsbOutRfSelect"],[33850,"impl-Binary-for-UavionixAdsbOutRfSelect"],[33851,"impl-Debug-for-UavionixAdsbOutRfSelect"],[33852,"impl-UpperHex-for-UavionixAdsbOutRfSelect"],[33853,"impl-Octal-for-UavionixAdsbOutRfSelect"],[33855,"impl-Debug-for-GimbalManagerCapFlags"],[33856,"impl-Octal-for-GimbalManagerCapFlags"],[33857,"impl-UpperHex-for-GimbalManagerCapFlags"],[33858,"impl-LowerHex-for-GimbalManagerCapFlags"],[33859,"impl-Binary-for-GimbalManagerCapFlags"],[33862,"impl-UpperHex-for-MavGeneratorStatusFlag"],[33863,"impl-Debug-for-MavGeneratorStatusFlag"],[33864,"impl-Octal-for-MavGeneratorStatusFlag"],[33865,"impl-LowerHex-for-MavGeneratorStatusFlag"],[33866,"impl-Binary-for-MavGeneratorStatusFlag"],[33867,"impl-Binary-for-GimbalDeviceCapFlags"],[33868,"impl-Debug-for-GimbalDeviceCapFlags"],[33869,"impl-UpperHex-for-GimbalDeviceCapFlags"],[33870,"impl-LowerHex-for-GimbalDeviceCapFlags"],[33871,"impl-Octal-for-GimbalDeviceCapFlags"],[33876,"impl-Debug-for-EscFailureFlags"],[33877,"impl-Octal-for-EscFailureFlags"],[33878,"impl-LowerHex-for-EscFailureFlags"],[33879,"impl-UpperHex-for-EscFailureFlags"],[33880,"impl-Binary-for-EscFailureFlags"],[33883,"impl-Debug-for-UavionixAdsbOutDynamicState"],[33884,"impl-Octal-for-UavionixAdsbOutDynamicState"],[33885,"impl-LowerHex-for-UavionixAdsbOutDynamicState"],[33886,"impl-Binary-for-UavionixAdsbOutDynamicState"],[33887,"impl-UpperHex-for-UavionixAdsbOutDynamicState"],[33899,"impl-Debug-for-MavModeFlag"],[33900,"impl-Binary-for-MavModeFlag"],[33901,"impl-Octal-for-MavModeFlag"],[33902,"impl-LowerHex-for-MavModeFlag"],[33903,"impl-UpperHex-for-MavModeFlag"],[33907,"impl-Debug-for-HlFailureFlag"],[33908,"impl-LowerHex-for-HlFailureFlag"],[33909,"impl-UpperHex-for-HlFailureFlag"],[33910,"impl-Binary-for-HlFailureFlag"],[33911,"impl-Octal-for-HlFailureFlag"],[33916,"impl-Debug-for-CameraCapFlags"],[33917,"impl-Octal-for-CameraCapFlags"],[33918,"impl-Binary-for-CameraCapFlags"],[33919,"impl-LowerHex-for-CameraCapFlags"],[33920,"impl-UpperHex-for-CameraCapFlags"],[33921,"impl-LowerHex-for-GpsInputIgnoreFlags"],[33922,"impl-Octal-for-GpsInputIgnoreFlags"],[33923,"impl-Binary-for-GpsInputIgnoreFlags"],[33924,"impl-Debug-for-GpsInputIgnoreFlags"],[33925,"impl-UpperHex-for-GpsInputIgnoreFlags"],[33926,"impl-Octal-for-TuneFormat"],[33927,"impl-UpperHex-for-TuneFormat"],[33928,"impl-Binary-for-TuneFormat"],[33929,"impl-Debug-for-TuneFormat"],[33930,"impl-LowerHex-for-TuneFormat"],[33931,"impl-Binary-for-UtmDataAvailFlags"],[33932,"impl-Debug-for-UtmDataAvailFlags"],[33933,"impl-LowerHex-for-UtmDataAvailFlags"],[33934,"impl-UpperHex-for-UtmDataAvailFlags"],[33935,"impl-Octal-for-UtmDataAvailFlags"],[33941,"impl-Binary-for-EstimatorStatusFlags"],[33942,"impl-Debug-for-EstimatorStatusFlags"],[33943,"impl-Octal-for-EstimatorStatusFlags"],[33944,"impl-UpperHex-for-EstimatorStatusFlags"],[33945,"impl-LowerHex-for-EstimatorStatusFlags"],[33947,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[33948,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[33949,"impl-Binary-for-MavEventCurrentSequenceFlags"],[33950,"impl-Debug-for-MavEventCurrentSequenceFlags"],[33951,"impl-Octal-for-MavEventCurrentSequenceFlags"],[33952,"impl-UpperHex-for-SerialControlFlag"],[33953,"impl-Octal-for-SerialControlFlag"],[33954,"impl-LowerHex-for-SerialControlFlag"],[33955,"impl-Debug-for-SerialControlFlag"],[33956,"impl-Binary-for-SerialControlFlag"],[33960,"impl-Debug-for-MavWinchStatusFlag"],[33961,"impl-Octal-for-MavWinchStatusFlag"],[33962,"impl-UpperHex-for-MavWinchStatusFlag"],[33963,"impl-LowerHex-for-MavWinchStatusFlag"],[33964,"impl-Binary-for-MavWinchStatusFlag"],[33968,"impl-Octal-for-HighresImuUpdatedFlags"],[33969,"impl-Debug-for-HighresImuUpdatedFlags"],[33970,"impl-LowerHex-for-HighresImuUpdatedFlags"],[33971,"impl-UpperHex-for-HighresImuUpdatedFlags"],[33972,"impl-Binary-for-HighresImuUpdatedFlags"],[33975,"impl-LowerHex-for-PositionTargetTypemask"],[33976,"impl-Binary-for-PositionTargetTypemask"],[33977,"impl-Debug-for-PositionTargetTypemask"],[33978,"impl-Octal-for-PositionTargetTypemask"],[33979,"impl-UpperHex-for-PositionTargetTypemask"],[33996,"impl-UpperHex-for-MavPowerStatus"],[33997,"impl-Binary-for-MavPowerStatus"],[33998,"impl-LowerHex-for-MavPowerStatus"],[33999,"impl-Debug-for-MavPowerStatus"],[34000,"impl-Octal-for-MavPowerStatus"],[34009,"impl-UpperHex-for-UavionixAdsbRfHealth"],[34010,"impl-Binary-for-UavionixAdsbRfHealth"],[34011,"impl-LowerHex-for-UavionixAdsbRfHealth"],[34012,"impl-Octal-for-UavionixAdsbRfHealth"],[34013,"impl-Debug-for-UavionixAdsbRfHealth"],[34015,"impl-UpperHex-for-AttitudeTargetTypemask"],[34016,"impl-Octal-for-AttitudeTargetTypemask"],[34017,"impl-LowerHex-for-AttitudeTargetTypemask"],[34018,"impl-Debug-for-AttitudeTargetTypemask"],[34019,"impl-Binary-for-AttitudeTargetTypemask"],[34020,"impl-Binary-for-MavProtocolCapability"],[34021,"impl-LowerHex-for-MavProtocolCapability"],[34022,"impl-UpperHex-for-MavProtocolCapability"],[34023,"impl-Octal-for-MavProtocolCapability"],[34024,"impl-Debug-for-MavProtocolCapability"],[34038,"impl-Octal-for-GimbalDeviceFlags"],[34039,"impl-LowerHex-for-GimbalDeviceFlags"],[34040,"impl-Debug-for-GimbalDeviceFlags"],[34041,"impl-Binary-for-GimbalDeviceFlags"],[34042,"impl-UpperHex-for-GimbalDeviceFlags"],[34046,"impl-Binary-for-HilSensorUpdatedFlags"],[34047,"impl-UpperHex-for-HilSensorUpdatedFlags"],[34048,"impl-Debug-for-HilSensorUpdatedFlags"],[34049,"impl-Octal-for-HilSensorUpdatedFlags"],[34050,"impl-LowerHex-for-HilSensorUpdatedFlags"],[34054,"impl-Octal-for-MavSysStatusSensor"],[34055,"impl-LowerHex-for-MavSysStatusSensor"],[34056,"impl-Debug-for-MavSysStatusSensor"],[34057,"impl-UpperHex-for-MavSysStatusSensor"],[34058,"impl-Binary-for-MavSysStatusSensor"],[34061,"impl-Binary-for-AisFlags"],[34062,"impl-LowerHex-for-AisFlags"],[34063,"impl-Octal-for-AisFlags"],[34064,"impl-Debug-for-AisFlags"],[34065,"impl-UpperHex-for-AisFlags"],[34068,"impl-Debug-for-GimbalDeviceErrorFlags"],[34069,"impl-Octal-for-GimbalDeviceErrorFlags"],[34070,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[34071,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[34072,"impl-Binary-for-GimbalDeviceErrorFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPCFUgAAAAUACAAAAA0ABQAUABgALgADADMABAA5AAsASgACAE4AAgBSAAAAWAAMAGYAAgBtAAAAcwACAHcAAAB5AB4AmQAAAJ0AzA2KDnYAgQ8CAOQPSwhQGAYAdxhmBf4dFwA2HuYEZyX1AX0nDwDNJwAA+CnYAPEqHAEuLKED8C8+AG8wBACUMIkEPjXlBUQ7SQGPPA0AnjwHAKg8lApWR2YAIUgBAG5IIAaoTgEAw07wA81SDgD1UqYDTlhuAdZZDQAWWgAAsFuZAGNc7QBqXa4CMmAnAIxgBACqYGEDJWRSBJFoOAHLaQEAz2kAANNpUQAqagMAM2o0AGlqAQB0atkKanVnAEJ2AQCYdlAGBX0BACN9CQRJgRAAdoHLAwiHhAGpiA0A74gAAJqKmQBQi/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-Debug-for-BindGenError"],[39,"impl-Display-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{}}0{ElCh}{BhCh}2{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-Display-for-ParserError"],[220,"impl-Debug-for-ParserError"],[221,"impl-Debug-for-MessageReadError"],[222,"impl-Display-for-MessageReadError"],[223,"impl-Display-for-MessageWriteError"],[224,"impl-Debug-for-MessageWriteError"],[227,"impl-From%3CError%3E-for-MessageReadError"],[228,"impl-From%3CParserError%3E-for-MessageReadError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAANAAFgABAAQACAAAAA0AIgAxAAQANwALAEgAAgBMAAMAVQAMAGMAAgBqAAAAcwACAHcAAAB5AB8AnAACAKAADQCvAAcAuQAoAOQAAQDnAAAA6wAQAP0AAQAIAQIA"}],\ ["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="}],\ diff --git a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-a8e45179500dd27e/out/ardupilotmega.rs.html b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-a8e45179500dd27e/out/ardupilotmega.rs.html index 2e14f156c0..7467c0ffc3 100644 --- a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-a8e45179500dd27e/out/ardupilotmega.rs.html +++ b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-a8e45179500dd27e/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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 } } 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 } } 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 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 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 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 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 } } 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 } } 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 , 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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_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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { DEVICE_OP_READ_REPLY (DEVICE_OP_READ_REPLY_DATA) , HWSTATUS (HWSTATUS_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , PARAM_SET (PARAM_SET_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , BATTERY2 (BATTERY2_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , WIND (WIND_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA) , REMOTE_LOG_DATA_BLOCK (REMOTE_LOG_DATA_BLOCK_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , DEVICE_OP_WRITE_REPLY (DEVICE_OP_WRITE_REPLY_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , GPS2_RTK (GPS2_RTK_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , DATA64 (DATA64_DATA) , OSD_PARAM_CONFIG_REPLY (OSD_PARAM_CONFIG_REPLY_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , DIGICAM_CONTROL (DIGICAM_CONTROL_DATA) , AHRS3 (AHRS3_DATA) , ESC_TELEMETRY_9_TO_12 (ESC_TELEMETRY_9_TO_12_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , OSD_PARAM_CONFIG (OSD_PARAM_CONFIG_DATA) , DATA16 (DATA16_DATA) , FENCE_FETCH_POINT (FENCE_FETCH_POINT_DATA) , HEARTBEAT (HEARTBEAT_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , RADIO (RADIO_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , CUBEPILOT_FIRMWARE_UPDATE_RESP (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , HIL_GPS (HIL_GPS_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , SIM_STATE (SIM_STATE_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , EVENT (EVENT_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , COMPASSMOT_STATUS (COMPASSMOT_STATUS_DATA) , GIMBAL_REPORT (GIMBAL_REPORT_DATA) , RANGEFINDER (RANGEFINDER_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , TIMESYNC (TIMESYNC_DATA) , LED_CONTROL (LED_CONTROL_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , MOUNT_CONFIGURE (MOUNT_CONFIGURE_DATA) , FENCE_POINT (FENCE_POINT_DATA) , DEVICE_OP_READ (DEVICE_OP_READ_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , HERELINK_TELEM (HERELINK_TELEM_DATA) , PING (PING_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , CAMERA_STATUS (CAMERA_STATUS_DATA) , GOPRO_HEARTBEAT (GOPRO_HEARTBEAT_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , GOPRO_SET_RESPONSE (GOPRO_SET_RESPONSE_DATA) , GPS2_RAW (GPS2_RAW_DATA) , CUBEPILOT_RAW_RC (CUBEPILOT_RAW_RC_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , ADAP_TUNING (ADAP_TUNING_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , AUTH_KEY (AUTH_KEY_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , SENSOR_OFFSETS (SENSOR_OFFSETS_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , ATTITUDE (ATTITUDE_DATA) , MEMINFO (MEMINFO_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , REMOTE_LOG_BLOCK_STATUS (REMOTE_LOG_BLOCK_STATUS_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , AP_ADC (AP_ADC_DATA) , DATA32 (DATA32_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , SIMSTATE (SIMSTATE_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , OBSTACLE_DISTANCE_3D (OBSTACLE_DISTANCE_3D_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , AOA_SSA (AOA_SSA_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , HOME_POSITION (HOME_POSITION_DATA) , GPS_STATUS (GPS_STATUS_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , DIGICAM_CONFIGURE (DIGICAM_CONFIGURE_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , RPM (RPM_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , EFI_STATUS (EFI_STATUS_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , ESC_INFO (ESC_INFO_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , DATA_STREAM (DATA_STREAM_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , MISSION_ACK (MISSION_ACK_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , OSD_PARAM_SHOW_CONFIG (OSD_PARAM_SHOW_CONFIG_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , RAW_IMU (RAW_IMU_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , AIRSPEED_AUTOCAL (AIRSPEED_AUTOCAL_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , COMMAND_INT (COMMAND_INT_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , OSD_PARAM_SHOW_CONFIG_REPLY (OSD_PARAM_SHOW_CONFIG_REPLY_DATA) , ESC_STATUS (ESC_STATUS_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , MOUNT_CONTROL (MOUNT_CONTROL_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , CAN_FRAME (CAN_FRAME_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , GPS_INPUT (GPS_INPUT_DATA) , MAG_CAL_PROGRESS (MAG_CAL_PROGRESS_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , SET_MAG_OFFSETS (SET_MAG_OFFSETS_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , HIL_STATE (HIL_STATE_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , RALLY_POINT (RALLY_POINT_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , CAMERA_FEEDBACK (CAMERA_FEEDBACK_DATA) , SET_MODE (SET_MODE_DATA) , DEVICE_OP_WRITE (DEVICE_OP_WRITE_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , SCALED_IMU (SCALED_IMU_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , GOPRO_SET_REQUEST (GOPRO_SET_REQUEST_DATA) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA) , GPS_RTK (GPS_RTK_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , STATUSTEXT (STATUSTEXT_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , TUNNEL (TUNNEL_DATA) , PID_TUNING (PID_TUNING_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , GIMBAL_TORQUE_CMD_REPORT (GIMBAL_TORQUE_CMD_REPORT_DATA) , LOG_ERASE (LOG_ERASE_DATA) , AHRS2 (AHRS2_DATA) , GIMBAL_CONTROL (GIMBAL_CONTROL_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , COLLISION (COLLISION_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , HERELINK_VIDEO_STREAM_INFORMATION (HERELINK_VIDEO_STREAM_INFORMATION_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , VFR_HUD (VFR_HUD_DATA) , UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA) , LIMITS_STATUS (LIMITS_STATUS_DATA) , DEEPSTALL (DEEPSTALL_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , POWER_STATUS (POWER_STATUS_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , VIBRATION (VIBRATION_DATA) , SYS_STATUS (SYS_STATUS_DATA) , CUBEPILOT_FIRMWARE_UPDATE_START (CUBEPILOT_FIRMWARE_UPDATE_START_DATA) , EKF_STATUS_REPORT (EKF_STATUS_REPORT_DATA) , AUTOPILOT_VERSION_REQUEST (AUTOPILOT_VERSION_REQUEST_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , ESC_TELEMETRY_1_TO_4 (ESC_TELEMETRY_1_TO_4_DATA) , LOG_DATA (LOG_DATA_DATA) , MCU_STATUS (MCU_STATUS_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , GOPRO_GET_REQUEST (GOPRO_GET_REQUEST_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , MOUNT_STATUS (MOUNT_STATUS_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , RALLY_FETCH_POINT (RALLY_FETCH_POINT_DATA) , GOPRO_GET_RESPONSE (GOPRO_GET_RESPONSE_DATA) , ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA) , WIND_COV (WIND_COV_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , DATA96 (DATA96_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , AHRS (AHRS_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , ESC_TELEMETRY_5_TO_8 (ESC_TELEMETRY_5_TO_8_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , DEBUG (DEBUG_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , RAW_RPM (RAW_RPM_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , ALTITUDE (ALTITUDE_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , VISION_POSITION_DELTA (VISION_POSITION_DELTA_DATA) , WATER_DEPTH (WATER_DEPTH_DATA) , ODOMETRY (ODOMETRY_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { DEVICE_OP_READ_REPLY_DATA :: ID => DEVICE_OP_READ_REPLY_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_READ_REPLY) , HWSTATUS_DATA :: ID => HWSTATUS_DATA :: deser (version , payload) . map (Self :: HWSTATUS) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , BATTERY2_DATA :: ID => BATTERY2_DATA :: deser (version , payload) . map (Self :: BATTERY2) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , WIND_DATA :: ID => WIND_DATA :: deser (version , payload) . map (Self :: WIND) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_DYNAMIC) , REMOTE_LOG_DATA_BLOCK_DATA :: ID => REMOTE_LOG_DATA_BLOCK_DATA :: deser (version , payload) . map (Self :: REMOTE_LOG_DATA_BLOCK) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , DEVICE_OP_WRITE_REPLY_DATA :: ID => DEVICE_OP_WRITE_REPLY_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_WRITE_REPLY) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: ICAROUS_HEARTBEAT) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , DATA64_DATA :: ID => DATA64_DATA :: deser (version , payload) . map (Self :: DATA64) , OSD_PARAM_CONFIG_REPLY_DATA :: ID => OSD_PARAM_CONFIG_REPLY_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_CONFIG_REPLY) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , DIGICAM_CONTROL_DATA :: ID => DIGICAM_CONTROL_DATA :: deser (version , payload) . map (Self :: DIGICAM_CONTROL) , AHRS3_DATA :: ID => AHRS3_DATA :: deser (version , payload) . map (Self :: AHRS3) , ESC_TELEMETRY_9_TO_12_DATA :: ID => ESC_TELEMETRY_9_TO_12_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_9_TO_12) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , OSD_PARAM_CONFIG_DATA :: ID => OSD_PARAM_CONFIG_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_CONFIG) , DATA16_DATA :: ID => DATA16_DATA :: deser (version , payload) . map (Self :: DATA16) , FENCE_FETCH_POINT_DATA :: ID => FENCE_FETCH_POINT_DATA :: deser (version , payload) . map (Self :: FENCE_FETCH_POINT) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , RADIO_DATA :: ID => RADIO_DATA :: deser (version , payload) . map (Self :: RADIO) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , COMPASSMOT_STATUS_DATA :: ID => COMPASSMOT_STATUS_DATA :: deser (version , payload) . map (Self :: COMPASSMOT_STATUS) , GIMBAL_REPORT_DATA :: ID => GIMBAL_REPORT_DATA :: deser (version , payload) . map (Self :: GIMBAL_REPORT) , RANGEFINDER_DATA :: ID => RANGEFINDER_DATA :: deser (version , payload) . map (Self :: RANGEFINDER) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , LED_CONTROL_DATA :: ID => LED_CONTROL_DATA :: deser (version , payload) . map (Self :: LED_CONTROL) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , MOUNT_CONFIGURE_DATA :: ID => MOUNT_CONFIGURE_DATA :: deser (version , payload) . map (Self :: MOUNT_CONFIGURE) , FENCE_POINT_DATA :: ID => FENCE_POINT_DATA :: deser (version , payload) . map (Self :: FENCE_POINT) , DEVICE_OP_READ_DATA :: ID => DEVICE_OP_READ_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_READ) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , HERELINK_TELEM_DATA :: ID => HERELINK_TELEM_DATA :: deser (version , payload) . map (Self :: HERELINK_TELEM) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , CAMERA_STATUS_DATA :: ID => CAMERA_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_STATUS) , GOPRO_HEARTBEAT_DATA :: ID => GOPRO_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: GOPRO_HEARTBEAT) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , GOPRO_SET_RESPONSE_DATA :: ID => GOPRO_SET_RESPONSE_DATA :: deser (version , payload) . map (Self :: GOPRO_SET_RESPONSE) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , CUBEPILOT_RAW_RC_DATA :: ID => CUBEPILOT_RAW_RC_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_RAW_RC) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , ADAP_TUNING_DATA :: ID => ADAP_TUNING_DATA :: deser (version , payload) . map (Self :: ADAP_TUNING) , 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) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , SENSOR_OFFSETS_DATA :: ID => SENSOR_OFFSETS_DATA :: deser (version , payload) . map (Self :: SENSOR_OFFSETS) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , MEMINFO_DATA :: ID => MEMINFO_DATA :: deser (version , payload) . map (Self :: MEMINFO) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => REMOTE_LOG_BLOCK_STATUS_DATA :: deser (version , payload) . map (Self :: REMOTE_LOG_BLOCK_STATUS) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , AP_ADC_DATA :: ID => AP_ADC_DATA :: deser (version , payload) . map (Self :: AP_ADC) , DATA32_DATA :: ID => DATA32_DATA :: deser (version , payload) . map (Self :: DATA32) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , SIMSTATE_DATA :: ID => SIMSTATE_DATA :: deser (version , payload) . map (Self :: SIMSTATE) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , OBSTACLE_DISTANCE_3D_DATA :: ID => OBSTACLE_DISTANCE_3D_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE_3D) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , AOA_SSA_DATA :: ID => AOA_SSA_DATA :: deser (version , payload) . map (Self :: AOA_SSA) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , DIGICAM_CONFIGURE_DATA :: ID => DIGICAM_CONFIGURE_DATA :: deser (version , payload) . map (Self :: DIGICAM_CONFIGURE) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , RPM_DATA :: ID => RPM_DATA :: deser (version , payload) . map (Self :: RPM) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_STATUS) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , OSD_PARAM_SHOW_CONFIG_DATA :: ID => OSD_PARAM_SHOW_CONFIG_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_SHOW_CONFIG) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , AIRSPEED_AUTOCAL_DATA :: ID => AIRSPEED_AUTOCAL_DATA :: deser (version , payload) . map (Self :: AIRSPEED_AUTOCAL) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_SHOW_CONFIG_REPLY) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , MOUNT_CONTROL_DATA :: ID => MOUNT_CONTROL_DATA :: deser (version , payload) . map (Self :: MOUNT_CONTROL) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , MAG_CAL_PROGRESS_DATA :: ID => MAG_CAL_PROGRESS_DATA :: deser (version , payload) . map (Self :: MAG_CAL_PROGRESS) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , SET_MAG_OFFSETS_DATA :: ID => SET_MAG_OFFSETS_DATA :: deser (version , payload) . map (Self :: SET_MAG_OFFSETS) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , 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) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , CAMERA_FEEDBACK_DATA :: ID => CAMERA_FEEDBACK_DATA :: deser (version , payload) . map (Self :: CAMERA_FEEDBACK) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , DEVICE_OP_WRITE_DATA :: ID => DEVICE_OP_WRITE_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_WRITE) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , GOPRO_SET_REQUEST_DATA :: ID => GOPRO_SET_REQUEST_DATA :: deser (version , payload) . map (Self :: GOPRO_SET_REQUEST) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , 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) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , PID_TUNING_DATA :: ID => PID_TUNING_DATA :: deser (version , payload) . map (Self :: PID_TUNING) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => GIMBAL_TORQUE_CMD_REPORT_DATA :: deser (version , payload) . map (Self :: GIMBAL_TORQUE_CMD_REPORT) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , AHRS2_DATA :: ID => AHRS2_DATA :: deser (version , payload) . map (Self :: AHRS2) , GIMBAL_CONTROL_DATA :: ID => GIMBAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_CONTROL) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: HERELINK_VIDEO_STREAM_INFORMATION) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_CFG) , LIMITS_STATUS_DATA :: ID => LIMITS_STATUS_DATA :: deser (version , payload) . map (Self :: LIMITS_STATUS) , DEEPSTALL_DATA :: ID => DEEPSTALL_DATA :: deser (version , payload) . map (Self :: DEEPSTALL) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_FIRMWARE_UPDATE_START) , EKF_STATUS_REPORT_DATA :: ID => EKF_STATUS_REPORT_DATA :: deser (version , payload) . map (Self :: EKF_STATUS_REPORT) , AUTOPILOT_VERSION_REQUEST_DATA :: ID => AUTOPILOT_VERSION_REQUEST_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION_REQUEST) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , ESC_TELEMETRY_1_TO_4_DATA :: ID => ESC_TELEMETRY_1_TO_4_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_1_TO_4) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , MCU_STATUS_DATA :: ID => MCU_STATUS_DATA :: deser (version , payload) . map (Self :: MCU_STATUS) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , GOPRO_GET_REQUEST_DATA :: ID => GOPRO_GET_REQUEST_DATA :: deser (version , payload) . map (Self :: GOPRO_GET_REQUEST) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , 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) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , MOUNT_STATUS_DATA :: ID => MOUNT_STATUS_DATA :: deser (version , payload) . map (Self :: MOUNT_STATUS) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , RALLY_FETCH_POINT_DATA :: ID => RALLY_FETCH_POINT_DATA :: deser (version , payload) . map (Self :: RALLY_FETCH_POINT) , GOPRO_GET_RESPONSE_DATA :: ID => GOPRO_GET_RESPONSE_DATA :: deser (version , payload) . map (Self :: GOPRO_GET_RESPONSE) , ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: deser (version , payload) . map (Self :: ICAROUS_KINEMATIC_BANDS) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , DATA96_DATA :: ID => DATA96_DATA :: deser (version , payload) . map (Self :: DATA96) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_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) , AHRS_DATA :: ID => AHRS_DATA :: deser (version , payload) . map (Self :: AHRS) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , ESC_TELEMETRY_5_TO_8_DATA :: ID => ESC_TELEMETRY_5_TO_8_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_5_TO_8) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , VISION_POSITION_DELTA_DATA :: ID => VISION_POSITION_DELTA_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_DELTA) , WATER_DEPTH_DATA :: ID => WATER_DEPTH_DATA :: deser (version , payload) . map (Self :: WATER_DEPTH) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: DEVICE_OP_READ_REPLY (..) => DEVICE_OP_READ_REPLY_DATA :: NAME , Self :: HWSTATUS (..) => HWSTATUS_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: BATTERY2 (..) => BATTERY2_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: WIND (..) => WIND_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME , Self :: REMOTE_LOG_DATA_BLOCK (..) => REMOTE_LOG_DATA_BLOCK_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: DEVICE_OP_WRITE_REPLY (..) => DEVICE_OP_WRITE_REPLY_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: DATA64 (..) => DATA64_DATA :: NAME , Self :: OSD_PARAM_CONFIG_REPLY (..) => OSD_PARAM_CONFIG_REPLY_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: DIGICAM_CONTROL (..) => DIGICAM_CONTROL_DATA :: NAME , Self :: AHRS3 (..) => AHRS3_DATA :: NAME , Self :: ESC_TELEMETRY_9_TO_12 (..) => ESC_TELEMETRY_9_TO_12_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: OSD_PARAM_CONFIG (..) => OSD_PARAM_CONFIG_DATA :: NAME , Self :: DATA16 (..) => DATA16_DATA :: NAME , Self :: FENCE_FETCH_POINT (..) => FENCE_FETCH_POINT_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: RADIO (..) => RADIO_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (..) => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: COMPASSMOT_STATUS (..) => COMPASSMOT_STATUS_DATA :: NAME , Self :: GIMBAL_REPORT (..) => GIMBAL_REPORT_DATA :: NAME , Self :: RANGEFINDER (..) => RANGEFINDER_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: LED_CONTROL (..) => LED_CONTROL_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: MOUNT_CONFIGURE (..) => MOUNT_CONFIGURE_DATA :: NAME , Self :: FENCE_POINT (..) => FENCE_POINT_DATA :: NAME , Self :: DEVICE_OP_READ (..) => DEVICE_OP_READ_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: HERELINK_TELEM (..) => HERELINK_TELEM_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: CAMERA_STATUS (..) => CAMERA_STATUS_DATA :: NAME , Self :: GOPRO_HEARTBEAT (..) => GOPRO_HEARTBEAT_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: GOPRO_SET_RESPONSE (..) => GOPRO_SET_RESPONSE_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: CUBEPILOT_RAW_RC (..) => CUBEPILOT_RAW_RC_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: ADAP_TUNING (..) => ADAP_TUNING_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: SENSOR_OFFSETS (..) => SENSOR_OFFSETS_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: MEMINFO (..) => MEMINFO_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: REMOTE_LOG_BLOCK_STATUS (..) => REMOTE_LOG_BLOCK_STATUS_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: AP_ADC (..) => AP_ADC_DATA :: NAME , Self :: DATA32 (..) => DATA32_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: SIMSTATE (..) => SIMSTATE_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: OBSTACLE_DISTANCE_3D (..) => OBSTACLE_DISTANCE_3D_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: AOA_SSA (..) => AOA_SSA_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: DIGICAM_CONFIGURE (..) => DIGICAM_CONFIGURE_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: RPM (..) => RPM_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: OSD_PARAM_SHOW_CONFIG (..) => OSD_PARAM_SHOW_CONFIG_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: AIRSPEED_AUTOCAL (..) => AIRSPEED_AUTOCAL_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (..) => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: MOUNT_CONTROL (..) => MOUNT_CONTROL_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: MAG_CAL_PROGRESS (..) => MAG_CAL_PROGRESS_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: SET_MAG_OFFSETS (..) => SET_MAG_OFFSETS_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: RALLY_POINT (..) => RALLY_POINT_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: CAMERA_FEEDBACK (..) => CAMERA_FEEDBACK_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: DEVICE_OP_WRITE (..) => DEVICE_OP_WRITE_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: GOPRO_SET_REQUEST (..) => GOPRO_SET_REQUEST_DATA :: NAME , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: PID_TUNING (..) => PID_TUNING_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: GIMBAL_TORQUE_CMD_REPORT (..) => GIMBAL_TORQUE_CMD_REPORT_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: AHRS2 (..) => AHRS2_DATA :: NAME , Self :: GIMBAL_CONTROL (..) => GIMBAL_CONTROL_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: HERELINK_VIDEO_STREAM_INFORMATION (..) => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: NAME , Self :: LIMITS_STATUS (..) => LIMITS_STATUS_DATA :: NAME , Self :: DEEPSTALL (..) => DEEPSTALL_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (..) => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: NAME , Self :: EKF_STATUS_REPORT (..) => EKF_STATUS_REPORT_DATA :: NAME , Self :: AUTOPILOT_VERSION_REQUEST (..) => AUTOPILOT_VERSION_REQUEST_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: ESC_TELEMETRY_1_TO_4 (..) => ESC_TELEMETRY_1_TO_4_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: MCU_STATUS (..) => MCU_STATUS_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: GOPRO_GET_REQUEST (..) => GOPRO_GET_REQUEST_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: MOUNT_STATUS (..) => MOUNT_STATUS_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: RALLY_FETCH_POINT (..) => RALLY_FETCH_POINT_DATA :: NAME , Self :: GOPRO_GET_RESPONSE (..) => GOPRO_GET_RESPONSE_DATA :: NAME , Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: DATA96 (..) => DATA96_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: AHRS (..) => AHRS_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: ESC_TELEMETRY_5_TO_8 (..) => ESC_TELEMETRY_5_TO_8_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: VISION_POSITION_DELTA (..) => VISION_POSITION_DELTA_DATA :: NAME , Self :: WATER_DEPTH (..) => WATER_DEPTH_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: DEVICE_OP_READ_REPLY (..) => DEVICE_OP_READ_REPLY_DATA :: ID , Self :: HWSTATUS (..) => HWSTATUS_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: BATTERY2 (..) => BATTERY2_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: WIND (..) => WIND_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID , Self :: REMOTE_LOG_DATA_BLOCK (..) => REMOTE_LOG_DATA_BLOCK_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: DEVICE_OP_WRITE_REPLY (..) => DEVICE_OP_WRITE_REPLY_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: DATA64 (..) => DATA64_DATA :: ID , Self :: OSD_PARAM_CONFIG_REPLY (..) => OSD_PARAM_CONFIG_REPLY_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: DIGICAM_CONTROL (..) => DIGICAM_CONTROL_DATA :: ID , Self :: AHRS3 (..) => AHRS3_DATA :: ID , Self :: ESC_TELEMETRY_9_TO_12 (..) => ESC_TELEMETRY_9_TO_12_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: OSD_PARAM_CONFIG (..) => OSD_PARAM_CONFIG_DATA :: ID , Self :: DATA16 (..) => DATA16_DATA :: ID , Self :: FENCE_FETCH_POINT (..) => FENCE_FETCH_POINT_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: RADIO (..) => RADIO_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (..) => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: COMPASSMOT_STATUS (..) => COMPASSMOT_STATUS_DATA :: ID , Self :: GIMBAL_REPORT (..) => GIMBAL_REPORT_DATA :: ID , Self :: RANGEFINDER (..) => RANGEFINDER_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: LED_CONTROL (..) => LED_CONTROL_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: MOUNT_CONFIGURE (..) => MOUNT_CONFIGURE_DATA :: ID , Self :: FENCE_POINT (..) => FENCE_POINT_DATA :: ID , Self :: DEVICE_OP_READ (..) => DEVICE_OP_READ_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: HERELINK_TELEM (..) => HERELINK_TELEM_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: CAMERA_STATUS (..) => CAMERA_STATUS_DATA :: ID , Self :: GOPRO_HEARTBEAT (..) => GOPRO_HEARTBEAT_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: GOPRO_SET_RESPONSE (..) => GOPRO_SET_RESPONSE_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: CUBEPILOT_RAW_RC (..) => CUBEPILOT_RAW_RC_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: ADAP_TUNING (..) => ADAP_TUNING_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: SENSOR_OFFSETS (..) => SENSOR_OFFSETS_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: MEMINFO (..) => MEMINFO_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: REMOTE_LOG_BLOCK_STATUS (..) => REMOTE_LOG_BLOCK_STATUS_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: AP_ADC (..) => AP_ADC_DATA :: ID , Self :: DATA32 (..) => DATA32_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: SIMSTATE (..) => SIMSTATE_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: OBSTACLE_DISTANCE_3D (..) => OBSTACLE_DISTANCE_3D_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: AOA_SSA (..) => AOA_SSA_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: DIGICAM_CONFIGURE (..) => DIGICAM_CONFIGURE_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: RPM (..) => RPM_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: OSD_PARAM_SHOW_CONFIG (..) => OSD_PARAM_SHOW_CONFIG_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: AIRSPEED_AUTOCAL (..) => AIRSPEED_AUTOCAL_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (..) => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: MOUNT_CONTROL (..) => MOUNT_CONTROL_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: MAG_CAL_PROGRESS (..) => MAG_CAL_PROGRESS_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: SET_MAG_OFFSETS (..) => SET_MAG_OFFSETS_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: RALLY_POINT (..) => RALLY_POINT_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: CAMERA_FEEDBACK (..) => CAMERA_FEEDBACK_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: DEVICE_OP_WRITE (..) => DEVICE_OP_WRITE_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: GOPRO_SET_REQUEST (..) => GOPRO_SET_REQUEST_DATA :: ID , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: PID_TUNING (..) => PID_TUNING_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: GIMBAL_TORQUE_CMD_REPORT (..) => GIMBAL_TORQUE_CMD_REPORT_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: AHRS2 (..) => AHRS2_DATA :: ID , Self :: GIMBAL_CONTROL (..) => GIMBAL_CONTROL_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: HERELINK_VIDEO_STREAM_INFORMATION (..) => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: ID , Self :: LIMITS_STATUS (..) => LIMITS_STATUS_DATA :: ID , Self :: DEEPSTALL (..) => DEEPSTALL_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (..) => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID , Self :: EKF_STATUS_REPORT (..) => EKF_STATUS_REPORT_DATA :: ID , Self :: AUTOPILOT_VERSION_REQUEST (..) => AUTOPILOT_VERSION_REQUEST_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: ESC_TELEMETRY_1_TO_4 (..) => ESC_TELEMETRY_1_TO_4_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: MCU_STATUS (..) => MCU_STATUS_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: GOPRO_GET_REQUEST (..) => GOPRO_GET_REQUEST_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: MOUNT_STATUS (..) => MOUNT_STATUS_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: RALLY_FETCH_POINT (..) => RALLY_FETCH_POINT_DATA :: ID , Self :: GOPRO_GET_RESPONSE (..) => GOPRO_GET_RESPONSE_DATA :: ID , Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: DATA96 (..) => DATA96_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: AHRS (..) => AHRS_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: ESC_TELEMETRY_5_TO_8 (..) => ESC_TELEMETRY_5_TO_8_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: VISION_POSITION_DELTA (..) => VISION_POSITION_DELTA_DATA :: ID , Self :: WATER_DEPTH (..) => WATER_DEPTH_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { DEVICE_OP_READ_REPLY_DATA :: NAME => Ok (DEVICE_OP_READ_REPLY_DATA :: ID) , HWSTATUS_DATA :: NAME => Ok (HWSTATUS_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , BATTERY2_DATA :: NAME => Ok (BATTERY2_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , WIND_DATA :: NAME => Ok (WIND_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID) , REMOTE_LOG_DATA_BLOCK_DATA :: NAME => Ok (REMOTE_LOG_DATA_BLOCK_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , DEVICE_OP_WRITE_REPLY_DATA :: NAME => Ok (DEVICE_OP_WRITE_REPLY_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , ICAROUS_HEARTBEAT_DATA :: NAME => Ok (ICAROUS_HEARTBEAT_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , DATA64_DATA :: NAME => Ok (DATA64_DATA :: ID) , OSD_PARAM_CONFIG_REPLY_DATA :: NAME => Ok (OSD_PARAM_CONFIG_REPLY_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , DIGICAM_CONTROL_DATA :: NAME => Ok (DIGICAM_CONTROL_DATA :: ID) , AHRS3_DATA :: NAME => Ok (AHRS3_DATA :: ID) , ESC_TELEMETRY_9_TO_12_DATA :: NAME => Ok (ESC_TELEMETRY_9_TO_12_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , OSD_PARAM_CONFIG_DATA :: NAME => Ok (OSD_PARAM_CONFIG_DATA :: ID) , DATA16_DATA :: NAME => Ok (DATA16_DATA :: ID) , FENCE_FETCH_POINT_DATA :: NAME => Ok (FENCE_FETCH_POINT_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , RADIO_DATA :: NAME => Ok (RADIO_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: NAME => Ok (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , COMPASSMOT_STATUS_DATA :: NAME => Ok (COMPASSMOT_STATUS_DATA :: ID) , GIMBAL_REPORT_DATA :: NAME => Ok (GIMBAL_REPORT_DATA :: ID) , RANGEFINDER_DATA :: NAME => Ok (RANGEFINDER_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , LED_CONTROL_DATA :: NAME => Ok (LED_CONTROL_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , MOUNT_CONFIGURE_DATA :: NAME => Ok (MOUNT_CONFIGURE_DATA :: ID) , FENCE_POINT_DATA :: NAME => Ok (FENCE_POINT_DATA :: ID) , DEVICE_OP_READ_DATA :: NAME => Ok (DEVICE_OP_READ_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , HERELINK_TELEM_DATA :: NAME => Ok (HERELINK_TELEM_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , CAMERA_STATUS_DATA :: NAME => Ok (CAMERA_STATUS_DATA :: ID) , GOPRO_HEARTBEAT_DATA :: NAME => Ok (GOPRO_HEARTBEAT_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , GOPRO_SET_RESPONSE_DATA :: NAME => Ok (GOPRO_SET_RESPONSE_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , CUBEPILOT_RAW_RC_DATA :: NAME => Ok (CUBEPILOT_RAW_RC_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , ADAP_TUNING_DATA :: NAME => Ok (ADAP_TUNING_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , SENSOR_OFFSETS_DATA :: NAME => Ok (SENSOR_OFFSETS_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , MEMINFO_DATA :: NAME => Ok (MEMINFO_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , REMOTE_LOG_BLOCK_STATUS_DATA :: NAME => Ok (REMOTE_LOG_BLOCK_STATUS_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , AP_ADC_DATA :: NAME => Ok (AP_ADC_DATA :: ID) , DATA32_DATA :: NAME => Ok (DATA32_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , SIMSTATE_DATA :: NAME => Ok (SIMSTATE_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , OBSTACLE_DISTANCE_3D_DATA :: NAME => Ok (OBSTACLE_DISTANCE_3D_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , AOA_SSA_DATA :: NAME => Ok (AOA_SSA_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , DIGICAM_CONFIGURE_DATA :: NAME => Ok (DIGICAM_CONFIGURE_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , RPM_DATA :: NAME => Ok (RPM_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , OSD_PARAM_SHOW_CONFIG_DATA :: NAME => Ok (OSD_PARAM_SHOW_CONFIG_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , AIRSPEED_AUTOCAL_DATA :: NAME => Ok (AIRSPEED_AUTOCAL_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: NAME => Ok (OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , MOUNT_CONTROL_DATA :: NAME => Ok (MOUNT_CONTROL_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , MAG_CAL_PROGRESS_DATA :: NAME => Ok (MAG_CAL_PROGRESS_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , SET_MAG_OFFSETS_DATA :: NAME => Ok (SET_MAG_OFFSETS_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , RALLY_POINT_DATA :: NAME => Ok (RALLY_POINT_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , CAMERA_FEEDBACK_DATA :: NAME => Ok (CAMERA_FEEDBACK_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , DEVICE_OP_WRITE_DATA :: NAME => Ok (DEVICE_OP_WRITE_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , GOPRO_SET_REQUEST_DATA :: NAME => Ok (GOPRO_SET_REQUEST_DATA :: ID) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME => Ok (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , PID_TUNING_DATA :: NAME => Ok (PID_TUNING_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , GIMBAL_TORQUE_CMD_REPORT_DATA :: NAME => Ok (GIMBAL_TORQUE_CMD_REPORT_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , AHRS2_DATA :: NAME => Ok (AHRS2_DATA :: ID) , GIMBAL_CONTROL_DATA :: NAME => Ok (GIMBAL_CONTROL_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , UAVIONIX_ADSB_OUT_CFG_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_CFG_DATA :: ID) , LIMITS_STATUS_DATA :: NAME => Ok (LIMITS_STATUS_DATA :: ID) , DEEPSTALL_DATA :: NAME => Ok (DEEPSTALL_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: NAME => Ok (CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID) , EKF_STATUS_REPORT_DATA :: NAME => Ok (EKF_STATUS_REPORT_DATA :: ID) , AUTOPILOT_VERSION_REQUEST_DATA :: NAME => Ok (AUTOPILOT_VERSION_REQUEST_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , ESC_TELEMETRY_1_TO_4_DATA :: NAME => Ok (ESC_TELEMETRY_1_TO_4_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , MCU_STATUS_DATA :: NAME => Ok (MCU_STATUS_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , GOPRO_GET_REQUEST_DATA :: NAME => Ok (GOPRO_GET_REQUEST_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , MOUNT_STATUS_DATA :: NAME => Ok (MOUNT_STATUS_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , RALLY_FETCH_POINT_DATA :: NAME => Ok (RALLY_FETCH_POINT_DATA :: ID) , GOPRO_GET_RESPONSE_DATA :: NAME => Ok (GOPRO_GET_RESPONSE_DATA :: ID) , ICAROUS_KINEMATIC_BANDS_DATA :: NAME => Ok (ICAROUS_KINEMATIC_BANDS_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , DATA96_DATA :: NAME => Ok (DATA96_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , AHRS_DATA :: NAME => Ok (AHRS_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , ESC_TELEMETRY_5_TO_8_DATA :: NAME => Ok (ESC_TELEMETRY_5_TO_8_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , VISION_POSITION_DELTA_DATA :: NAME => Ok (VISION_POSITION_DELTA_DATA :: ID) , WATER_DEPTH_DATA :: NAME => Ok (WATER_DEPTH_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { DEVICE_OP_READ_REPLY_DATA :: ID => Ok (Self :: DEVICE_OP_READ_REPLY (DEVICE_OP_READ_REPLY_DATA :: default ())) , HWSTATUS_DATA :: ID => Ok (Self :: HWSTATUS (HWSTATUS_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , BATTERY2_DATA :: ID => Ok (Self :: BATTERY2 (BATTERY2_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , WIND_DATA :: ID => Ok (Self :: WIND (WIND_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: default ())) , REMOTE_LOG_DATA_BLOCK_DATA :: ID => Ok (Self :: REMOTE_LOG_DATA_BLOCK (REMOTE_LOG_DATA_BLOCK_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , DEVICE_OP_WRITE_REPLY_DATA :: ID => Ok (Self :: DEVICE_OP_WRITE_REPLY (DEVICE_OP_WRITE_REPLY_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , ICAROUS_HEARTBEAT_DATA :: ID => Ok (Self :: ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , DATA64_DATA :: ID => Ok (Self :: DATA64 (DATA64_DATA :: default ())) , OSD_PARAM_CONFIG_REPLY_DATA :: ID => Ok (Self :: OSD_PARAM_CONFIG_REPLY (OSD_PARAM_CONFIG_REPLY_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , DIGICAM_CONTROL_DATA :: ID => Ok (Self :: DIGICAM_CONTROL (DIGICAM_CONTROL_DATA :: default ())) , AHRS3_DATA :: ID => Ok (Self :: AHRS3 (AHRS3_DATA :: default ())) , ESC_TELEMETRY_9_TO_12_DATA :: ID => Ok (Self :: ESC_TELEMETRY_9_TO_12 (ESC_TELEMETRY_9_TO_12_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , OSD_PARAM_CONFIG_DATA :: ID => Ok (Self :: OSD_PARAM_CONFIG (OSD_PARAM_CONFIG_DATA :: default ())) , DATA16_DATA :: ID => Ok (Self :: DATA16 (DATA16_DATA :: default ())) , FENCE_FETCH_POINT_DATA :: ID => Ok (Self :: FENCE_FETCH_POINT (FENCE_FETCH_POINT_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , RADIO_DATA :: ID => Ok (Self :: RADIO (RADIO_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => Ok (Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , COMPASSMOT_STATUS_DATA :: ID => Ok (Self :: COMPASSMOT_STATUS (COMPASSMOT_STATUS_DATA :: default ())) , GIMBAL_REPORT_DATA :: ID => Ok (Self :: GIMBAL_REPORT (GIMBAL_REPORT_DATA :: default ())) , RANGEFINDER_DATA :: ID => Ok (Self :: RANGEFINDER (RANGEFINDER_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , LED_CONTROL_DATA :: ID => Ok (Self :: LED_CONTROL (LED_CONTROL_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , MOUNT_CONFIGURE_DATA :: ID => Ok (Self :: MOUNT_CONFIGURE (MOUNT_CONFIGURE_DATA :: default ())) , FENCE_POINT_DATA :: ID => Ok (Self :: FENCE_POINT (FENCE_POINT_DATA :: default ())) , DEVICE_OP_READ_DATA :: ID => Ok (Self :: DEVICE_OP_READ (DEVICE_OP_READ_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , HERELINK_TELEM_DATA :: ID => Ok (Self :: HERELINK_TELEM (HERELINK_TELEM_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , CAMERA_STATUS_DATA :: ID => Ok (Self :: CAMERA_STATUS (CAMERA_STATUS_DATA :: default ())) , GOPRO_HEARTBEAT_DATA :: ID => Ok (Self :: GOPRO_HEARTBEAT (GOPRO_HEARTBEAT_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , GOPRO_SET_RESPONSE_DATA :: ID => Ok (Self :: GOPRO_SET_RESPONSE (GOPRO_SET_RESPONSE_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , CUBEPILOT_RAW_RC_DATA :: ID => Ok (Self :: CUBEPILOT_RAW_RC (CUBEPILOT_RAW_RC_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , ADAP_TUNING_DATA :: ID => Ok (Self :: ADAP_TUNING (ADAP_TUNING_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 ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , SENSOR_OFFSETS_DATA :: ID => Ok (Self :: SENSOR_OFFSETS (SENSOR_OFFSETS_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , MEMINFO_DATA :: ID => Ok (Self :: MEMINFO (MEMINFO_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => Ok (Self :: REMOTE_LOG_BLOCK_STATUS (REMOTE_LOG_BLOCK_STATUS_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , AP_ADC_DATA :: ID => Ok (Self :: AP_ADC (AP_ADC_DATA :: default ())) , DATA32_DATA :: ID => Ok (Self :: DATA32 (DATA32_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , SIMSTATE_DATA :: ID => Ok (Self :: SIMSTATE (SIMSTATE_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , OBSTACLE_DISTANCE_3D_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE_3D (OBSTACLE_DISTANCE_3D_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , AOA_SSA_DATA :: ID => Ok (Self :: AOA_SSA (AOA_SSA_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , DIGICAM_CONFIGURE_DATA :: ID => Ok (Self :: DIGICAM_CONFIGURE (DIGICAM_CONFIGURE_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , RPM_DATA :: ID => Ok (Self :: RPM (RPM_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_STATUS_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , OSD_PARAM_SHOW_CONFIG_DATA :: ID => Ok (Self :: OSD_PARAM_SHOW_CONFIG (OSD_PARAM_SHOW_CONFIG_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , AIRSPEED_AUTOCAL_DATA :: ID => Ok (Self :: AIRSPEED_AUTOCAL (AIRSPEED_AUTOCAL_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => Ok (Self :: OSD_PARAM_SHOW_CONFIG_REPLY (OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , MOUNT_CONTROL_DATA :: ID => Ok (Self :: MOUNT_CONTROL (MOUNT_CONTROL_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , MAG_CAL_PROGRESS_DATA :: ID => Ok (Self :: MAG_CAL_PROGRESS (MAG_CAL_PROGRESS_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , SET_MAG_OFFSETS_DATA :: ID => Ok (Self :: SET_MAG_OFFSETS (SET_MAG_OFFSETS_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_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 ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , CAMERA_FEEDBACK_DATA :: ID => Ok (Self :: CAMERA_FEEDBACK (CAMERA_FEEDBACK_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , DEVICE_OP_WRITE_DATA :: ID => Ok (Self :: DEVICE_OP_WRITE (DEVICE_OP_WRITE_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , GOPRO_SET_REQUEST_DATA :: ID => Ok (Self :: GOPRO_SET_REQUEST (GOPRO_SET_REQUEST_DATA :: default ())) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_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 ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , PID_TUNING_DATA :: ID => Ok (Self :: PID_TUNING (PID_TUNING_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => Ok (Self :: GIMBAL_TORQUE_CMD_REPORT (GIMBAL_TORQUE_CMD_REPORT_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , AHRS2_DATA :: ID => Ok (Self :: AHRS2 (AHRS2_DATA :: default ())) , GIMBAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_CONTROL (GIMBAL_CONTROL_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: HERELINK_VIDEO_STREAM_INFORMATION (HERELINK_VIDEO_STREAM_INFORMATION_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA :: default ())) , LIMITS_STATUS_DATA :: ID => Ok (Self :: LIMITS_STATUS (LIMITS_STATUS_DATA :: default ())) , DEEPSTALL_DATA :: ID => Ok (Self :: DEEPSTALL (DEEPSTALL_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => Ok (Self :: CUBEPILOT_FIRMWARE_UPDATE_START (CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: default ())) , EKF_STATUS_REPORT_DATA :: ID => Ok (Self :: EKF_STATUS_REPORT (EKF_STATUS_REPORT_DATA :: default ())) , AUTOPILOT_VERSION_REQUEST_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION_REQUEST (AUTOPILOT_VERSION_REQUEST_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , ESC_TELEMETRY_1_TO_4_DATA :: ID => Ok (Self :: ESC_TELEMETRY_1_TO_4 (ESC_TELEMETRY_1_TO_4_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , MCU_STATUS_DATA :: ID => Ok (Self :: MCU_STATUS (MCU_STATUS_DATA :: default ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , GOPRO_GET_REQUEST_DATA :: ID => Ok (Self :: GOPRO_GET_REQUEST (GOPRO_GET_REQUEST_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_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 ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , MOUNT_STATUS_DATA :: ID => Ok (Self :: MOUNT_STATUS (MOUNT_STATUS_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , RALLY_FETCH_POINT_DATA :: ID => Ok (Self :: RALLY_FETCH_POINT (RALLY_FETCH_POINT_DATA :: default ())) , GOPRO_GET_RESPONSE_DATA :: ID => Ok (Self :: GOPRO_GET_RESPONSE (GOPRO_GET_RESPONSE_DATA :: default ())) , ICAROUS_KINEMATIC_BANDS_DATA :: ID => Ok (Self :: ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , DATA96_DATA :: ID => Ok (Self :: DATA96 (DATA96_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_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 ())) , AHRS_DATA :: ID => Ok (Self :: AHRS (AHRS_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , ESC_TELEMETRY_5_TO_8_DATA :: ID => Ok (Self :: ESC_TELEMETRY_5_TO_8 (ESC_TELEMETRY_5_TO_8_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , VISION_POSITION_DELTA_DATA :: ID => Ok (Self :: VISION_POSITION_DELTA (VISION_POSITION_DELTA_DATA :: default ())) , WATER_DEPTH_DATA :: ID => Ok (Self :: WATER_DEPTH (WATER_DEPTH_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: DEVICE_OP_READ_REPLY (body) => body . ser (version , bytes) , Self :: HWSTATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: BATTERY2 (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: WIND (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (body) => body . ser (version , bytes) , Self :: REMOTE_LOG_DATA_BLOCK (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: DEVICE_OP_WRITE_REPLY (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: ICAROUS_HEARTBEAT (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: DATA64 (body) => body . ser (version , bytes) , Self :: OSD_PARAM_CONFIG_REPLY (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: DIGICAM_CONTROL (body) => body . ser (version , bytes) , Self :: AHRS3 (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_9_TO_12 (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: OSD_PARAM_CONFIG (body) => body . ser (version , bytes) , Self :: DATA16 (body) => body . ser (version , bytes) , Self :: FENCE_FETCH_POINT (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: RADIO (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: COMPASSMOT_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_REPORT (body) => body . ser (version , bytes) , Self :: RANGEFINDER (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: LED_CONTROL (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: MOUNT_CONFIGURE (body) => body . ser (version , bytes) , Self :: FENCE_POINT (body) => body . ser (version , bytes) , Self :: DEVICE_OP_READ (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: HERELINK_TELEM (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: CAMERA_STATUS (body) => body . ser (version , bytes) , Self :: GOPRO_HEARTBEAT (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: GOPRO_SET_RESPONSE (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: CUBEPILOT_RAW_RC (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: ADAP_TUNING (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: SENSOR_OFFSETS (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: MEMINFO (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: REMOTE_LOG_BLOCK_STATUS (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: AP_ADC (body) => body . ser (version , bytes) , Self :: DATA32 (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: SIMSTATE (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE_3D (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: AOA_SSA (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: DIGICAM_CONFIGURE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: RPM (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: OSD_PARAM_SHOW_CONFIG (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: AIRSPEED_AUTOCAL (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: MOUNT_CONTROL (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: MAG_CAL_PROGRESS (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: SET_MAG_OFFSETS (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: RALLY_POINT (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: CAMERA_FEEDBACK (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: DEVICE_OP_WRITE (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: GOPRO_SET_REQUEST (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: PID_TUNING (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: GIMBAL_TORQUE_CMD_REPORT (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: AHRS2 (body) => body . ser (version , bytes) , Self :: GIMBAL_CONTROL (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: HERELINK_VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_CFG (body) => body . ser (version , bytes) , Self :: LIMITS_STATUS (body) => body . ser (version , bytes) , Self :: DEEPSTALL (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (body) => body . ser (version , bytes) , Self :: EKF_STATUS_REPORT (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION_REQUEST (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_1_TO_4 (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: MCU_STATUS (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: GOPRO_GET_REQUEST (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: MOUNT_STATUS (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: RALLY_FETCH_POINT (body) => body . ser (version , bytes) , Self :: GOPRO_GET_RESPONSE (body) => body . ser (version , bytes) , Self :: ICAROUS_KINEMATIC_BANDS (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: DATA96 (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: AHRS (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_5_TO_8 (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: VISION_POSITION_DELTA (body) => body . ser (version , bytes) , Self :: WATER_DEPTH (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { DEVICE_OP_READ_REPLY_DATA :: ID => DEVICE_OP_READ_REPLY_DATA :: EXTRA_CRC , HWSTATUS_DATA :: ID => HWSTATUS_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , BATTERY2_DATA :: ID => BATTERY2_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , WIND_DATA :: ID => WIND_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: EXTRA_CRC , REMOTE_LOG_DATA_BLOCK_DATA :: ID => REMOTE_LOG_DATA_BLOCK_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , DEVICE_OP_WRITE_REPLY_DATA :: ID => DEVICE_OP_WRITE_REPLY_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , DATA64_DATA :: ID => DATA64_DATA :: EXTRA_CRC , OSD_PARAM_CONFIG_REPLY_DATA :: ID => OSD_PARAM_CONFIG_REPLY_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , DIGICAM_CONTROL_DATA :: ID => DIGICAM_CONTROL_DATA :: EXTRA_CRC , AHRS3_DATA :: ID => AHRS3_DATA :: EXTRA_CRC , ESC_TELEMETRY_9_TO_12_DATA :: ID => ESC_TELEMETRY_9_TO_12_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , OSD_PARAM_CONFIG_DATA :: ID => OSD_PARAM_CONFIG_DATA :: EXTRA_CRC , DATA16_DATA :: ID => DATA16_DATA :: EXTRA_CRC , FENCE_FETCH_POINT_DATA :: ID => FENCE_FETCH_POINT_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , RADIO_DATA :: ID => RADIO_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , COMPASSMOT_STATUS_DATA :: ID => COMPASSMOT_STATUS_DATA :: EXTRA_CRC , GIMBAL_REPORT_DATA :: ID => GIMBAL_REPORT_DATA :: EXTRA_CRC , RANGEFINDER_DATA :: ID => RANGEFINDER_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , LED_CONTROL_DATA :: ID => LED_CONTROL_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , MOUNT_CONFIGURE_DATA :: ID => MOUNT_CONFIGURE_DATA :: EXTRA_CRC , FENCE_POINT_DATA :: ID => FENCE_POINT_DATA :: EXTRA_CRC , DEVICE_OP_READ_DATA :: ID => DEVICE_OP_READ_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , HERELINK_TELEM_DATA :: ID => HERELINK_TELEM_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , CAMERA_STATUS_DATA :: ID => CAMERA_STATUS_DATA :: EXTRA_CRC , GOPRO_HEARTBEAT_DATA :: ID => GOPRO_HEARTBEAT_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , GOPRO_SET_RESPONSE_DATA :: ID => GOPRO_SET_RESPONSE_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , CUBEPILOT_RAW_RC_DATA :: ID => CUBEPILOT_RAW_RC_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , ADAP_TUNING_DATA :: ID => ADAP_TUNING_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 , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , SENSOR_OFFSETS_DATA :: ID => SENSOR_OFFSETS_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , MEMINFO_DATA :: ID => MEMINFO_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => REMOTE_LOG_BLOCK_STATUS_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , AP_ADC_DATA :: ID => AP_ADC_DATA :: EXTRA_CRC , DATA32_DATA :: ID => DATA32_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , SIMSTATE_DATA :: ID => SIMSTATE_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_3D_DATA :: ID => OBSTACLE_DISTANCE_3D_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , AOA_SSA_DATA :: ID => AOA_SSA_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , DIGICAM_CONFIGURE_DATA :: ID => DIGICAM_CONFIGURE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , RPM_DATA :: ID => RPM_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , OSD_PARAM_SHOW_CONFIG_DATA :: ID => OSD_PARAM_SHOW_CONFIG_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , AIRSPEED_AUTOCAL_DATA :: ID => AIRSPEED_AUTOCAL_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , MOUNT_CONTROL_DATA :: ID => MOUNT_CONTROL_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , MAG_CAL_PROGRESS_DATA :: ID => MAG_CAL_PROGRESS_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , SET_MAG_OFFSETS_DATA :: ID => SET_MAG_OFFSETS_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , RALLY_POINT_DATA :: ID => RALLY_POINT_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , CAMERA_FEEDBACK_DATA :: ID => CAMERA_FEEDBACK_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , DEVICE_OP_WRITE_DATA :: ID => DEVICE_OP_WRITE_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , GOPRO_SET_REQUEST_DATA :: ID => GOPRO_SET_REQUEST_DATA :: EXTRA_CRC , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , PID_TUNING_DATA :: ID => PID_TUNING_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => GIMBAL_TORQUE_CMD_REPORT_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , AHRS2_DATA :: ID => AHRS2_DATA :: EXTRA_CRC , GIMBAL_CONTROL_DATA :: ID => GIMBAL_CONTROL_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: EXTRA_CRC , LIMITS_STATUS_DATA :: ID => LIMITS_STATUS_DATA :: EXTRA_CRC , DEEPSTALL_DATA :: ID => DEEPSTALL_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: EXTRA_CRC , EKF_STATUS_REPORT_DATA :: ID => EKF_STATUS_REPORT_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_REQUEST_DATA :: ID => AUTOPILOT_VERSION_REQUEST_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , ESC_TELEMETRY_1_TO_4_DATA :: ID => ESC_TELEMETRY_1_TO_4_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , MCU_STATUS_DATA :: ID => MCU_STATUS_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , GOPRO_GET_REQUEST_DATA :: ID => GOPRO_GET_REQUEST_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , MOUNT_STATUS_DATA :: ID => MOUNT_STATUS_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , RALLY_FETCH_POINT_DATA :: ID => RALLY_FETCH_POINT_DATA :: EXTRA_CRC , GOPRO_GET_RESPONSE_DATA :: ID => GOPRO_GET_RESPONSE_DATA :: EXTRA_CRC , ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , DATA96_DATA :: ID => DATA96_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , AHRS_DATA :: ID => AHRS_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , ESC_TELEMETRY_5_TO_8_DATA :: ID => ESC_TELEMETRY_5_TO_8_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , VISION_POSITION_DELTA_DATA :: ID => VISION_POSITION_DELTA_DATA :: EXTRA_CRC , WATER_DEPTH_DATA :: ID => WATER_DEPTH_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_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 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 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 } } 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 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 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 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 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 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 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 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 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 } } 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 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 } } # [derive (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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 } } 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 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 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 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 } } 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 , 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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_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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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_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 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 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 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_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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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_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 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 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 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 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 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 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 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 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_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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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_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 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 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 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_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 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 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 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 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 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 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_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 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 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_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 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 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 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 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 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_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 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 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 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_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 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 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_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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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_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 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 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 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 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 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 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 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 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 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 (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { COMPASSMOT_STATUS (COMPASSMOT_STATUS_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , OSD_PARAM_CONFIG (OSD_PARAM_CONFIG_DATA) , VFR_HUD (VFR_HUD_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , DEVICE_OP_READ (DEVICE_OP_READ_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , FENCE_POINT (FENCE_POINT_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , GOPRO_GET_RESPONSE (GOPRO_GET_RESPONSE_DATA) , WIND_COV (WIND_COV_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , ADAP_TUNING (ADAP_TUNING_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , DATA16 (DATA16_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , DATA64 (DATA64_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , OBSTACLE_DISTANCE_3D (OBSTACLE_DISTANCE_3D_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA) , CUBEPILOT_FIRMWARE_UPDATE_START (CUBEPILOT_FIRMWARE_UPDATE_START_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , CAMERA_FEEDBACK (CAMERA_FEEDBACK_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , TUNNEL (TUNNEL_DATA) , AUTOPILOT_VERSION_REQUEST (AUTOPILOT_VERSION_REQUEST_DATA) , OSD_PARAM_SHOW_CONFIG_REPLY (OSD_PARAM_SHOW_CONFIG_REPLY_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , AOA_SSA (AOA_SSA_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , AUTH_KEY (AUTH_KEY_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , GIMBAL_REPORT (GIMBAL_REPORT_DATA) , RAW_RPM (RAW_RPM_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , OSD_PARAM_CONFIG_REPLY (OSD_PARAM_CONFIG_REPLY_DATA) , ESC_STATUS (ESC_STATUS_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , STATUSTEXT (STATUSTEXT_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , ATTITUDE (ATTITUDE_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , EVENT (EVENT_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , EFI_STATUS (EFI_STATUS_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , DEBUG (DEBUG_DATA) , SYS_STATUS (SYS_STATUS_DATA) , HOME_POSITION (HOME_POSITION_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , HERELINK_VIDEO_STREAM_INFORMATION (HERELINK_VIDEO_STREAM_INFORMATION_DATA) , RANGEFINDER (RANGEFINDER_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , GPS_STATUS (GPS_STATUS_DATA) , MOUNT_STATUS (MOUNT_STATUS_DATA) , REMOTE_LOG_DATA_BLOCK (REMOTE_LOG_DATA_BLOCK_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , PID_TUNING (PID_TUNING_DATA) , VIBRATION (VIBRATION_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , CAMERA_STATUS (CAMERA_STATUS_DATA) , HEARTBEAT (HEARTBEAT_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , LED_CONTROL (LED_CONTROL_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , GOPRO_SET_REQUEST (GOPRO_SET_REQUEST_DATA) , VISION_POSITION_DELTA (VISION_POSITION_DELTA_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , WIND (WIND_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , MEMINFO (MEMINFO_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , EKF_STATUS_REPORT (EKF_STATUS_REPORT_DATA) , DATA96 (DATA96_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , GPS2_RTK (GPS2_RTK_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , DEVICE_OP_WRITE_REPLY (DEVICE_OP_WRITE_REPLY_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , COMMAND_INT (COMMAND_INT_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA) , SENSOR_OFFSETS (SENSOR_OFFSETS_DATA) , RALLY_POINT (RALLY_POINT_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , MOUNT_CONTROL (MOUNT_CONTROL_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , ESC_INFO (ESC_INFO_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , HERELINK_TELEM (HERELINK_TELEM_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , AHRS3 (AHRS3_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , GOPRO_SET_RESPONSE (GOPRO_SET_RESPONSE_DATA) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA) , LIMITS_STATUS (LIMITS_STATUS_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , RAW_IMU (RAW_IMU_DATA) , MOUNT_CONFIGURE (MOUNT_CONFIGURE_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , TIMESYNC (TIMESYNC_DATA) , AHRS (AHRS_DATA) , ODOMETRY (ODOMETRY_DATA) , AIRSPEED_AUTOCAL (AIRSPEED_AUTOCAL_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , AP_ADC (AP_ADC_DATA) , MCU_STATUS (MCU_STATUS_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , ESC_TELEMETRY_1_TO_4 (ESC_TELEMETRY_1_TO_4_DATA) , HWSTATUS (HWSTATUS_DATA) , GIMBAL_TORQUE_CMD_REPORT (GIMBAL_TORQUE_CMD_REPORT_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , GOPRO_HEARTBEAT (GOPRO_HEARTBEAT_DATA) , GOPRO_GET_REQUEST (GOPRO_GET_REQUEST_DATA) , RALLY_FETCH_POINT (RALLY_FETCH_POINT_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , OSD_PARAM_SHOW_CONFIG (OSD_PARAM_SHOW_CONFIG_DATA) , RPM (RPM_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , LOG_DATA (LOG_DATA_DATA) , DEVICE_OP_WRITE (DEVICE_OP_WRITE_DATA) , CAN_FRAME (CAN_FRAME_DATA) , GPS2_RAW (GPS2_RAW_DATA) , HIL_GPS (HIL_GPS_DATA) , SIMSTATE (SIMSTATE_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , GPS_INPUT (GPS_INPUT_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , SIM_STATE (SIM_STATE_DATA) , WATER_DEPTH (WATER_DEPTH_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , DATA_STREAM (DATA_STREAM_DATA) , MAG_CAL_PROGRESS (MAG_CAL_PROGRESS_DATA) , UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , LOG_ERASE (LOG_ERASE_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , ESC_TELEMETRY_9_TO_12 (ESC_TELEMETRY_9_TO_12_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , SET_MAG_OFFSETS (SET_MAG_OFFSETS_DATA) , GPS_RTK (GPS_RTK_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , SCALED_IMU (SCALED_IMU_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , CUBEPILOT_FIRMWARE_UPDATE_RESP (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , MISSION_ACK (MISSION_ACK_DATA) , REMOTE_LOG_BLOCK_STATUS (REMOTE_LOG_BLOCK_STATUS_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , FENCE_FETCH_POINT (FENCE_FETCH_POINT_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , ALTITUDE (ALTITUDE_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , BATTERY2 (BATTERY2_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , SET_MODE (SET_MODE_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA) , PARAM_SET (PARAM_SET_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , ESC_TELEMETRY_5_TO_8 (ESC_TELEMETRY_5_TO_8_DATA) , DIGICAM_CONFIGURE (DIGICAM_CONFIGURE_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , AHRS2 (AHRS2_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , COLLISION (COLLISION_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , CUBEPILOT_RAW_RC (CUBEPILOT_RAW_RC_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , DEEPSTALL (DEEPSTALL_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , PING (PING_DATA) , POWER_STATUS (POWER_STATUS_DATA) , DIGICAM_CONTROL (DIGICAM_CONTROL_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , DATA32 (DATA32_DATA) , HIL_STATE (HIL_STATE_DATA) , GIMBAL_CONTROL (GIMBAL_CONTROL_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , RADIO (RADIO_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , DEVICE_OP_READ_REPLY (DEVICE_OP_READ_REPLY_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { COMPASSMOT_STATUS_DATA :: ID => COMPASSMOT_STATUS_DATA :: deser (version , payload) . map (Self :: COMPASSMOT_STATUS) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , OSD_PARAM_CONFIG_DATA :: ID => OSD_PARAM_CONFIG_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_CONFIG) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , DEVICE_OP_READ_DATA :: ID => DEVICE_OP_READ_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_READ) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , FENCE_POINT_DATA :: ID => FENCE_POINT_DATA :: deser (version , payload) . map (Self :: FENCE_POINT) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , GOPRO_GET_RESPONSE_DATA :: ID => GOPRO_GET_RESPONSE_DATA :: deser (version , payload) . map (Self :: GOPRO_GET_RESPONSE) , 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) , ADAP_TUNING_DATA :: ID => ADAP_TUNING_DATA :: deser (version , payload) . map (Self :: ADAP_TUNING) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , DATA16_DATA :: ID => DATA16_DATA :: deser (version , payload) . map (Self :: DATA16) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , DATA64_DATA :: ID => DATA64_DATA :: deser (version , payload) . map (Self :: DATA64) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , OBSTACLE_DISTANCE_3D_DATA :: ID => OBSTACLE_DISTANCE_3D_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE_3D) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: ICAROUS_HEARTBEAT) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_FIRMWARE_UPDATE_START) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , CAMERA_FEEDBACK_DATA :: ID => CAMERA_FEEDBACK_DATA :: deser (version , payload) . map (Self :: CAMERA_FEEDBACK) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , AUTOPILOT_VERSION_REQUEST_DATA :: ID => AUTOPILOT_VERSION_REQUEST_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION_REQUEST) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_SHOW_CONFIG_REPLY) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , AOA_SSA_DATA :: ID => AOA_SSA_DATA :: deser (version , payload) . map (Self :: AOA_SSA) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , GIMBAL_REPORT_DATA :: ID => GIMBAL_REPORT_DATA :: deser (version , payload) . map (Self :: GIMBAL_REPORT) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , OSD_PARAM_CONFIG_REPLY_DATA :: ID => OSD_PARAM_CONFIG_REPLY_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_CONFIG_REPLY) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: HERELINK_VIDEO_STREAM_INFORMATION) , RANGEFINDER_DATA :: ID => RANGEFINDER_DATA :: deser (version , payload) . map (Self :: RANGEFINDER) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , 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) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , MOUNT_STATUS_DATA :: ID => MOUNT_STATUS_DATA :: deser (version , payload) . map (Self :: MOUNT_STATUS) , REMOTE_LOG_DATA_BLOCK_DATA :: ID => REMOTE_LOG_DATA_BLOCK_DATA :: deser (version , payload) . map (Self :: REMOTE_LOG_DATA_BLOCK) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , PID_TUNING_DATA :: ID => PID_TUNING_DATA :: deser (version , payload) . map (Self :: PID_TUNING) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , CAMERA_STATUS_DATA :: ID => CAMERA_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_STATUS) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , LED_CONTROL_DATA :: ID => LED_CONTROL_DATA :: deser (version , payload) . map (Self :: LED_CONTROL) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , GOPRO_SET_REQUEST_DATA :: ID => GOPRO_SET_REQUEST_DATA :: deser (version , payload) . map (Self :: GOPRO_SET_REQUEST) , VISION_POSITION_DELTA_DATA :: ID => VISION_POSITION_DELTA_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_DELTA) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , WIND_DATA :: ID => WIND_DATA :: deser (version , payload) . map (Self :: WIND) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , MEMINFO_DATA :: ID => MEMINFO_DATA :: deser (version , payload) . map (Self :: MEMINFO) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , EKF_STATUS_REPORT_DATA :: ID => EKF_STATUS_REPORT_DATA :: deser (version , payload) . map (Self :: EKF_STATUS_REPORT) , DATA96_DATA :: ID => DATA96_DATA :: deser (version , payload) . map (Self :: DATA96) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , DEVICE_OP_WRITE_REPLY_DATA :: ID => DEVICE_OP_WRITE_REPLY_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_WRITE_REPLY) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: deser (version , payload) . map (Self :: ICAROUS_KINEMATIC_BANDS) , SENSOR_OFFSETS_DATA :: ID => SENSOR_OFFSETS_DATA :: deser (version , payload) . map (Self :: SENSOR_OFFSETS) , RALLY_POINT_DATA :: ID => RALLY_POINT_DATA :: deser (version , payload) . map (Self :: RALLY_POINT) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , MOUNT_CONTROL_DATA :: ID => MOUNT_CONTROL_DATA :: deser (version , payload) . map (Self :: MOUNT_CONTROL) , 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) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , 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) , HERELINK_TELEM_DATA :: ID => HERELINK_TELEM_DATA :: deser (version , payload) . map (Self :: HERELINK_TELEM) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , AHRS3_DATA :: ID => AHRS3_DATA :: deser (version , payload) . map (Self :: AHRS3) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , GOPRO_SET_RESPONSE_DATA :: ID => GOPRO_SET_RESPONSE_DATA :: deser (version , payload) . map (Self :: GOPRO_SET_RESPONSE) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT) , LIMITS_STATUS_DATA :: ID => LIMITS_STATUS_DATA :: deser (version , payload) . map (Self :: LIMITS_STATUS) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , MOUNT_CONFIGURE_DATA :: ID => MOUNT_CONFIGURE_DATA :: deser (version , payload) . map (Self :: MOUNT_CONFIGURE) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , AHRS_DATA :: ID => AHRS_DATA :: deser (version , payload) . map (Self :: AHRS) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , AIRSPEED_AUTOCAL_DATA :: ID => AIRSPEED_AUTOCAL_DATA :: deser (version , payload) . map (Self :: AIRSPEED_AUTOCAL) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , 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) , AP_ADC_DATA :: ID => AP_ADC_DATA :: deser (version , payload) . map (Self :: AP_ADC) , MCU_STATUS_DATA :: ID => MCU_STATUS_DATA :: deser (version , payload) . map (Self :: MCU_STATUS) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , ESC_TELEMETRY_1_TO_4_DATA :: ID => ESC_TELEMETRY_1_TO_4_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_1_TO_4) , HWSTATUS_DATA :: ID => HWSTATUS_DATA :: deser (version , payload) . map (Self :: HWSTATUS) , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => GIMBAL_TORQUE_CMD_REPORT_DATA :: deser (version , payload) . map (Self :: GIMBAL_TORQUE_CMD_REPORT) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , GOPRO_HEARTBEAT_DATA :: ID => GOPRO_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: GOPRO_HEARTBEAT) , GOPRO_GET_REQUEST_DATA :: ID => GOPRO_GET_REQUEST_DATA :: deser (version , payload) . map (Self :: GOPRO_GET_REQUEST) , RALLY_FETCH_POINT_DATA :: ID => RALLY_FETCH_POINT_DATA :: deser (version , payload) . map (Self :: RALLY_FETCH_POINT) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , OSD_PARAM_SHOW_CONFIG_DATA :: ID => OSD_PARAM_SHOW_CONFIG_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_SHOW_CONFIG) , RPM_DATA :: ID => RPM_DATA :: deser (version , payload) . map (Self :: RPM) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , DEVICE_OP_WRITE_DATA :: ID => DEVICE_OP_WRITE_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_WRITE) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , SIMSTATE_DATA :: ID => SIMSTATE_DATA :: deser (version , payload) . map (Self :: SIMSTATE) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , WATER_DEPTH_DATA :: ID => WATER_DEPTH_DATA :: deser (version , payload) . map (Self :: WATER_DEPTH) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , 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) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , MAG_CAL_PROGRESS_DATA :: ID => MAG_CAL_PROGRESS_DATA :: deser (version , payload) . map (Self :: MAG_CAL_PROGRESS) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_DYNAMIC) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , ESC_TELEMETRY_9_TO_12_DATA :: ID => ESC_TELEMETRY_9_TO_12_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_9_TO_12) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_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_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) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , SET_MAG_OFFSETS_DATA :: ID => SET_MAG_OFFSETS_DATA :: deser (version , payload) . map (Self :: SET_MAG_OFFSETS) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => REMOTE_LOG_BLOCK_STATUS_DATA :: deser (version , payload) . map (Self :: REMOTE_LOG_BLOCK_STATUS) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , FENCE_FETCH_POINT_DATA :: ID => FENCE_FETCH_POINT_DATA :: deser (version , payload) . map (Self :: FENCE_FETCH_POINT) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , BATTERY2_DATA :: ID => BATTERY2_DATA :: deser (version , payload) . map (Self :: BATTERY2) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_CFG) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , ESC_TELEMETRY_5_TO_8_DATA :: ID => ESC_TELEMETRY_5_TO_8_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_5_TO_8) , DIGICAM_CONFIGURE_DATA :: ID => DIGICAM_CONFIGURE_DATA :: deser (version , payload) . map (Self :: DIGICAM_CONFIGURE) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , AHRS2_DATA :: ID => AHRS2_DATA :: deser (version , payload) . map (Self :: AHRS2) , 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) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , CUBEPILOT_RAW_RC_DATA :: ID => CUBEPILOT_RAW_RC_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_RAW_RC) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , DEEPSTALL_DATA :: ID => DEEPSTALL_DATA :: deser (version , payload) . map (Self :: DEEPSTALL) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , DIGICAM_CONTROL_DATA :: ID => DIGICAM_CONTROL_DATA :: deser (version , payload) . map (Self :: DIGICAM_CONTROL) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , DATA32_DATA :: ID => DATA32_DATA :: deser (version , payload) . map (Self :: DATA32) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , GIMBAL_CONTROL_DATA :: ID => GIMBAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_CONTROL) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , RADIO_DATA :: ID => RADIO_DATA :: deser (version , payload) . map (Self :: RADIO) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , DEVICE_OP_READ_REPLY_DATA :: ID => DEVICE_OP_READ_REPLY_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_READ_REPLY) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: COMPASSMOT_STATUS (..) => COMPASSMOT_STATUS_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: OSD_PARAM_CONFIG (..) => OSD_PARAM_CONFIG_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: DEVICE_OP_READ (..) => DEVICE_OP_READ_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: FENCE_POINT (..) => FENCE_POINT_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: GOPRO_GET_RESPONSE (..) => GOPRO_GET_RESPONSE_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: ADAP_TUNING (..) => ADAP_TUNING_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: DATA16 (..) => DATA16_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: DATA64 (..) => DATA64_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: OBSTACLE_DISTANCE_3D (..) => OBSTACLE_DISTANCE_3D_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: NAME , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (..) => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: CAMERA_FEEDBACK (..) => CAMERA_FEEDBACK_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: AUTOPILOT_VERSION_REQUEST (..) => AUTOPILOT_VERSION_REQUEST_DATA :: NAME , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (..) => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: AOA_SSA (..) => AOA_SSA_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: GIMBAL_REPORT (..) => GIMBAL_REPORT_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: OSD_PARAM_CONFIG_REPLY (..) => OSD_PARAM_CONFIG_REPLY_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: HERELINK_VIDEO_STREAM_INFORMATION (..) => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: RANGEFINDER (..) => RANGEFINDER_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_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 :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: MOUNT_STATUS (..) => MOUNT_STATUS_DATA :: NAME , Self :: REMOTE_LOG_DATA_BLOCK (..) => REMOTE_LOG_DATA_BLOCK_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: PID_TUNING (..) => PID_TUNING_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: CAMERA_STATUS (..) => CAMERA_STATUS_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: LED_CONTROL (..) => LED_CONTROL_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: GOPRO_SET_REQUEST (..) => GOPRO_SET_REQUEST_DATA :: NAME , Self :: VISION_POSITION_DELTA (..) => VISION_POSITION_DELTA_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: WIND (..) => WIND_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: MEMINFO (..) => MEMINFO_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: EKF_STATUS_REPORT (..) => EKF_STATUS_REPORT_DATA :: NAME , Self :: DATA96 (..) => DATA96_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: DEVICE_OP_WRITE_REPLY (..) => DEVICE_OP_WRITE_REPLY_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: NAME , Self :: SENSOR_OFFSETS (..) => SENSOR_OFFSETS_DATA :: NAME , Self :: RALLY_POINT (..) => RALLY_POINT_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: MOUNT_CONTROL (..) => MOUNT_CONTROL_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_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 :: HERELINK_TELEM (..) => HERELINK_TELEM_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: AHRS3 (..) => AHRS3_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: GOPRO_SET_RESPONSE (..) => GOPRO_SET_RESPONSE_DATA :: NAME , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME , Self :: LIMITS_STATUS (..) => LIMITS_STATUS_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: MOUNT_CONFIGURE (..) => MOUNT_CONFIGURE_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: AHRS (..) => AHRS_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: AIRSPEED_AUTOCAL (..) => AIRSPEED_AUTOCAL_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: AP_ADC (..) => AP_ADC_DATA :: NAME , Self :: MCU_STATUS (..) => MCU_STATUS_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: ESC_TELEMETRY_1_TO_4 (..) => ESC_TELEMETRY_1_TO_4_DATA :: NAME , Self :: HWSTATUS (..) => HWSTATUS_DATA :: NAME , Self :: GIMBAL_TORQUE_CMD_REPORT (..) => GIMBAL_TORQUE_CMD_REPORT_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: GOPRO_HEARTBEAT (..) => GOPRO_HEARTBEAT_DATA :: NAME , Self :: GOPRO_GET_REQUEST (..) => GOPRO_GET_REQUEST_DATA :: NAME , Self :: RALLY_FETCH_POINT (..) => RALLY_FETCH_POINT_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: OSD_PARAM_SHOW_CONFIG (..) => OSD_PARAM_SHOW_CONFIG_DATA :: NAME , Self :: RPM (..) => RPM_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: DEVICE_OP_WRITE (..) => DEVICE_OP_WRITE_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: SIMSTATE (..) => SIMSTATE_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: WATER_DEPTH (..) => WATER_DEPTH_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: MAG_CAL_PROGRESS (..) => MAG_CAL_PROGRESS_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: ESC_TELEMETRY_9_TO_12 (..) => ESC_TELEMETRY_9_TO_12_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: SET_MAG_OFFSETS (..) => SET_MAG_OFFSETS_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (..) => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: REMOTE_LOG_BLOCK_STATUS (..) => REMOTE_LOG_BLOCK_STATUS_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: FENCE_FETCH_POINT (..) => FENCE_FETCH_POINT_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: BATTERY2 (..) => BATTERY2_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: ESC_TELEMETRY_5_TO_8 (..) => ESC_TELEMETRY_5_TO_8_DATA :: NAME , Self :: DIGICAM_CONFIGURE (..) => DIGICAM_CONFIGURE_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: AHRS2 (..) => AHRS2_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: CUBEPILOT_RAW_RC (..) => CUBEPILOT_RAW_RC_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: DEEPSTALL (..) => DEEPSTALL_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: DIGICAM_CONTROL (..) => DIGICAM_CONTROL_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: DATA32 (..) => DATA32_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: GIMBAL_CONTROL (..) => GIMBAL_CONTROL_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: RADIO (..) => RADIO_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: DEVICE_OP_READ_REPLY (..) => DEVICE_OP_READ_REPLY_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: COMPASSMOT_STATUS (..) => COMPASSMOT_STATUS_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: OSD_PARAM_CONFIG (..) => OSD_PARAM_CONFIG_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: DEVICE_OP_READ (..) => DEVICE_OP_READ_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: FENCE_POINT (..) => FENCE_POINT_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: GOPRO_GET_RESPONSE (..) => GOPRO_GET_RESPONSE_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: ADAP_TUNING (..) => ADAP_TUNING_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: DATA16 (..) => DATA16_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: DATA64 (..) => DATA64_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: OBSTACLE_DISTANCE_3D (..) => OBSTACLE_DISTANCE_3D_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: ID , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (..) => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: CAMERA_FEEDBACK (..) => CAMERA_FEEDBACK_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: AUTOPILOT_VERSION_REQUEST (..) => AUTOPILOT_VERSION_REQUEST_DATA :: ID , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (..) => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: AOA_SSA (..) => AOA_SSA_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: GIMBAL_REPORT (..) => GIMBAL_REPORT_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: OSD_PARAM_CONFIG_REPLY (..) => OSD_PARAM_CONFIG_REPLY_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: HERELINK_VIDEO_STREAM_INFORMATION (..) => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: RANGEFINDER (..) => RANGEFINDER_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_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 :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: MOUNT_STATUS (..) => MOUNT_STATUS_DATA :: ID , Self :: REMOTE_LOG_DATA_BLOCK (..) => REMOTE_LOG_DATA_BLOCK_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: PID_TUNING (..) => PID_TUNING_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: CAMERA_STATUS (..) => CAMERA_STATUS_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: LED_CONTROL (..) => LED_CONTROL_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: GOPRO_SET_REQUEST (..) => GOPRO_SET_REQUEST_DATA :: ID , Self :: VISION_POSITION_DELTA (..) => VISION_POSITION_DELTA_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: WIND (..) => WIND_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: MEMINFO (..) => MEMINFO_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: EKF_STATUS_REPORT (..) => EKF_STATUS_REPORT_DATA :: ID , Self :: DATA96 (..) => DATA96_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: DEVICE_OP_WRITE_REPLY (..) => DEVICE_OP_WRITE_REPLY_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: ID , Self :: SENSOR_OFFSETS (..) => SENSOR_OFFSETS_DATA :: ID , Self :: RALLY_POINT (..) => RALLY_POINT_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: MOUNT_CONTROL (..) => MOUNT_CONTROL_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_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 :: HERELINK_TELEM (..) => HERELINK_TELEM_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: AHRS3 (..) => AHRS3_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: GOPRO_SET_RESPONSE (..) => GOPRO_SET_RESPONSE_DATA :: ID , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID , Self :: LIMITS_STATUS (..) => LIMITS_STATUS_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: MOUNT_CONFIGURE (..) => MOUNT_CONFIGURE_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: AHRS (..) => AHRS_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: AIRSPEED_AUTOCAL (..) => AIRSPEED_AUTOCAL_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: AP_ADC (..) => AP_ADC_DATA :: ID , Self :: MCU_STATUS (..) => MCU_STATUS_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: ESC_TELEMETRY_1_TO_4 (..) => ESC_TELEMETRY_1_TO_4_DATA :: ID , Self :: HWSTATUS (..) => HWSTATUS_DATA :: ID , Self :: GIMBAL_TORQUE_CMD_REPORT (..) => GIMBAL_TORQUE_CMD_REPORT_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: GOPRO_HEARTBEAT (..) => GOPRO_HEARTBEAT_DATA :: ID , Self :: GOPRO_GET_REQUEST (..) => GOPRO_GET_REQUEST_DATA :: ID , Self :: RALLY_FETCH_POINT (..) => RALLY_FETCH_POINT_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: OSD_PARAM_SHOW_CONFIG (..) => OSD_PARAM_SHOW_CONFIG_DATA :: ID , Self :: RPM (..) => RPM_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: DEVICE_OP_WRITE (..) => DEVICE_OP_WRITE_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: SIMSTATE (..) => SIMSTATE_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: WATER_DEPTH (..) => WATER_DEPTH_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: MAG_CAL_PROGRESS (..) => MAG_CAL_PROGRESS_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: ESC_TELEMETRY_9_TO_12 (..) => ESC_TELEMETRY_9_TO_12_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: SET_MAG_OFFSETS (..) => SET_MAG_OFFSETS_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (..) => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: REMOTE_LOG_BLOCK_STATUS (..) => REMOTE_LOG_BLOCK_STATUS_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: FENCE_FETCH_POINT (..) => FENCE_FETCH_POINT_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: BATTERY2 (..) => BATTERY2_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: ESC_TELEMETRY_5_TO_8 (..) => ESC_TELEMETRY_5_TO_8_DATA :: ID , Self :: DIGICAM_CONFIGURE (..) => DIGICAM_CONFIGURE_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: AHRS2 (..) => AHRS2_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: CUBEPILOT_RAW_RC (..) => CUBEPILOT_RAW_RC_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: DEEPSTALL (..) => DEEPSTALL_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: DIGICAM_CONTROL (..) => DIGICAM_CONTROL_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: DATA32 (..) => DATA32_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: GIMBAL_CONTROL (..) => GIMBAL_CONTROL_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: RADIO (..) => RADIO_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: DEVICE_OP_READ_REPLY (..) => DEVICE_OP_READ_REPLY_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { COMPASSMOT_STATUS_DATA :: NAME => Ok (COMPASSMOT_STATUS_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , OSD_PARAM_CONFIG_DATA :: NAME => Ok (OSD_PARAM_CONFIG_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , DEVICE_OP_READ_DATA :: NAME => Ok (DEVICE_OP_READ_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , FENCE_POINT_DATA :: NAME => Ok (FENCE_POINT_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , GOPRO_GET_RESPONSE_DATA :: NAME => Ok (GOPRO_GET_RESPONSE_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , ADAP_TUNING_DATA :: NAME => Ok (ADAP_TUNING_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , DATA16_DATA :: NAME => Ok (DATA16_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , DATA64_DATA :: NAME => Ok (DATA64_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , OBSTACLE_DISTANCE_3D_DATA :: NAME => Ok (OBSTACLE_DISTANCE_3D_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , ICAROUS_HEARTBEAT_DATA :: NAME => Ok (ICAROUS_HEARTBEAT_DATA :: ID) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: NAME => Ok (CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , CAMERA_FEEDBACK_DATA :: NAME => Ok (CAMERA_FEEDBACK_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , AUTOPILOT_VERSION_REQUEST_DATA :: NAME => Ok (AUTOPILOT_VERSION_REQUEST_DATA :: ID) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: NAME => Ok (OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , AOA_SSA_DATA :: NAME => Ok (AOA_SSA_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , GIMBAL_REPORT_DATA :: NAME => Ok (GIMBAL_REPORT_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , OSD_PARAM_CONFIG_REPLY_DATA :: NAME => Ok (OSD_PARAM_CONFIG_REPLY_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID) , RANGEFINDER_DATA :: NAME => Ok (RANGEFINDER_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_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) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , MOUNT_STATUS_DATA :: NAME => Ok (MOUNT_STATUS_DATA :: ID) , REMOTE_LOG_DATA_BLOCK_DATA :: NAME => Ok (REMOTE_LOG_DATA_BLOCK_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , PID_TUNING_DATA :: NAME => Ok (PID_TUNING_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , CAMERA_STATUS_DATA :: NAME => Ok (CAMERA_STATUS_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , LED_CONTROL_DATA :: NAME => Ok (LED_CONTROL_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , GOPRO_SET_REQUEST_DATA :: NAME => Ok (GOPRO_SET_REQUEST_DATA :: ID) , VISION_POSITION_DELTA_DATA :: NAME => Ok (VISION_POSITION_DELTA_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , WIND_DATA :: NAME => Ok (WIND_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , MEMINFO_DATA :: NAME => Ok (MEMINFO_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , EKF_STATUS_REPORT_DATA :: NAME => Ok (EKF_STATUS_REPORT_DATA :: ID) , DATA96_DATA :: NAME => Ok (DATA96_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , DEVICE_OP_WRITE_REPLY_DATA :: NAME => Ok (DEVICE_OP_WRITE_REPLY_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , ICAROUS_KINEMATIC_BANDS_DATA :: NAME => Ok (ICAROUS_KINEMATIC_BANDS_DATA :: ID) , SENSOR_OFFSETS_DATA :: NAME => Ok (SENSOR_OFFSETS_DATA :: ID) , RALLY_POINT_DATA :: NAME => Ok (RALLY_POINT_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , MOUNT_CONTROL_DATA :: NAME => Ok (MOUNT_CONTROL_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_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) , HERELINK_TELEM_DATA :: NAME => Ok (HERELINK_TELEM_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , AHRS3_DATA :: NAME => Ok (AHRS3_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , GOPRO_SET_RESPONSE_DATA :: NAME => Ok (GOPRO_SET_RESPONSE_DATA :: ID) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME => Ok (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID) , LIMITS_STATUS_DATA :: NAME => Ok (LIMITS_STATUS_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , MOUNT_CONFIGURE_DATA :: NAME => Ok (MOUNT_CONFIGURE_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , AHRS_DATA :: NAME => Ok (AHRS_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , AIRSPEED_AUTOCAL_DATA :: NAME => Ok (AIRSPEED_AUTOCAL_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , AP_ADC_DATA :: NAME => Ok (AP_ADC_DATA :: ID) , MCU_STATUS_DATA :: NAME => Ok (MCU_STATUS_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , ESC_TELEMETRY_1_TO_4_DATA :: NAME => Ok (ESC_TELEMETRY_1_TO_4_DATA :: ID) , HWSTATUS_DATA :: NAME => Ok (HWSTATUS_DATA :: ID) , GIMBAL_TORQUE_CMD_REPORT_DATA :: NAME => Ok (GIMBAL_TORQUE_CMD_REPORT_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , GOPRO_HEARTBEAT_DATA :: NAME => Ok (GOPRO_HEARTBEAT_DATA :: ID) , GOPRO_GET_REQUEST_DATA :: NAME => Ok (GOPRO_GET_REQUEST_DATA :: ID) , RALLY_FETCH_POINT_DATA :: NAME => Ok (RALLY_FETCH_POINT_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , OSD_PARAM_SHOW_CONFIG_DATA :: NAME => Ok (OSD_PARAM_SHOW_CONFIG_DATA :: ID) , RPM_DATA :: NAME => Ok (RPM_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , DEVICE_OP_WRITE_DATA :: NAME => Ok (DEVICE_OP_WRITE_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , SIMSTATE_DATA :: NAME => Ok (SIMSTATE_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , WATER_DEPTH_DATA :: NAME => Ok (WATER_DEPTH_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_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) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , MAG_CAL_PROGRESS_DATA :: NAME => Ok (MAG_CAL_PROGRESS_DATA :: ID) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , ESC_TELEMETRY_9_TO_12_DATA :: NAME => Ok (ESC_TELEMETRY_9_TO_12_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , SET_MAG_OFFSETS_DATA :: NAME => Ok (SET_MAG_OFFSETS_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: NAME => Ok (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , REMOTE_LOG_BLOCK_STATUS_DATA :: NAME => Ok (REMOTE_LOG_BLOCK_STATUS_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , FENCE_FETCH_POINT_DATA :: NAME => Ok (FENCE_FETCH_POINT_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , BATTERY2_DATA :: NAME => Ok (BATTERY2_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , UAVIONIX_ADSB_OUT_CFG_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_CFG_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , ESC_TELEMETRY_5_TO_8_DATA :: NAME => Ok (ESC_TELEMETRY_5_TO_8_DATA :: ID) , DIGICAM_CONFIGURE_DATA :: NAME => Ok (DIGICAM_CONFIGURE_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , AHRS2_DATA :: NAME => Ok (AHRS2_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , CUBEPILOT_RAW_RC_DATA :: NAME => Ok (CUBEPILOT_RAW_RC_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , DEEPSTALL_DATA :: NAME => Ok (DEEPSTALL_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , DIGICAM_CONTROL_DATA :: NAME => Ok (DIGICAM_CONTROL_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , DATA32_DATA :: NAME => Ok (DATA32_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , GIMBAL_CONTROL_DATA :: NAME => Ok (GIMBAL_CONTROL_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , RADIO_DATA :: NAME => Ok (RADIO_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , DEVICE_OP_READ_REPLY_DATA :: NAME => Ok (DEVICE_OP_READ_REPLY_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { COMPASSMOT_STATUS_DATA :: ID => Ok (Self :: COMPASSMOT_STATUS (COMPASSMOT_STATUS_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , OSD_PARAM_CONFIG_DATA :: ID => Ok (Self :: OSD_PARAM_CONFIG (OSD_PARAM_CONFIG_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , DEVICE_OP_READ_DATA :: ID => Ok (Self :: DEVICE_OP_READ (DEVICE_OP_READ_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , FENCE_POINT_DATA :: ID => Ok (Self :: FENCE_POINT (FENCE_POINT_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , GOPRO_GET_RESPONSE_DATA :: ID => Ok (Self :: GOPRO_GET_RESPONSE (GOPRO_GET_RESPONSE_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 ())) , ADAP_TUNING_DATA :: ID => Ok (Self :: ADAP_TUNING (ADAP_TUNING_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , DATA16_DATA :: ID => Ok (Self :: DATA16 (DATA16_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , DATA64_DATA :: ID => Ok (Self :: DATA64 (DATA64_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , OBSTACLE_DISTANCE_3D_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE_3D (OBSTACLE_DISTANCE_3D_DATA :: default ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , ICAROUS_HEARTBEAT_DATA :: ID => Ok (Self :: ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA :: default ())) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => Ok (Self :: CUBEPILOT_FIRMWARE_UPDATE_START (CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , CAMERA_FEEDBACK_DATA :: ID => Ok (Self :: CAMERA_FEEDBACK (CAMERA_FEEDBACK_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , AUTOPILOT_VERSION_REQUEST_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION_REQUEST (AUTOPILOT_VERSION_REQUEST_DATA :: default ())) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => Ok (Self :: OSD_PARAM_SHOW_CONFIG_REPLY (OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , AOA_SSA_DATA :: ID => Ok (Self :: AOA_SSA (AOA_SSA_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , GIMBAL_REPORT_DATA :: ID => Ok (Self :: GIMBAL_REPORT (GIMBAL_REPORT_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , OSD_PARAM_CONFIG_REPLY_DATA :: ID => Ok (Self :: OSD_PARAM_CONFIG_REPLY (OSD_PARAM_CONFIG_REPLY_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: HERELINK_VIDEO_STREAM_INFORMATION (HERELINK_VIDEO_STREAM_INFORMATION_DATA :: default ())) , RANGEFINDER_DATA :: ID => Ok (Self :: RANGEFINDER (RANGEFINDER_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_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 ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , MOUNT_STATUS_DATA :: ID => Ok (Self :: MOUNT_STATUS (MOUNT_STATUS_DATA :: default ())) , REMOTE_LOG_DATA_BLOCK_DATA :: ID => Ok (Self :: REMOTE_LOG_DATA_BLOCK (REMOTE_LOG_DATA_BLOCK_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , PID_TUNING_DATA :: ID => Ok (Self :: PID_TUNING (PID_TUNING_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , CAMERA_STATUS_DATA :: ID => Ok (Self :: CAMERA_STATUS (CAMERA_STATUS_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , LED_CONTROL_DATA :: ID => Ok (Self :: LED_CONTROL (LED_CONTROL_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , GOPRO_SET_REQUEST_DATA :: ID => Ok (Self :: GOPRO_SET_REQUEST (GOPRO_SET_REQUEST_DATA :: default ())) , VISION_POSITION_DELTA_DATA :: ID => Ok (Self :: VISION_POSITION_DELTA (VISION_POSITION_DELTA_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , WIND_DATA :: ID => Ok (Self :: WIND (WIND_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , MEMINFO_DATA :: ID => Ok (Self :: MEMINFO (MEMINFO_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , EKF_STATUS_REPORT_DATA :: ID => Ok (Self :: EKF_STATUS_REPORT (EKF_STATUS_REPORT_DATA :: default ())) , DATA96_DATA :: ID => Ok (Self :: DATA96 (DATA96_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , DEVICE_OP_WRITE_REPLY_DATA :: ID => Ok (Self :: DEVICE_OP_WRITE_REPLY (DEVICE_OP_WRITE_REPLY_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , ICAROUS_KINEMATIC_BANDS_DATA :: ID => Ok (Self :: ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA :: default ())) , SENSOR_OFFSETS_DATA :: ID => Ok (Self :: SENSOR_OFFSETS (SENSOR_OFFSETS_DATA :: default ())) , RALLY_POINT_DATA :: ID => Ok (Self :: RALLY_POINT (RALLY_POINT_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , MOUNT_CONTROL_DATA :: ID => Ok (Self :: MOUNT_CONTROL (MOUNT_CONTROL_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 ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_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 ())) , HERELINK_TELEM_DATA :: ID => Ok (Self :: HERELINK_TELEM (HERELINK_TELEM_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , AHRS3_DATA :: ID => Ok (Self :: AHRS3 (AHRS3_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , GOPRO_SET_RESPONSE_DATA :: ID => Ok (Self :: GOPRO_SET_RESPONSE (GOPRO_SET_RESPONSE_DATA :: default ())) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: default ())) , LIMITS_STATUS_DATA :: ID => Ok (Self :: LIMITS_STATUS (LIMITS_STATUS_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , MOUNT_CONFIGURE_DATA :: ID => Ok (Self :: MOUNT_CONFIGURE (MOUNT_CONFIGURE_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , AHRS_DATA :: ID => Ok (Self :: AHRS (AHRS_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , AIRSPEED_AUTOCAL_DATA :: ID => Ok (Self :: AIRSPEED_AUTOCAL (AIRSPEED_AUTOCAL_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_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 ())) , AP_ADC_DATA :: ID => Ok (Self :: AP_ADC (AP_ADC_DATA :: default ())) , MCU_STATUS_DATA :: ID => Ok (Self :: MCU_STATUS (MCU_STATUS_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , ESC_TELEMETRY_1_TO_4_DATA :: ID => Ok (Self :: ESC_TELEMETRY_1_TO_4 (ESC_TELEMETRY_1_TO_4_DATA :: default ())) , HWSTATUS_DATA :: ID => Ok (Self :: HWSTATUS (HWSTATUS_DATA :: default ())) , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => Ok (Self :: GIMBAL_TORQUE_CMD_REPORT (GIMBAL_TORQUE_CMD_REPORT_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , GOPRO_HEARTBEAT_DATA :: ID => Ok (Self :: GOPRO_HEARTBEAT (GOPRO_HEARTBEAT_DATA :: default ())) , GOPRO_GET_REQUEST_DATA :: ID => Ok (Self :: GOPRO_GET_REQUEST (GOPRO_GET_REQUEST_DATA :: default ())) , RALLY_FETCH_POINT_DATA :: ID => Ok (Self :: RALLY_FETCH_POINT (RALLY_FETCH_POINT_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , OSD_PARAM_SHOW_CONFIG_DATA :: ID => Ok (Self :: OSD_PARAM_SHOW_CONFIG (OSD_PARAM_SHOW_CONFIG_DATA :: default ())) , RPM_DATA :: ID => Ok (Self :: RPM (RPM_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , DEVICE_OP_WRITE_DATA :: ID => Ok (Self :: DEVICE_OP_WRITE (DEVICE_OP_WRITE_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , SIMSTATE_DATA :: ID => Ok (Self :: SIMSTATE (SIMSTATE_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , WATER_DEPTH_DATA :: ID => Ok (Self :: WATER_DEPTH (WATER_DEPTH_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_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 ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , MAG_CAL_PROGRESS_DATA :: ID => Ok (Self :: MAG_CAL_PROGRESS (MAG_CAL_PROGRESS_DATA :: default ())) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , ESC_TELEMETRY_9_TO_12_DATA :: ID => Ok (Self :: ESC_TELEMETRY_9_TO_12 (ESC_TELEMETRY_9_TO_12_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_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_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , SET_MAG_OFFSETS_DATA :: ID => Ok (Self :: SET_MAG_OFFSETS (SET_MAG_OFFSETS_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => Ok (Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => Ok (Self :: REMOTE_LOG_BLOCK_STATUS (REMOTE_LOG_BLOCK_STATUS_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , FENCE_FETCH_POINT_DATA :: ID => Ok (Self :: FENCE_FETCH_POINT (FENCE_FETCH_POINT_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , BATTERY2_DATA :: ID => Ok (Self :: BATTERY2 (BATTERY2_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , ESC_TELEMETRY_5_TO_8_DATA :: ID => Ok (Self :: ESC_TELEMETRY_5_TO_8 (ESC_TELEMETRY_5_TO_8_DATA :: default ())) , DIGICAM_CONFIGURE_DATA :: ID => Ok (Self :: DIGICAM_CONFIGURE (DIGICAM_CONFIGURE_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , AHRS2_DATA :: ID => Ok (Self :: AHRS2 (AHRS2_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 ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , CUBEPILOT_RAW_RC_DATA :: ID => Ok (Self :: CUBEPILOT_RAW_RC (CUBEPILOT_RAW_RC_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , DEEPSTALL_DATA :: ID => Ok (Self :: DEEPSTALL (DEEPSTALL_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , DIGICAM_CONTROL_DATA :: ID => Ok (Self :: DIGICAM_CONTROL (DIGICAM_CONTROL_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , DATA32_DATA :: ID => Ok (Self :: DATA32 (DATA32_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , GIMBAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_CONTROL (GIMBAL_CONTROL_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , RADIO_DATA :: ID => Ok (Self :: RADIO (RADIO_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , DEVICE_OP_READ_REPLY_DATA :: ID => Ok (Self :: DEVICE_OP_READ_REPLY (DEVICE_OP_READ_REPLY_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: COMPASSMOT_STATUS (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: OSD_PARAM_CONFIG (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: DEVICE_OP_READ (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: FENCE_POINT (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: GOPRO_GET_RESPONSE (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: ADAP_TUNING (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: DATA16 (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: DATA64 (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE_3D (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: ICAROUS_HEARTBEAT (body) => body . ser (version , bytes) , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: CAMERA_FEEDBACK (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION_REQUEST (body) => body . ser (version , bytes) , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: AOA_SSA (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: GIMBAL_REPORT (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: OSD_PARAM_CONFIG_REPLY (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: HERELINK_VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: RANGEFINDER (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (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 :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: MOUNT_STATUS (body) => body . ser (version , bytes) , Self :: REMOTE_LOG_DATA_BLOCK (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: PID_TUNING (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: CAMERA_STATUS (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: LED_CONTROL (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: GOPRO_SET_REQUEST (body) => body . ser (version , bytes) , Self :: VISION_POSITION_DELTA (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: WIND (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: MEMINFO (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: EKF_STATUS_REPORT (body) => body . ser (version , bytes) , Self :: DATA96 (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: DEVICE_OP_WRITE_REPLY (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: ICAROUS_KINEMATIC_BANDS (body) => body . ser (version , bytes) , Self :: SENSOR_OFFSETS (body) => body . ser (version , bytes) , Self :: RALLY_POINT (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: MOUNT_CONTROL (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (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 :: HERELINK_TELEM (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: AHRS3 (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: GOPRO_SET_RESPONSE (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (body) => body . ser (version , bytes) , Self :: LIMITS_STATUS (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: MOUNT_CONFIGURE (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: AHRS (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: AIRSPEED_AUTOCAL (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: AP_ADC (body) => body . ser (version , bytes) , Self :: MCU_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_1_TO_4 (body) => body . ser (version , bytes) , Self :: HWSTATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_TORQUE_CMD_REPORT (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: GOPRO_HEARTBEAT (body) => body . ser (version , bytes) , Self :: GOPRO_GET_REQUEST (body) => body . ser (version , bytes) , Self :: RALLY_FETCH_POINT (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: OSD_PARAM_SHOW_CONFIG (body) => body . ser (version , bytes) , Self :: RPM (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: DEVICE_OP_WRITE (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: SIMSTATE (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: WATER_DEPTH (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (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 :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: MAG_CAL_PROGRESS (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_9_TO_12 (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: SET_MAG_OFFSETS (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: REMOTE_LOG_BLOCK_STATUS (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: FENCE_FETCH_POINT (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: BATTERY2 (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_CFG (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_5_TO_8 (body) => body . ser (version , bytes) , Self :: DIGICAM_CONFIGURE (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: AHRS2 (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: CUBEPILOT_RAW_RC (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: DEEPSTALL (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: DIGICAM_CONTROL (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: DATA32 (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: GIMBAL_CONTROL (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: RADIO (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: DEVICE_OP_READ_REPLY (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { COMPASSMOT_STATUS_DATA :: ID => COMPASSMOT_STATUS_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , OSD_PARAM_CONFIG_DATA :: ID => OSD_PARAM_CONFIG_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , DEVICE_OP_READ_DATA :: ID => DEVICE_OP_READ_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , FENCE_POINT_DATA :: ID => FENCE_POINT_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , GOPRO_GET_RESPONSE_DATA :: ID => GOPRO_GET_RESPONSE_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , ADAP_TUNING_DATA :: ID => ADAP_TUNING_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , DATA16_DATA :: ID => DATA16_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , DATA64_DATA :: ID => DATA64_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_3D_DATA :: ID => OBSTACLE_DISTANCE_3D_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: EXTRA_CRC , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , CAMERA_FEEDBACK_DATA :: ID => CAMERA_FEEDBACK_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_REQUEST_DATA :: ID => AUTOPILOT_VERSION_REQUEST_DATA :: EXTRA_CRC , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , AOA_SSA_DATA :: ID => AOA_SSA_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , GIMBAL_REPORT_DATA :: ID => GIMBAL_REPORT_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , OSD_PARAM_CONFIG_REPLY_DATA :: ID => OSD_PARAM_CONFIG_REPLY_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , RANGEFINDER_DATA :: ID => RANGEFINDER_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_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 , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , MOUNT_STATUS_DATA :: ID => MOUNT_STATUS_DATA :: EXTRA_CRC , REMOTE_LOG_DATA_BLOCK_DATA :: ID => REMOTE_LOG_DATA_BLOCK_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , PID_TUNING_DATA :: ID => PID_TUNING_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , CAMERA_STATUS_DATA :: ID => CAMERA_STATUS_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , LED_CONTROL_DATA :: ID => LED_CONTROL_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , GOPRO_SET_REQUEST_DATA :: ID => GOPRO_SET_REQUEST_DATA :: EXTRA_CRC , VISION_POSITION_DELTA_DATA :: ID => VISION_POSITION_DELTA_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , WIND_DATA :: ID => WIND_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , MEMINFO_DATA :: ID => MEMINFO_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , EKF_STATUS_REPORT_DATA :: ID => EKF_STATUS_REPORT_DATA :: EXTRA_CRC , DATA96_DATA :: ID => DATA96_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , DEVICE_OP_WRITE_REPLY_DATA :: ID => DEVICE_OP_WRITE_REPLY_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: EXTRA_CRC , SENSOR_OFFSETS_DATA :: ID => SENSOR_OFFSETS_DATA :: EXTRA_CRC , RALLY_POINT_DATA :: ID => RALLY_POINT_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , MOUNT_CONTROL_DATA :: ID => MOUNT_CONTROL_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_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 , HERELINK_TELEM_DATA :: ID => HERELINK_TELEM_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , AHRS3_DATA :: ID => AHRS3_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , GOPRO_SET_RESPONSE_DATA :: ID => GOPRO_SET_RESPONSE_DATA :: EXTRA_CRC , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: EXTRA_CRC , LIMITS_STATUS_DATA :: ID => LIMITS_STATUS_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , MOUNT_CONFIGURE_DATA :: ID => MOUNT_CONFIGURE_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , AHRS_DATA :: ID => AHRS_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , AIRSPEED_AUTOCAL_DATA :: ID => AIRSPEED_AUTOCAL_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , AP_ADC_DATA :: ID => AP_ADC_DATA :: EXTRA_CRC , MCU_STATUS_DATA :: ID => MCU_STATUS_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , ESC_TELEMETRY_1_TO_4_DATA :: ID => ESC_TELEMETRY_1_TO_4_DATA :: EXTRA_CRC , HWSTATUS_DATA :: ID => HWSTATUS_DATA :: EXTRA_CRC , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => GIMBAL_TORQUE_CMD_REPORT_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , GOPRO_HEARTBEAT_DATA :: ID => GOPRO_HEARTBEAT_DATA :: EXTRA_CRC , GOPRO_GET_REQUEST_DATA :: ID => GOPRO_GET_REQUEST_DATA :: EXTRA_CRC , RALLY_FETCH_POINT_DATA :: ID => RALLY_FETCH_POINT_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , OSD_PARAM_SHOW_CONFIG_DATA :: ID => OSD_PARAM_SHOW_CONFIG_DATA :: EXTRA_CRC , RPM_DATA :: ID => RPM_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , DEVICE_OP_WRITE_DATA :: ID => DEVICE_OP_WRITE_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , SIMSTATE_DATA :: ID => SIMSTATE_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , WATER_DEPTH_DATA :: ID => WATER_DEPTH_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_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 , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , MAG_CAL_PROGRESS_DATA :: ID => MAG_CAL_PROGRESS_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , ESC_TELEMETRY_9_TO_12_DATA :: ID => ESC_TELEMETRY_9_TO_12_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , SET_MAG_OFFSETS_DATA :: ID => SET_MAG_OFFSETS_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => REMOTE_LOG_BLOCK_STATUS_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , FENCE_FETCH_POINT_DATA :: ID => FENCE_FETCH_POINT_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , BATTERY2_DATA :: ID => BATTERY2_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , ESC_TELEMETRY_5_TO_8_DATA :: ID => ESC_TELEMETRY_5_TO_8_DATA :: EXTRA_CRC , DIGICAM_CONFIGURE_DATA :: ID => DIGICAM_CONFIGURE_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , AHRS2_DATA :: ID => AHRS2_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 , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , CUBEPILOT_RAW_RC_DATA :: ID => CUBEPILOT_RAW_RC_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , DEEPSTALL_DATA :: ID => DEEPSTALL_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , DIGICAM_CONTROL_DATA :: ID => DIGICAM_CONTROL_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , DATA32_DATA :: ID => DATA32_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , GIMBAL_CONTROL_DATA :: ID => GIMBAL_CONTROL_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , RADIO_DATA :: ID => RADIO_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , DEVICE_OP_READ_REPLY_DATA :: ID => DEVICE_OP_READ_REPLY_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_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-a8e45179500dd27e/out/common.rs.html b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-a8e45179500dd27e/out/common.rs.html index 77dc4006e6..5dc5d9f943 100644 --- a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-a8e45179500dd27e/out/common.rs.html +++ b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-a8e45179500dd27e/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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 } } 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 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 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 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 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 } } 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 } } 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 , 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 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 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 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 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 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 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 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 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 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 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_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_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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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_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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { MISSION_ITEM (MISSION_ITEM_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , WIND_COV (WIND_COV_DATA) , TIMESYNC (TIMESYNC_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , LOG_ERASE (LOG_ERASE_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , ALTITUDE (ALTITUDE_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , ODOMETRY (ODOMETRY_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , POWER_STATUS (POWER_STATUS_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , LOG_DATA (LOG_DATA_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , ESC_INFO (ESC_INFO_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , TUNNEL (TUNNEL_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , HOME_POSITION (HOME_POSITION_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , HEARTBEAT (HEARTBEAT_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , AUTH_KEY (AUTH_KEY_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , DEBUG (DEBUG_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , PING (PING_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , COMMAND_INT (COMMAND_INT_DATA) , GPS_STATUS (GPS_STATUS_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , SET_MODE (SET_MODE_DATA) , HIL_STATE (HIL_STATE_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , SYS_STATUS (SYS_STATUS_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , ESC_STATUS (ESC_STATUS_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , MISSION_ACK (MISSION_ACK_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , GPS2_RAW (GPS2_RAW_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , VIBRATION (VIBRATION_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , ATTITUDE (ATTITUDE_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , GPS2_RTK (GPS2_RTK_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , RAW_IMU (RAW_IMU_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , CAN_FRAME (CAN_FRAME_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , RAW_RPM (RAW_RPM_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , GPS_INPUT (GPS_INPUT_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , COLLISION (COLLISION_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , SIM_STATE (SIM_STATE_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , SCALED_IMU (SCALED_IMU_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , GPS_RTK (GPS_RTK_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , EVENT (EVENT_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , PARAM_SET (PARAM_SET_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , VFR_HUD (VFR_HUD_DATA) , DATA_STREAM (DATA_STREAM_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , HIL_GPS (HIL_GPS_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , STATUSTEXT (STATUSTEXT_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , EFI_STATUS (EFI_STATUS_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , 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) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , 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) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_STATUS) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , 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) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , 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) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , 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) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , 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) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , 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_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , 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) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , 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) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , 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) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , 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) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_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 :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_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 :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_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) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_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) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_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 ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_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 ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_STATUS_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_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 ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_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 ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_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 ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_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 ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_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_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_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 ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_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 ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_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 ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_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 ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (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 :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (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 :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_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 , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_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 , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_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 , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_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 , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_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 , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 } } 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 } } # [derive (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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 , 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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_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_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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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_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 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 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 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 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_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 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 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 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 (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , COLLISION (COLLISION_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , PING (PING_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , PARAM_SET (PARAM_SET_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , HIL_GPS (HIL_GPS_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , MISSION_ACK (MISSION_ACK_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , EVENT (EVENT_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , TIMESYNC (TIMESYNC_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , GPS_RTK (GPS_RTK_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , ESC_STATUS (ESC_STATUS_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , HEARTBEAT (HEARTBEAT_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , VFR_HUD (VFR_HUD_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , LOG_DATA (LOG_DATA_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , LOG_ERASE (LOG_ERASE_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , TUNNEL (TUNNEL_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , SIM_STATE (SIM_STATE_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , ATTITUDE (ATTITUDE_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , ESC_INFO (ESC_INFO_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , EFI_STATUS (EFI_STATUS_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , POWER_STATUS (POWER_STATUS_DATA) , ODOMETRY (ODOMETRY_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , SCALED_IMU (SCALED_IMU_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , GPS2_RTK (GPS2_RTK_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , WIND_COV (WIND_COV_DATA) , HOME_POSITION (HOME_POSITION_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , DEBUG (DEBUG_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , AUTH_KEY (AUTH_KEY_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , DATA_STREAM (DATA_STREAM_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , GPS_STATUS (GPS_STATUS_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , CAN_FRAME (CAN_FRAME_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , RAW_RPM (RAW_RPM_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , SET_MODE (SET_MODE_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , GPS2_RAW (GPS2_RAW_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , COMMAND_INT (COMMAND_INT_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , GPS_INPUT (GPS_INPUT_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , RAW_IMU (RAW_IMU_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , HIL_STATE (HIL_STATE_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , STATUSTEXT (STATUSTEXT_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , SYS_STATUS (SYS_STATUS_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , ALTITUDE (ALTITUDE_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , VIBRATION (VIBRATION_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , 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) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_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) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , 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) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , 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) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , 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) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , 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) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_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 :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_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 :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_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) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_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 ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_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 ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_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 ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_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 ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_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 ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_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 ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (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 :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_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 , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_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 , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_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-a8e45179500dd27e/out/icarous.rs.html b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-a8e45179500dd27e/out/icarous.rs.html index ee421822bb..509b5cf799 100644 --- a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-a8e45179500dd27e/out/icarous.rs.html +++ b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-a8e45179500dd27e/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_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 } , } } }
 
\ No newline at end of file diff --git a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-a8e45179500dd27e/out/uavionix.rs.html b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-a8e45179500dd27e/out/uavionix.rs.html index c664ca4867..67ae75aa95 100644 --- a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-a8e45179500dd27e/out/uavionix.rs.html +++ b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-a8e45179500dd27e/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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 } } 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 } } 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 } } 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 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 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 } } # [derive (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 } } 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 } } 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 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 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 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 , 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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_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 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 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 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 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_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 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 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 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 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 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 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_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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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_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 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 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_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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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_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 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 (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , ATTITUDE (ATTITUDE_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , LOG_ERASE (LOG_ERASE_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , MISSION_ACK (MISSION_ACK_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , LOG_DATA (LOG_DATA_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , VFR_HUD (VFR_HUD_DATA) , STATUSTEXT (STATUSTEXT_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , ALTITUDE (ALTITUDE_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , PING (PING_DATA) , GPS2_RAW (GPS2_RAW_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , EFI_STATUS (EFI_STATUS_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , HOME_POSITION (HOME_POSITION_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA) , TUNNEL (TUNNEL_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , ESC_STATUS (ESC_STATUS_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , GPS_STATUS (GPS_STATUS_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , SET_MODE (SET_MODE_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA) , DEBUG (DEBUG_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , SYS_STATUS (SYS_STATUS_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , CAN_FRAME (CAN_FRAME_DATA) , ESC_INFO (ESC_INFO_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , POWER_STATUS (POWER_STATUS_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , ODOMETRY (ODOMETRY_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , COMMAND_INT (COMMAND_INT_DATA) , RAW_RPM (RAW_RPM_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , VIBRATION (VIBRATION_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , AUTH_KEY (AUTH_KEY_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , SCALED_IMU (SCALED_IMU_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , EVENT (EVENT_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , PARAM_SET (PARAM_SET_DATA) , GPS_RTK (GPS_RTK_DATA) , RAW_IMU (RAW_IMU_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , GPS2_RTK (GPS2_RTK_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , COLLISION (COLLISION_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , GPS_INPUT (GPS_INPUT_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , SIM_STATE (SIM_STATE_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , HEARTBEAT (HEARTBEAT_DATA) , HIL_GPS (HIL_GPS_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , TIMESYNC (TIMESYNC_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , WIND_COV (WIND_COV_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , DATA_STREAM (DATA_STREAM_DATA) , HIL_STATE (HIL_STATE_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_STATUS) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_DYNAMIC) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , 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) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , 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) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , 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) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_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) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , 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) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , 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) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_CFG) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , 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) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_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) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME => Ok (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_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) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , UAVIONIX_ADSB_OUT_CFG_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_CFG_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_STATUS_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_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 ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_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 ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_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 ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_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 ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_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 ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_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 ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_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 ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_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 ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (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 :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_CFG (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_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 , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_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 , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 } } 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 } } 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 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 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 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 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 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 } } 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 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 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 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 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 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 } } 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 } } 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 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 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 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 } } 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 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 } } 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 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 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 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 , 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 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 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 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_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 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 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 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 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 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 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 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_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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 (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 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 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_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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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_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 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 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_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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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_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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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_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 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 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 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 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 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 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 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 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 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 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_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 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_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 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 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 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 (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { LOG_ENTRY (LOG_ENTRY_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , POWER_STATUS (POWER_STATUS_DATA) , PARAM_SET (PARAM_SET_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , COMMAND_INT (COMMAND_INT_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , SYS_STATUS (SYS_STATUS_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , HOME_POSITION (HOME_POSITION_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , TUNNEL (TUNNEL_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , ESC_INFO (ESC_INFO_DATA) , ESC_STATUS (ESC_STATUS_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , ATTITUDE (ATTITUDE_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , SET_MODE (SET_MODE_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , MISSION_ACK (MISSION_ACK_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , VIBRATION (VIBRATION_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , TIMESYNC (TIMESYNC_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , HIL_STATE (HIL_STATE_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , SIM_STATE (SIM_STATE_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , RAW_RPM (RAW_RPM_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , LOG_DATA (LOG_DATA_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , ODOMETRY (ODOMETRY_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , GPS_RTK (GPS_RTK_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , HEARTBEAT (HEARTBEAT_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , LOG_ERASE (LOG_ERASE_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , DEBUG (DEBUG_DATA) , EVENT (EVENT_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , WIND_COV (WIND_COV_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , CAN_FRAME (CAN_FRAME_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , HIL_GPS (HIL_GPS_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , AUTH_KEY (AUTH_KEY_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , COLLISION (COLLISION_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA) , UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , STATUSTEXT (STATUSTEXT_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , SCALED_IMU (SCALED_IMU_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , EFI_STATUS (EFI_STATUS_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , RAW_IMU (RAW_IMU_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , DATA_STREAM (DATA_STREAM_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , GPS2_RTK (GPS2_RTK_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , VFR_HUD (VFR_HUD_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , GPS_STATUS (GPS_STATUS_DATA) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA) , PING (PING_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , ALTITUDE (ALTITUDE_DATA) , GPS_INPUT (GPS_INPUT_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , GPS2_RAW (GPS2_RAW_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_STATUS) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , 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) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , 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) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_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) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , 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) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_CFG) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_DYNAMIC) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , 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_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , UAVIONIX_ADSB_OUT_CFG_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_CFG_DATA :: ID) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME => Ok (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_STATUS_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_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 ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_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 ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_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 ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA :: default ())) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_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_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_CFG (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_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 , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , _ => { 0 } , } } }
 
\ No newline at end of file