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

Variantsยง

ยง

COMMAND_LONG(COMMAND_LONG_DATA)

ยง

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

ยง

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

ยง

ODOMETRY(ODOMETRY_DATA)

ยง

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

ยง

HEARTBEAT(HEARTBEAT_DATA)

ยง

AOA_SSA(AOA_SSA_DATA)

ยง

RC_CHANNELS(RC_CHANNELS_DATA)

ยง

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

ยง

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

ยง

GIMBAL_CONTROL(GIMBAL_CONTROL_DATA)

ยง

GOPRO_GET_RESPONSE(GOPRO_GET_RESPONSE_DATA)

ยง

RADIO(RADIO_DATA)

ยง

AHRS3(AHRS3_DATA)

ยง

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

ยง

RPM(RPM_DATA)

ยง

DEVICE_OP_WRITE_REPLY(DEVICE_OP_WRITE_REPLY_DATA)

ยง

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

ยง

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

ยง

ESC_TELEMETRY_9_TO_12(ESC_TELEMETRY_9_TO_12_DATA)

ยง

LANDING_TARGET(LANDING_TARGET_DATA)

ยง

FENCE_POINT(FENCE_POINT_DATA)

ยง

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

ยง

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

ยง

ICAROUS_KINEMATIC_BANDS(ICAROUS_KINEMATIC_BANDS_DATA)

ยง

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

ยง

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

ยง

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

ยง

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

ยง

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

ยง

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

ยง

RANGEFINDER(RANGEFINDER_DATA)

ยง

LED_CONTROL(LED_CONTROL_DATA)

ยง

DEVICE_OP_READ_REPLY(DEVICE_OP_READ_REPLY_DATA)

ยง

CAMERA_STATUS(CAMERA_STATUS_DATA)

ยง

GPS_INPUT(GPS_INPUT_DATA)

ยง

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

ยง

MISSION_CURRENT(MISSION_CURRENT_DATA)

ยง

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

ยง

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

ยง

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

ยง

GPS_STATUS(GPS_STATUS_DATA)

ยง

SCALED_IMU(SCALED_IMU_DATA)

ยง

EKF_STATUS_REPORT(EKF_STATUS_REPORT_DATA)

ยง

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

ยง

HIGH_LATENCY(HIGH_LATENCY_DATA)

ยง

DIGICAM_CONFIGURE(DIGICAM_CONFIGURE_DATA)

ยง

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

ยง

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

ยง

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

ยง

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

ยง

MOUNT_CONFIGURE(MOUNT_CONFIGURE_DATA)

ยง

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

ยง

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

ยง

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

ยง

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

ยง

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

ยง

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

ยง

VIBRATION(VIBRATION_DATA)

ยง

SIM_STATE(SIM_STATE_DATA)

ยง

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

ยง

CUBEPILOT_FIRMWARE_UPDATE_RESP(CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA)

ยง

OBSTACLE_DISTANCE_3D(OBSTACLE_DISTANCE_3D_DATA)

ยง

GPS_RAW_INT(GPS_RAW_INT_DATA)

ยง

ALTITUDE(ALTITUDE_DATA)

ยง

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

ยง

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

ยง

MEMINFO(MEMINFO_DATA)

ยง

HIL_STATE(HIL_STATE_DATA)

ยง

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

ยง

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

ยง

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

ยง

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

ยง

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

ยง

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

ยง

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

ยง

GIMBAL_REPORT(GIMBAL_REPORT_DATA)

ยง

DIGICAM_CONTROL(DIGICAM_CONTROL_DATA)

ยง

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

ยง

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

ยง

DATA_STREAM(DATA_STREAM_DATA)

ยง

MISSION_ACK(MISSION_ACK_DATA)

ยง

HIL_CONTROLS(HIL_CONTROLS_DATA)

ยง

UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA)

ยง

AHRS2(AHRS2_DATA)

ยง

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

ยง

TUNNEL(TUNNEL_DATA)

ยง

WIND_COV(WIND_COV_DATA)

ยง

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

ยง

SIMSTATE(SIMSTATE_DATA)

ยง

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

ยง

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

ยง

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

ยง

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

ยง

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

ยง

GIMBAL_TORQUE_CMD_REPORT(GIMBAL_TORQUE_CMD_REPORT_DATA)

ยง

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

ยง

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

ยง

DEVICE_OP_WRITE(DEVICE_OP_WRITE_DATA)

ยง

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

ยง

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

ยง

EVENT(EVENT_DATA)

ยง

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

ยง

SENSOR_OFFSETS(SENSOR_OFFSETS_DATA)

ยง

AIRSPEED_AUTOCAL(AIRSPEED_AUTOCAL_DATA)

ยง

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

ยง

WINCH_STATUS(WINCH_STATUS_DATA)

ยง

MCU_STATUS(MCU_STATUS_DATA)

ยง

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

ยง

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

ยง

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

ยง

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

ยง

RAW_PRESSURE(RAW_PRESSURE_DATA)

ยง

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

ยง

ESC_TELEMETRY_1_TO_4(ESC_TELEMETRY_1_TO_4_DATA)

ยง

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

ยง

AUTOPILOT_VERSION_REQUEST(AUTOPILOT_VERSION_REQUEST_DATA)

ยง

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

ยง

WIND(WIND_DATA)

ยง

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

ยง

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

ยง

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

ยง

ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA)

ยง

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

ยง

AP_ADC(AP_ADC_DATA)

ยง

GOPRO_SET_RESPONSE(GOPRO_SET_RESPONSE_DATA)

ยง

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

ยง

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

ยง

SET_MAG_OFFSETS(SET_MAG_OFFSETS_DATA)

ยง

GOPRO_GET_REQUEST(GOPRO_GET_REQUEST_DATA)

ยง

LOGGING_DATA(LOGGING_DATA_DATA)

ยง

REQUEST_EVENT(REQUEST_EVENT_DATA)

ยง

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

ยง

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

ยง

TIMESYNC(TIMESYNC_DATA)

ยง

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

ยง

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

ยง

SCALED_IMU3(SCALED_IMU3_DATA)

ยง

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

ยง

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

ยง

MISSION_REQUEST(MISSION_REQUEST_DATA)

ยง

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

ยง

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

ยง

DEEPSTALL(DEEPSTALL_DATA)

ยง

UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA)

ยง

ESC_TELEMETRY_5_TO_8(ESC_TELEMETRY_5_TO_8_DATA)

ยง

OSD_PARAM_SHOW_CONFIG_REPLY(OSD_PARAM_SHOW_CONFIG_REPLY_DATA)

ยง

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

ยง

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

ยง

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

ยง

PARAM_SET(PARAM_SET_DATA)

ยง

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

ยง

TERRAIN_DATA(TERRAIN_DATA_DATA)

ยง

CAN_FRAME(CAN_FRAME_DATA)

ยง

LOG_DATA(LOG_DATA_DATA)

ยง

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

ยง

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

ยง

CANFD_FRAME(CANFD_FRAME_DATA)

ยง

CUBEPILOT_RAW_RC(CUBEPILOT_RAW_RC_DATA)

ยง

AHRS(AHRS_DATA)

ยง

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

ยง

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

ยง

DEBUG_VECT(DEBUG_VECT_DATA)

ยง

ESC_STATUS(ESC_STATUS_DATA)

ยง

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

ยง

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

ยง

HOME_POSITION(HOME_POSITION_DATA)

ยง

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

ยง

DATA96(DATA96_DATA)

ยง

SET_MODE(SET_MODE_DATA)

ยง

VISION_POSITION_DELTA(VISION_POSITION_DELTA_DATA)

ยง

SETUP_SIGNING(SETUP_SIGNING_DATA)

ยง

OSD_PARAM_CONFIG(OSD_PARAM_CONFIG_DATA)

ยง

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

ยง

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

ยง

STATUSTEXT(STATUSTEXT_DATA)

ยง

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

ยง

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

ยง

RALLY_FETCH_POINT(RALLY_FETCH_POINT_DATA)

ยง

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

ยง

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

ยง

LIMITS_STATUS(LIMITS_STATUS_DATA)

ยง

WATER_DEPTH(WATER_DEPTH_DATA)

ยง

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

ยง

OSD_PARAM_CONFIG_REPLY(OSD_PARAM_CONFIG_REPLY_DATA)

ยง

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

ยง

HWSTATUS(HWSTATUS_DATA)

ยง

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

ยง

V2_EXTENSION(V2_EXTENSION_DATA)

ยง

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

ยง

REMOTE_LOG_DATA_BLOCK(REMOTE_LOG_DATA_BLOCK_DATA)

ยง

ATTITUDE(ATTITUDE_DATA)

ยง

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

ยง

RAW_RPM(RAW_RPM_DATA)

ยง

AIS_VESSEL(AIS_VESSEL_DATA)

ยง

AUTH_KEY(AUTH_KEY_DATA)

ยง

MOUNT_CONTROL(MOUNT_CONTROL_DATA)

ยง

MISSION_ITEM(MISSION_ITEM_DATA)

ยง

SYSTEM_TIME(SYSTEM_TIME_DATA)

ยง

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

ยง

DATA64(DATA64_DATA)

ยง

MEMORY_VECT(MEMORY_VECT_DATA)

ยง

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

ยง

PLAY_TUNE(PLAY_TUNE_DATA)

ยง

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

ยง

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

ยง

UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA)

ยง

SCALED_IMU2(SCALED_IMU2_DATA)

ยง

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

ยง

GPS_RTK(GPS_RTK_DATA)

ยง

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

ยง

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

ยง

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

ยง

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

ยง

GOPRO_HEARTBEAT(GOPRO_HEARTBEAT_DATA)

ยง

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

ยง

COMMAND_ACK(COMMAND_ACK_DATA)

ยง

PING(PING_DATA)

ยง

COMPASSMOT_STATUS(COMPASSMOT_STATUS_DATA)

ยง

DEVICE_OP_READ(DEVICE_OP_READ_DATA)

ยง

GPS2_RTK(GPS2_RTK_DATA)

ยง

REMOTE_LOG_BLOCK_STATUS(REMOTE_LOG_BLOCK_STATUS_DATA)

ยง

OSD_PARAM_SHOW_CONFIG(OSD_PARAM_SHOW_CONFIG_DATA)

ยง

BATTERY_STATUS(BATTERY_STATUS_DATA)

ยง

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

ยง

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

ยง

RAW_IMU(RAW_IMU_DATA)

ยง

EFI_STATUS(EFI_STATUS_DATA)

ยง

SYS_STATUS(SYS_STATUS_DATA)

ยง

LOG_ERASE(LOG_ERASE_DATA)

ยง

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

ยง

MAG_CAL_PROGRESS(MAG_CAL_PROGRESS_DATA)

ยง

MOUNT_STATUS(MOUNT_STATUS_DATA)

ยง

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

ยง

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

ยง

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

ยง

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

ยง

DEBUG(DEBUG_DATA)

ยง

COMMAND_INT(COMMAND_INT_DATA)

ยง

HIGHRES_IMU(HIGHRES_IMU_DATA)

ยง

MISSION_COUNT(MISSION_COUNT_DATA)

ยง

RADIO_STATUS(RADIO_STATUS_DATA)

ยง

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

ยง

VFR_HUD(VFR_HUD_DATA)

ยง

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

ยง

ADAP_TUNING(ADAP_TUNING_DATA)

ยง

ESC_INFO(ESC_INFO_DATA)

ยง

HIL_GPS(HIL_GPS_DATA)

ยง

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

ยง

GPS2_RAW(GPS2_RAW_DATA)

ยง

LOG_ENTRY(LOG_ENTRY_DATA)

ยง

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

ยง

GOPRO_SET_REQUEST(GOPRO_SET_REQUEST_DATA)

ยง

LOGGING_ACK(LOGGING_ACK_DATA)

ยง

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

ยง

PARAM_VALUE(PARAM_VALUE_DATA)

ยง

POWER_STATUS(POWER_STATUS_DATA)

ยง

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

ยง

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

ยง

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

ยง

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

ยง

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

ยง

COLLISION(COLLISION_DATA)

ยง

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

ยง

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

ยง

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

ยง

BATTERY2(BATTERY2_DATA)

ยง

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

ยง

HIL_SENSOR(HIL_SENSOR_DATA)

ยง

PID_TUNING(PID_TUNING_DATA)

ยง

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

ยง

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

ยง

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

ยง

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

ยง

DATA32(DATA32_DATA)

ยง

RALLY_POINT(RALLY_POINT_DATA)

ยง

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

ยง

CAMERA_FEEDBACK(CAMERA_FEEDBACK_DATA)

ยง

CUBEPILOT_FIRMWARE_UPDATE_START(CUBEPILOT_FIRMWARE_UPDATE_START_DATA)

ยง

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

ยง

DATA16(DATA16_DATA)

ยง

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

ยง

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

ยง

FENCE_STATUS(FENCE_STATUS_DATA)

ยง

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

ยง

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

ยง

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

ยง

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

ยง

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

ยง

FENCE_FETCH_POINT(FENCE_FETCH_POINT_DATA)

ยง

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

ยง

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_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 + UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA), + EKF_STATUS_REPORT(EKF_STATUS_REPORT_DATA), + OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA), +

}

Variantsยง

ยง

PARAM_SET(PARAM_SET_DATA)

ยง

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

ยง

AUTH_KEY(AUTH_KEY_DATA)

ยง

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

ยง

GPS_INPUT(GPS_INPUT_DATA)

ยง

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

ยง

CUBEPILOT_FIRMWARE_UPDATE_RESP(CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA)

ยง

CAMERA_FEEDBACK(CAMERA_FEEDBACK_DATA)

ยง

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

ยง

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

ยง

RADIO_STATUS(RADIO_STATUS_DATA)

ยง

DEBUG(DEBUG_DATA)

ยง

FENCE_POINT(FENCE_POINT_DATA)

ยง

ADAP_TUNING(ADAP_TUNING_DATA)

ยง

OSD_PARAM_SHOW_CONFIG(OSD_PARAM_SHOW_CONFIG_DATA)

ยง

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

ยง

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

ยง

HIGHRES_IMU(HIGHRES_IMU_DATA)

ยง

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

ยง

DATA32(DATA32_DATA)

ยง

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

ยง

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

ยง

UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA)

ยง

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

ยง

MISSION_ACK(MISSION_ACK_DATA)

ยง

PLAY_TUNE(PLAY_TUNE_DATA)

ยง

SCALED_IMU3(SCALED_IMU3_DATA)

ยง

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

ยง

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

ยง

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

ยง

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

ยง

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

ยง

GOPRO_SET_REQUEST(GOPRO_SET_REQUEST_DATA)

ยง

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

ยง

V2_EXTENSION(V2_EXTENSION_DATA)

ยง

ESC_TELEMETRY_1_TO_4(ESC_TELEMETRY_1_TO_4_DATA)

ยง

OSD_PARAM_CONFIG(OSD_PARAM_CONFIG_DATA)

ยง

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

ยง

DIGICAM_CONFIGURE(DIGICAM_CONFIGURE_DATA)

ยง

TERRAIN_DATA(TERRAIN_DATA_DATA)

ยง

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

ยง

RALLY_FETCH_POINT(RALLY_FETCH_POINT_DATA)

ยง

COMPASSMOT_STATUS(COMPASSMOT_STATUS_DATA)

ยง

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

ยง

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

ยง

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

ยง

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

ยง

COMMAND_INT(COMMAND_INT_DATA)

ยง

AUTOPILOT_VERSION_REQUEST(AUTOPILOT_VERSION_REQUEST_DATA)

ยง

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

ยง

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

ยง

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

ยง

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

ยง

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

ยง

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

ยง

AP_ADC(AP_ADC_DATA)

ยง

RC_CHANNELS(RC_CHANNELS_DATA)

ยง

GOPRO_HEARTBEAT(GOPRO_HEARTBEAT_DATA)

ยง

DEVICE_OP_READ(DEVICE_OP_READ_DATA)

ยง

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

ยง

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

ยง

BATTERY_STATUS(BATTERY_STATUS_DATA)

ยง

MISSION_CURRENT(MISSION_CURRENT_DATA)

ยง

PARAM_VALUE(PARAM_VALUE_DATA)

ยง

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

ยง

MISSION_ITEM(MISSION_ITEM_DATA)

ยง

ESC_INFO(ESC_INFO_DATA)

ยง

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

ยง

GPS2_RTK(GPS2_RTK_DATA)

ยง

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

ยง

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

ยง

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

ยง

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

ยง

HIL_GPS(HIL_GPS_DATA)

ยง

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

ยง

CUBEPILOT_RAW_RC(CUBEPILOT_RAW_RC_DATA)

ยง

STATUSTEXT(STATUSTEXT_DATA)

ยง

AIS_VESSEL(AIS_VESSEL_DATA)

ยง

SET_MAG_OFFSETS(SET_MAG_OFFSETS_DATA)

ยง

UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA)

ยง

ESC_TELEMETRY_5_TO_8(ESC_TELEMETRY_5_TO_8_DATA)

ยง

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

ยง

LOG_ENTRY(LOG_ENTRY_DATA)

ยง

COMMAND_LONG(COMMAND_LONG_DATA)

ยง

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

ยง

DEVICE_OP_WRITE(DEVICE_OP_WRITE_DATA)

ยง

CAMERA_STATUS(CAMERA_STATUS_DATA)

ยง

DEVICE_OP_WRITE_REPLY(DEVICE_OP_WRITE_REPLY_DATA)

ยง

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

ยง

ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA)

ยง

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

ยง

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

ยง

GPS2_RAW(GPS2_RAW_DATA)

ยง

REQUEST_EVENT(REQUEST_EVENT_DATA)

ยง

COMMAND_ACK(COMMAND_ACK_DATA)

ยง

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

ยง

GOPRO_SET_RESPONSE(GOPRO_SET_RESPONSE_DATA)

ยง

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

ยง

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

ยง

DEVICE_OP_READ_REPLY(DEVICE_OP_READ_REPLY_DATA)

ยง

WATER_DEPTH(WATER_DEPTH_DATA)

ยง

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

ยง

ICAROUS_KINEMATIC_BANDS(ICAROUS_KINEMATIC_BANDS_DATA)

ยง

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

ยง

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

ยง

GIMBAL_TORQUE_CMD_REPORT(GIMBAL_TORQUE_CMD_REPORT_DATA)

ยง

DATA16(DATA16_DATA)

ยง

RAW_IMU(RAW_IMU_DATA)

ยง

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

ยง

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

ยง

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

ยง

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

ยง

LED_CONTROL(LED_CONTROL_DATA)

ยง

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

ยง

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

ยง

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

ยง

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

ยง

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

ยง

RADIO(RADIO_DATA)

ยง

ATTITUDE(ATTITUDE_DATA)

ยง

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

ยง

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

ยง

OSD_PARAM_CONFIG_REPLY(OSD_PARAM_CONFIG_REPLY_DATA)

ยง

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

ยง

SCALED_IMU2(SCALED_IMU2_DATA)

ยง

PING(PING_DATA)

ยง

POWER_STATUS(POWER_STATUS_DATA)

ยง

HIL_CONTROLS(HIL_CONTROLS_DATA)

ยง

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

ยง

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

ยง

DEEPSTALL(DEEPSTALL_DATA)

ยง

LOG_DATA(LOG_DATA_DATA)

ยง

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

ยง

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

ยง

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

ยง

HIL_STATE(HIL_STATE_DATA)

ยง

MISSION_REQUEST(MISSION_REQUEST_DATA)

ยง

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

ยง

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

ยง

VIBRATION(VIBRATION_DATA)

ยง

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

ยง

GPS_STATUS(GPS_STATUS_DATA)

ยง

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

ยง

BATTERY2(BATTERY2_DATA)

ยง

GPS_RTK(GPS_RTK_DATA)

ยง

DATA96(DATA96_DATA)

ยง

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

ยง

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

ยง

HOME_POSITION(HOME_POSITION_DATA)

ยง

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

ยง

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

ยง

CANFD_FRAME(CANFD_FRAME_DATA)

ยง

LIMITS_STATUS(LIMITS_STATUS_DATA)

ยง

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

ยง

TIMESYNC(TIMESYNC_DATA)

ยง

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

ยง

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

ยง

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

ยง

GOPRO_GET_RESPONSE(GOPRO_GET_RESPONSE_DATA)

ยง

ESC_STATUS(ESC_STATUS_DATA)

ยง

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

ยง

RALLY_POINT(RALLY_POINT_DATA)

ยง

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

ยง

COLLISION(COLLISION_DATA)

ยง

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

ยง

REMOTE_LOG_DATA_BLOCK(REMOTE_LOG_DATA_BLOCK_DATA)

ยง

REMOTE_LOG_BLOCK_STATUS(REMOTE_LOG_BLOCK_STATUS_DATA)

ยง

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

ยง

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

ยง

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

ยง

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

ยง

GIMBAL_CONTROL(GIMBAL_CONTROL_DATA)

ยง

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

ยง

SETUP_SIGNING(SETUP_SIGNING_DATA)

ยง

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

ยง

SIMSTATE(SIMSTATE_DATA)

ยง

RANGEFINDER(RANGEFINDER_DATA)

ยง

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

ยง

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

ยง

DATA_STREAM(DATA_STREAM_DATA)

ยง

GPS_RAW_INT(GPS_RAW_INT_DATA)

ยง

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

ยง

MOUNT_CONFIGURE(MOUNT_CONFIGURE_DATA)

ยง

RPM(RPM_DATA)

ยง

GOPRO_GET_REQUEST(GOPRO_GET_REQUEST_DATA)

ยง

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

ยง

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

ยง

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

ยง

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

ยง

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

ยง

WIND_COV(WIND_COV_DATA)

ยง

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

ยง

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

ยง

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

ยง

GIMBAL_REPORT(GIMBAL_REPORT_DATA)

ยง

DIGICAM_CONTROL(DIGICAM_CONTROL_DATA)

ยง

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

ยง

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

ยง

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

ยง

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

ยง

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

ยง

OSD_PARAM_SHOW_CONFIG_REPLY(OSD_PARAM_SHOW_CONFIG_REPLY_DATA)

ยง

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

ยง

SYS_STATUS(SYS_STATUS_DATA)

ยง

TUNNEL(TUNNEL_DATA)

ยง

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

ยง

DEBUG_VECT(DEBUG_VECT_DATA)

ยง

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

ยง

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

ยง

SYSTEM_TIME(SYSTEM_TIME_DATA)

ยง

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

ยง

LOG_ERASE(LOG_ERASE_DATA)

ยง

LANDING_TARGET(LANDING_TARGET_DATA)

ยง

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

ยง

OBSTACLE_DISTANCE_3D(OBSTACLE_DISTANCE_3D_DATA)

ยง

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

ยง

PID_TUNING(PID_TUNING_DATA)

ยง

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

ยง

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

ยง

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

ยง

SCALED_IMU(SCALED_IMU_DATA)

ยง

LOGGING_DATA(LOGGING_DATA_DATA)

ยง

MEMINFO(MEMINFO_DATA)

ยง

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

ยง

MOUNT_STATUS(MOUNT_STATUS_DATA)

ยง

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

ยง

DATA64(DATA64_DATA)

ยง

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

ยง

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

ยง

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

ยง

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

ยง

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

ยง

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

ยง

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

ยง

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

ยง

WIND(WIND_DATA)

ยง

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

ยง

MCU_STATUS(MCU_STATUS_DATA)

ยง

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

ยง

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

ยง

RAW_PRESSURE(RAW_PRESSURE_DATA)

ยง

CAN_FRAME(CAN_FRAME_DATA)

ยง

HEARTBEAT(HEARTBEAT_DATA)

ยง

SET_MODE(SET_MODE_DATA)

ยง

AOA_SSA(AOA_SSA_DATA)

ยง

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

ยง

WINCH_STATUS(WINCH_STATUS_DATA)

ยง

VFR_HUD(VFR_HUD_DATA)

ยง

ODOMETRY(ODOMETRY_DATA)

ยง

CUBEPILOT_FIRMWARE_UPDATE_START(CUBEPILOT_FIRMWARE_UPDATE_START_DATA)

ยง

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

ยง

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

ยง

HIGH_LATENCY(HIGH_LATENCY_DATA)

ยง

HIL_SENSOR(HIL_SENSOR_DATA)

ยง

AIRSPEED_AUTOCAL(AIRSPEED_AUTOCAL_DATA)

ยง

FENCE_FETCH_POINT(FENCE_FETCH_POINT_DATA)

ยง

ESC_TELEMETRY_9_TO_12(ESC_TELEMETRY_9_TO_12_DATA)

ยง

VISION_POSITION_DELTA(VISION_POSITION_DELTA_DATA)

ยง

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

ยง

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

ยง

MISSION_COUNT(MISSION_COUNT_DATA)

ยง

LOGGING_ACK(LOGGING_ACK_DATA)

ยง

HWSTATUS(HWSTATUS_DATA)

ยง

ALTITUDE(ALTITUDE_DATA)

ยง

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

ยง

EFI_STATUS(EFI_STATUS_DATA)

ยง

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

ยง

SIM_STATE(SIM_STATE_DATA)

ยง

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

ยง

FENCE_STATUS(FENCE_STATUS_DATA)

ยง

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

ยง

EVENT(EVENT_DATA)

ยง

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

ยง

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

ยง

MOUNT_CONTROL(MOUNT_CONTROL_DATA)

ยง

AHRS3(AHRS3_DATA)

ยง

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

ยง

UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA)

ยง

AHRS2(AHRS2_DATA)

ยง

RAW_RPM(RAW_RPM_DATA)

ยง

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

ยง

SENSOR_OFFSETS(SENSOR_OFFSETS_DATA)

ยง

AHRS(AHRS_DATA)

ยง

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

ยง

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

ยง

MEMORY_VECT(MEMORY_VECT_DATA)

ยง

MAG_CAL_PROGRESS(MAG_CAL_PROGRESS_DATA)

ยง

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

ยง

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

ยง

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

ยง

EKF_STATUS_REPORT(EKF_STATUS_REPORT_DATA)

ยง

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_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 3528660f12..d9f8d29753 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 b6647e9614..0c1094a2be 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. Read more
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. Read more
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 __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. Read more
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. Read more
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. Read more
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. Read more
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 @@ -76,7 +76,7 @@
ยงSafety
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. Read more
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 +

sourceยง

impl UpperHex for AisFlags

sourceยง

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

Formats the value using the given formatter. Read more
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 d98e5d2c97..79a2b18fc8 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. Read more
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. Read more
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 +

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. Read more
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. Read more
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. Read more
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. Read more
sourceยง

impl Ord for AttitudeTargetTypemask

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

Compares and returns the maximum of two values. Read more
1.21.0 ยท sourceยง

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

Compares and returns the minimum of two values. Read more
1.50.0 ยท sourceยง

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

Restrict a value to a certain interval. Read more
sourceยง

impl PartialEq for AttitudeTargetTypemask

sourceยง

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

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

impl Serialize for AttitudeTargetTypemask

sourceยง

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

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

impl Sub for AttitudeTargetTypemask

sourceยง

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

Returns the set difference of the two sets of flags.

ยง

type Output = AttitudeTargetTypemask

The resulting type after applying the - operator.
sourceยง

impl SubAssign for AttitudeTargetTypemask

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
sourceยง

impl UpperHex for AttitudeTargetTypemask

sourceยง

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

Formats the value using the given formatter. Read more
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 +

sourceยง

impl UpperHex for AttitudeTargetTypemask

sourceยง

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

Formats the value using the given formatter. Read more
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/ardupilotmega/struct.CameraCapFlags.html b/mavlink/ardupilotmega/struct.CameraCapFlags.html index 9ae4ad01ed..aec3793368 100644 --- a/mavlink/ardupilotmega/struct.CameraCapFlags.html +++ b/mavlink/ardupilotmega/struct.CameraCapFlags.html @@ -56,17 +56,17 @@
ยงSafety
between Self::all() and self (e.g. Self::all() - self)

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

-
sourceยง

impl CameraCapFlags

source

pub const DEFAULT: Self = Self::CAMERA_CAP_FLAGS_CAPTURE_VIDEO

Trait Implementationsยง

sourceยง

impl Binary for CameraCapFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
sourceยง

impl Ord for CameraCapFlags

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

Compares and returns the maximum of two values. Read more
1.21.0 ยท sourceยง

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

Compares and returns the minimum of two values. Read more
1.50.0 ยท sourceยง

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

Restrict a value to a certain interval. Read more
sourceยง

impl PartialEq for CameraCapFlags

sourceยง

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

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

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

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

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

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

impl Serialize for CameraCapFlags

sourceยง

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

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

impl Sub for CameraCapFlags

sourceยง

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

Returns the set difference of the two sets of flags.

-
ยง

type Output = CameraCapFlags

The resulting type after applying the - operator.
sourceยง

impl SubAssign for CameraCapFlags

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
ยง

type Output = CameraCapFlags

The resulting type after applying the - operator.
sourceยง

impl SubAssign for CameraCapFlags

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

sourceยง

impl UpperHex for CameraCapFlags

sourceยง

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

Formats the value using the given formatter. Read more
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 diff --git a/mavlink/ardupilotmega/struct.EkfStatusFlags.html b/mavlink/ardupilotmega/struct.EkfStatusFlags.html index 4bbce049b1..11f3b6b0ea 100644 --- a/mavlink/ardupilotmega/struct.EkfStatusFlags.html +++ b/mavlink/ardupilotmega/struct.EkfStatusFlags.html @@ -57,16 +57,16 @@
ยงSafety

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. Read more
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.

+
ยง

type Output = EkfStatusFlags

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for EkfStatusFlags

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for EkfStatusFlags

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = EkfStatusFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for EkfStatusFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = EkfStatusFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for EkfStatusFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for EkfStatusFlags

sourceยง

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

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

-
ยง

type Output = EkfStatusFlags

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for EkfStatusFlags

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
ยง

type Output = EkfStatusFlags

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for EkfStatusFlags

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

sourceยง

impl Clone for EkfStatusFlags

sourceยง

fn clone(&self) -> EkfStatusFlags

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for EkfStatusFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for EkfStatusFlags

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

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

sourceยง

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

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

impl Extend<EkfStatusFlags> for EkfStatusFlags

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<EkfStatusFlags> for EkfStatusFlags

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for EkfStatusFlags

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for EkfStatusFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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,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 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.

+
ยง

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. Read more
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 diff --git a/mavlink/ardupilotmega/struct.EscFailureFlags.html b/mavlink/ardupilotmega/struct.EscFailureFlags.html index 9fc2395d82..bcbe776aba 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. Read more
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. Read more
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.

+
ยง

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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 294fec050a..4418107ecc 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. Read more
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. Read more
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 __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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 49799f60ac..f836789e7c 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. Read more
sourceยง

impl BitAnd for GimbalDeviceCapFlags

sourceยง

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

Returns the intersection between the two sets of flags.

-
ยง

type Output = GimbalDeviceCapFlags

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for GimbalDeviceCapFlags

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
ยง

type Output = GimbalDeviceCapFlags

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for GimbalDeviceCapFlags

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for GimbalDeviceCapFlags

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = GimbalDeviceCapFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for GimbalDeviceCapFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = GimbalDeviceCapFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for GimbalDeviceCapFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for GimbalDeviceCapFlags

sourceยง

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

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

ยง

type Output = GimbalDeviceCapFlags

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for GimbalDeviceCapFlags

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
sourceยง

impl Clone for GimbalDeviceCapFlags

sourceยง

fn clone(&self) -> GimbalDeviceCapFlags

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for GimbalDeviceCapFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for GimbalDeviceCapFlags

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

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

sourceยง

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

sourceยง

impl Clone for GimbalDeviceCapFlags

sourceยง

fn clone(&self) -> GimbalDeviceCapFlags

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for GimbalDeviceCapFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for GimbalDeviceCapFlags

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

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

sourceยง

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

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

impl Extend<GimbalDeviceCapFlags> for GimbalDeviceCapFlags

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<GimbalDeviceCapFlags> for GimbalDeviceCapFlags

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for GimbalDeviceCapFlags

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for GimbalDeviceCapFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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 @@ -76,7 +76,7 @@
ยงSafety
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. Read more
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 +

sourceยง

impl UpperHex for GimbalDeviceCapFlags

sourceยง

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

Formats the value using the given formatter. Read more
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 a4de45f86a..1e2aac43d7 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. Read more
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. Read more
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.

+
ยง

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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 811942011c..c456d6d64c 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. Read more
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. Read more
sourceยง

impl BitAnd for GimbalDeviceFlags

sourceยง

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

Returns the intersection between the two sets of flags.

ยง

type Output = GimbalDeviceFlags

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for GimbalDeviceFlags

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for GimbalDeviceFlags

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = GimbalDeviceFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for GimbalDeviceFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = GimbalDeviceFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for GimbalDeviceFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for GimbalDeviceFlags

sourceยง

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

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

ยง

type Output = GimbalDeviceFlags

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for GimbalDeviceFlags

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
sourceยง

impl Clone for GimbalDeviceFlags

sourceยง

fn clone(&self) -> GimbalDeviceFlags

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for GimbalDeviceFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for GimbalDeviceFlags

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

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

sourceยง

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

sourceยง

impl Clone for GimbalDeviceFlags

sourceยง

fn clone(&self) -> GimbalDeviceFlags

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for GimbalDeviceFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for GimbalDeviceFlags

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

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

sourceยง

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

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

impl Extend<GimbalDeviceFlags> for GimbalDeviceFlags

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<GimbalDeviceFlags> for GimbalDeviceFlags

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for GimbalDeviceFlags

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for GimbalDeviceFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 472399b48e..3efeb5cf3c 100644 --- a/mavlink/ardupilotmega/struct.GimbalManagerCapFlags.html +++ b/mavlink/ardupilotmega/struct.GimbalManagerCapFlags.html @@ -56,17 +56,17 @@
ยงSafety
between Self::all() and self (e.g. Self::all() - self)

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

-
sourceยง

impl GimbalManagerCapFlags

source

pub const DEFAULT: Self = Self::GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT

Trait Implementationsยง

sourceยง

impl Binary for GimbalManagerCapFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
sourceยง

impl BitAnd for GimbalManagerCapFlags

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = GimbalManagerCapFlags

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for GimbalManagerCapFlags

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for GimbalManagerCapFlags

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = GimbalManagerCapFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for GimbalManagerCapFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = GimbalManagerCapFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for GimbalManagerCapFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for GimbalManagerCapFlags

sourceยง

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

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

-
ยง

type Output = GimbalManagerCapFlags

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for GimbalManagerCapFlags

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
sourceยง

impl Clone for GimbalManagerCapFlags

sourceยง

fn clone(&self) -> GimbalManagerCapFlags

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for GimbalManagerCapFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for GimbalManagerCapFlags

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

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

sourceยง

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

ยง

type Output = GimbalManagerCapFlags

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for GimbalManagerCapFlags

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
sourceยง

impl Clone for GimbalManagerCapFlags

sourceยง

fn clone(&self) -> GimbalManagerCapFlags

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for GimbalManagerCapFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for GimbalManagerCapFlags

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

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

sourceยง

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

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

impl Extend<GimbalManagerCapFlags> for GimbalManagerCapFlags

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<GimbalManagerCapFlags> for GimbalManagerCapFlags

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for GimbalManagerCapFlags

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for GimbalManagerCapFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 a4b6636dd5..ea24178465 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 @@ -76,7 +76,7 @@
ยงSafety
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. Read more
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 +

sourceยง

impl UpperHex for GoproHeartbeatFlags

sourceยง

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

Formats the value using the given formatter. Read more
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 6554696c84..764b26b1b7 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 344d4f7ce5..0af84c629c 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 6d93938f9c..62261923b5 100644 --- a/mavlink/ardupilotmega/struct.HilSensorUpdatedFlags.html +++ b/mavlink/ardupilotmega/struct.HilSensorUpdatedFlags.html @@ -57,16 +57,16 @@
ยงSafety

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. Read more
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.

+
ยง

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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 345dd89fc0..ecf356060b 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. Read more
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. Read more
sourceยง

impl BitAnd for HlFailureFlag

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = HlFailureFlag

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for HlFailureFlag

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for HlFailureFlag

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = HlFailureFlag

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for HlFailureFlag

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = HlFailureFlag

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for HlFailureFlag

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for HlFailureFlag

sourceยง

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

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

-
ยง

type Output = HlFailureFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for HlFailureFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
sourceยง

impl Clone for HlFailureFlag

sourceยง

fn clone(&self) -> HlFailureFlag

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for HlFailureFlag

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for HlFailureFlag

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for HlFailureFlag

sourceยง

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

ยง

type Output = HlFailureFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for HlFailureFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
sourceยง

impl Clone for HlFailureFlag

sourceยง

fn clone(&self) -> HlFailureFlag

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for HlFailureFlag

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for HlFailureFlag

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for HlFailureFlag

sourceยง

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

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

impl Extend<HlFailureFlag> for HlFailureFlag

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<HlFailureFlag> for HlFailureFlag

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for HlFailureFlag

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for HlFailureFlag

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 5d0c0f46cf..b48b115c3d 100644 --- a/mavlink/ardupilotmega/struct.LimitModule.html +++ b/mavlink/ardupilotmega/struct.LimitModule.html @@ -59,14 +59,14 @@
ยงSafety
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. Read more
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. Read more
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. Read more
sourceยง

impl Ord for LimitModule

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

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

impl LowerHex for LimitModule

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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 4548e5b43a..536de14a36 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. Read more
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. Read more
sourceยง

impl BitAnd for MavEventCurrentSequenceFlags

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for MavEventCurrentSequenceFlags

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for MavEventCurrentSequenceFlags

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for MavEventCurrentSequenceFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for MavEventCurrentSequenceFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for MavEventCurrentSequenceFlags

sourceยง

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

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

-
ยง

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for MavEventCurrentSequenceFlags

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
ยง

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for MavEventCurrentSequenceFlags

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

sourceยง

impl Clone for MavEventCurrentSequenceFlags

sourceยง

fn clone(&self) -> MavEventCurrentSequenceFlags

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for MavEventCurrentSequenceFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for MavEventCurrentSequenceFlags

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for MavEventCurrentSequenceFlags

sourceยง

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

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

impl Extend<MavEventCurrentSequenceFlags> for MavEventCurrentSequenceFlags

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<MavEventCurrentSequenceFlags> for MavEventCurrentSequenceFlags

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for MavEventCurrentSequenceFlags

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for MavEventCurrentSequenceFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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/ardupilotmega/struct.MavGeneratorStatusFlag.html b/mavlink/ardupilotmega/struct.MavGeneratorStatusFlag.html index be12519655..32a76c24d4 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. Read more
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. Read more
sourceยง

impl BitAnd for MavGeneratorStatusFlag

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = MavGeneratorStatusFlag

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for MavGeneratorStatusFlag

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for MavGeneratorStatusFlag

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = MavGeneratorStatusFlag

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for MavGeneratorStatusFlag

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = MavGeneratorStatusFlag

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for MavGeneratorStatusFlag

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for MavGeneratorStatusFlag

sourceยง

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

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

-
ยง

type Output = MavGeneratorStatusFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for MavGeneratorStatusFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
sourceยง

impl Clone for MavGeneratorStatusFlag

sourceยง

fn clone(&self) -> MavGeneratorStatusFlag

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for MavGeneratorStatusFlag

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for MavGeneratorStatusFlag

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for MavGeneratorStatusFlag

sourceยง

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

ยง

type Output = MavGeneratorStatusFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for MavGeneratorStatusFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
sourceยง

impl Clone for MavGeneratorStatusFlag

sourceยง

fn clone(&self) -> MavGeneratorStatusFlag

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for MavGeneratorStatusFlag

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for MavGeneratorStatusFlag

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for MavGeneratorStatusFlag

sourceยง

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

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

impl Extend<MavGeneratorStatusFlag> for MavGeneratorStatusFlag

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<MavGeneratorStatusFlag> for MavGeneratorStatusFlag

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for MavGeneratorStatusFlag

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for MavGeneratorStatusFlag

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 176475f6a2..3c83008462 100644 --- a/mavlink/ardupilotmega/struct.MavModeFlag.html +++ b/mavlink/ardupilotmega/struct.MavModeFlag.html @@ -56,17 +56,17 @@
ยงSafety
between Self::all() and self (e.g. Self::all() - self)

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

-
sourceยง

impl MavModeFlag

source

pub const DEFAULT: Self = Self::MAV_MODE_FLAG_SAFETY_ARMED

Trait Implementationsยง

sourceยง

impl Binary for MavModeFlag

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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/ardupilotmega/struct.MavPowerStatus.html b/mavlink/ardupilotmega/struct.MavPowerStatus.html index aa2721f851..39000f07c7 100644 --- a/mavlink/ardupilotmega/struct.MavPowerStatus.html +++ b/mavlink/ardupilotmega/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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 @@ -76,7 +76,7 @@
ยงSafety
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. Read more
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 +

sourceยง

impl UpperHex for MavPowerStatus

sourceยง

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

Formats the value using the given formatter. Read more
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 e97e2abb26..a5aca9e89c 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. Read more
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. Read more
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 +

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

+
ยง

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. Read more
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 diff --git a/mavlink/ardupilotmega/struct.MavSysStatusSensor.html b/mavlink/ardupilotmega/struct.MavSysStatusSensor.html index a060451b4f..efee015aa1 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 b0f89e5c1c..6139dba91e 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. Read more
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. Read more
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 __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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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/ardupilotmega/struct.PositionTargetTypemask.html b/mavlink/ardupilotmega/struct.PositionTargetTypemask.html index 88bde3d72e..4a5b79f5fb 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. Read more
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. Read more
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 __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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 7f0fb610a8..98e5162c64 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. Read more
sourceยง

impl BitAnd for RallyFlags

sourceยง

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

Returns the intersection between the two sets of 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. Read more
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 __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. Read more
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. Read more
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. Read more
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. Read more
sourceยง

impl Ord for RallyFlags

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

Compares and returns the maximum of two values. Read more
1.21.0 ยท sourceยง

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

Compares and returns the minimum of two values. Read more
1.50.0 ยท sourceยง

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

Restrict a value to a certain interval. Read more
sourceยง

impl PartialEq for RallyFlags

sourceยง

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

This method tests for self and other values to be equal, and is used @@ -75,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 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.

+
ยง

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. Read more
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 diff --git a/mavlink/ardupilotmega/struct.SerialControlFlag.html b/mavlink/ardupilotmega/struct.SerialControlFlag.html index 01b92a20a0..f2df635378 100644 --- a/mavlink/ardupilotmega/struct.SerialControlFlag.html +++ b/mavlink/ardupilotmega/struct.SerialControlFlag.html @@ -56,17 +56,17 @@
ยงSafety
between Self::all() and self (e.g. Self::all() - self)

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

-

sourceยง

impl SerialControlFlag

source

pub const DEFAULT: Self = Self::SERIAL_CONTROL_FLAG_REPLY

Trait Implementationsยง

sourceยง

impl Binary for SerialControlFlag

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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.

+
ยง

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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 60c3a531c9..164232ce26 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. Read more
sourceยง

impl BitAnd for TuneFormat

sourceยง

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

Returns the intersection between the two sets of 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. Read more
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.

-
ยง

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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 b2b1ceb578..b282a844ef 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. Read more
sourceยง

impl BitAnd for UavionixAdsbOutDynamicState

sourceยง

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

Returns the intersection between the two sets of flags.

+
sourceยง

impl UavionixAdsbOutDynamicState

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE

Trait Implementationsยง

sourceยง

impl Binary for UavionixAdsbOutDynamicState

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 6cf213dbfa..89311c989b 100644 --- a/mavlink/ardupilotmega/struct.UavionixAdsbOutRfSelect.html +++ b/mavlink/ardupilotmega/struct.UavionixAdsbOutRfSelect.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 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. Read more
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. Read more
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.

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. Read more
sourceยง

impl Not for UavionixAdsbOutRfSelect

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 UavionixAdsbOutRfSelect

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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 @@ -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. Read more
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. Read more
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 b5675e3575..333b58f4df 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. Read more
sourceยง

impl BitAnd for UavionixAdsbRfHealth

sourceยง

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

Returns the intersection between the two sets of flags.

-
ยง

type Output = UavionixAdsbRfHealth

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for UavionixAdsbRfHealth

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
sourceยง

impl UavionixAdsbRfHealth

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_RF_HEALTH_INITIALIZING

Trait Implementationsยง

sourceยง

impl Binary for UavionixAdsbRfHealth

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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 +

ยง

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. Read more
sourceยง

impl Ord for UavionixAdsbRfHealth

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

Compares and returns the maximum of two values. Read more
1.21.0 ยท sourceยง

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

Compares and returns the minimum of two values. Read more
1.50.0 ยท sourceยง

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

Restrict a value to a certain interval. Read more
sourceยง

impl PartialEq for UavionixAdsbRfHealth

sourceยง

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

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

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

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

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

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

impl Serialize for UavionixAdsbRfHealth

sourceยง

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

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

impl Sub for UavionixAdsbRfHealth

sourceยง

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

Returns the set difference of the two sets of flags.

-
ยง

type Output = UavionixAdsbRfHealth

The resulting type after applying the - operator.
sourceยง

impl SubAssign for UavionixAdsbRfHealth

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
ยง

type Output = UavionixAdsbRfHealth

The resulting type after applying the - operator.
sourceยง

impl SubAssign for UavionixAdsbRfHealth

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

sourceยง

impl UpperHex for UavionixAdsbRfHealth

sourceยง

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

Formats the value using the given formatter. Read more
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 diff --git a/mavlink/ardupilotmega/struct.UtmDataAvailFlags.html b/mavlink/ardupilotmega/struct.UtmDataAvailFlags.html index 44ec58b5d4..8eeaced9d3 100644 --- a/mavlink/ardupilotmega/struct.UtmDataAvailFlags.html +++ b/mavlink/ardupilotmega/struct.UtmDataAvailFlags.html @@ -59,14 +59,14 @@
ยงSafety

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

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

Variantsยง

ยง

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

ยง

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

ยง

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

ยง

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

ยง

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

ยง

DEBUG_VECT(DEBUG_VECT_DATA)

ยง

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

ยง

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

ยง

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

ยง

PARAM_SET(PARAM_SET_DATA)

ยง

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

ยง

SCALED_IMU(SCALED_IMU_DATA)

ยง

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

ยง

MEMORY_VECT(MEMORY_VECT_DATA)

ยง

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

ยง

BATTERY_STATUS(BATTERY_STATUS_DATA)

ยง

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

ยง

HIGH_LATENCY(HIGH_LATENCY_DATA)

ยง

PING(PING_DATA)

ยง

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

ยง

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

ยง

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

ยง

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

ยง

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

ยง

REQUEST_EVENT(REQUEST_EVENT_DATA)

ยง

HIL_SENSOR(HIL_SENSOR_DATA)

ยง

ESC_INFO(ESC_INFO_DATA)

ยง

MISSION_REQUEST(MISSION_REQUEST_DATA)

ยง

GPS_STATUS(GPS_STATUS_DATA)

ยง

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

ยง

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

ยง

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

ยง

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

ยง

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

ยง

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

ยง

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

ยง

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

ยง

GPS_RTK(GPS_RTK_DATA)

ยง

EFI_STATUS(EFI_STATUS_DATA)

ยง

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

ยง

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

ยง

RAW_IMU(RAW_IMU_DATA)

ยง

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

ยง

SYS_STATUS(SYS_STATUS_DATA)

ยง

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

ยง

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

ยง

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

ยง

VIBRATION(VIBRATION_DATA)

ยง

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

ยง

SCALED_IMU3(SCALED_IMU3_DATA)

ยง

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

ยง

PARAM_VALUE(PARAM_VALUE_DATA)

ยง

MISSION_ITEM(MISSION_ITEM_DATA)

ยง

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

ยง

MISSION_COUNT(MISSION_COUNT_DATA)

ยง

COMMAND_ACK(COMMAND_ACK_DATA)

ยง

DATA_STREAM(DATA_STREAM_DATA)

ยง

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

ยง

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

ยง

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

ยง

HIGHRES_IMU(HIGHRES_IMU_DATA)

ยง

LOG_ERASE(LOG_ERASE_DATA)

ยง

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

ยง

RADIO_STATUS(RADIO_STATUS_DATA)

ยง

PLAY_TUNE(PLAY_TUNE_DATA)

ยง

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

ยง

POWER_STATUS(POWER_STATUS_DATA)

ยง

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

ยง

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

ยง

HIL_STATE(HIL_STATE_DATA)

ยง

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

ยง

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

ยง

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

ยง

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

ยง

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

ยง

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

ยง

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

ยง

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

ยง

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

ยง

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

ยง

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

ยง

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

ยง

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

ยง

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

ยง

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

ยง

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

ยง

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

ยง

GPS_INPUT(GPS_INPUT_DATA)

ยง

WINCH_STATUS(WINCH_STATUS_DATA)

ยง

TIMESYNC(TIMESYNC_DATA)

ยง

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

ยง

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

ยง

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

ยง

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

ยง

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

ยง

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

ยง

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

ยง

ODOMETRY(ODOMETRY_DATA)

ยง

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

ยง

RC_CHANNELS(RC_CHANNELS_DATA)

ยง

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

ยง

MISSION_CURRENT(MISSION_CURRENT_DATA)

ยง

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

ยง

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

ยง

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

ยง

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

ยง

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

ยง

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

ยง

SYSTEM_TIME(SYSTEM_TIME_DATA)

ยง

GPS2_RAW(GPS2_RAW_DATA)

ยง

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

ยง

HEARTBEAT(HEARTBEAT_DATA)

ยง

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

ยง

ESC_STATUS(ESC_STATUS_DATA)

ยง

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

ยง

HOME_POSITION(HOME_POSITION_DATA)

ยง

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

ยง

SET_MODE(SET_MODE_DATA)

ยง

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

ยง

AUTH_KEY(AUTH_KEY_DATA)

ยง

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

ยง

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

ยง

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

ยง

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

ยง

HIL_CONTROLS(HIL_CONTROLS_DATA)

ยง

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

ยง

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

ยง

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

ยง

SETUP_SIGNING(SETUP_SIGNING_DATA)

ยง

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

ยง

ATTITUDE(ATTITUDE_DATA)

ยง

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

ยง

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

ยง

MISSION_ACK(MISSION_ACK_DATA)

ยง

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

ยง

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

ยง

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

ยง

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

ยง

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

ยง

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

ยง

DEBUG(DEBUG_DATA)

ยง

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

ยง

COMMAND_LONG(COMMAND_LONG_DATA)

ยง

AIS_VESSEL(AIS_VESSEL_DATA)

ยง

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

ยง

SCALED_IMU2(SCALED_IMU2_DATA)

ยง

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

ยง

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

ยง

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

ยง

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

ยง

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

ยง

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

ยง

COLLISION(COLLISION_DATA)

ยง

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

ยง

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

ยง

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

ยง

GPS_RAW_INT(GPS_RAW_INT_DATA)

ยง

RAW_RPM(RAW_RPM_DATA)

ยง

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

ยง

TUNNEL(TUNNEL_DATA)

ยง

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

ยง

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

ยง

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

ยง

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

ยง

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

ยง

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

ยง

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

ยง

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

ยง

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

ยง

V2_EXTENSION(V2_EXTENSION_DATA)

ยง

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

ยง

LOGGING_ACK(LOGGING_ACK_DATA)

ยง

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

ยง

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

ยง

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

ยง

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

ยง

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

ยง

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

ยง

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

ยง

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

ยง

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

ยง

LOG_ENTRY(LOG_ENTRY_DATA)

ยง

ALTITUDE(ALTITUDE_DATA)

ยง

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

ยง

FENCE_STATUS(FENCE_STATUS_DATA)

ยง

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

ยง

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

ยง

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

ยง

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

ยง

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

ยง

COMMAND_INT(COMMAND_INT_DATA)

ยง

SIM_STATE(SIM_STATE_DATA)

ยง

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

ยง

LANDING_TARGET(LANDING_TARGET_DATA)

ยง

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

ยง

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

ยง

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

ยง

STATUSTEXT(STATUSTEXT_DATA)

ยง

GPS2_RTK(GPS2_RTK_DATA)

ยง

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

ยง

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

ยง

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

ยง

HIL_GPS(HIL_GPS_DATA)

ยง

WIND_COV(WIND_COV_DATA)

ยง

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

ยง

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

ยง

CAN_FRAME(CAN_FRAME_DATA)

ยง

CANFD_FRAME(CANFD_FRAME_DATA)

ยง

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

ยง

LOG_DATA(LOG_DATA_DATA)

ยง

EVENT(EVENT_DATA)

ยง

LOGGING_DATA(LOGGING_DATA_DATA)

ยง

TERRAIN_DATA(TERRAIN_DATA_DATA)

ยง

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

ยง

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

ยง

RAW_PRESSURE(RAW_PRESSURE_DATA)

ยง

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

ยง

VFR_HUD(VFR_HUD_DATA)

ยง

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_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 + ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA), + FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA), +

}

Variantsยง

ยง

GPS2_RTK(GPS2_RTK_DATA)

ยง

STATUSTEXT(STATUSTEXT_DATA)

ยง

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

ยง

LOGGING_ACK(LOGGING_ACK_DATA)

ยง

TIMESYNC(TIMESYNC_DATA)

ยง

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

ยง

POWER_STATUS(POWER_STATUS_DATA)

ยง

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

ยง

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

ยง

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

ยง

SYSTEM_TIME(SYSTEM_TIME_DATA)

ยง

HIGHRES_IMU(HIGHRES_IMU_DATA)

ยง

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

ยง

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

ยง

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

ยง

SCALED_IMU3(SCALED_IMU3_DATA)

ยง

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

ยง

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

ยง

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

ยง

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

ยง

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

ยง

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

ยง

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

ยง

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

ยง

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

ยง

LOG_ENTRY(LOG_ENTRY_DATA)

ยง

MISSION_COUNT(MISSION_COUNT_DATA)

ยง

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

ยง

RC_CHANNELS(RC_CHANNELS_DATA)

ยง

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

ยง

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

ยง

HIL_CONTROLS(HIL_CONTROLS_DATA)

ยง

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

ยง

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

ยง

WINCH_STATUS(WINCH_STATUS_DATA)

ยง

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

ยง

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

ยง

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

ยง

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

ยง

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

ยง

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

ยง

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

ยง

RAW_IMU(RAW_IMU_DATA)

ยง

HIL_SENSOR(HIL_SENSOR_DATA)

ยง

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

ยง

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

ยง

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

ยง

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

ยง

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

ยง

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

ยง

TERRAIN_DATA(TERRAIN_DATA_DATA)

ยง

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

ยง

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

ยง

EFI_STATUS(EFI_STATUS_DATA)

ยง

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

ยง

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

ยง

SCALED_IMU(SCALED_IMU_DATA)

ยง

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

ยง

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

ยง

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

ยง

HIGH_LATENCY(HIGH_LATENCY_DATA)

ยง

TUNNEL(TUNNEL_DATA)

ยง

MISSION_ACK(MISSION_ACK_DATA)

ยง

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

ยง

ATTITUDE(ATTITUDE_DATA)

ยง

V2_EXTENSION(V2_EXTENSION_DATA)

ยง

GPS2_RAW(GPS2_RAW_DATA)

ยง

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

ยง

VIBRATION(VIBRATION_DATA)

ยง

SYS_STATUS(SYS_STATUS_DATA)

ยง

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

ยง

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

ยง

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

ยง

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

ยง

DEBUG_VECT(DEBUG_VECT_DATA)

ยง

SETUP_SIGNING(SETUP_SIGNING_DATA)

ยง

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

ยง

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

ยง

RADIO_STATUS(RADIO_STATUS_DATA)

ยง

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

ยง

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

ยง

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

ยง

AIS_VESSEL(AIS_VESSEL_DATA)

ยง

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

ยง

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

ยง

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

ยง

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

ยง

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

ยง

HOME_POSITION(HOME_POSITION_DATA)

ยง

MEMORY_VECT(MEMORY_VECT_DATA)

ยง

RAW_PRESSURE(RAW_PRESSURE_DATA)

ยง

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

ยง

DEBUG(DEBUG_DATA)

ยง

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

ยง

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

ยง

PARAM_SET(PARAM_SET_DATA)

ยง

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

ยง

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

ยง

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

ยง

SIM_STATE(SIM_STATE_DATA)

ยง

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

ยง

COMMAND_LONG(COMMAND_LONG_DATA)

ยง

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

ยง

ESC_STATUS(ESC_STATUS_DATA)

ยง

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

ยง

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

ยง

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

ยง

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

ยง

SET_MODE(SET_MODE_DATA)

ยง

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

ยง

PLAY_TUNE(PLAY_TUNE_DATA)

ยง

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

ยง

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

ยง

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

ยง

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

ยง

BATTERY_STATUS(BATTERY_STATUS_DATA)

ยง

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

ยง

MISSION_ITEM(MISSION_ITEM_DATA)

ยง

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

ยง

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

ยง

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

ยง

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

ยง

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

ยง

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

ยง

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

ยง

MISSION_REQUEST(MISSION_REQUEST_DATA)

ยง

VFR_HUD(VFR_HUD_DATA)

ยง

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

ยง

FENCE_STATUS(FENCE_STATUS_DATA)

ยง

HIL_STATE(HIL_STATE_DATA)

ยง

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

ยง

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

ยง

ESC_INFO(ESC_INFO_DATA)

ยง

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

ยง

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

ยง

LOGGING_DATA(LOGGING_DATA_DATA)

ยง

LOG_DATA(LOG_DATA_DATA)

ยง

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

ยง

DATA_STREAM(DATA_STREAM_DATA)

ยง

COMMAND_ACK(COMMAND_ACK_DATA)

ยง

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

ยง

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

ยง

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

ยง

WIND_COV(WIND_COV_DATA)

ยง

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

ยง

CANFD_FRAME(CANFD_FRAME_DATA)

ยง

CAN_FRAME(CAN_FRAME_DATA)

ยง

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

ยง

RAW_RPM(RAW_RPM_DATA)

ยง

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

ยง

EVENT(EVENT_DATA)

ยง

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

ยง

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

ยง

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

ยง

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

ยง

AUTH_KEY(AUTH_KEY_DATA)

ยง

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

ยง

LOG_ERASE(LOG_ERASE_DATA)

ยง

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

ยง

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

ยง

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

ยง

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

ยง

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

ยง

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

ยง

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

ยง

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

ยง

PARAM_VALUE(PARAM_VALUE_DATA)

ยง

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

ยง

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

ยง

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

ยง

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

ยง

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

ยง

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

ยง

LANDING_TARGET(LANDING_TARGET_DATA)

ยง

SCALED_IMU2(SCALED_IMU2_DATA)

ยง

HEARTBEAT(HEARTBEAT_DATA)

ยง

HIL_GPS(HIL_GPS_DATA)

ยง

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

ยง

GPS_STATUS(GPS_STATUS_DATA)

ยง

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

ยง

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

ยง

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

ยง

MISSION_CURRENT(MISSION_CURRENT_DATA)

ยง

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

ยง

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

ยง

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

ยง

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

ยง

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

ยง

REQUEST_EVENT(REQUEST_EVENT_DATA)

ยง

COLLISION(COLLISION_DATA)

ยง

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

ยง

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

ยง

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

ยง

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

ยง

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

ยง

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

ยง

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

ยง

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

ยง

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

ยง

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

ยง

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

ยง

ALTITUDE(ALTITUDE_DATA)

ยง

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

ยง

ODOMETRY(ODOMETRY_DATA)

ยง

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

ยง

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

ยง

GPS_INPUT(GPS_INPUT_DATA)

ยง

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

ยง

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

ยง

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

ยง

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

ยง

GPS_RAW_INT(GPS_RAW_INT_DATA)

ยง

GPS_RTK(GPS_RTK_DATA)

ยง

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

ยง

PING(PING_DATA)

ยง

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

ยง

COMMAND_INT(COMMAND_INT_DATA)

ยง

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

ยง

FLIGHT_INFORMATION(FLIGHT_INFORMATION_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 945d6d5849..502239bded 100644 --- a/mavlink/common/struct.AdsbFlags.html +++ b/mavlink/common/struct.AdsbFlags.html @@ -57,16 +57,16 @@

ยงSafety

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. Read more
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.

+
ยง

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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 2441decc99..700cff80aa 100644 --- a/mavlink/common/struct.AisFlags.html +++ b/mavlink/common/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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
sourceยง

impl Ord for AisFlags

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

Compares and returns the maximum of two values. Read more
1.21.0 ยท sourceยง

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

Compares and returns the minimum of two values. Read more
1.50.0 ยท sourceยง

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

Restrict a value to a certain interval. Read more
sourceยง

impl PartialEq for AisFlags

sourceยง

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

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

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

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

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

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

impl Serialize for AisFlags

sourceยง

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

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

impl Sub for AisFlags

sourceยง

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

Returns the set difference of the two sets of flags.

-
ยง

type Output = AisFlags

The resulting type after applying the - operator.
sourceยง

impl SubAssign for AisFlags

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
ยง

type Output = AisFlags

The resulting type after applying the - operator.
sourceยง

impl SubAssign for AisFlags

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

sourceยง

impl UpperHex for AisFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Copy for AisFlags

sourceยง

impl Eq for AisFlags

sourceยง

impl StructuralPartialEq for AisFlags

Auto Trait Implementationsยง

Blanket Implementationsยง

sourceยง

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

sourceยง

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
sourceยง

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

sourceยง

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
sourceยง

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/common/struct.AttitudeTargetTypemask.html b/mavlink/common/struct.AttitudeTargetTypemask.html index f072d607cf..0c9d391ad0 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. Read more
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. Read more
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.

+
ยง

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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 745599b41c..db8087e011 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 3c29e1d799..62bc253b9f 100644 --- a/mavlink/common/struct.EscFailureFlags.html +++ b/mavlink/common/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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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/common/struct.EstimatorStatusFlags.html b/mavlink/common/struct.EstimatorStatusFlags.html index f12d5b07a0..65074fc894 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 dece150ba5..40751e3a33 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 eba0c78eb8..f81ddc07c0 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 a07b7e4191..1f0cde4cc4 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. Read more
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. Read more
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.

sourceยง

impl BitXor for GimbalDeviceFlags

sourceยง

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

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

-
ยง

type Output = GimbalDeviceFlags

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for GimbalDeviceFlags

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
ยง

type Output = GimbalDeviceFlags

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for GimbalDeviceFlags

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

sourceยง

impl Clone for GimbalDeviceFlags

sourceยง

fn clone(&self) -> GimbalDeviceFlags

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for GimbalDeviceFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for GimbalDeviceFlags

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

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

sourceยง

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

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

impl Extend<GimbalDeviceFlags> for GimbalDeviceFlags

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<GimbalDeviceFlags> for GimbalDeviceFlags

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for GimbalDeviceFlags

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for GimbalDeviceFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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 +

ยง

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. Read more
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. Read more
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. Read more
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 4a5415d55d..945781dbd5 100644 --- a/mavlink/common/struct.GimbalManagerCapFlags.html +++ b/mavlink/common/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. Read more
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. Read more
sourceยง

impl BitAnd for GimbalManagerCapFlags

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = GimbalManagerCapFlags

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for GimbalManagerCapFlags

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for GimbalManagerCapFlags

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = GimbalManagerCapFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for GimbalManagerCapFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = GimbalManagerCapFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for GimbalManagerCapFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for GimbalManagerCapFlags

sourceยง

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

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

ยง

type Output = GimbalManagerCapFlags

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for GimbalManagerCapFlags

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
sourceยง

impl Clone for GimbalManagerCapFlags

sourceยง

fn clone(&self) -> GimbalManagerCapFlags

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for GimbalManagerCapFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for GimbalManagerCapFlags

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

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

sourceยง

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

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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 55cff3a7a3..0ab4f63faa 100644 --- a/mavlink/common/struct.GpsInputIgnoreFlags.html +++ b/mavlink/common/struct.GpsInputIgnoreFlags.html @@ -57,16 +57,16 @@
ยงSafety

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

sourceยง

impl GpsInputIgnoreFlags

source

pub const DEFAULT: Self = Self::GPS_INPUT_IGNORE_FLAG_ALT

Trait Implementationsยง

sourceยง

impl Binary for GpsInputIgnoreFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
sourceยง

impl Ord for GpsInputIgnoreFlags

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

Compares and returns the maximum of two values. Read more
1.21.0 ยท sourceยง

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

Compares and returns the minimum of two values. Read more
1.50.0 ยท sourceยง

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

Restrict a value to a certain interval. Read more
sourceยง

impl PartialEq for GpsInputIgnoreFlags

sourceยง

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

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

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

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

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

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

impl Serialize for GpsInputIgnoreFlags

sourceยง

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

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

impl Sub for GpsInputIgnoreFlags

sourceยง

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

Returns the set difference of the two sets of flags.

-
ยง

type Output = GpsInputIgnoreFlags

The resulting type after applying the - operator.
sourceยง

impl SubAssign for GpsInputIgnoreFlags

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
ยง

type Output = GpsInputIgnoreFlags

The resulting type after applying the - operator.
sourceยง

impl SubAssign for GpsInputIgnoreFlags

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

sourceยง

impl UpperHex for GpsInputIgnoreFlags

sourceยง

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

Formats the value using the given formatter. Read more
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 diff --git a/mavlink/common/struct.HighresImuUpdatedFlags.html b/mavlink/common/struct.HighresImuUpdatedFlags.html index 46c20ba6ff..126282467d 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. Read more
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. Read more
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 +

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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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/common/struct.HilSensorUpdatedFlags.html b/mavlink/common/struct.HilSensorUpdatedFlags.html index a59d5f6810..b324bc5bdf 100644 --- a/mavlink/common/struct.HilSensorUpdatedFlags.html +++ b/mavlink/common/struct.HilSensorUpdatedFlags.html @@ -57,16 +57,16 @@
ยงSafety

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. Read more
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.

+
ยง

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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 8e6563c425..1f88fba008 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. Read more
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. Read more
sourceยง

impl BitAnd for HlFailureFlag

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = HlFailureFlag

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for HlFailureFlag

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for HlFailureFlag

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = HlFailureFlag

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for HlFailureFlag

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = HlFailureFlag

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for HlFailureFlag

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for HlFailureFlag

sourceยง

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

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

-
ยง

type Output = HlFailureFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for HlFailureFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
sourceยง

impl Clone for HlFailureFlag

sourceยง

fn clone(&self) -> HlFailureFlag

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for HlFailureFlag

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for HlFailureFlag

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for HlFailureFlag

sourceยง

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

ยง

type Output = HlFailureFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for HlFailureFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
sourceยง

impl Clone for HlFailureFlag

sourceยง

fn clone(&self) -> HlFailureFlag

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for HlFailureFlag

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for HlFailureFlag

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for HlFailureFlag

sourceยง

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

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

impl Extend<HlFailureFlag> for HlFailureFlag

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<HlFailureFlag> for HlFailureFlag

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for HlFailureFlag

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for HlFailureFlag

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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,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 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.

+
ยง

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. Read more
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 diff --git a/mavlink/common/struct.MavEventCurrentSequenceFlags.html b/mavlink/common/struct.MavEventCurrentSequenceFlags.html index 3c1e15fc23..ba97d8936c 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. Read more
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. Read more
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 +

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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 7c727f4c7f..121c4503d9 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. Read more
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. Read more
sourceยง

impl BitAnd for MavGeneratorStatusFlag

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = MavGeneratorStatusFlag

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for MavGeneratorStatusFlag

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for MavGeneratorStatusFlag

sourceยง

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

Returns the union of the two sets of flags.

ยง

type Output = MavGeneratorStatusFlag

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for MavGeneratorStatusFlag

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for MavGeneratorStatusFlag

sourceยง

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

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

-
ยง

type Output = MavGeneratorStatusFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for MavGeneratorStatusFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
ยง

type Output = MavGeneratorStatusFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for MavGeneratorStatusFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

sourceยง

impl Clone for MavGeneratorStatusFlag

sourceยง

fn clone(&self) -> MavGeneratorStatusFlag

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for MavGeneratorStatusFlag

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for MavGeneratorStatusFlag

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for MavGeneratorStatusFlag

sourceยง

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

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

impl Extend<MavGeneratorStatusFlag> for MavGeneratorStatusFlag

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<MavGeneratorStatusFlag> for MavGeneratorStatusFlag

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for MavGeneratorStatusFlag

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for MavGeneratorStatusFlag

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 72db4d0690..57b14559d9 100644 --- a/mavlink/common/struct.MavModeFlag.html +++ b/mavlink/common/struct.MavModeFlag.html @@ -57,16 +57,16 @@
ยงSafety

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. Read more
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.

+
ยง

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 +

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. Read more
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. Read more
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. Read more
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. Read more
sourceยง

impl Ord for MavModeFlag

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

Compares and returns the maximum of two values. Read more
1.21.0 ยท sourceยง

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

Compares and returns the minimum of two values. Read more
1.50.0 ยท sourceยง

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

Restrict a value to a certain interval. Read more
sourceยง

impl PartialEq for MavModeFlag

sourceยง

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

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

impl Serialize for MavModeFlag

sourceยง

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

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

impl Sub for MavModeFlag

sourceยง

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

Returns the set difference of the two sets of flags.

ยง

type Output = MavModeFlag

The resulting type after applying the - operator.
sourceยง

impl SubAssign for MavModeFlag

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
sourceยง

impl UpperHex for MavModeFlag

sourceยง

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

Formats the value using the given formatter. Read more
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 +

sourceยง

impl UpperHex for MavModeFlag

sourceยง

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

Formats the value using the given formatter. Read more
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/common/struct.MavPowerStatus.html b/mavlink/common/struct.MavPowerStatus.html index 2d75578ff3..38c500ad0c 100644 --- a/mavlink/common/struct.MavPowerStatus.html +++ b/mavlink/common/struct.MavPowerStatus.html @@ -56,17 +56,17 @@
ยงSafety
between Self::all() and self (e.g. Self::all() - self)

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

-
sourceยง

impl MavPowerStatus

source

pub const DEFAULT: Self = Self::MAV_POWER_STATUS_BRICK_VALID

Trait Implementationsยง

sourceยง

impl Binary for MavPowerStatus

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
sourceยง

impl BitAnd for MavPowerStatus

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = MavPowerStatus

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for MavPowerStatus

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for MavPowerStatus

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = MavPowerStatus

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for MavPowerStatus

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = MavPowerStatus

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for MavPowerStatus

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for MavPowerStatus

sourceยง

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

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

-
ยง

type Output = MavPowerStatus

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for MavPowerStatus

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
sourceยง

impl Clone for MavPowerStatus

sourceยง

fn clone(&self) -> MavPowerStatus

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for MavPowerStatus

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for MavPowerStatus

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for MavPowerStatus

sourceยง

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

ยง

type Output = MavPowerStatus

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for MavPowerStatus

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
sourceยง

impl Clone for MavPowerStatus

sourceยง

fn clone(&self) -> MavPowerStatus

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for MavPowerStatus

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for MavPowerStatus

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for MavPowerStatus

sourceยง

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

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

impl Extend<MavPowerStatus> for MavPowerStatus

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<MavPowerStatus> for MavPowerStatus

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for MavPowerStatus

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for MavPowerStatus

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 0238a26b4a..775add860c 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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,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 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.

+
ยง

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. Read more
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 diff --git a/mavlink/common/struct.MavSysStatusSensor.html b/mavlink/common/struct.MavSysStatusSensor.html index b0677cd407..bf85cc0094 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
sourceยง

impl Ord for MavSysStatusSensor

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

Compares and returns the maximum of two values. Read more
1.21.0 ยท sourceยง

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

Compares and returns the minimum of two values. Read more
1.50.0 ยท sourceยง

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

Restrict a value to a certain interval. Read more
sourceยง

impl PartialEq for MavSysStatusSensor

sourceยง

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

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

impl Serialize for MavSysStatusSensor

sourceยง

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

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

impl Sub for MavSysStatusSensor

sourceยง

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

Returns the set difference of the two sets of flags.

ยง

type Output = MavSysStatusSensor

The resulting type after applying the - operator.
sourceยง

impl SubAssign for MavSysStatusSensor

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
sourceยง

impl UpperHex for MavSysStatusSensor

sourceยง

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

Formats the value using the given formatter. Read more
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 +

sourceยง

impl UpperHex for MavSysStatusSensor

sourceยง

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

Formats the value using the given formatter. Read more
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 41767e282a..17c356e4d6 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. Read more
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. Read more
sourceยง

impl BitAnd for MavWinchStatusFlag

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = MavWinchStatusFlag

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for MavWinchStatusFlag

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for MavWinchStatusFlag

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = MavWinchStatusFlag

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for MavWinchStatusFlag

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = MavWinchStatusFlag

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for MavWinchStatusFlag

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for MavWinchStatusFlag

sourceยง

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

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

-
ยง

type Output = MavWinchStatusFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for MavWinchStatusFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
ยง

type Output = MavWinchStatusFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for MavWinchStatusFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

sourceยง

impl Clone for MavWinchStatusFlag

sourceยง

fn clone(&self) -> MavWinchStatusFlag

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for MavWinchStatusFlag

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for MavWinchStatusFlag

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for MavWinchStatusFlag

sourceยง

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

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

impl Extend<MavWinchStatusFlag> for MavWinchStatusFlag

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<MavWinchStatusFlag> for MavWinchStatusFlag

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for MavWinchStatusFlag

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for MavWinchStatusFlag

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 36ed006271..2cffa216c4 100644 --- a/mavlink/common/struct.PositionTargetTypemask.html +++ b/mavlink/common/struct.PositionTargetTypemask.html @@ -56,17 +56,17 @@
ยงSafety
between Self::all() and self (e.g. Self::all() - self)

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

-
sourceยง

impl PositionTargetTypemask

source

pub const DEFAULT: Self = Self::POSITION_TARGET_TYPEMASK_X_IGNORE

Trait Implementationsยง

sourceยง

impl Binary for PositionTargetTypemask

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 8034e40af4..4e86a79726 100644 --- a/mavlink/common/struct.SerialControlFlag.html +++ b/mavlink/common/struct.SerialControlFlag.html @@ -56,17 +56,17 @@
ยงSafety
between Self::all() and self (e.g. Self::all() - self)

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

-
sourceยง

impl SerialControlFlag

source

pub const DEFAULT: Self = Self::SERIAL_CONTROL_FLAG_REPLY

Trait Implementationsยง

sourceยง

impl Binary for SerialControlFlag

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 404f2c4149..a1241eed84 100644 --- a/mavlink/common/struct.TuneFormat.html +++ b/mavlink/common/struct.TuneFormat.html @@ -57,16 +57,16 @@
ยงSafety

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. Read more
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.

+
ยง

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. Read more
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. Read more
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. Read more
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. Read more
sourceยง

impl Ord for TuneFormat

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

Compares and returns the maximum of two values. Read more
1.21.0 ยท sourceยง

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

Compares and returns the minimum of two values. Read more
1.50.0 ยท sourceยง

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

Restrict a value to a certain interval. Read more
sourceยง

impl PartialEq for TuneFormat

sourceยง

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

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

impl Serialize for TuneFormat

sourceยง

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

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

impl Sub for TuneFormat

sourceยง

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

Returns the set difference of the two sets of flags.

ยง

type Output = TuneFormat

The resulting type after applying the - operator.
sourceยง

impl SubAssign for TuneFormat

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
sourceยง

impl UpperHex for TuneFormat

sourceยง

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

Formats the value using the given formatter. Read more
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 +

sourceยง

impl UpperHex for TuneFormat

sourceยง

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

Formats the value using the given formatter. Read more
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 1212b2b7ba..de3d9c0f83 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. Read more
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. Read more
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.

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. Read more
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. Read more
sourceยง

impl Ord for UtmDataAvailFlags

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

ยง

type Output = UtmDataAvailFlags

The resulting type after applying the ! operator.
sourceยง

impl Octal for UtmDataAvailFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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/icarous/enum.MavMessage.html b/mavlink/icarous/enum.MavMessage.html index 762313171d..75b33622c2 100644 --- a/mavlink/icarous/enum.MavMessage.html +++ b/mavlink/icarous/enum.MavMessage.html @@ -1,7 +1,7 @@ MavMessage in mavlink::icarous - Rust

Enum mavlink::icarous::MavMessage

source ยท
#[repr(u32)]
pub enum MavMessage { - ICAROUS_KINEMATIC_BANDS(ICAROUS_KINEMATIC_BANDS_DATA), ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA), -}

Variantsยง

ยง

ICAROUS_KINEMATIC_BANDS(ICAROUS_KINEMATIC_BANDS_DATA)

ยง

ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA)

Trait Implementationsยง

sourceยง

impl Clone for MavMessage

sourceยง

fn clone(&self) -> MavMessage

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for MavMessage

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

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

sourceยง

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

Variantsยง

ยง

ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA)

ยง

ICAROUS_KINEMATIC_BANDS(ICAROUS_KINEMATIC_BANDS_DATA)

Trait Implementationsยง

sourceยง

impl Clone for MavMessage

sourceยง

fn clone(&self) -> MavMessage

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for MavMessage

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

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

sourceยง

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

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

impl Message for MavMessage

sourceยง

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

Variantsยง

ยง

EVENT(EVENT_DATA)

ยง

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

ยง

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

ยง

HEARTBEAT(HEARTBEAT_DATA)

ยง

RADIO_STATUS(RADIO_STATUS_DATA)

ยง

GPS2_RTK(GPS2_RTK_DATA)

ยง

UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA)

ยง

UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA)

ยง

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

ยง

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

ยง

GPS_INPUT(GPS_INPUT_DATA)

ยง

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

ยง

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

ยง

GPS_STATUS(GPS_STATUS_DATA)

ยง

DATA_STREAM(DATA_STREAM_DATA)

ยง

ESC_STATUS(ESC_STATUS_DATA)

ยง

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

ยง

CAN_FRAME(CAN_FRAME_DATA)

ยง

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

ยง

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

ยง

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

ยง

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

ยง

WIND_COV(WIND_COV_DATA)

ยง

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

ยง

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

ยง

VIBRATION(VIBRATION_DATA)

ยง

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

ยง

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

ยง

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

ยง

STATUSTEXT(STATUSTEXT_DATA)

ยง

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

ยง

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

ยง

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

ยง

RC_CHANNELS(RC_CHANNELS_DATA)

ยง

VFR_HUD(VFR_HUD_DATA)

ยง

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

ยง

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

ยง

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

ยง

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

ยง

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

ยง

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

ยง

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

ยง

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

ยง

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

ยง

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

ยง

TIMESYNC(TIMESYNC_DATA)

ยง

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

ยง

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

ยง

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

ยง

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

ยง

PLAY_TUNE(PLAY_TUNE_DATA)

ยง

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

ยง

MISSION_ITEM(MISSION_ITEM_DATA)

ยง

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

ยง

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

ยง

SYSTEM_TIME(SYSTEM_TIME_DATA)

ยง

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

ยง

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

ยง

POWER_STATUS(POWER_STATUS_DATA)

ยง

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

ยง

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

ยง

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

ยง

CANFD_FRAME(CANFD_FRAME_DATA)

ยง

MISSION_REQUEST(MISSION_REQUEST_DATA)

ยง

REQUEST_EVENT(REQUEST_EVENT_DATA)

ยง

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

ยง

ESC_INFO(ESC_INFO_DATA)

ยง

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

ยง

ATTITUDE(ATTITUDE_DATA)

ยง

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

ยง

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

ยง

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

ยง

GPS_RAW_INT(GPS_RAW_INT_DATA)

ยง

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

ยง

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

ยง

ALTITUDE(ALTITUDE_DATA)

ยง

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

ยง

FENCE_STATUS(FENCE_STATUS_DATA)

ยง

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

ยง

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

ยง

UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA)

ยง

LANDING_TARGET(LANDING_TARGET_DATA)

ยง

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

ยง

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

ยง

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

ยง

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

ยง

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

ยง

MISSION_CURRENT(MISSION_CURRENT_DATA)

ยง

HOME_POSITION(HOME_POSITION_DATA)

ยง

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

ยง

LOGGING_DATA(LOGGING_DATA_DATA)

ยง

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

ยง

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

ยง

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

ยง

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

ยง

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

ยง

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

ยง

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

ยง

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

ยง

LOG_DATA(LOG_DATA_DATA)

ยง

COMMAND_ACK(COMMAND_ACK_DATA)

ยง

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

ยง

HIL_SENSOR(HIL_SENSOR_DATA)

ยง

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

ยง

SET_MODE(SET_MODE_DATA)

ยง

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

ยง

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

ยง

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

ยง

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

ยง

HIL_STATE(HIL_STATE_DATA)

ยง

SYS_STATUS(SYS_STATUS_DATA)

ยง

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

ยง

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

ยง

COMMAND_LONG(COMMAND_LONG_DATA)

ยง

RAW_IMU(RAW_IMU_DATA)

ยง

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

ยง

RAW_RPM(RAW_RPM_DATA)

ยง

V2_EXTENSION(V2_EXTENSION_DATA)

ยง

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

ยง

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

ยง

GPS2_RAW(GPS2_RAW_DATA)

ยง

SCALED_IMU2(SCALED_IMU2_DATA)

ยง

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

ยง

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

ยง

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

ยง

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

ยง

TUNNEL(TUNNEL_DATA)

ยง

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

ยง

LOG_ERASE(LOG_ERASE_DATA)

ยง

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

ยง

DEBUG(DEBUG_DATA)

ยง

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

ยง

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

ยง

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

ยง

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

ยง

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

ยง

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

ยง

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

ยง

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

ยง

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

ยง

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

ยง

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

ยง

PING(PING_DATA)

ยง

WINCH_STATUS(WINCH_STATUS_DATA)

ยง

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

ยง

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

ยง

SETUP_SIGNING(SETUP_SIGNING_DATA)

ยง

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

ยง

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

ยง

MISSION_COUNT(MISSION_COUNT_DATA)

ยง

ODOMETRY(ODOMETRY_DATA)

ยง

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

ยง

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

ยง

RAW_PRESSURE(RAW_PRESSURE_DATA)

ยง

MISSION_ACK(MISSION_ACK_DATA)

ยง

DEBUG_VECT(DEBUG_VECT_DATA)

ยง

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

ยง

PARAM_VALUE(PARAM_VALUE_DATA)

ยง

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

ยง

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

ยง

PARAM_SET(PARAM_SET_DATA)

ยง

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

ยง

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

ยง

SCALED_IMU(SCALED_IMU_DATA)

ยง

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

ยง

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

ยง

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

ยง

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

ยง

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

ยง

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

ยง

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

ยง

HIL_GPS(HIL_GPS_DATA)

ยง

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

ยง

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

ยง

HIGH_LATENCY(HIGH_LATENCY_DATA)

ยง

AUTH_KEY(AUTH_KEY_DATA)

ยง

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

ยง

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

ยง

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

ยง

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

ยง

SIM_STATE(SIM_STATE_DATA)

ยง

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

ยง

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

ยง

AIS_VESSEL(AIS_VESSEL_DATA)

ยง

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

ยง

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

ยง

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

ยง

MEMORY_VECT(MEMORY_VECT_DATA)

ยง

HIL_CONTROLS(HIL_CONTROLS_DATA)

ยง

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

ยง

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

ยง

BATTERY_STATUS(BATTERY_STATUS_DATA)

ยง

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

ยง

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

ยง

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

ยง

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

ยง

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

ยง

SCALED_IMU3(SCALED_IMU3_DATA)

ยง

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

ยง

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

ยง

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

ยง

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

ยง

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

ยง

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

ยง

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

ยง

LOGGING_ACK(LOGGING_ACK_DATA)

ยง

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

ยง

COMMAND_INT(COMMAND_INT_DATA)

ยง

LOG_ENTRY(LOG_ENTRY_DATA)

ยง

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

ยง

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

ยง

COLLISION(COLLISION_DATA)

ยง

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

ยง

EFI_STATUS(EFI_STATUS_DATA)

ยง

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

ยง

GPS_RTK(GPS_RTK_DATA)

ยง

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

ยง

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

ยง

TERRAIN_DATA(TERRAIN_DATA_DATA)

ยง

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

ยง

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

ยง

HIGHRES_IMU(HIGHRES_IMU_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 + GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA), + CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA), + PLAY_TUNE_V2(PLAY_TUNE_V2_DATA), + SCALED_PRESSURE(SCALED_PRESSURE_DATA), + CAMERA_INFORMATION(CAMERA_INFORMATION_DATA), + FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA), + REQUEST_EVENT(REQUEST_EVENT_DATA), + LOG_DATA(LOG_DATA_DATA), +

}

Variantsยง

ยง

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

ยง

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

ยง

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

ยง

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

ยง

MISSION_REQUEST(MISSION_REQUEST_DATA)

ยง

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

ยง

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

ยง

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

ยง

LANDING_TARGET(LANDING_TARGET_DATA)

ยง

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

ยง

SYSTEM_TIME(SYSTEM_TIME_DATA)

ยง

POWER_STATUS(POWER_STATUS_DATA)

ยง

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

ยง

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

ยง

LOGGING_ACK(LOGGING_ACK_DATA)

ยง

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

ยง

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

ยง

VIBRATION(VIBRATION_DATA)

ยง

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

ยง

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

ยง

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

ยง

EVENT(EVENT_DATA)

ยง

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

ยง

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

ยง

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

ยง

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

ยง

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

ยง

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

ยง

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

ยง

MISSION_COUNT(MISSION_COUNT_DATA)

ยง

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

ยง

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

ยง

ALTITUDE(ALTITUDE_DATA)

ยง

PARAM_SET(PARAM_SET_DATA)

ยง

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

ยง

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

ยง

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

ยง

DATA_STREAM(DATA_STREAM_DATA)

ยง

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

ยง

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

ยง

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

ยง

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

ยง

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

ยง

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

ยง

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

ยง

BATTERY_STATUS(BATTERY_STATUS_DATA)

ยง

HIL_GPS(HIL_GPS_DATA)

ยง

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

ยง

UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA)

ยง

V2_EXTENSION(V2_EXTENSION_DATA)

ยง

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

ยง

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

ยง

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

ยง

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

ยง

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

ยง

ATTITUDE(ATTITUDE_DATA)

ยง

AIS_VESSEL(AIS_VESSEL_DATA)

ยง

HIL_STATE(HIL_STATE_DATA)

ยง

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

ยง

DEBUG(DEBUG_DATA)

ยง

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

ยง

UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA)

ยง

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

ยง

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

ยง

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

ยง

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

ยง

MISSION_CURRENT(MISSION_CURRENT_DATA)

ยง

WINCH_STATUS(WINCH_STATUS_DATA)

ยง

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

ยง

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

ยง

HOME_POSITION(HOME_POSITION_DATA)

ยง

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

ยง

MISSION_ITEM(MISSION_ITEM_DATA)

ยง

SET_MODE(SET_MODE_DATA)

ยง

SYS_STATUS(SYS_STATUS_DATA)

ยง

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

ยง

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

ยง

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

ยง

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

ยง

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

ยง

VFR_HUD(VFR_HUD_DATA)

ยง

EFI_STATUS(EFI_STATUS_DATA)

ยง

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

ยง

SETUP_SIGNING(SETUP_SIGNING_DATA)

ยง

SCALED_IMU2(SCALED_IMU2_DATA)

ยง

LOGGING_DATA(LOGGING_DATA_DATA)

ยง

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

ยง

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

ยง

PING(PING_DATA)

ยง

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

ยง

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

ยง

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

ยง

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

ยง

CAN_FRAME(CAN_FRAME_DATA)

ยง

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

ยง

MEMORY_VECT(MEMORY_VECT_DATA)

ยง

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

ยง

HIL_SENSOR(HIL_SENSOR_DATA)

ยง

ODOMETRY(ODOMETRY_DATA)

ยง

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

ยง

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

ยง

GPS_STATUS(GPS_STATUS_DATA)

ยง

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

ยง

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

ยง

RAW_RPM(RAW_RPM_DATA)

ยง

COMMAND_INT(COMMAND_INT_DATA)

ยง

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

ยง

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

ยง

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

ยง

FENCE_STATUS(FENCE_STATUS_DATA)

ยง

CANFD_FRAME(CANFD_FRAME_DATA)

ยง

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

ยง

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

ยง

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

ยง

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

ยง

RC_CHANNELS(RC_CHANNELS_DATA)

ยง

PLAY_TUNE(PLAY_TUNE_DATA)

ยง

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

ยง

HIGH_LATENCY(HIGH_LATENCY_DATA)

ยง

RAW_IMU(RAW_IMU_DATA)

ยง

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

ยง

WIND_COV(WIND_COV_DATA)

ยง

TERRAIN_DATA(TERRAIN_DATA_DATA)

ยง

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

ยง

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

ยง

TUNNEL(TUNNEL_DATA)

ยง

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

ยง

TIMESYNC(TIMESYNC_DATA)

ยง

DEBUG_VECT(DEBUG_VECT_DATA)

ยง

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

ยง

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

ยง

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

ยง

RAW_PRESSURE(RAW_PRESSURE_DATA)

ยง

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

ยง

RADIO_STATUS(RADIO_STATUS_DATA)

ยง

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

ยง

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

ยง

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

ยง

SIM_STATE(SIM_STATE_DATA)

ยง

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

ยง

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

ยง

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

ยง

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

ยง

SCALED_IMU3(SCALED_IMU3_DATA)

ยง

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

ยง

HIGHRES_IMU(HIGHRES_IMU_DATA)

ยง

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

ยง

HEARTBEAT(HEARTBEAT_DATA)

ยง

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

ยง

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

ยง

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

ยง

GPS_INPUT(GPS_INPUT_DATA)

ยง

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

ยง

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

ยง

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

ยง

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

ยง

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

ยง

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

ยง

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

ยง

SCALED_IMU(SCALED_IMU_DATA)

ยง

MISSION_ACK(MISSION_ACK_DATA)

ยง

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

ยง

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

ยง

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

ยง

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

ยง

COMMAND_ACK(COMMAND_ACK_DATA)

ยง

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

ยง

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

ยง

HIL_CONTROLS(HIL_CONTROLS_DATA)

ยง

ESC_STATUS(ESC_STATUS_DATA)

ยง

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

ยง

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

ยง

GPS2_RAW(GPS2_RAW_DATA)

ยง

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

ยง

ESC_INFO(ESC_INFO_DATA)

ยง

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

ยง

AUTH_KEY(AUTH_KEY_DATA)

ยง

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

ยง

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

ยง

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

ยง

GPS_RAW_INT(GPS_RAW_INT_DATA)

ยง

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

ยง

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

ยง

LOG_ENTRY(LOG_ENTRY_DATA)

ยง

STATUSTEXT(STATUSTEXT_DATA)

ยง

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

ยง

UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA)

ยง

LOG_ERASE(LOG_ERASE_DATA)

ยง

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

ยง

PARAM_VALUE(PARAM_VALUE_DATA)

ยง

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

ยง

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

ยง

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

ยง

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

ยง

GPS2_RTK(GPS2_RTK_DATA)

ยง

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

ยง

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

ยง

COLLISION(COLLISION_DATA)

ยง

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

ยง

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

ยง

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

ยง

COMMAND_LONG(COMMAND_LONG_DATA)

ยง

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

ยง

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

ยง

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

ยง

GPS_RTK(GPS_RTK_DATA)

ยง

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

ยง

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

ยง

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

ยง

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

ยง

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

ยง

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

ยง

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

ยง

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

ยง

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

ยง

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

ยง

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

ยง

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

ยง

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

ยง

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

ยง

REQUEST_EVENT(REQUEST_EVENT_DATA)

ยง

LOG_DATA(LOG_DATA_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 f29227a587..9a7564f0a5 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. Read more
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. Read more
sourceยง

impl BitAnd for AdsbFlags

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = AdsbFlags

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for AdsbFlags

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for AdsbFlags

sourceยง

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

Returns the union of the two sets of flags.

ยง

type Output = AdsbFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for AdsbFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for AdsbFlags

sourceยง

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

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

-
ยง

type Output = AdsbFlags

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for AdsbFlags

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
sourceยง

impl Copy for AdsbFlags

sourceยง

impl Eq for AdsbFlags

sourceยง

impl StructuralPartialEq for AdsbFlags

Auto Trait Implementationsยง

Blanket Implementationsยง

sourceยง

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

sourceยง

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
sourceยง

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

sourceยง

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
sourceยง

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

sourceยง

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

Mutably borrows from an owned value. Read more
sourceยง

impl<T> From<T> for T

sourceยง

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.AisFlags.html b/mavlink/uavionix/struct.AisFlags.html index ed29d2fa17..77041fac94 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
sourceยง

impl Copy for AisFlags

sourceยง

impl Eq for AisFlags

sourceยง

impl StructuralPartialEq for AisFlags

Auto Trait Implementationsยง

Blanket Implementationsยง

sourceยง

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

sourceยง

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
sourceยง

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

sourceยง

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
sourceยง

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

sourceยง

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

Mutably borrows from an owned value. Read more
sourceยง

impl<T> From<T> for T

sourceยง

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.AttitudeTargetTypemask.html b/mavlink/uavionix/struct.AttitudeTargetTypemask.html index 93cb6c3b10..03ab6ce5f1 100644 --- a/mavlink/uavionix/struct.AttitudeTargetTypemask.html +++ b/mavlink/uavionix/struct.AttitudeTargetTypemask.html @@ -56,17 +56,17 @@
ยงSafety
between Self::all() and self (e.g. Self::all() - self)

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

-
sourceยง

impl AttitudeTargetTypemask

source

pub const DEFAULT: Self = Self::ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE

Trait Implementationsยง

sourceยง

impl Binary for AttitudeTargetTypemask

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
sourceยง

impl Copy for AttitudeTargetTypemask

sourceยง

impl Eq for AttitudeTargetTypemask

sourceยง

impl StructuralPartialEq for AttitudeTargetTypemask

Auto Trait Implementationsยง

Blanket Implementationsยง

sourceยง

impl<T> Any for T
where +

ยง

type Output = AttitudeTargetTypemask

The resulting type after applying the - operator.
sourceยง

impl SubAssign for AttitudeTargetTypemask

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
sourceยง

impl UpperHex for AttitudeTargetTypemask

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Copy for AttitudeTargetTypemask

sourceยง

impl Eq for AttitudeTargetTypemask

sourceยง

impl StructuralPartialEq for AttitudeTargetTypemask

Auto Trait Implementationsยง

Blanket Implementationsยง

sourceยง

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

sourceยง

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
sourceยง

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

sourceยง

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
sourceยง

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

sourceยง

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

Mutably borrows from an owned value. Read more
sourceยง

impl<T> From<T> for T

sourceยง

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.CameraCapFlags.html b/mavlink/uavionix/struct.CameraCapFlags.html index de45174411..4e94ef72ff 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
sourceยง

impl Ord for CameraCapFlags

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

Compares and returns the maximum of two values. Read more
1.21.0 ยท sourceยง

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

Compares and returns the minimum of two values. Read more
1.50.0 ยท sourceยง

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

Restrict a value to a certain interval. Read more
sourceยง

impl PartialEq for CameraCapFlags

sourceยง

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

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

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

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

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

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

impl Serialize for CameraCapFlags

sourceยง

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

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

impl Sub for CameraCapFlags

sourceยง

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

Returns the set difference of the two sets of flags.

-
ยง

type Output = CameraCapFlags

The resulting type after applying the - operator.
sourceยง

impl SubAssign for CameraCapFlags

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
ยง

type Output = CameraCapFlags

The resulting type after applying the - operator.
sourceยง

impl SubAssign for CameraCapFlags

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

sourceยง

impl UpperHex for CameraCapFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Copy for CameraCapFlags

sourceยง

impl Eq for CameraCapFlags

sourceยง

impl StructuralPartialEq for CameraCapFlags

Auto Trait Implementationsยง

Blanket Implementationsยง

sourceยง

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

sourceยง

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
sourceยง

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

sourceยง

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
sourceยง

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/uavionix/struct.EscFailureFlags.html b/mavlink/uavionix/struct.EscFailureFlags.html index 67e6f20a96..cc93be7c33 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. Read more
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. Read more
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. Read more
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. Read more
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 +

ยง

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. Read more
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. Read more
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. Read more
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 58f0848a8a..d2ad9f1e3a 100644 --- a/mavlink/uavionix/struct.EstimatorStatusFlags.html +++ b/mavlink/uavionix/struct.EstimatorStatusFlags.html @@ -57,15 +57,15 @@
ยงSafety

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. Read more
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.

+
ยง

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. Read more
sourceยง

impl Not for EstimatorStatusFlags

sourceยง

fn not(self) -> Self

Returns the complement of this set of flags.

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

impl LowerHex for EstimatorStatusFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
sourceยง

impl Ord for EstimatorStatusFlags

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

Compares and returns the maximum of two values. Read more
1.21.0 ยท sourceยง

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

Compares and returns the minimum of two values. Read more
1.50.0 ยท sourceยง

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

1.0.0 ยท sourceยง

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

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

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

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

impl Serialize for EstimatorStatusFlags

sourceยง

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

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

impl Sub for EstimatorStatusFlags

sourceยง

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

Returns the set difference of the two sets of flags.

-
ยง

type Output = EstimatorStatusFlags

The resulting type after applying the - operator.
sourceยง

impl SubAssign for EstimatorStatusFlags

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
sourceยง

impl UpperHex for EstimatorStatusFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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 5a45c7233e..bccc0f82be 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
sourceยง

impl Ord for GimbalDeviceCapFlags

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

Compares and returns the maximum of two values. Read more
1.21.0 ยท sourceยง

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

Compares and returns the minimum of two values. Read more
1.50.0 ยท sourceยง

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

Restrict a value to a certain interval. Read more
sourceยง

impl PartialEq for GimbalDeviceCapFlags

sourceยง

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

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

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

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

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

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

impl Serialize for GimbalDeviceCapFlags

sourceยง

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

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

impl Sub for GimbalDeviceCapFlags

sourceยง

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

Returns the set difference of the two sets of flags.

-
ยง

type Output = GimbalDeviceCapFlags

The resulting type after applying the - operator.
sourceยง

impl SubAssign for GimbalDeviceCapFlags

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
ยง

type Output = GimbalDeviceCapFlags

The resulting type after applying the - operator.
sourceยง

impl SubAssign for GimbalDeviceCapFlags

sourceยง

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

sourceยง

impl UpperHex for GimbalDeviceCapFlags

sourceยง

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

Formats the value using the given formatter. Read more
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 diff --git a/mavlink/uavionix/struct.GimbalDeviceErrorFlags.html b/mavlink/uavionix/struct.GimbalDeviceErrorFlags.html index 8967e931c0..db6123607b 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. Read more
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. Read more
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. Read more
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. Read more
sourceยง

impl Ord for GimbalDeviceErrorFlags

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

ยง

type Output = GimbalDeviceErrorFlags

The resulting type after applying the ! operator.
sourceยง

impl Octal for GimbalDeviceErrorFlags

sourceยง

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

Formats the value using the given formatter. Read more
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,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 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.

+
ยง

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. Read more
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 diff --git a/mavlink/uavionix/struct.GimbalDeviceFlags.html b/mavlink/uavionix/struct.GimbalDeviceFlags.html index dd0eafcbaa..b5ab39e9c7 100644 --- a/mavlink/uavionix/struct.GimbalDeviceFlags.html +++ b/mavlink/uavionix/struct.GimbalDeviceFlags.html @@ -56,17 +56,17 @@
ยงSafety
between Self::all() and self (e.g. Self::all() - self)

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

-

sourceยง

impl GimbalDeviceFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_FLAGS_RETRACT

Trait Implementationsยง

sourceยง

impl Binary for GimbalDeviceFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
sourceยง

impl BitAnd for GimbalDeviceFlags

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = GimbalDeviceFlags

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for GimbalDeviceFlags

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for GimbalDeviceFlags

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = GimbalDeviceFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for GimbalDeviceFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = GimbalDeviceFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for GimbalDeviceFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for GimbalDeviceFlags

sourceยง

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

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

ยง

type Output = GimbalDeviceFlags

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for GimbalDeviceFlags

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
sourceยง

impl Clone for GimbalDeviceFlags

sourceยง

fn clone(&self) -> GimbalDeviceFlags

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for GimbalDeviceFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for GimbalDeviceFlags

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

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

sourceยง

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

sourceยง

impl Clone for GimbalDeviceFlags

sourceยง

fn clone(&self) -> GimbalDeviceFlags

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for GimbalDeviceFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for GimbalDeviceFlags

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

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

sourceยง

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

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

impl Extend<GimbalDeviceFlags> for GimbalDeviceFlags

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<GimbalDeviceFlags> for GimbalDeviceFlags

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for GimbalDeviceFlags

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for GimbalDeviceFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 42f2385f85..2bb9deb32a 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. Read more
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. Read more
sourceยง

impl BitAnd for GimbalManagerCapFlags

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = GimbalManagerCapFlags

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for GimbalManagerCapFlags

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for GimbalManagerCapFlags

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = GimbalManagerCapFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for GimbalManagerCapFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = GimbalManagerCapFlags

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for GimbalManagerCapFlags

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for GimbalManagerCapFlags

sourceยง

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

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

ยง

type Output = GimbalManagerCapFlags

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for GimbalManagerCapFlags

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
sourceยง

impl Clone for GimbalManagerCapFlags

sourceยง

fn clone(&self) -> GimbalManagerCapFlags

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for GimbalManagerCapFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for GimbalManagerCapFlags

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

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

sourceยง

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

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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 479b90a748..973bee2244 100644 --- a/mavlink/uavionix/struct.GpsInputIgnoreFlags.html +++ b/mavlink/uavionix/struct.GpsInputIgnoreFlags.html @@ -56,17 +56,17 @@
ยงSafety
between Self::all() and self (e.g. Self::all() - self)

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

-
sourceยง

impl GpsInputIgnoreFlags

source

pub const DEFAULT: Self = Self::GPS_INPUT_IGNORE_FLAG_ALT

Trait Implementationsยง

sourceยง

impl Binary for GpsInputIgnoreFlags

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl BitAnd for GpsInputIgnoreFlags

sourceยง

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

Returns the intersection between the two sets of 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. Read more
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 +

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. Read more
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. Read more
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. Read more
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. Read more
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 @@ -76,7 +76,7 @@
ยงSafety
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. Read more
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 +

sourceยง

impl UpperHex for GpsInputIgnoreFlags

sourceยง

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

Formats the value using the given formatter. Read more
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/uavionix/struct.HighresImuUpdatedFlags.html b/mavlink/uavionix/struct.HighresImuUpdatedFlags.html index f8114d7eb0..a02c56def0 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. Read more
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. Read more
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.

+
ยง

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. Read more
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. Read more
sourceยง

impl Ord for HighresImuUpdatedFlags

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

ยง

type Output = HighresImuUpdatedFlags

The resulting type after applying the ! operator.
sourceยง

impl Octal for HighresImuUpdatedFlags

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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 573f160d26..d2e7a79e20 100644 --- a/mavlink/uavionix/struct.HilSensorUpdatedFlags.html +++ b/mavlink/uavionix/struct.HilSensorUpdatedFlags.html @@ -56,7 +56,7 @@
ยง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. Read more
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. Read more
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.

@@ -65,8 +65,8 @@
ยงSafety
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. Read more
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. Read more
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. Read more
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. Read more
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 diff --git a/mavlink/uavionix/struct.HlFailureFlag.html b/mavlink/uavionix/struct.HlFailureFlag.html index 637182e790..235f78ca24 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 d11b21723b..da0845f354 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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 9935b0d51c..d91adceccf 100644 --- a/mavlink/uavionix/struct.MavGeneratorStatusFlag.html +++ b/mavlink/uavionix/struct.MavGeneratorStatusFlag.html @@ -59,14 +59,14 @@
ยงSafety
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. Read more
sourceยง

impl BitAnd for MavGeneratorStatusFlag

sourceยง

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

Returns the intersection between the two sets of flags.

ยง

type Output = MavGeneratorStatusFlag

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for MavGeneratorStatusFlag

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for MavGeneratorStatusFlag

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = MavGeneratorStatusFlag

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for MavGeneratorStatusFlag

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = MavGeneratorStatusFlag

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for MavGeneratorStatusFlag

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for MavGeneratorStatusFlag

sourceยง

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

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

-
ยง

type Output = MavGeneratorStatusFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for MavGeneratorStatusFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
sourceยง

impl Clone for MavGeneratorStatusFlag

sourceยง

fn clone(&self) -> MavGeneratorStatusFlag

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for MavGeneratorStatusFlag

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for MavGeneratorStatusFlag

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for MavGeneratorStatusFlag

sourceยง

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

ยง

type Output = MavGeneratorStatusFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for MavGeneratorStatusFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
sourceยง

impl Clone for MavGeneratorStatusFlag

sourceยง

fn clone(&self) -> MavGeneratorStatusFlag

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for MavGeneratorStatusFlag

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for MavGeneratorStatusFlag

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for MavGeneratorStatusFlag

sourceยง

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

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

impl Extend<MavGeneratorStatusFlag> for MavGeneratorStatusFlag

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<MavGeneratorStatusFlag> for MavGeneratorStatusFlag

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for MavGeneratorStatusFlag

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for MavGeneratorStatusFlag

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 8bb4810797..72c382d9e2 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. Read more
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. Read more
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 +

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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 3fe939265d..2a81321fd8 100644 --- a/mavlink/uavionix/struct.MavPowerStatus.html +++ b/mavlink/uavionix/struct.MavPowerStatus.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 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. Read more
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. Read more
sourceยง

impl BitAnd for MavPowerStatus

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = MavPowerStatus

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for MavPowerStatus

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for MavPowerStatus

sourceยง

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

Returns the union of the two sets of flags.

ยง

type Output = MavPowerStatus

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for MavPowerStatus

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for MavPowerStatus

sourceยง

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

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

@@ -65,8 +65,8 @@
ยงSafety
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. Read more
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. Read more
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. Read more
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. Read more
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,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 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.

+
ยง

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. Read more
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 diff --git a/mavlink/uavionix/struct.MavProtocolCapability.html b/mavlink/uavionix/struct.MavProtocolCapability.html index d76372c31d..9030a063bb 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. Read more
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. Read more
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. Read more
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. Read more
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 +

ยง

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. Read more
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. Read more
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. Read more
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 b6c6414410..b0889be060 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. Read more
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. Read more
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 __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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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/uavionix/struct.MavWinchStatusFlag.html b/mavlink/uavionix/struct.MavWinchStatusFlag.html index 79c52b6502..88da146e31 100644 --- a/mavlink/uavionix/struct.MavWinchStatusFlag.html +++ b/mavlink/uavionix/struct.MavWinchStatusFlag.html @@ -57,16 +57,16 @@
ยงSafety

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

sourceยง

impl MavWinchStatusFlag

source

pub const DEFAULT: Self = Self::MAV_WINCH_STATUS_HEALTHY

Trait Implementationsยง

sourceยง

impl Binary for MavWinchStatusFlag

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl BitAnd for MavWinchStatusFlag

sourceยง

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

Returns the intersection between the two sets of flags.

-
ยง

type Output = MavWinchStatusFlag

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for MavWinchStatusFlag

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
ยง

type Output = MavWinchStatusFlag

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for MavWinchStatusFlag

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for MavWinchStatusFlag

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = MavWinchStatusFlag

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for MavWinchStatusFlag

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = MavWinchStatusFlag

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for MavWinchStatusFlag

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for MavWinchStatusFlag

sourceยง

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

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

-
ยง

type Output = MavWinchStatusFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for MavWinchStatusFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
sourceยง

impl Clone for MavWinchStatusFlag

sourceยง

fn clone(&self) -> MavWinchStatusFlag

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for MavWinchStatusFlag

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for MavWinchStatusFlag

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for MavWinchStatusFlag

sourceยง

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

ยง

type Output = MavWinchStatusFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for MavWinchStatusFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
sourceยง

impl Clone for MavWinchStatusFlag

sourceยง

fn clone(&self) -> MavWinchStatusFlag

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for MavWinchStatusFlag

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for MavWinchStatusFlag

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for MavWinchStatusFlag

sourceยง

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

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

impl Extend<MavWinchStatusFlag> for MavWinchStatusFlag

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<MavWinchStatusFlag> for MavWinchStatusFlag

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for MavWinchStatusFlag

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for MavWinchStatusFlag

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 c7af5b937a..506df4ed54 100644 --- a/mavlink/uavionix/struct.PositionTargetTypemask.html +++ b/mavlink/uavionix/struct.PositionTargetTypemask.html @@ -57,16 +57,16 @@
ยงSafety

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. Read more
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.

+
ยง

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 __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. Read more
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. Read more
sourceยง

impl Ord for PositionTargetTypemask

sourceยง

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

This method returns an Ordering between self and other. Read more
1.21.0 ยท sourceยง

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

ยง

type Output = PositionTargetTypemask

The resulting type after applying the ! operator.
sourceยง

impl Octal for PositionTargetTypemask

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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 412932927a..96a06b1ec0 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. Read more
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. Read more
sourceยง

impl BitAnd for SerialControlFlag

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = SerialControlFlag

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for SerialControlFlag

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for SerialControlFlag

sourceยง

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

Returns the union of the two sets of flags.

ยง

type Output = SerialControlFlag

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for SerialControlFlag

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for SerialControlFlag

sourceยง

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

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

-
ยง

type Output = SerialControlFlag

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for SerialControlFlag

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 0accf619d7..2b1254a8fb 100644 --- a/mavlink/uavionix/struct.TuneFormat.html +++ b/mavlink/uavionix/struct.TuneFormat.html @@ -57,16 +57,16 @@
ยงSafety

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. Read more
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.

+
ยง

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.

-
ยง

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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 6bd6e4a697..ad61f95495 100644 --- a/mavlink/uavionix/struct.UavionixAdsbOutDynamicState.html +++ b/mavlink/uavionix/struct.UavionixAdsbOutDynamicState.html @@ -56,17 +56,17 @@
ยงSafety
between Self::all() and self (e.g. Self::all() - self)

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

-
sourceยง

impl UavionixAdsbOutDynamicState

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE

Trait Implementationsยง

sourceยง

impl Binary for UavionixAdsbOutDynamicState

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
sourceยง

impl BitAnd for UavionixAdsbOutDynamicState

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for UavionixAdsbOutDynamicState

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for UavionixAdsbOutDynamicState

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for UavionixAdsbOutDynamicState

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for UavionixAdsbOutDynamicState

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for UavionixAdsbOutDynamicState

sourceยง

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

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

-
ยง

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for UavionixAdsbOutDynamicState

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
sourceยง

impl Clone for UavionixAdsbOutDynamicState

sourceยง

fn clone(&self) -> UavionixAdsbOutDynamicState

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for UavionixAdsbOutDynamicState

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for UavionixAdsbOutDynamicState

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for UavionixAdsbOutDynamicState

sourceยง

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

ยง

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for UavionixAdsbOutDynamicState

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
sourceยง

impl Clone for UavionixAdsbOutDynamicState

sourceยง

fn clone(&self) -> UavionixAdsbOutDynamicState

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for UavionixAdsbOutDynamicState

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for UavionixAdsbOutDynamicState

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for UavionixAdsbOutDynamicState

sourceยง

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

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

impl Extend<UavionixAdsbOutDynamicState> for UavionixAdsbOutDynamicState

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<UavionixAdsbOutDynamicState> for UavionixAdsbOutDynamicState

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for UavionixAdsbOutDynamicState

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for UavionixAdsbOutDynamicState

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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 @@ -76,7 +76,7 @@
ยงSafety
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. Read more
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 +

sourceยง

impl UpperHex for UavionixAdsbOutDynamicState

sourceยง

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

Formats the value using the given formatter. Read more
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/uavionix/struct.UavionixAdsbOutRfSelect.html b/mavlink/uavionix/struct.UavionixAdsbOutRfSelect.html index e010f2c5bc..1bbdb8194d 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. Read more
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. Read more
sourceยง

impl BitAnd for UavionixAdsbOutRfSelect

sourceยง

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

Returns the intersection between the two sets of flags.

+
ยง

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for UavionixAdsbOutRfSelect

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

sourceยง

impl BitOr for UavionixAdsbOutRfSelect

sourceยง

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

Returns the union of the two sets of flags.

-
ยง

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for UavionixAdsbOutRfSelect

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
ยง

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the | operator.
sourceยง

impl BitOrAssign for UavionixAdsbOutRfSelect

sourceยง

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

sourceยง

impl BitXor for UavionixAdsbOutRfSelect

sourceยง

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

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

-
ยง

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for UavionixAdsbOutRfSelect

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
sourceยง

impl Clone for UavionixAdsbOutRfSelect

sourceยง

fn clone(&self) -> UavionixAdsbOutRfSelect

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for UavionixAdsbOutRfSelect

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for UavionixAdsbOutRfSelect

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for UavionixAdsbOutRfSelect

sourceยง

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

ยง

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the ^ operator.
sourceยง

impl BitXorAssign for UavionixAdsbOutRfSelect

sourceยง

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
sourceยง

impl Clone for UavionixAdsbOutRfSelect

sourceยง

fn clone(&self) -> UavionixAdsbOutRfSelect

Returns a copy of the value. Read more
1.0.0 ยท sourceยง

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

Performs copy-assignment from source. Read more
sourceยง

impl Debug for UavionixAdsbOutRfSelect

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl Default for UavionixAdsbOutRfSelect

sourceยง

fn default() -> Self

Returns the โ€œdefault valueโ€ for a type. Read more
sourceยง

impl<'de> Deserialize<'de> for UavionixAdsbOutRfSelect

sourceยง

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

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

impl Extend<UavionixAdsbOutRfSelect> for UavionixAdsbOutRfSelect

sourceยง

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

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

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
sourceยง

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
sourceยง

impl FromIterator<UavionixAdsbOutRfSelect> for UavionixAdsbOutRfSelect

sourceยง

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

Creates a value from an iterator. Read more
sourceยง

impl Hash for UavionixAdsbOutRfSelect

sourceยง

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

Feeds this value into the given Hasher. Read more
1.3.0 ยท sourceยง

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

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

impl LowerHex for UavionixAdsbOutRfSelect

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 4bd0cc26c8..51d83b3610 100644 --- a/mavlink/uavionix/struct.UavionixAdsbRfHealth.html +++ b/mavlink/uavionix/struct.UavionixAdsbRfHealth.html @@ -56,17 +56,17 @@
ยงSafety
between Self::all() and self (e.g. Self::all() - self)

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

-
sourceยง

impl UavionixAdsbRfHealth

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_RF_HEALTH_INITIALIZING

Trait Implementationsยง

sourceยง

impl Binary for UavionixAdsbRfHealth

sourceยง

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

Formats the value using the given formatter. Read more
sourceยง

impl BitAnd for UavionixAdsbRfHealth

sourceยง

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

Returns the intersection between the two sets of flags.

-
ยง

type Output = UavionixAdsbRfHealth

The resulting type after applying the & operator.
sourceยง

impl BitAndAssign for UavionixAdsbRfHealth

sourceยง

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
sourceยง

impl UavionixAdsbRfHealth

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_RF_HEALTH_INITIALIZING

Trait Implementationsยง

sourceยง

impl Binary for UavionixAdsbRfHealth

sourceยง

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

Formats the value using the given formatter. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 ade8020b5e..8f76ca1843 100644 --- a/mavlink/uavionix/struct.UtmDataAvailFlags.html +++ b/mavlink/uavionix/struct.UtmDataAvailFlags.html @@ -59,14 +59,14 @@
ยงSafety
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. Read more
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. Read more
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. Read more
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. Read more
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. Read more
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 @@ -76,7 +76,7 @@
ยงSafety
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. Read more
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 +

sourceยง

impl UpperHex for UtmDataAvailFlags

sourceยง

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

Formats the value using the given formatter. Read more
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_bindgen/parser/fn.extra_crc.html b/mavlink_bindgen/parser/fn.extra_crc.html index eeed28e1ed..7a3194fa21 100644 --- a/mavlink_bindgen/parser/fn.extra_crc.html +++ b/mavlink_bindgen/parser/fn.extra_crc.html @@ -1,4 +1,4 @@ -extra_crc in mavlink_bindgen::parser - Rust

Function mavlink_bindgen::parser::extra_crc

source ยท
pub fn extra_crc(msg: &MavMessage) -> u8
Expand description

CRC operates over names of the message and names of its fields +extra_crc in mavlink_bindgen::parser - Rust

Function mavlink_bindgen::parser::extra_crc

source ยท
pub fn extra_crc(msg: &MavMessage) -> u8
Expand description

CRC operates over names of the message and names of its fields Hence we have to preserve the original uppercase names delimited with an underscore For field names, we replace โ€œtypeโ€ with โ€œmavtypeโ€ to make it rust compatible (this is needed for generating sensible rust code), but for calculating crc function we have to diff --git a/mavlink_bindgen/parser/fn.generate.html b/mavlink_bindgen/parser/fn.generate.html index 0f235bfb11..5d282be6fa 100644 --- a/mavlink_bindgen/parser/fn.generate.html +++ b/mavlink_bindgen/parser/fn.generate.html @@ -1,4 +1,4 @@ -generate in mavlink_bindgen::parser - Rust

Function mavlink_bindgen::parser::generate

source ยท
pub fn generate<W: Write>(
+generate in mavlink_bindgen::parser - Rust

Function mavlink_bindgen::parser::generate

source ยท
pub fn generate<W: Write>(
     definitions_dir: &Path,
     definition_file: &Path,
     output_rust: &mut W,
diff --git a/mavlink_bindgen/parser/fn.parse_profile.html b/mavlink_bindgen/parser/fn.parse_profile.html
index 80f9d795e1..5d56fb012b 100644
--- a/mavlink_bindgen/parser/fn.parse_profile.html
+++ b/mavlink_bindgen/parser/fn.parse_profile.html
@@ -1,4 +1,4 @@
-parse_profile in mavlink_bindgen::parser - Rust

Function mavlink_bindgen::parser::parse_profile

source ยท
pub fn parse_profile(
+parse_profile in mavlink_bindgen::parser - Rust

Function mavlink_bindgen::parser::parse_profile

source ยท
pub fn parse_profile(
     definitions_dir: &Path,
     definition_file: &Path,
     parsed_files: &mut HashSet<PathBuf>,
diff --git a/mavlink_bindgen/parser/index.html b/mavlink_bindgen/parser/index.html
index e85389bd41..828c890701 100644
--- a/mavlink_bindgen/parser/index.html
+++ b/mavlink_bindgen/parser/index.html
@@ -1,4 +1,4 @@
-mavlink_bindgen::parser - Rust

Module mavlink_bindgen::parser

source ยท

Structsยง

Enumsยง

Functionsยง

  • CRC operates over names of the message and names of its fields +mavlink_bindgen::parser - Rust

    Module mavlink_bindgen::parser

    source ยท

    Structsยง

    Enumsยง

    Functionsยง

    • CRC operates over names of the message and names of its fields Hence we have to preserve the original uppercase names delimited with an underscore For field names, we replace โ€œtypeโ€ with โ€œmavtypeโ€ to make it rust compatible (this is needed for generating sensible rust code), but for calculating crc function we have to diff --git a/search-index.js b/search-index.js index c770ef0264..be0006e320 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":"`{{{b{c}}}df}`","D":"f","p":[[1,"reference"],[1,"unit"],[10,"LazyStatic",0]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAMA"}],\ ["libc",{"t":"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSHSSSSSSSSHSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHHHHHSSSHHHHHHHSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSGSSSSSSSSSSSFSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSIFFIIFIFFIIFFIIFIFIFIISSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHHHSHSSSSSSSGSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSHSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSHSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSISSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSHSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHHHHSSSSSSSHHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSHSHHHHSSSSHHSHSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSUUFUFFFUFFHFIOOOOIOIIIIIOOIFIIIIOOOOOOOOOOOHOFFFOOHHOOOOOHHHHOHOOOOOOFHHOFOOOOOOOOOOHOHOOOHOOOOOOOHOOOHOOHHFHOOOOOOOOOOOOOOOOOOOOOFFFFHHHHHHOOOHOHIIINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHHOOOOOOOIIIOOIOOOOOOIIOOOOIIIIIIIGOHOOIOFFOOOOOFIFIOHHHHHHOOOOOOOOOHOHHHOOOHHHHHHHHIOIHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFHHHHOOOOFOOOOOHHOOOOHFOOHHOHHOOOOOOOOOOOOOOOOHOOOOOOOOOOOIHOFFHHHFHHHHOOOOHHHOOOOOOOOHOOOOOOOOOOOFHOHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHOOOOOOOOOOOOHHHHHHOOOOHHHFHHHOOOOOOHOHHIHOOHHHHHHHHHOOHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHOOHHFHHFHHHHHHHOOOFHHHHHHFFFOOFFFFFFHHHHHHHHHFHOOOOOOOOOOOOOOOOOOHFHFHNOOHHOOHHHGGOHHHOOOHHHHOHHOOHHHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOIHHHHHHHIFOOHHHHHHHHHHHHHHHOOHHOHHFHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOIOOOOOOOOHHFFHHHHHHHOOOOHIOFOOOOOOOOOOOHOOOOOOFHFOHHHIOOOOOOIIHOHOFHHOOOOOOOFOOFOOOOOOOFOOOOOOOOOOOOOOOOOOOOOFFFFFIFIOOOOHIIHFHHHFFFFFOOIIIIOOOOOOOOOINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIFHHHOOFOFFFFOOOOOFOOOOHHHHHHHHHHHHHOOOOFFOOOOOOFOOOHOOOOOOOIOHHHOOOOOOOOOOOOHHHFOOOOOOOOOOOOHFHHHHHHOIHHHHIHHHHHHHHHOHOOHHHFHFHHHHHHOOFOOOFOOOHHHHHHHHHOHOHHHHHHHHHHHHHHHHHHFOOOOOOFOOIOOOOOHHFHOOHOOHHHHHHHIOOOOHHOOOOOOOOOOOOOOOOOOHHFFIOOOOOIHOHOOFHHHHOOOOOOOOOOOOOIHOOOHIHOOIHHFFOFOOFIOOOOOFFOOOOOOOOOOOOOOOHHHFOOOOOOIIOOOOHHFHHHHHHHFOOOOOOOOOOOOOOOOOOOOOOOOOOFOOOOFHHHOHHOOOIOOOOIOHHHFHOOHHHHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHFHHOOOHHHHHHHOHOIHHHHOOOOFHHHHHHHHHHHHHHHHHHFHHFHHHHHFHHHHHFHHHHHHHHFHHHHHHHHHHHHHIHHHHHFHHHHHHHHHHHHFHIHHHFHHHHHHHHHHFHHHHHHHHHHHHHIIHFFFIHHHHHHHHHOOOOOOOHHHHHHHHHOOOOOOOOHHOOOOOOOOOOOOOOOOHHHHHHHHHHHHHOOOHHHHHHFHHFIOOHHHHHHOOOOHOOOOOOOOOHHOOOOOIOOOOIFFOOHOOOOOOOOOOOOOOOOOOOFOOOOOOOOOOOOOOOOFOOOOOOOOOOOOOOOOOOIOOOOOOOOOOOOHOHFOOHHHHHHOFOOOOHOHHHHIFFFFFFFOOFOFOFFOFHHHHOHOHHOOOHOOHFHHHHOFHHFFOOOOOHOOOOHHHHHHFOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOHOOHHIHHHFHNOONONNNNNFHHHHHOOOOFHIFHHOHFOOHHFHHFHHOOOOOOOOOOOOOOOOOOOOOOOOIHOOOOOOOOOOOOOOHFFFFFFFFFFFFFFFHHIOOOOOOOOOIHHFHHOOOOOOOOOHOOOOOOOOOOOOOOOOOOOOIOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFOOOOFHFHFHFHOFHFHFHFOHHHHHHHHHHHHHHHHHHHHHHHOHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOIOOOOOOHHHOOOOOOOHHHHHHHHFHHOHOOHIHHHHHHHHHHFFOOHOOOIHHHHHHIHHHHFFFGOFFFFFOOOOOOOOOOOHHHFOOOOOHOOOHOOHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHHOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOFFOOIFFFFFIIIIIIHHHHHHHHHHOOOOIHFFFHOOOOOOOOOOOOFHHHHFHFOOOOOOOOOOHHHHHHHOIHHOOFHHHOOOOFFFFFFFFFFO","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_OWNER_DIED","FUTEX_PRIVATE_FLAG","FUTEX_REQUEUE","FUTEX_TID_MASK","FUTEX_TRYLOCK_PI","FUTEX_UNLOCK_PI","FUTEX_WAIT","FUTEX_WAITERS","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_BARRIER_SERIAL_THREAD","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","_CS_GNU_LIBC_VERSION","_CS_GNU_LIBPTHREAD_VERSION","_CS_PATH","_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","confstr","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","klogctl","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_equal","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"],[9198,"libc::unix::linux_like::linux"],[9199,"libc::unix::linux_like::linux::gnu"],[9200,"libc::unix"],[9201,"libc::unix::linux_like"],[9202,"libc::unix::linux_like::linux::gnu::b64"],[9203,"libc::unix::linux_like::linux::gnu::b64::x86_64"],[9204,"libc::unix::linux_like::linux::gnu::b64::x86_64::not_x32"],[9205,"libc::unix::linux_like::linux::gnu::b64::x86_64::align"],[9206,"libc::unix::linux_like::linux::gnu::align"],[9207,"libc::unix::linux_like::linux::arch::generic"],[9208,"libc::unix::linux_like::linux::non_exhaustive"],[9209,"libc::unix::align"],[9210,"core::ffi"],[9211,"core::fmt"],[9212,"core::result"],[9213,"core::any"],[9214,"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,0,0,0,0,0,0,0,171,171,171,171,0,216,0,0,0,0,0,216,158,0,0,0,0,0,0,170,170,170,170,170,170,170,170,170,170,170,0,196,0,0,0,212,212,0,0,144,144,90,144,144,0,0,0,0,23,0,112,114,186,187,191,114,0,0,0,237,0,45,45,45,45,45,45,45,45,159,192,0,192,0,159,192,192,0,192,159,192,159,192,159,192,0,159,192,192,0,192,159,0,0,0,0,56,56,56,56,56,116,180,164,165,116,177,179,54,54,55,54,55,54,55,54,55,0,0,0,0,0,0,0,0,0,0,81,81,134,0,125,0,0,0,0,249,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,250,251,252,39,40,41,42,21,43,44,45,46,17,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,253,63,64,65,66,67,68,69,70,13,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,240,109,110,20,111,112,113,114,4,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,7,5,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,249,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,250,251,252,39,40,41,42,21,43,44,45,46,17,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,253,63,64,65,66,67,68,69,70,13,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,240,109,110,20,111,112,113,114,4,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,7,5,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,0,0,196,75,80,163,225,163,225,0,0,0,163,225,0,163,225,163,225,163,225,0,0,163,225,163,225,0,0,0,0,0,0,0,0,170,0,156,235,0,156,0,0,113,235,236,156,113,0,0,0,0,84,0,0,0,0,0,0,216,223,173,174,173,173,174,173,174,0,223,0,0,0,186,187,136,0,0,0,0,0,0,0,0,0,154,0,0,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,21,43,44,45,46,17,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,13,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,20,111,112,113,114,4,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,7,5,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,0,0,0,0,0,104,5,5,5,0,74,90,4,78,78,0,0,170,182,184,107,0,0,183,185,0,0,213,0,0,216,50,85,85,212,219,141,152,141,152,141,152,141,152,141,152,0,118,235,236,237,84,50,79,182,184,124,106,0,0,87,0,0,0,0,0,0,0,0,0,0,49,49,49,49,0,0,0,91,91,91,91,91,91,91,91,0,125,61,66,66,66,66,66,66,66,66,66,0,0,213,0,0,0,0,92,93,92,93,160,92,93,92,93,92,93,92,93,92,93,92,93,92,93,92,93,92,93,92,93,160,92,93,92,93,0,20,20,20,20,20,20,20,88,89,213,211,83,0,0,0,0,0,0,193,82,83,85,0,0,0,0,0,0,0,170,119,122,213,170,171,0,230,0,0,0,0,31,58,0,0,0,0,0,0,0,0,0,193,223,0,210,200,207,208,221,200,207,208,221,200,207,208,221,200,207,208,221,208,221,200,207,208,221,200,207,208,221,208,221,207,200,207,208,221,200,207,208,221,200,207,208,221,207,200,207,0,81,81,0,0,0,0,0,0,0,0,0,0,0,0,0,31,108,230,0,0,0,0,0,0,0,0,0,0,143,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,127,77,118,119,120,151,154,176,182,186,190,218,223,236,237,238,76,0,0,0,0,0,240,212,219,0,0,164,165,0,0,0,0,0,215,0,0,0,183,185,50,0,0,0,0,196,0,0,196,196,0,0,0,170,249,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,250,251,252,39,40,41,42,21,43,44,45,46,17,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,253,63,64,65,66,67,68,69,70,13,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,240,109,110,20,111,112,113,114,4,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,7,5,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,213,213,0,0,0,0,0,0,0,0,0,0,164,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,219,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,216,0,63,162,63,162,63,162,63,162,0,0,0,0,0,0,0,0,0,0,0,22,22,22,22,0,0,215,0,166,50,213,213,29,29,29,29,29,106,127,0,164,165,164,165,186,187,0,0,0,214,0,0,0,0,87,118,119,120,143,144,0,0,0,71,0,71,0,0,0,52,52,52,52,52,52,52,0,150,150,0,149,149,126,126,126,148,148,0,147,147,147,147,147,147,147,147,147,147,147,147,147,41,41,40,42,40,41,42,42,0,0,0,0,0,0,0,0,77,137,138,139,0,0,0,0,0,0,0,0,0,0,0,0,0,116,180,0,0,0,0,50,50,50,50,50,50,50,50,80,0,249,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,250,251,252,39,40,41,42,21,43,44,45,46,17,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,253,63,64,65,66,67,68,69,70,13,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,240,109,110,20,111,112,113,114,4,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,7,5,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,0,0,0,0,0,30,30,0,106,0,0,0,0,105,105,51,51,51,0,28,28,125,178,0,0,0,0,0,0,0,0,0,0,0,0,0,35,68,35,68,0,0,137,138,139,145,145,155,0,4,170,170,0,4,4,164,165,137,138,139,0,77,0,0,0,201,202,33,33,201,202,201,202,201,202,201,202,0,0,0,0,84,84,77,107,115,186,187,191,236,237,79,82,0,0,0,0,0,0,0,0,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,0,214,85,0,0,0,0,0,0,0,0,0,0,0,0,107,230,0,170,171,76,0,125,125,196,0,0,0,0,0,0,0,0,0,230,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,101,101,101,101,101,0,216,238,0,170,23,50,50,50,0,0,0,0,146,146,0,146,146,0,0,0,0,0,0,0,0,70,70,70,70,0,0,122,7,7,197,7,57,7,7,57,197,197,7,7,197,197,197,197,197,0,0,0,0,0,72,72,72,72,72,0,0,72,0,72,72,0,0,0,0,0,212,219,212,219,50,50,50,112,114,127,143,144,114,0,0,50,120,120,0,0,0,140,140,0,0,0,0,0,140,0,123,123,0,0,121,121,121,121,121,0,0,167,167,167,167,168,168,168,168,168,168,61,116,176,177,179,0,0,0,0,132,132,132,132,132,176,0,0,85,170,88,180,0,0,0,0,0,0,0,0,0,0,0,191,164,165,213,38,96,97,50,96,97,96,97,96,97,38,96,97,96,97,38,50,50,96,97,96,97,0,180,196,218,223,0,0,0,0,85,0,0,112,114,114,0,85,100,118,230,0,223,0,0,0,0,0,125,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,133,133,0,0,0,0,0,0,0,170,0,237,0,0,0,0,0,196,182,184,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,64,64,64,64,64,0,0,0,0,0,0,0,0,0,213,213,213,213,213,213,213,213,0,0,213,213,213,131,131,131,131,131,131,131,131,213,213,212,219,213,0,0,0,0,0,0,0,0,0,0,0,0,0,137,138,139,0,0,0,0,0,0,0,0,0,0,0,214,61,0,0,0,0,0,0,87,106,88,89,0,104,230,76,238,108,179,88,89,31,0,0,84,84,212,213,219,0,26,135,26,135,0,0,0,110,110,0,218,218,213,213,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,0,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,0,183,185,188,189,188,151,111,188,189,188,239,39,37,37,37,37,21,21,0,199,199,199,199,142,142,142,142,142,137,138,139,0,77,0,0,153,153,0,0,0,0,0,0,153,0,153,153,48,153,0,153,0,0,0,0,0,0,0,0,0,0,0,0,237,193,0,117,0,117,0,0,117,0,0,0,0,0,198,0,73,0,0,198,73,73,0,198,198,0,0,0,0,0,0,175,0,0,0,0,0,175,175,175,175,175,0,175,175,175,175,0,0,0,0,0,0,0,223,223,0,0,0,0,0,0,0,0,0,0,0,0,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,99,98,99,98,99,98,99,98,99,98,99,98,99,98,99,98,99,98,99,196,170,217,217,217,217,217,217,0,217,217,0,0,0,0,0,0,0,0,203,203,203,203,203,203,203,203,203,203,0,0,0,0,0,0,62,62,62,62,0,0,0,0,0,0,214,0,0,218,210,0,0,0,0,0,0,0,0,44,44,44,44,44,43,43,43,43,129,129,129,129,129,129,129,129,129,128,128,128,128,34,153,0,0,46,46,46,46,46,46,46,164,165,130,130,130,130,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,65,65,65,65,65,65,65,65,0,0,0,0,0,0,124,124,124,120,213,60,204,204,204,0,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,0,205,206,205,206,205,206,205,206,205,206,205,206,205,206,205,206,94,95,205,206,205,206,205,206,205,206,94,95,205,206,94,95,205,206,94,95,94,95,205,206,219,205,206,94,95,170,223,180,223,0,106,214,83,214,0,0,0,0,0,0,0,0,170,0,0,0,0,0,0,0,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,59,59,0,178,109,109,109,109,109,0,0,0,212,219,181,181,181,181,181,0,0,0,0,0,0,0,0,0,0,0,61,0,170,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,170,0,74,170,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,0,0,0,0,0,47,47,47,47,47,47,47,47,47,47,47,0,0,0,0,36,36,36,36,170,0,196,196,196,0,155,87,0,0,249,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,250,251,252,39,40,41,42,21,43,44,45,46,17,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,253,63,64,65,66,67,68,69,70,13,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,240,109,110,20,111,112,113,114,4,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,7,5,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,249,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,250,251,252,39,40,41,42,21,43,44,45,46,17,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,253,63,64,65,66,67,68,69,70,13,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,240,109,110,20,111,112,113,114,4,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,7,5,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,0,0,25,158,24,25,158,161,24,161,183,185,111,188,189,188,151,74,78,87,249,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,250,251,252,39,40,41,42,21,43,44,45,46,17,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,253,63,64,65,66,67,68,69,70,13,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,240,109,110,20,111,112,113,114,4,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,7,5,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,87,180,58,214,214,214,214,214,214,214,214,220,220,220,220,220,0,0,100,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,165,106,196,0,0,0,0,0,0,164,165,194,194,194,194,194,194,194,194,194,194,0,0,0,0,0,0,0,0,119,127,74,76,75,230,61,75,104,136,0,0,0,0,0,0,0,85,0,0,0,107,86,0,0,0,0,32,32,32,32,0,0,0,0,0,0,0,0,0,0,219],"f":"``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{bdff}h}``````````{dd}````````0`{{bd}h}``````````````````````````````````````````````````````````````````````````````````````````````````````````````````{jl}{nj}{A`A`}{{nj}j}1```{AbAd}{{Af{Al{AhAj}}}An}{{{Al{Aj}}}Ab}{{Af{Al{Aj}}}Ab}{{{Al{Aj}}{Al{Aj}}}B`}{{Af{Al{Aj}}}B`}4`{{{Al{AhAj}}}An}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{AbBb}An}{{AbBb}B`}1`{BbAn}`````````````````````````````````````{{AbAbAbAb}Ab}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{BdBd}``0````````0```````````````````````````````````````````````````0```````0```````````0```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{BfBfBf}Bf}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{AbAb}``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{AbAb}Ab}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{BfBf}`````{BfB`}``````````5```````````````````````````````````````````````````````````````````````````````````````````````````33{AbB`}0```````{{{Al{AhAb}}Ab}An}1```````````````````````````````````````````````````````````````````````````````````````{{}Ab}0`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{BhBj}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````3`7`3333````77`6`7```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{Al{c}}}{{Al{e}}}{}{}}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{Al{Ahc}}}{{Al{Ahe}}}{}{}}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000````````````````````````````````````````````````````````````````````````````````````````{{{Al{Bl}}}Bl}{{{Al{Bn}}}Bn}{{{Al{C`}}}C`}{{{Al{Cb}}}Cb}{{{Al{Cd}}}Cd}{{{Al{Cf}}}Cf}{{{Al{Ch}}}Ch}{{{Al{Cj}}}Cj}{{{Al{Cl}}}Cl}{{{Al{Cn}}}Cn}{{{Al{D`}}}D`}{{{Al{Db}}}Db}{{{Al{Dd}}}Dd}{{{Al{Df}}}Df}{{{Al{Dh}}}Dh}{{{Al{Dj}}}Dj}{{{Al{Dl}}}Dl}{{{Al{Dn}}}Dn}{{{Al{E`}}}E`}{{{Al{Eb}}}Eb}{{{Al{Ed}}}Ed}{{{Al{Bj}}}Bj}{{{Al{Ef}}}Ef}{{{Al{Eh}}}Eh}{{{Al{Ej}}}Ej}{{{Al{El}}}El}{{{Al{Bb}}}Bb}{{{Al{En}}}En}{{{Al{F`}}}F`}{{{Al{Fb}}}Fb}{{{Al{Fd}}}Fd}{{{Al{Ff}}}Ff}{{{Al{Fh}}}Fh}{{{Al{Fj}}}Fj}{{{Al{Fl}}}Fl}{{{Al{Fn}}}Fn}{{{Al{G`}}}G`}{{{Al{Gb}}}Gb}{{{Al{Gd}}}Gd}{{{Al{Gf}}}Gf}{{{Al{Gh}}}Gh}{{{Al{Gj}}}Gj}{{{Al{Gl}}}Gl}{{{Al{Gn}}}Gn}{{{Al{H`}}}H`}{{{Al{Hb}}}Hb}{{{Al{Hd}}}Hd}{{{Al{Hf}}}Hf}{{{Al{Hh}}}Hh}{{{Al{Hj}}}Hj}{{{Al{Hl}}}Hl}{{{Al{Aj}}}Aj}{{{Al{Hn}}}Hn}{{{Al{I`}}}I`}{{{Al{Ib}}}Ib}{{{Al{Id}}}Id}{{{Al{If}}}If}{{{Al{Ih}}}Ih}{{{Al{Ij}}}Ij}{{{Al{Il}}}Il}{{{Al{In}}}In}{{{Al{J`}}}J`}{{{Al{Jb}}}Jb}{{{Al{Jd}}}Jd}{{{Al{Jf}}}Jf}{{{Al{Jh}}}Jh}{{{Al{Jj}}}Jj}{{{Al{Jl}}}Jl}{{{Al{Jn}}}Jn}{{{Al{K`}}}K`}{{{Al{Kb}}}Kb}{{{Al{Kd}}}Kd}{{{Al{Kf}}}Kf}{{{Al{Kh}}}Kh}{{{Al{Kj}}}Kj}{{{Al{Kl}}}Kl}{{{Al{Kn}}}Kn}{{{Al{L`}}}L`}{{{Al{Lb}}}Lb}{{{Al{Ld}}}Ld}{{{Al{Lf}}}Lf}{{{Al{Lh}}}Lh}{{{Al{Lj}}}Lj}{{{Al{Ll}}}Ll}{{{Al{Ln}}}Ln}{{{Al{M`}}}M`}{{{Al{Mb}}}Mb}{{{Al{Md}}}Md}{{{Al{Mf}}}Mf}{{{Al{Mh}}}Mh}{{{Al{Mj}}}Mj}{{{Al{Ml}}}Ml}{{{Al{Bh}}}Bh}{{{Al{Mn}}}Mn}{{{Al{N`}}}N`}{{{Al{Nb}}}Nb}{{{Al{Nd}}}Nd}{{{Al{h}}}h}{{{Al{Nf}}}Nf}{{{Al{Nh}}}Nh}{{{Al{Nj}}}Nj}{{{Al{Nl}}}Nl}{{{Al{Nn}}}Nn}{{{Al{O`}}}O`}{{{Al{Ob}}}Ob}{{{Al{Od}}}Od}{{{Al{Of}}}Of}{{{Al{Oh}}}Oh}{{{Al{Oj}}}Oj}{{{Al{Ol}}}Ol}{{{Al{On}}}On}{{{Al{A@`}}}A@`}{{{Al{A@b}}}A@b}{{{Al{A@d}}}A@d}{{{Al{A@f}}}A@f}{{{Al{A@h}}}A@h}{{{Al{A@j}}}A@j}{{{Al{A@l}}}A@l}{{{Al{A@n}}}A@n}{{{Al{AA`}}}AA`}{{{Al{AAb}}}AAb}{{{Al{AAd}}}AAd}{{{Al{AAf}}}AAf}{{{Al{AAh}}}AAh}{{{Al{AAj}}}AAj}{{{Al{AAl}}}AAl}{{{Al{AAn}}}AAn}{{{Al{AB`}}}AB`}{{{Al{ABb}}}ABb}{{{Al{ABd}}}ABd}{{{Al{ABf}}}ABf}{{{Al{ABh}}}ABh}{{{Al{ABj}}}ABj}{{{Al{ABl}}}ABl}{{{Al{ABn}}}ABn}{{{Al{AC`}}}AC`}{{{Al{ACb}}}ACb}{{{Al{ACd}}}ACd}{{{Al{ACf}}}ACf}{{{Al{ACh}}}ACh}{{{Al{ACj}}}ACj}{{{Al{ACl}}}ACl}{{{Al{ACn}}}ACn}{{{Al{AD`}}}AD`}{{{Al{ADb}}}ADb}{{{Al{ADd}}}ADd}{{{Al{n}}}n}{{{Al{j}}}j}{{{Al{ADf}}}ADf}{{{Al{ADh}}}ADh}{{{Al{ADj}}}ADj}{{{Al{ADl}}}ADl}{{{Al{ADn}}}ADn}{{{Al{AE`}}}AE`}{{{Al{AEb}}}AEb}{{{Al{AEd}}}AEd}{{{Al{AEf}}}AEf}{{{Al{AEh}}}AEh}{{{Al{AEj}}}AEj}{{{Al{AEl}}}AEl}{{{Al{AEn}}}AEn}{{{Al{AF`}}}AF`}{{{Al{AFb}}}AFb}{{{Al{AFd}}}AFd}{{{Al{AFf}}}AFf}{{{Al{AFh}}}AFh}{{{Al{AFj}}}AFj}{{{Al{AFl}}}AFl}{{{Al{AFn}}}AFn}{{{Al{AG`}}}AG`}{{{Al{AGb}}}AGb}{{{Al{AGd}}}AGd}{{{Al{AGf}}}AGf}{{{Al{AGh}}}AGh}{{{Al{AGj}}}AGj}{{{Al{AGl}}}AGl}{{{Al{AGn}}}AGn}{{{Al{AH`}}}AH`}{{{Al{AHb}}}AHb}{{{Al{AHd}}}AHd}{{{Al{AHf}}}AHf}{{{Al{AHh}}}AHh}{{{Al{AHj}}}AHj}{{{Al{AHl}}}AHl}{{{Al{AHn}}}AHn}{{{Al{AI`}}}AI`}{{{Al{AIb}}}AIb}{{{Al{AId}}}AId}{{{Al{AIf}}}AIf}{{{Al{AIh}}}AIh}{{{Al{AIj}}}AIj}{{{Al{AIl}}}AIl}{{{Al{AIn}}}AIn}{{{Al{AJ`}}}AJ`}{{{Al{AJb}}}AJb}{{{Al{AJd}}}AJd}{{{Al{AJf}}}AJf}{{{Al{AJh}}}AJh}{{{Al{AJj}}}AJj}{{{Al{AJl}}}AJl}{{{Al{AJn}}}AJn}{{{Al{AK`}}}AK`}{{{Al{AKb}}}AKb}{{{Al{AKd}}}AKd}{{{Al{AKf}}}AKf}{{{Al{AKh}}}AKh}{{{Al{AKj}}}AKj}{{{Al{AKl}}}AKl}{{{Al{AKn}}}AKn}{{{Al{AL`}}}AL`}{{{Al{ALb}}}ALb}{{{Al{ALd}}}ALd}{{{Al{ALf}}}ALf}{{{Al{ALh}}}ALh}{{{Al{ALj}}}ALj}{{{Al{ALl}}}ALl}{{{Al{ALn}}}ALn}{{{Al{AM`}}}AM`}{{{Al{AMb}}}AMb}{{{Al{AMd}}}AMd}{{{Al{AMf}}}AMf}{{{Al{AMh}}}AMh}{{{Al{AMj}}}AMj}{{{Al{AMl}}}AMl}{{{Al{AMn}}}AMn}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{Al{AN`}}{Al{AhANb}}}{{ANf{AnANd}}}}```````````````````````````````{cc{}}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{ce{}{}}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{ANhA`}`{{A`A`}ANh}```````````````````````````````1``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{Al{AIf}}}AN`}``{{{Al{AIf}}}ANj}`{{{Al{AIf}}}Ab}{{{Al{AIf}}}ANl}{{{Al{AIf}}}ANn}1{{{Al{AIf}}}Dd}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{c{{ANf{e}}}{}{}}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000````````````````````{{{Al{c}}}AO`{}}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000``````````````````````````````````````````````````````````````````````````````````````````````````````````````````","D":"CMj","p":[[8,"__u16",0,9198],[8,"__u32",0,9198],[8,"__u8",0,9198],[5,"sock_filter",0,9198],[5,"cmsghdr",0,9199],[8,"c_uchar",0,9200],[5,"msghdr",0,9199],[8,"c_uint",0,9200],[8,"c_int",0,9200],[8,"size_t",0,9200],[1,"usize"],[0,"mut"],[5,"cpu_set_t",0,9198],[1,"reference"],[1,"unit"],[1,"bool"],[5,"fd_set",0,9201],[1,"u8"],[1,"u32"],[5,"sock_extended_err",0,9198],[5,"sockaddr",0,9201],[5,"group",0,9200],[5,"utimbuf",0,9200],[5,"timeval",0,9200],[5,"timespec",0,9200],[5,"rlimit",0,9200],[5,"rusage",0,9200],[5,"ipv6_mreq",0,9200],[5,"hostent",0,9200],[5,"iovec",0,9200],[5,"pollfd",0,9200],[5,"winsize",0,9200],[5,"linger",0,9200],[5,"sigval",0,9200],[5,"itimerval",0,9200],[5,"tms",0,9200],[5,"servent",0,9200],[5,"protoent",0,9200],[5,"in_addr",0,9201],[5,"ip_mreq",0,9201],[5,"ip_mreqn",0,9201],[5,"ip_mreq_source",0,9201],[5,"sockaddr_in",0,9201],[5,"sockaddr_in6",0,9201],[5,"addrinfo",0,9201],[5,"sockaddr_ll",0,9201],[5,"tm",0,9201],[5,"sched_param",0,9201],[5,"Dl_info",0,9201],[5,"lconv",0,9201],[5,"in_pktinfo",0,9201],[5,"ifaddrs",0,9201],[5,"in6_rtmsg",0,9201],[5,"arpreq",0,9201],[5,"arpreq_old",0,9201],[5,"arphdr",0,9201],[5,"mmsghdr",0,9201],[5,"epoll_event",0,9201],[5,"sockaddr_un",0,9201],[5,"sockaddr_storage",0,9201],[5,"utsname",0,9201],[5,"sigevent",0,9201],[5,"glob_t",0,9198],[5,"passwd",0,9198],[5,"spwd",0,9198],[5,"dqblk",0,9198],[5,"signalfd_siginfo",0,9198],[5,"itimerspec",0,9198],[5,"fsid_t",0,9198],[5,"packet_mreq",0,9198],[5,"if_nameindex",0,9198],[5,"msginfo",0,9198],[5,"sembuf",0,9198],[5,"input_event",0,9198],[5,"input_id",0,9198],[5,"input_absinfo",0,9198],[5,"input_keymap_entry",0,9198],[5,"input_mask",0,9198],[5,"ff_replay",0,9198],[5,"ff_trigger",0,9198],[5,"ff_envelope",0,9198],[5,"ff_constant_effect",0,9198],[5,"ff_ramp_effect",0,9198],[5,"ff_condition_effect",0,9198],[5,"ff_periodic_effect",0,9198],[5,"ff_rumble_effect",0,9198],[5,"ff_effect",0,9198],[5,"uinput_ff_upload",0,9198],[5,"uinput_ff_erase",0,9198],[5,"uinput_abs_setup",0,9198],[5,"dl_phdr_info",0,9198],[5,"Elf32_Ehdr",0,9198],[5,"Elf64_Ehdr",0,9198],[5,"Elf32_Sym",0,9198],[5,"Elf64_Sym",0,9198],[5,"Elf32_Phdr",0,9198],[5,"Elf64_Phdr",0,9198],[5,"Elf32_Shdr",0,9198],[5,"Elf64_Shdr",0,9198],[5,"ucred",0,9198],[5,"mntent",0,9198],[5,"posix_spawn_file_actions_t",0,9198],[5,"posix_spawnattr_t",0,9198],[5,"genlmsghdr",0,9198],[5,"in6_pktinfo",0,9198],[5,"arpd_request",0,9198],[5,"inotify_event",0,9198],[5,"fanotify_response",0,9198],[5,"sockaddr_vm",0,9198],[5,"regmatch_t",0,9198],[5,"__c_anonymous_sockaddr_can_tp",0,9198],[5,"__c_anonymous_sockaddr_can_j1939",0,9198],[5,"can_filter",0,9198],[5,"j1939_filter",0,9198],[5,"sock_fprog",0,9198],[5,"seccomp_data",0,9198],[5,"seccomp_notif_sizes",0,9198],[5,"seccomp_notif",0,9198],[5,"seccomp_notif_resp",0,9198],[5,"seccomp_notif_addfd",0,9198],[5,"nlmsghdr",0,9198],[5,"nlmsgerr",0,9198],[5,"nlattr",0,9198],[5,"file_clone_range",0,9198],[5,"__c_anonymous_ifru_map",0,9198],[5,"in6_ifreq",0,9198],[5,"option",0,9198],[5,"sctp_initmsg",0,9198],[5,"sctp_sndrcvinfo",0,9198],[5,"sctp_sndinfo",0,9198],[5,"sctp_rcvinfo",0,9198],[5,"sctp_nxtinfo",0,9198],[5,"sctp_prinfo",0,9198],[5,"sctp_authinfo",0,9198],[5,"rlimit64",0,9198],[5,"tls_crypto_info",0,9198],[5,"tls12_crypto_info_aes_gcm_128",0,9198],[5,"tls12_crypto_info_aes_gcm_256",0,9198],[5,"tls12_crypto_info_chacha20_poly1305",0,9198],[5,"sockaddr_nl",0,9198],[5,"dirent",0,9198],[5,"sockaddr_alg",0,9198],[5,"uinput_setup",0,9198],[5,"uinput_user_dev",0,9198],[5,"af_alg_iv",0,9198],[5,"mq_attr",0,9198],[20,"__c_anonymous_ifr_ifru",0,9198],[5,"ifreq",0,9198],[20,"__c_anonymous_ifc_ifcu",0,9198],[5,"ifconf",0,9198],[5,"hwtstamp_config",0,9198],[5,"dirent64",0,9198],[5,"sched_attr",0,9198],[5,"sock_txtime",0,9198],[20,"__c_anonymous_sockaddr_can_can_addr",0,9198],[5,"sockaddr_can",0,9198],[5,"statx",0,9199],[5,"statx_timestamp",0,9199],[5,"aiocb",0,9199],[5,"__exit_status",0,9199],[5,"__timeval",0,9199],[5,"glob64_t",0,9199],[5,"termios",0,9199],[5,"mallinfo",0,9199],[5,"mallinfo2",0,9199],[5,"nl_pktinfo",0,9199],[5,"nl_mmap_req",0,9199],[5,"nl_mmap_hdr",0,9199],[5,"rtentry",0,9199],[5,"timex",0,9199],[5,"ntptimeval",0,9199],[5,"regex_t",0,9199],[5,"Elf64_Chdr",0,9199],[5,"Elf32_Chdr",0,9199],[5,"seminfo",0,9199],[5,"ptrace_peeksiginfo_args",0,9199],[5,"__c_anonymous_ptrace_syscall_info_entry",0,9199],[5,"__c_anonymous_ptrace_syscall_info_exit",0,9199],[5,"__c_anonymous_ptrace_syscall_info_seccomp",0,9199],[5,"ptrace_syscall_info",0,9199],[5,"sockaddr_xdp",0,9199],[5,"xdp_ring_offset",0,9199],[5,"xdp_mmap_offsets",0,9199],[5,"xdp_ring_offset_v1",0,9199],[5,"xdp_mmap_offsets_v1",0,9199],[5,"xdp_umem_reg",0,9199],[5,"xdp_umem_reg_v1",0,9199],[5,"xdp_statistics",0,9199],[5,"xdp_statistics_v1",0,9199],[5,"xdp_options",0,9199],[5,"xdp_desc",0,9199],[5,"iocb",0,9199],[20,"__c_anonymous_ptrace_syscall_info_data",0,9199],[5,"utmpx",0,9199],[5,"sigset_t",0,9202],[5,"sysinfo",0,9202],[5,"msqid_ds",0,9202],[5,"semid_ds",0,9202],[5,"sigaction",0,9203],[5,"statfs",0,9203],[5,"flock",0,9203],[5,"flock64",0,9203],[5,"siginfo_t",0,9203],[5,"stack_t",0,9203],[5,"stat",0,9203],[5,"stat64",0,9203],[5,"statfs64",0,9203],[5,"statvfs64",0,9203],[5,"pthread_attr_t",0,9203],[5,"_libc_fpxreg",0,9203],[5,"_libc_xmmreg",0,9203],[5,"_libc_fpstate",0,9203],[5,"user_regs_struct",0,9203],[5,"user",0,9203],[5,"mcontext_t",0,9203],[5,"ipc_perm",0,9203],[5,"shmid_ds",0,9203],[5,"ptrace_rseq_configuration",0,9203],[5,"user_fpregs_struct",0,9203],[5,"ucontext_t",0,9203],[5,"statvfs",0,9204],[5,"max_align_t",0,9205],[5,"clone_args",0,9205],[5,"sem_t",0,9206],[5,"termios2",0,9207],[5,"pthread_mutexattr_t",0,9198],[5,"pthread_rwlockattr_t",0,9198],[5,"pthread_condattr_t",0,9198],[5,"pthread_barrierattr_t",0,9198],[5,"fanotify_event_metadata",0,9198],[5,"pthread_cond_t",0,9198],[5,"pthread_mutex_t",0,9198],[5,"pthread_rwlock_t",0,9198],[5,"pthread_barrier_t",0,9198],[5,"can_frame",0,9198],[5,"canfd_frame",0,9198],[5,"canxl_frame",0,9198],[5,"open_how",0,9208],[5,"in6_addr",0,9209],[6,"c_void",0,9210],[5,"Formatter",9211],[5,"Error",9211],[6,"Result",9212],[8,"dev_t",0,9198],[8,"pid_t",0,9200],[8,"c_long",0,9204],[8,"uid_t",0,9200],[5,"TypeId",9213],[6,"DIR",0],[6,"FILE",0],[6,"fpos_t",0],[6,"timezone",0],[6,"fpos64_t",0]],"r":[[0,9198],[1,9198],[2,9198],[3,9198],[4,9198],[5,9198],[6,9198],[7,9198],[8,9198],[9,9198],[10,9198],[11,9198],[12,9198],[13,9198],[14,9198],[15,9198],[16,9198],[17,9198],[18,9198],[19,9198],[20,9198],[21,9199],[22,9201],[23,9201],[24,9201],[25,9201],[26,9201],[27,9199],[28,9199],[29,9199],[30,9199],[31,9199],[32,9199],[33,9199],[34,9199],[35,9199],[36,9199],[37,9199],[38,9199],[39,9199],[40,9201],[41,9201],[42,9201],[43,9201],[44,9201],[45,9201],[46,9201],[47,9201],[48,9201],[49,9201],[50,9201],[51,9201],[52,9201],[53,9201],[54,9199],[55,9201],[56,9201],[57,9201],[58,9201],[59,9201],[60,9201],[61,9201],[62,9201],[63,9201],[64,9201],[65,9199],[66,9201],[67,9201],[68,9201],[69,9199],[70,9201],[71,9201],[72,9201],[73,9201],[74,9201],[75,9201],[76,9201],[77,9201],[78,9201],[79,9201],[80,9201],[81,9201],[82,9199],[83,9201],[84,9201],[85,9199],[86,9198],[87,9198],[88,9198],[89,9198],[90,9198],[91,9198],[92,9198],[93,9198],[94,9198],[95,9198],[96,9198],[97,9198],[98,9198],[99,9198],[100,9198],[101,9198],[102,9198],[103,9198],[104,9198],[105,9198],[106,9198],[107,9198],[108,9198],[109,9198],[110,9201],[111,9201],[112,9201],[113,9201],[114,9201],[115,9201],[116,9201],[117,9201],[118,9201],[119,9201],[120,9201],[121,9201],[122,9201],[123,9201],[124,9201],[125,9201],[126,9201],[127,9201],[128,9201],[129,9201],[130,9201],[131,9201],[132,9201],[133,9201],[134,9201],[135,9201],[136,9201],[137,9201],[138,9201],[139,9201],[140,9201],[141,9201],[142,9201],[143,9201],[144,9201],[145,9201],[146,9201],[147,9201],[148,9201],[149,9201],[150,9201],[151,9201],[152,9201],[153,9201],[154,9201],[155,9201],[156,9201],[157,9201],[158,9201],[159,9201],[160,9201],[161,9201],[162,9201],[163,9201],[164,9201],[165,9201],[166,9201],[167,9201],[168,9201],[169,9201],[170,9201],[171,9200],[172,9200],[173,9201],[174,9201],[175,9200],[176,9201],[177,9198],[178,9201],[179,9200],[180,9200],[181,9200],[182,9198],[183,9198],[184,9198],[185,9198],[186,9198],[187,9201],[188,9198],[189,9198],[190,9198],[191,9198],[192,9201],[193,9198],[194,9198],[195,9198],[196,9198],[197,9198],[198,9198],[199,9198],[200,9201],[201,9198],[202,9198],[203,9198],[204,9198],[205,9198],[206,9198],[207,9198],[208,9201],[209,9201],[210,9198],[211,9199],[212,9199],[213,9199],[214,9199],[215,9201],[216,9201],[217,9198],[218,9198],[219,9201],[220,9203],[221,9203],[222,9203],[223,9203],[224,9203],[225,9203],[226,9203],[227,9203],[228,9203],[229,9203],[230,9203],[231,9203],[232,9203],[233,9203],[234,9203],[235,9203],[236,9203],[237,9203],[238,9203],[239,9203],[240,9203],[241,9203],[242,9203],[243,9203],[244,9203],[245,9203],[246,9203],[247,9203],[248,9203],[249,9203],[250,9203],[251,9199],[252,9207],[253,9207],[254,9207],[255,9207],[256,9199],[257,9207],[258,9198],[259,9198],[260,9198],[261,9198],[262,9198],[263,9198],[264,9201],[265,9198],[266,9198],[267,9198],[268,9198],[269,9198],[270,9198],[271,9198],[272,9198],[273,9198],[274,9198],[275,9198],[276,9198],[277,9198],[278,9198],[279,9198],[280,9198],[281,9198],[282,9198],[283,9198],[284,9198],[285,9198],[286,9198],[287,9198],[288,9198],[289,9198],[290,9198],[291,9198],[292,9198],[293,9198],[294,9198],[295,9198],[296,9198],[297,9198],[298,9198],[299,9198],[300,9198],[301,9198],[302,9201],[303,9201],[304,9203],[305,9203],[306,9201],[307,9199],[308,9201],[309,9201],[310,9201],[311,9201],[312,9201],[313,9198],[314,9198],[315,9198],[316,9198],[317,9198],[318,9198],[319,9198],[320,9198],[321,9198],[322,9198],[323,9198],[324,9198],[325,9198],[326,9198],[327,9198],[328,9198],[329,9198],[330,9198],[331,9198],[332,9198],[333,9198],[334,9198],[335,9198],[336,9198],[337,9198],[338,9198],[339,9198],[340,9198],[341,9198],[342,9198],[343,9198],[344,9198],[345,9198],[346,9198],[347,9198],[348,9198],[349,9198],[350,9198],[351,9198],[352,9198],[353,9198],[354,9198],[355,9198],[356,9198],[357,9198],[358,9198],[359,9203],[360,9203],[361,9201],[362,9201],[363,9203],[364,9201],[365,9201],[366,9201],[367,9201],[368,9201],[369,9201],[370,9203],[371,9201],[372,9201],[373,9201],[374,9201],[375,9201],[376,9201],[377,9201],[378,9201],[379,9201],[380,9201],[381,9201],[382,9201],[383,9201],[384,9199],[385,9201],[386,9201],[387,9201],[388,9199],[389,9201],[390,9201],[391,9201],[392,9201],[393,9201],[394,9201],[395,9199],[396,9201],[397,9201],[398,9201],[399,9201],[400,9198],[401,9201],[402,9201],[403,9201],[404,9201],[405,9201],[406,9201],[407,9201],[408,9201],[409,9198],[410,9198],[411,9201],[412,9201],[413,9201],[414,9198],[415,9201],[416,9198],[417,9201],[418,9198],[419,9198],[420,9198],[421,9198],[422,9198],[423,9198],[424,9198],[425,9198],[426,9199],[427,9198],[428,9201],[429,9203],[430,9203],[431,9203],[432,9201],[433,9203],[434,9203],[435,9198],[436,9201],[437,9203],[438,9201],[439,9203],[440,9203],[441,9203],[442,9198],[443,9203],[444,9203],[445,9198],[446,9198],[447,9198],[448,9198],[449,9198],[450,9198],[451,9198],[452,9198],[453,9198],[454,9198],[455,9198],[456,9198],[457,9198],[458,9198],[459,9198],[460,9198],[461,9198],[462,9198],[463,9198],[464,9198],[465,9198],[466,9198],[467,9198],[468,9198],[469,9198],[470,9198],[471,9198],[472,9198],[473,9198],[474,9198],[475,9198],[476,9198],[477,9198],[478,9198],[479,9198],[480,9198],[481,9198],[482,9198],[483,9198],[484,9198],[485,9198],[486,9198],[487,9198],[488,9198],[489,9198],[490,9198],[491,9198],[492,9198],[493,9198],[494,9198],[495,9198],[496,9198],[497,9198],[498,9198],[499,9198],[500,9198],[501,9198],[502,9198],[503,9199],[504,9201],[505,9201],[506,9200],[507,9203],[508,9200],[509,9200],[510,9200],[511,9200],[512,9200],[513,9200],[514,9200],[515,9200],[516,9198],[517,9198],[518,9201],[519,9198],[520,9198],[521,9203],[522,9203],[523,9203],[524,9203],[525,9198],[526,9198],[527,9198],[528,9198],[529,9198],[530,9198],[531,9198],[532,9198],[533,9198],[534,9198],[535,9198],[536,9198],[537,9203],[538,9203],[539,9198],[540,9203],[541,9203],[542,9203],[543,9203],[544,9203],[545,9203],[546,9198],[547,9203],[548,9198],[549,9201],[550,9203],[551,9203],[552,9203],[553,9203],[554,9203],[555,9203],[556,9203],[557,9203],[558,9203],[559,9203],[560,9203],[561,9201],[562,9203],[563,9203],[564,9203],[565,9198],[566,9203],[567,9203],[568,9198],[569,9198],[570,9198],[571,9203],[572,9203],[573,9198],[574,9203],[575,9201],[576,9203],[577,9203],[578,9203],[579,9203],[580,9203],[581,9203],[582,9198],[583,9198],[584,9198],[585,9203],[586,9198],[587,9203],[588,9198],[589,9198],[590,9198],[591,9198],[592,9198],[593,9198],[594,9198],[595,9198],[596,9198],[597,9198],[598,9198],[599,9203],[600,9203],[601,9203],[602,9203],[603,9203],[604,9203],[605,9203],[606,9198],[607,9198],[608,9198],[609,9198],[610,9198],[611,9198],[612,9198],[613,9198],[614,9198],[615,9198],[616,9198],[617,9198],[618,9198],[619,9198],[620,9199],[621,9198],[622,9198],[623,9198],[624,9198],[625,9198],[626,9198],[627,9198],[628,9198],[629,9198],[630,9198],[631,9198],[632,9198],[633,9198],[634,9203],[635,9203],[636,9203],[637,9203],[638,9203],[639,9203],[640,9203],[641,9203],[642,9198],[643,9198],[644,9199],[645,9203],[646,9203],[647,9198],[648,9198],[649,9198],[650,9198],[651,9198],[652,9198],[653,9198],[654,9198],[655,9198],[656,9198],[657,9198],[658,9198],[659,9198],[660,9198],[661,9198],[662,9198],[663,9198],[664,9198],[665,9198],[666,9198],[667,9198],[668,9198],[669,9198],[670,9198],[671,9198],[672,9198],[673,9198],[674,9198],[675,9198],[676,9198],[677,9198],[678,9198],[679,9198],[680,9198],[681,9198],[682,9198],[683,9198],[684,9198],[685,9198],[686,9198],[687,9198],[688,9198],[689,9198],[690,9198],[691,9198],[692,9198],[693,9198],[694,9198],[695,9198],[696,9198],[697,9198],[698,9198],[699,9198],[700,9198],[701,9198],[702,9198],[703,9198],[704,9198],[705,9198],[706,9198],[707,9198],[708,9198],[709,9198],[710,9198],[711,9198],[712,9198],[713,9198],[714,9198],[715,9198],[716,9198],[717,9198],[718,9198],[719,9198],[720,9198],[721,9198],[722,9198],[723,9198],[724,9198],[725,9203],[726,9203],[727,9203],[728,9203],[729,9203],[730,9198],[731,9203],[732,9198],[733,9203],[734,9203],[735,9203],[736,9198],[737,9198],[738,9198],[739,9203],[740,9203],[741,9203],[742,9203],[743,9198],[744,9203],[745,9203],[746,9203],[747,9203],[748,9198],[749,9203],[750,9203],[751,9203],[752,9198],[753,9203],[754,9198],[755,9203],[756,9203],[757,9203],[758,9203],[759,9199],[760,9198],[761,9203],[762,9198],[763,9201],[764,9203],[765,9203],[766,9203],[767,9198],[768,9203],[769,9198],[770,9201],[771,9201],[772,9201],[773,9201],[774,9201],[775,9201],[776,9201],[777,9201],[778,9201],[779,9201],[780,9201],[781,9201],[782,9201],[783,9201],[784,9201],[785,9203],[786,9201],[787,9201],[788,9201],[789,9203],[790,9203],[791,9203],[792,9198],[793,9198],[794,9198],[795,9198],[796,9198],[797,9203],[798,9203],[799,9203],[800,9203],[801,9203],[802,9198],[803,9203],[804,9203],[805,9203],[806,9198],[807,9198],[808,9203],[809,9203],[810,9203],[811,9198],[812,9198],[813,9198],[814,9198],[815,9198],[816,9198],[817,9198],[818,9198],[819,9198],[820,9198],[821,9198],[822,9198],[823,9198],[824,9198],[825,9198],[826,9198],[827,9198],[828,9198],[829,9198],[830,9198],[831,9198],[832,9198],[833,9198],[834,9198],[835,9198],[836,9198],[837,9198],[838,9198],[839,9198],[840,9198],[841,9198],[842,9198],[843,9198],[844,9198],[845,9198],[846,9198],[847,9198],[848,9198],[849,9198],[850,9198],[851,9198],[852,9198],[853,9198],[854,9198],[855,9198],[856,9198],[857,9198],[858,9198],[859,9198],[860,9198],[861,9198],[862,9198],[863,9198],[864,9198],[865,9198],[866,9198],[867,9198],[868,9198],[869,9198],[870,9198],[871,9198],[872,9198],[873,9198],[874,9198],[875,9198],[876,9198],[877,9198],[878,9198],[879,9198],[880,9198],[881,9198],[882,9198],[883,9198],[884,9198],[885,9198],[886,9198],[887,9198],[888,9198],[889,9198],[890,9198],[891,9198],[892,9198],[893,9198],[894,9198],[895,9198],[896,9203],[897,9203],[898,9203],[899,9198],[900,9198],[901,9198],[902,9198],[903,9198],[904,9198],[905,9198],[906,9198],[907,9198],[908,9198],[909,9198],[910,9203],[911,9203],[912,9203],[913,9198],[914,9198],[915,9198],[916,9198],[917,9198],[918,9198],[919,9198],[920,9203],[921,9201],[922,9201],[923,9201],[924,9201],[925,9201],[926,9203],[927,9203],[928,9203],[929,9198],[930,9199],[931,9198],[932,9198],[933,9198],[934,9198],[935,9198],[936,9198],[937,9198],[938,9198],[939,9198],[940,9199],[941,9198],[942,9198],[943,9198],[944,9198],[945,9198],[946,9198],[947,9198],[948,9198],[949,9198],[950,9198],[951,9201],[952,9198],[953,9198],[954,9198],[955,9198],[956,9198],[957,9198],[958,9198],[959,9198],[960,9198],[961,9198],[962,9198],[963,9198],[964,9198],[965,9198],[966,9198],[967,9198],[968,9198],[969,9198],[970,9198],[971,9198],[972,9198],[973,9198],[974,9198],[975,9198],[976,9198],[977,9198],[978,9198],[979,9198],[980,9198],[981,9198],[982,9198],[983,9198],[984,9198],[985,9198],[986,9198],[987,9198],[988,9198],[989,9198],[990,9198],[991,9198],[992,9198],[993,9198],[994,9198],[995,9198],[996,9198],[997,9198],[998,9198],[999,9198],[1000,9198],[1001,9198],[1002,9198],[1003,9198],[1004,9198],[1005,9198],[1006,9198],[1007,9198],[1008,9198],[1009,9198],[1010,9198],[1011,9198],[1012,9198],[1013,9198],[1014,9198],[1015,9198],[1016,9198],[1017,9198],[1018,9198],[1019,9198],[1020,9198],[1021,9198],[1022,9198],[1023,9198],[1024,9198],[1025,9198],[1026,9198],[1027,9199],[1028,9200],[1029,9201],[1030,9201],[1031,9201],[1032,9201],[1033,9201],[1034,9201],[1035,9203],[1036,9203],[1037,9198],[1038,9198],[1039,9207],[1040,9207],[1041,9200],[1042,9199],[1043,9207],[1044,9207],[1045,9207],[1046,9207],[1047,9207],[1048,9207],[1049,9203],[1050,9199],[1051,9203],[1052,9203],[1053,9207],[1054,9207],[1055,9207],[1056,9207],[1057,9207],[1058,9207],[1059,9207],[1060,9207],[1061,9201],[1062,9201],[1063,9198],[1064,9198],[1065,9198],[1066,9198],[1067,9198],[1068,9198],[1069,9198],[1070,9198],[1071,9198],[1072,9198],[1073,9198],[1074,9198],[1075,9198],[1076,9198],[1077,9198],[1078,9198],[1079,9198],[1080,9198],[1081,9198],[1082,9198],[1083,9198],[1084,9198],[1085,9198],[1086,9198],[1087,9198],[1088,9198],[1089,9198],[1090,9198],[1091,9198],[1092,9198],[1093,9198],[1094,9198],[1095,9198],[1096,9198],[1097,9201],[1098,9201],[1099,9201],[1100,9201],[1101,9201],[1102,9201],[1103,9201],[1104,9203],[1105,9203],[1106,9201],[1107,9201],[1108,9198],[1109,9201],[1110,9203],[1111,9203],[1112,9203],[1113,9201],[1114,9203],[1115,9198],[1116,9201],[1117,9201],[1118,9201],[1119,9201],[1120,9201],[1121,9201],[1122,9201],[1123,9203],[1124,9203],[1125,9203],[1126,9201],[1127,9198],[1128,9198],[1129,9198],[1130,9203],[1131,9203],[1132,9198],[1133,9198],[1134,9198],[1135,9198],[1136,9198],[1137,9199],[1138,9199],[1139,9198],[1140,9198],[1141,9198],[1142,9199],[1143,9198],[1144,9199],[1145,9198],[1146,9199],[1147,9198],[1148,9198],[1149,9198],[1150,9198],[1151,9198],[1152,9199],[1153,9198],[1154,9198],[1155,9198],[1156,9199],[1157,9199],[1158,9199],[1159,9199],[1160,9198],[1161,9198],[1162,9198],[1163,9200],[1164,9203],[1165,9203],[1166,9201],[1167,9201],[1168,9201],[1169,9199],[1170,9199],[1171,9199],[1172,9199],[1173,9199],[1174,9199],[1175,9199],[1176,9199],[1177,9199],[1178,9199],[1179,9199],[1180,9199],[1181,9199],[1182,9199],[1183,9203],[1184,9198],[1185,9198],[1186,9198],[1187,9198],[1188,9198],[1189,9198],[1190,9198],[1191,9198],[1192,9198],[1193,9198],[1194,9198],[1195,9198],[1196,9198],[1197,9198],[1198,9198],[1199,9198],[1200,9198],[1201,9198],[1202,9198],[1203,9198],[1204,9207],[1205,9203],[1206,9201],[1207,9203],[1208,9198],[1209,9198],[1210,9198],[1211,9198],[1212,9199],[1213,9198],[1214,9198],[1215,9198],[1216,9199],[1217,9199],[1218,9198],[1219,9199],[1220,9198],[1221,9198],[1222,9198],[1223,9199],[1224,9198],[1225,9198],[1226,9198],[1227,9198],[1228,9198],[1229,9198],[1230,9201],[1231,9198],[1232,9201],[1233,9201],[1234,9201],[1235,9198],[1236,9198],[1237,9201],[1238,9198],[1239,9201],[1240,9198],[1241,9201],[1242,9201],[1243,9198],[1244,9198],[1245,9198],[1246,9201],[1247,9198],[1248,9201],[1249,9198],[1250,9198],[1251,9198],[1252,9198],[1253,9201],[1254,9201],[1255,9201],[1256,9201],[1257,9201],[1258,9198],[1259,9198],[1260,9198],[1261,9201],[1262,9198],[1263,9198],[1264,9198],[1265,9198],[1266,9198],[1267,9198],[1268,9198],[1269,9198],[1270,9198],[1271,9198],[1272,9198],[1273,9198],[1274,9198],[1275,9198],[1276,9198],[1277,9198],[1278,9198],[1279,9198],[1280,9198],[1281,9198],[1282,9198],[1283,9198],[1284,9198],[1285,9198],[1286,9198],[1287,9198],[1288,9198],[1289,9198],[1290,9198],[1291,9198],[1292,9198],[1293,9198],[1294,9198],[1295,9198],[1296,9198],[1297,9198],[1298,9198],[1299,9198],[1300,9198],[1301,9198],[1302,9198],[1303,9198],[1304,9198],[1305,9198],[1306,9198],[1307,9198],[1308,9198],[1309,9198],[1310,9198],[1311,9198],[1312,9198],[1313,9198],[1314,9198],[1315,9198],[1316,9198],[1317,9198],[1318,9198],[1319,9198],[1320,9198],[1321,9198],[1322,9198],[1323,9198],[1324,9198],[1325,9198],[1326,9198],[1327,9198],[1328,9198],[1329,9198],[1330,9198],[1331,9198],[1332,9200],[1333,9198],[1334,9198],[1335,9198],[1336,9200],[1337,9198],[1338,9198],[1339,9198],[1340,9198],[1341,9198],[1342,9198],[1343,9198],[1344,9201],[1345,9201],[1346,9201],[1347,9201],[1348,9200],[1349,9200],[1350,9200],[1351,9200],[1352,9199],[1353,9201],[1354,9198],[1355,9198],[1356,9198],[1357,9201],[1358,9198],[1359,9198],[1360,9200],[1361,9200],[1362,9198],[1363,9198],[1364,9198],[1365,9198],[1366,9198],[1367,9198],[1368,9198],[1369,9198],[1370,9198],[1371,9198],[1372,9198],[1373,9198],[1374,9198],[1375,9198],[1376,9198],[1377,9198],[1378,9198],[1379,9198],[1380,9198],[1381,9198],[1382,9198],[1383,9198],[1384,9198],[1385,9198],[1386,9198],[1387,9198],[1388,9198],[1389,9198],[1390,9198],[1391,9198],[1392,9198],[1393,9198],[1394,9198],[1395,9198],[1396,9198],[1397,9198],[1398,9201],[1399,9201],[1400,9201],[1401,9201],[1402,9201],[1403,9201],[1404,9201],[1405,9201],[1406,9201],[1407,9201],[1408,9201],[1409,9201],[1410,9201],[1411,9201],[1412,9201],[1413,9201],[1414,9201],[1415,9201],[1416,9201],[1417,9201],[1418,9201],[1419,9201],[1420,9201],[1421,9201],[1422,9201],[1423,9201],[1424,9201],[1425,9201],[1426,9201],[1427,9201],[1428,9201],[1429,9201],[1430,9201],[1431,9201],[1432,9201],[1433,9201],[1434,9201],[1435,9201],[1436,9201],[1437,9201],[1438,9201],[1439,9201],[1440,9200],[1441,9200],[1442,9201],[1443,9201],[1444,9200],[1445,9201],[1446,9200],[1447,9198],[1448,9201],[1449,9201],[1450,9201],[1451,9201],[1452,9201],[1453,9201],[1454,9201],[1455,9201],[1456,9201],[1457,9201],[1458,9201],[1459,9200],[1460,9201],[1461,9200],[1462,9201],[1463,9201],[1464,9201],[1465,9201],[1466,9201],[1467,9201],[1468,9198],[1469,9201],[1470,9201],[1471,9198],[1472,9201],[1473,9201],[1474,9201],[1475,9201],[1476,9201],[1477,9198],[1478,9201],[1479,9201],[1480,9201],[1481,9201],[1482,9201],[1483,9198],[1484,9198],[1485,9201],[1486,9201],[1487,9201],[1488,9201],[1489,9201],[1490,9201],[1491,9201],[1492,9201],[1493,9201],[1494,9201],[1495,9201],[1496,9201],[1497,9201],[1498,9201],[1499,9201],[1500,9198],[1501,9198],[1502,9198],[1503,9198],[1504,9198],[1505,9198],[1506,9201],[1507,9201],[1508,9201],[1509,9201],[1510,9201],[1511,9201],[1512,9201],[1513,9201],[1514,9201],[1515,9198],[1516,9201],[1517,9201],[1518,9201],[1519,9201],[1520,9201],[1521,9201],[1522,9201],[1523,9201],[1524,9201],[1525,9201],[1526,9201],[1527,9201],[1528,9201],[1529,9201],[1530,9201],[1531,9201],[1532,9201],[1533,9201],[1534,9201],[1535,9201],[1536,9201],[1537,9201],[1538,9198],[1539,9201],[1540,9201],[1541,9201],[1542,9201],[1543,9201],[1544,9201],[1545,9201],[1546,9201],[1547,9198],[1548,9201],[1549,9201],[1550,9198],[1551,9198],[1552,9201],[1553,9201],[1554,9201],[1555,9201],[1556,9201],[1557,9201],[1558,9201],[1559,9201],[1560,9201],[1561,9201],[1562,9201],[1563,9201],[1564,9201],[1565,9201],[1566,9201],[1567,9201],[1568,9201],[1569,9201],[1570,9201],[1571,9201],[1572,9201],[1573,9201],[1574,9201],[1575,9201],[1576,9201],[1577,9201],[1578,9201],[1579,9201],[1580,9201],[1581,9201],[1582,9201],[1583,9201],[1584,9201],[1585,9201],[1586,9201],[1587,9201],[1588,9201],[1589,9201],[1590,9201],[1591,9201],[1592,9198],[1593,9201],[1594,9201],[1595,9201],[1596,9201],[1597,9201],[1598,9201],[1599,9201],[1600,9201],[1601,9201],[1602,9201],[1603,9201],[1604,9201],[1605,9203],[1606,9201],[1607,9201],[1608,9198],[1609,9198],[1610,9198],[1611,9198],[1612,9198],[1613,9198],[1614,9198],[1615,9198],[1616,9198],[1617,9198],[1618,9198],[1619,9198],[1620,9198],[1621,9198],[1622,9198],[1623,9198],[1624,9198],[1625,9198],[1626,9198],[1627,9198],[1628,9198],[1629,9198],[1630,9198],[1631,9198],[1632,9198],[1633,9198],[1634,9198],[1635,9198],[1636,9198],[1637,9198],[1638,9198],[1639,9198],[1640,9198],[1641,9198],[1642,9198],[1643,9198],[1644,9198],[1645,9198],[1646,9198],[1647,9198],[1648,9198],[1649,9198],[1650,9198],[1651,9198],[1652,9198],[1653,9198],[1654,9198],[1655,9198],[1656,9198],[1657,9198],[1658,9198],[1659,9198],[1660,9198],[1661,9198],[1662,9198],[1663,9198],[1664,9198],[1665,9198],[1666,9198],[1667,9198],[1668,9198],[1669,9198],[1670,9198],[1671,9198],[1672,9198],[1673,9198],[1674,9198],[1675,9198],[1676,9198],[1677,9198],[1678,9198],[1679,9198],[1680,9198],[1681,9198],[1682,9198],[1683,9198],[1684,9198],[1685,9198],[1686,9198],[1687,9198],[1688,9198],[1689,9198],[1690,9198],[1691,9198],[1692,9198],[1693,9198],[1694,9198],[1695,9198],[1696,9198],[1697,9198],[1698,9198],[1699,9198],[1700,9198],[1701,9198],[1702,9198],[1703,9198],[1704,9198],[1705,9198],[1706,9198],[1707,9198],[1708,9198],[1709,9198],[1710,9198],[1711,9198],[1712,9198],[1713,9198],[1714,9198],[1715,9198],[1716,9198],[1717,9198],[1718,9198],[1719,9198],[1720,9198],[1721,9198],[1722,9198],[1723,9198],[1724,9198],[1725,9198],[1726,9198],[1727,9198],[1728,9198],[1729,9198],[1730,9198],[1731,9198],[1732,9198],[1733,9198],[1734,9198],[1735,9198],[1736,9198],[1737,9198],[1738,9198],[1739,9198],[1740,9198],[1741,9198],[1742,9198],[1743,9198],[1744,9198],[1745,9198],[1746,9198],[1747,9198],[1748,9198],[1749,9198],[1750,9198],[1751,9198],[1752,9198],[1753,9198],[1754,9198],[1755,9198],[1756,9198],[1757,9198],[1758,9198],[1759,9198],[1760,9198],[1761,9198],[1762,9198],[1763,9198],[1764,9198],[1765,9198],[1766,9198],[1767,9198],[1768,9198],[1769,9198],[1770,9198],[1771,9198],[1772,9198],[1773,9198],[1774,9198],[1775,9198],[1776,9198],[1777,9198],[1778,9198],[1779,9198],[1780,9198],[1781,9198],[1782,9198],[1783,9198],[1784,9198],[1785,9198],[1786,9198],[1787,9201],[1788,9203],[1789,9203],[1790,9198],[1791,9198],[1792,9198],[1793,9198],[1794,9198],[1795,9198],[1796,9198],[1797,9198],[1798,9198],[1799,9198],[1800,9198],[1801,9198],[1802,9198],[1803,9198],[1804,9198],[1805,9198],[1806,9198],[1807,9198],[1808,9198],[1809,9198],[1810,9198],[1811,9198],[1812,9198],[1813,9198],[1814,9201],[1815,9201],[1816,9198],[1817,9198],[1818,9198],[1819,9198],[1820,9198],[1821,9198],[1822,9198],[1823,9198],[1824,9198],[1825,9198],[1826,9198],[1827,9198],[1828,9198],[1829,9198],[1830,9198],[1831,9198],[1832,9198],[1833,9198],[1834,9198],[1835,9198],[1836,9198],[1837,9198],[1838,9198],[1839,9198],[1840,9198],[1841,9198],[1842,9198],[1843,9198],[1844,9198],[1845,9198],[1846,9198],[1847,9198],[1848,9198],[1849,9198],[1850,9198],[1851,9198],[1852,9198],[1853,9198],[1854,9198],[1855,9198],[1856,9198],[1857,9198],[1858,9198],[1859,9198],[1860,9198],[1861,9198],[1862,9198],[1863,9198],[1864,9198],[1865,9198],[1866,9198],[1867,9198],[1868,9198],[1869,9198],[1870,9198],[1871,9198],[1872,9198],[1873,9198],[1874,9198],[1875,9198],[1876,9198],[1877,9198],[1878,9198],[1879,9198],[1880,9198],[1881,9198],[1882,9198],[1883,9198],[1884,9198],[1885,9198],[1886,9198],[1887,9198],[1888,9198],[1889,9199],[1890,9199],[1891,9199],[1892,9199],[1893,9199],[1894,9199],[1895,9199],[1896,9199],[1897,9199],[1898,9199],[1899,9199],[1900,9198],[1901,9198],[1902,9198],[1903,9199],[1904,9198],[1905,9198],[1906,9198],[1907,9198],[1908,9198],[1909,9198],[1910,9198],[1911,9198],[1912,9199],[1913,9198],[1914,9199],[1915,9199],[1916,9199],[1917,9199],[1918,9199],[1919,9198],[1920,9198],[1921,9199],[1922,9198],[1923,9198],[1924,9198],[1925,9198],[1926,9198],[1927,9198],[1928,9199],[1929,9199],[1930,9199],[1931,9199],[1932,9198],[1933,9198],[1934,9198],[1935,9198],[1936,9198],[1937,9198],[1938,9198],[1939,9198],[1940,9198],[1941,9198],[1942,9198],[1943,9198],[1944,9198],[1945,9198],[1946,9198],[1947,9198],[1948,9198],[1949,9198],[1950,9198],[1951,9198],[1952,9198],[1953,9199],[1954,9199],[1955,9201],[1956,9199],[1957,9201],[1958,9201],[1959,9201],[1960,9201],[1961,9199],[1962,9199],[1963,9199],[1964,9199],[1965,9201],[1966,9201],[1967,9201],[1968,9201],[1969,9199],[1970,9199],[1971,9201],[1972,9201],[1973,9199],[1974,9199],[1975,9199],[1976,9199],[1977,9201],[1978,9201],[1979,9198],[1980,9198],[1981,9198],[1982,9198],[1983,9198],[1984,9198],[1985,9198],[1986,9198],[1987,9198],[1988,9198],[1989,9198],[1990,9198],[1991,9198],[1992,9198],[1993,9198],[1994,9198],[1995,9198],[1996,9198],[1997,9198],[1998,9198],[1999,9199],[2000,9199],[2001,9201],[2002,9201],[2003,9201],[2004,9201],[2005,9199],[2006,9200],[2007,9200],[2008,9201],[2009,9200],[2010,9200],[2011,9201],[2012,9200],[2013,9200],[2014,9200],[2015,9200],[2016,9200],[2017,9201],[2018,9200],[2019,9200],[2020,9200],[2021,9200],[2022,9200],[2023,9200],[2024,9200],[2025,9200],[2026,9200],[2027,9200],[2028,9200],[2029,9200],[2030,9200],[2031,9200],[2032,9198],[2033,9200],[2034,9200],[2035,9200],[2036,9201],[2037,9200],[2038,9200],[2039,9200],[2040,9200],[2041,9200],[2042,9200],[2043,9198],[2044,9199],[2045,9201],[2046,9199],[2047,9201],[2048,9201],[2049,9201],[2050,9201],[2051,9201],[2052,9201],[2053,9201],[2054,9201],[2055,9201],[2056,9201],[2057,9201],[2058,9201],[2059,9201],[2060,9201],[2061,9201],[2062,9201],[2063,9201],[2064,9201],[2065,9201],[2066,9203],[2067,9201],[2068,9201],[2069,9201],[2070,9203],[2071,9203],[2072,9203],[2073,9203],[2074,9203],[2075,9201],[2076,9201],[2077,9201],[2078,9198],[2079,9203],[2080,9203],[2081,9199],[2082,9199],[2083,9199],[2084,9199],[2085,9199],[2086,9199],[2087,9199],[2088,9199],[2089,9199],[2090,9199],[2091,9199],[2092,9199],[2093,9199],[2094,9199],[2095,9203],[2096,9203],[2097,9203],[2098,9203],[2099,9201],[2100,9201],[2101,9198],[2102,9203],[2103,9203],[2104,9201],[2105,9199],[2106,9201],[2107,9198],[2108,9201],[2109,9199],[2110,9201],[2111,9201],[2112,9201],[2113,9201],[2114,9201],[2115,9201],[2116,9201],[2117,9201],[2118,9201],[2119,9203],[2120,9203],[2121,9203],[2122,9198],[2123,9198],[2124,9198],[2125,9198],[2126,9198],[2127,9198],[2128,9198],[2129,9198],[2130,9198],[2131,9198],[2132,9198],[2133,9198],[2134,9198],[2135,9198],[2136,9198],[2137,9198],[2138,9198],[2139,9198],[2140,9198],[2141,9198],[2142,9198],[2143,9198],[2144,9198],[2145,9198],[2146,9198],[2147,9198],[2148,9198],[2149,9198],[2150,9198],[2151,9201],[2152,9201],[2153,9201],[2154,9201],[2155,9201],[2156,9203],[2157,9198],[2158,9201],[2159,9201],[2160,9201],[2161,9201],[2162,9198],[2163,9198],[2164,9199],[2165,9199],[2166,9199],[2167,9199],[2168,9199],[2169,9199],[2170,9199],[2171,9199],[2172,9199],[2173,9199],[2174,9199],[2175,9198],[2176,9198],[2177,9198],[2178,9198],[2179,9198],[2180,9198],[2181,9198],[2182,9198],[2183,9198],[2184,9198],[2185,9198],[2186,9198],[2187,9199],[2188,9199],[2189,9199],[2190,9199],[2191,9199],[2192,9199],[2193,9199],[2194,9199],[2195,9198],[2196,9198],[2197,9198],[2198,9198],[2199,9198],[2200,9198],[2201,9198],[2202,9198],[2203,9198],[2204,9198],[2205,9198],[2206,9198],[2207,9198],[2208,9201],[2209,9201],[2210,9201],[2211,9198],[2212,9201],[2213,9201],[2214,9201],[2215,9201],[2216,9201],[2217,9198],[2218,9201],[2219,9201],[2220,9198],[2221,9201],[2222,9198],[2223,9201],[2224,9198],[2225,9201],[2226,9201],[2227,9201],[2228,9198],[2229,9201],[2230,9201],[2231,9199],[2232,9201],[2233,9201],[2234,9198],[2235,9201],[2236,9201],[2237,9201],[2238,9201],[2239,9201],[2240,9201],[2241,9201],[2242,9201],[2243,9201],[2244,9201],[2245,9201],[2246,9201],[2247,9201],[2248,9201],[2249,9201],[2250,9201],[2251,9201],[2252,9198],[2253,9201],[2254,9201],[2255,9201],[2256,9201],[2257,9201],[2258,9201],[2259,9199],[2260,9201],[2261,9201],[2262,9201],[2263,9201],[2264,9201],[2265,9201],[2266,9201],[2267,9199],[2268,9199],[2269,9199],[2270,9199],[2271,9199],[2272,9199],[2273,9199],[2274,9199],[2275,9199],[2276,9199],[2277,9199],[2278,9199],[2279,9203],[2280,9201],[2281,9198],[2282,9198],[2283,9198],[2284,9199],[2285,9198],[2286,9199],[2287,9198],[2288,9198],[2289,9199],[2290,9198],[2291,9198],[2292,9198],[2293,9198],[2294,9198],[2295,9198],[2296,9198],[2297,9198],[2298,9198],[2299,9198],[2300,9198],[2301,9198],[2302,9198],[2303,9198],[2304,9198],[2305,9198],[2306,9198],[2307,9198],[2308,9198],[2309,9198],[2310,9198],[2311,9198],[2312,9198],[2313,9198],[2314,9198],[2315,9198],[2316,9198],[2317,9198],[2318,9198],[2319,9198],[2320,9198],[2321,9198],[2322,9198],[2323,9198],[2324,9198],[2325,9198],[2326,9198],[2327,9198],[2328,9198],[2329,9198],[2330,9198],[2331,9198],[2332,9198],[2333,9198],[2334,9198],[2335,9198],[2336,9198],[2337,9198],[2338,9198],[2339,9198],[2340,9198],[2341,9198],[2342,9198],[2343,9198],[2344,9198],[2345,9198],[2346,9198],[2347,9198],[2348,9199],[2349,9198],[2350,9198],[2351,9198],[2352,9198],[2353,9198],[2354,9198],[2355,9198],[2356,9198],[2357,9198],[2358,9198],[2359,9198],[2360,9198],[2361,9198],[2362,9198],[2363,9198],[2364,9198],[2365,9198],[2366,9198],[2367,9198],[2368,9198],[2369,9198],[2370,9198],[2371,9198],[2372,9198],[2373,9198],[2374,9198],[2375,9198],[2376,9198],[2377,9198],[2378,9198],[2379,9198],[2380,9198],[2381,9198],[2382,9198],[2383,9198],[2384,9198],[2385,9198],[2386,9198],[2387,9198],[2388,9198],[2389,9198],[2390,9198],[2391,9198],[2392,9198],[2393,9198],[2394,9198],[2395,9198],[2396,9198],[2397,9198],[2398,9198],[2399,9198],[2400,9198],[2401,9198],[2402,9198],[2403,9198],[2404,9198],[2405,9198],[2406,9198],[2407,9198],[2408,9198],[2409,9198],[2410,9198],[2411,9198],[2412,9198],[2413,9198],[2414,9198],[2415,9198],[2416,9198],[2417,9198],[2418,9198],[2419,9198],[2420,9198],[2421,9198],[2422,9198],[2423,9198],[2424,9198],[2425,9198],[2426,9198],[2427,9198],[2428,9198],[2429,9198],[2430,9198],[2431,9198],[2432,9198],[2433,9198],[2434,9198],[2435,9198],[2436,9198],[2437,9198],[2438,9198],[2439,9201],[2440,9198],[2441,9198],[2442,9198],[2443,9198],[2444,9198],[2445,9198],[2446,9198],[2447,9198],[2448,9198],[2449,9198],[2450,9198],[2451,9198],[2452,9198],[2453,9198],[2454,9198],[2455,9198],[2456,9198],[2457,9198],[2458,9198],[2459,9198],[2460,9198],[2461,9198],[2462,9198],[2463,9198],[2464,9198],[2465,9198],[2466,9198],[2467,9198],[2468,9198],[2469,9198],[2470,9198],[2471,9198],[2472,9198],[2473,9198],[2474,9198],[2475,9198],[2476,9198],[2477,9198],[2478,9198],[2479,9198],[2480,9198],[2481,9198],[2482,9198],[2483,9198],[2484,9198],[2485,9198],[2486,9198],[2487,9198],[2488,9198],[2489,9198],[2490,9198],[2491,9198],[2492,9198],[2493,9198],[2494,9198],[2495,9198],[2496,9198],[2497,9198],[2498,9198],[2499,9198],[2500,9198],[2501,9198],[2502,9198],[2503,9198],[2504,9198],[2505,9198],[2506,9198],[2507,9198],[2508,9198],[2509,9198],[2510,9198],[2511,9198],[2512,9198],[2513,9198],[2514,9198],[2515,9198],[2516,9198],[2517,9198],[2518,9198],[2519,9198],[2520,9198],[2521,9198],[2522,9198],[2523,9198],[2524,9198],[2525,9198],[2526,9198],[2527,9198],[2528,9198],[2529,9198],[2530,9198],[2531,9198],[2532,9198],[2533,9198],[2534,9198],[2535,9198],[2536,9198],[2537,9198],[2538,9198],[2539,9198],[2540,9198],[2541,9198],[2542,9198],[2543,9198],[2544,9198],[2545,9198],[2546,9198],[2547,9198],[2548,9198],[2549,9198],[2550,9198],[2551,9198],[2552,9198],[2553,9198],[2554,9198],[2555,9198],[2556,9198],[2557,9198],[2558,9198],[2559,9198],[2560,9198],[2561,9198],[2562,9198],[2563,9198],[2564,9198],[2565,9198],[2566,9198],[2567,9198],[2568,9198],[2569,9198],[2570,9198],[2571,9198],[2572,9198],[2573,9198],[2574,9198],[2575,9198],[2576,9198],[2577,9198],[2578,9198],[2579,9198],[2580,9198],[2581,9198],[2582,9198],[2583,9198],[2584,9198],[2585,9198],[2586,9198],[2587,9198],[2588,9198],[2589,9198],[2590,9198],[2591,9198],[2592,9198],[2593,9198],[2594,9198],[2595,9198],[2596,9198],[2597,9198],[2598,9198],[2599,9198],[2600,9198],[2601,9198],[2602,9198],[2603,9198],[2604,9198],[2605,9198],[2606,9198],[2607,9198],[2608,9198],[2609,9198],[2610,9198],[2611,9198],[2612,9198],[2613,9198],[2614,9198],[2615,9198],[2616,9198],[2617,9198],[2618,9198],[2619,9198],[2620,9198],[2621,9198],[2622,9198],[2623,9198],[2624,9198],[2625,9198],[2626,9198],[2627,9198],[2628,9198],[2629,9198],[2630,9198],[2631,9198],[2632,9198],[2633,9198],[2634,9198],[2635,9198],[2636,9198],[2637,9198],[2638,9198],[2639,9198],[2640,9198],[2641,9198],[2642,9198],[2643,9198],[2644,9198],[2645,9198],[2646,9198],[2647,9198],[2648,9198],[2649,9198],[2650,9198],[2651,9198],[2652,9198],[2653,9198],[2654,9198],[2655,9198],[2656,9198],[2657,9198],[2658,9198],[2659,9198],[2660,9198],[2661,9198],[2662,9198],[2663,9198],[2664,9198],[2665,9198],[2666,9198],[2667,9198],[2668,9198],[2669,9198],[2670,9198],[2671,9198],[2672,9198],[2673,9198],[2674,9198],[2675,9198],[2676,9198],[2677,9198],[2678,9198],[2679,9198],[2680,9198],[2681,9198],[2682,9198],[2683,9198],[2684,9198],[2685,9198],[2686,9198],[2687,9198],[2688,9198],[2689,9198],[2690,9198],[2691,9198],[2692,9198],[2693,9198],[2694,9198],[2695,9201],[2696,9198],[2697,9198],[2698,9199],[2699,9198],[2700,9198],[2701,9198],[2702,9198],[2703,9201],[2704,9201],[2705,9198],[2706,9198],[2707,9198],[2708,9198],[2709,9198],[2710,9203],[2711,9198],[2712,9198],[2713,9198],[2714,9198],[2715,9198],[2716,9198],[2717,9198],[2718,9198],[2719,9198],[2720,9198],[2721,9198],[2722,9198],[2723,9198],[2724,9198],[2725,9198],[2726,9198],[2727,9198],[2728,9198],[2729,9198],[2730,9198],[2731,9203],[2732,9198],[2733,9201],[2734,9199],[2735,9198],[2736,9199],[2737,9198],[2738,9198],[2739,9198],[2740,9198],[2741,9199],[2742,9199],[2743,9199],[2744,9199],[2745,9199],[2746,9199],[2747,9199],[2748,9199],[2749,9199],[2750,9199],[2751,9199],[2752,9199],[2753,9199],[2754,9199],[2755,9199],[2756,9199],[2757,9199],[2758,9199],[2759,9198],[2760,9198],[2761,9198],[2762,9198],[2763,9198],[2764,9198],[2765,9198],[2766,9198],[2767,9198],[2768,9201],[2769,9201],[2770,9201],[2771,9201],[2772,9203],[2773,9199],[2774,9203],[2775,9201],[2776,9201],[2777,9201],[2778,9198],[2779,9198],[2780,9201],[2781,9203],[2782,9201],[2783,9199],[2784,9203],[2785,9203],[2786,9203],[2787,9203],[2788,9203],[2789,9203],[2790,9203],[2791,9203],[2792,9203],[2793,9202],[2794,9203],[2795,9203],[2796,9203],[2797,9203],[2798,9203],[2799,9203],[2800,9201],[2801,9201],[2802,9203],[2803,9203],[2804,9203],[2805,9203],[2806,9201],[2807,9198],[2808,9198],[2809,9198],[2810,9198],[2811,9198],[2812,9198],[2813,9203],[2814,9201],[2815,9203],[2816,9201],[2817,9203],[2818,9201],[2819,9201],[2820,9201],[2821,9201],[2822,9201],[2823,9201],[2824,9201],[2825,9201],[2826,9201],[2827,9201],[2828,9201],[2829,9198],[2830,9201],[2831,9198],[2832,9198],[2833,9199],[2834,9198],[2835,9201],[2836,9201],[2837,9201],[2838,9198],[2839,9201],[2840,9201],[2841,9201],[2842,9201],[2843,9201],[2844,9198],[2845,9198],[2846,9201],[2847,9201],[2848,9198],[2849,9198],[2850,9198],[2851,9198],[2852,9198],[2853,9198],[2854,9198],[2855,9198],[2856,9198],[2857,9199],[2858,9201],[2859,9201],[2860,9201],[2861,9199],[2862,9198],[2863,9198],[2864,9198],[2865,9201],[2866,9201],[2867,9198],[2868,9201],[2869,9198],[2870,9198],[2871,9201],[2872,9201],[2873,9201],[2874,9201],[2875,9201],[2876,9198],[2877,9201],[2878,9198],[2879,9201],[2880,9201],[2881,9201],[2882,9198],[2883,9198],[2884,9198],[2885,9199],[2886,9198],[2887,9201],[2888,9198],[2889,9198],[2890,9201],[2891,9199],[2892,9199],[2893,9201],[2894,9198],[2895,9201],[2896,9201],[2897,9201],[2898,9201],[2899,9201],[2900,9201],[2901,9201],[2902,9201],[2903,9201],[2904,9203],[2905,9203],[2906,9203],[2907,9203],[2908,9201],[2909,9201],[2910,9201],[2911,9201],[2912,9199],[2913,9198],[2914,9198],[2915,9198],[2916,9198],[2917,9198],[2918,9198],[2919,9198],[2920,9198],[2921,9198],[2922,9198],[2923,9198],[2924,9198],[2925,9200],[2926,9200],[2927,9199],[2928,9199],[2929,9199],[2930,9201],[2931,9201],[2932,9201],[2933,9201],[2934,9201],[2935,9201],[2936,9201],[2937,9198],[2938,9198],[2939,9198],[2940,9198],[2941,9198],[2942,9198],[2943,9198],[2944,9198],[2945,9198],[2946,9198],[2947,9198],[2948,9198],[2949,9198],[2950,9198],[2951,9198],[2952,9198],[2953,9198],[2954,9198],[2955,9198],[2956,9198],[2957,9198],[2958,9198],[2959,9198],[2960,9198],[2961,9198],[2962,9198],[2963,9198],[2964,9198],[2965,9198],[2966,9198],[2967,9198],[2968,9198],[2969,9198],[2970,9198],[2971,9198],[2972,9198],[2973,9203],[2974,9198],[2975,9198],[2976,9198],[2977,9198],[2978,9198],[2979,9198],[2980,9198],[2981,9198],[2982,9198],[2983,9198],[2984,9198],[2985,9198],[2986,9198],[2987,9198],[2988,9198],[2989,9198],[2990,9198],[2991,9198],[2992,9198],[2993,9198],[2994,9198],[2995,9198],[2996,9198],[2997,9198],[2998,9198],[2999,9198],[3000,9198],[3001,9198],[3002,9198],[3003,9198],[3004,9198],[3005,9198],[3006,9198],[3007,9198],[3008,9198],[3009,9198],[3010,9198],[3011,9198],[3012,9198],[3013,9198],[3014,9198],[3015,9198],[3016,9198],[3017,9198],[3018,9198],[3019,9198],[3020,9198],[3021,9198],[3022,9198],[3023,9198],[3024,9198],[3025,9198],[3026,9198],[3027,9198],[3028,9203],[3029,9198],[3030,9198],[3031,9198],[3032,9198],[3033,9198],[3034,9198],[3035,9198],[3036,9203],[3037,9203],[3038,9203],[3039,9203],[3040,9203],[3041,9203],[3042,9203],[3043,9203],[3044,9198],[3045,9198],[3046,9198],[3047,9198],[3048,9198],[3049,9198],[3050,9198],[3051,9198],[3052,9204],[3053,9198],[3054,9198],[3055,9201],[3056,9201],[3057,9204],[3058,9198],[3059,9198],[3060,9199],[3061,9198],[3062,9198],[3063,9198],[3064,9198],[3065,9198],[3066,9198],[3067,9198],[3068,9198],[3069,9198],[3070,9198],[3071,9198],[3072,9198],[3073,9198],[3074,9204],[3075,9198],[3076,9199],[3077,9199],[3078,9199],[3079,9203],[3080,9201],[3081,9201],[3082,9201],[3083,9201],[3084,9201],[3085,9198],[3086,9201],[3087,9201],[3088,9199],[3089,9203],[3090,9203],[3091,9203],[3092,9199],[3093,9199],[3094,9199],[3095,9203],[3096,9199],[3097,9199],[3098,9199],[3099,9199],[3100,9201],[3101,9201],[3102,9201],[3103,9201],[3104,9201],[3105,9201],[3106,9201],[3107,9201],[3108,9201],[3109,9201],[3110,9201],[3111,9199],[3112,9199],[3113,9203],[3114,9199],[3115,9199],[3116,9199],[3117,9199],[3118,9199],[3119,9199],[3120,9203],[3121,9203],[3122,9199],[3123,9203],[3124,9199],[3125,9199],[3126,9199],[3127,9199],[3128,9199],[3129,9199],[3130,9199],[3131,9199],[3132,9199],[3133,9203],[3134,9203],[3135,9199],[3136,9198],[3137,9198],[3138,9198],[3139,9198],[3140,9198],[3141,9198],[3142,9198],[3143,9198],[3144,9198],[3145,9198],[3146,9198],[3147,9198],[3148,9198],[3149,9198],[3150,9198],[3151,9198],[3152,9198],[3153,9198],[3154,9198],[3155,9198],[3156,9201],[3157,9201],[3158,9201],[3159,9201],[3160,9201],[3161,9198],[3162,9198],[3163,9198],[3164,9201],[3165,9201],[3166,9201],[3167,9201],[3168,9201],[3169,9201],[3170,9201],[3171,9201],[3172,9201],[3173,9201],[3174,9201],[3175,9201],[3176,9201],[3177,9201],[3178,9201],[3179,9201],[3180,9201],[3181,9201],[3182,9201],[3183,9201],[3184,9203],[3185,9203],[3186,9203],[3187,9203],[3188,9203],[3189,9203],[3190,9203],[3191,9203],[3192,9198],[3193,9201],[3194,9203],[3195,9203],[3196,9203],[3197,9198],[3198,9198],[3199,9198],[3200,9198],[3201,9198],[3202,9198],[3203,9198],[3204,9203],[3205,9203],[3206,9201],[3207,9203],[3208,9201],[3209,9198],[3210,9198],[3211,9198],[3212,9203],[3213,9203],[3214,9198],[3215,9198],[3216,9198],[3217,9198],[3218,9199],[3219,9198],[3220,9203],[3221,9198],[3222,9198],[3223,9198],[3224,9199],[3225,9203],[3226,9199],[3227,9198],[3228,9198],[3229,9198],[3230,9198],[3231,9198],[3232,9198],[3233,9198],[3234,9198],[3235,9198],[3236,9203],[3237,9203],[3238,9203],[3239,9203],[3240,9203],[3241,9203],[3242,9203],[3243,9203],[3244,9203],[3245,9203],[3246,9203],[3247,9203],[3248,9203],[3249,9203],[3250,9203],[3251,9203],[3252,9203],[3253,9203],[3254,9199],[3255,9203],[3256,9201],[3257,9198],[3258,9198],[3259,9198],[3260,9198],[3261,9198],[3262,9198],[3263,9198],[3264,9198],[3265,9198],[3266,9198],[3267,9198],[3268,9198],[3269,9198],[3270,9203],[3271,9201],[3272,9207],[3273,9207],[3274,9207],[3275,9207],[3276,9207],[3277,9207],[3278,9207],[3279,9207],[3280,9207],[3281,9207],[3282,9207],[3283,9207],[3284,9207],[3285,9207],[3286,9207],[3287,9207],[3288,9207],[3289,9207],[3290,9207],[3291,9198],[3292,9198],[3293,9203],[3294,9203],[3295,9198],[3296,9198],[3297,9199],[3298,9199],[3299,9199],[3300,9198],[3301,9198],[3302,9198],[3303,9198],[3304,9198],[3305,9198],[3306,9198],[3307,9198],[3308,9199],[3309,9198],[3310,9199],[3311,9199],[3312,9198],[3313,9198],[3314,9198],[3315,9198],[3316,9198],[3317,9198],[3318,9199],[3319,9199],[3320,9198],[3321,9199],[3322,9198],[3323,9198],[3324,9198],[3325,9198],[3326,9198],[3327,9198],[3328,9198],[3329,9198],[3330,9198],[3331,9198],[3332,9198],[3333,9198],[3334,9198],[3335,9198],[3336,9198],[3337,9198],[3338,9198],[3339,9198],[3340,9198],[3341,9198],[3342,9198],[3343,9198],[3344,9198],[3345,9198],[3346,9198],[3347,9198],[3348,9198],[3349,9198],[3350,9198],[3351,9198],[3352,9198],[3353,9198],[3354,9198],[3355,9198],[3356,9198],[3357,9198],[3358,9198],[3359,9198],[3360,9198],[3361,9198],[3362,9198],[3363,9198],[3364,9198],[3365,9203],[3366,9198],[3367,9199],[3368,9199],[3369,9199],[3370,9199],[3371,9199],[3372,9199],[3373,9199],[3374,9199],[3375,9199],[3376,9199],[3377,9203],[3378,9201],[3379,9201],[3380,9198],[3381,9198],[3382,9203],[3383,9198],[3384,9198],[3385,9198],[3386,9198],[3387,9198],[3388,9198],[3389,9198],[3390,9198],[3391,9198],[3392,9198],[3393,9198],[3394,9198],[3395,9198],[3396,9198],[3397,9198],[3398,9198],[3399,9198],[3400,9198],[3401,9198],[3402,9198],[3403,9198],[3404,9198],[3405,9198],[3406,9198],[3407,9198],[3408,9198],[3409,9198],[3410,9198],[3411,9198],[3412,9198],[3413,9198],[3414,9199],[3415,9198],[3416,9198],[3417,9198],[3418,9198],[3419,9198],[3420,9198],[3421,9198],[3422,9198],[3423,9199],[3424,9199],[3425,9198],[3426,9198],[3427,9198],[3428,9198],[3429,9198],[3430,9198],[3431,9198],[3432,9198],[3433,9198],[3434,9198],[3435,9198],[3436,9198],[3437,9198],[3438,9198],[3439,9198],[3440,9198],[3441,9198],[3442,9199],[3443,9198],[3444,9198],[3445,9198],[3446,9198],[3447,9198],[3448,9199],[3449,9198],[3450,9198],[3451,9198],[3452,9198],[3453,9198],[3454,9198],[3455,9198],[3456,9198],[3457,9198],[3458,9198],[3459,9198],[3460,9199],[3461,9198],[3462,9198],[3463,9198],[3464,9198],[3465,9198],[3466,9198],[3467,9198],[3468,9198],[3469,9198],[3470,9198],[3471,9198],[3472,9198],[3473,9198],[3474,9198],[3475,9198],[3476,9198],[3477,9198],[3478,9198],[3479,9198],[3480,9198],[3481,9198],[3482,9198],[3483,9198],[3484,9198],[3485,9198],[3486,9198],[3487,9198],[3488,9198],[3489,9198],[3490,9198],[3491,9198],[3492,9198],[3493,9198],[3494,9198],[3495,9198],[3496,9198],[3497,9198],[3498,9198],[3499,9198],[3500,9198],[3501,9198],[3502,9198],[3503,9198],[3504,9198],[3505,9198],[3506,9198],[3507,9198],[3508,9198],[3509,9198],[3510,9198],[3511,9198],[3512,9198],[3513,9198],[3514,9198],[3515,9198],[3516,9198],[3517,9198],[3518,9198],[3519,9198],[3520,9198],[3521,9198],[3522,9198],[3523,9198],[3524,9198],[3525,9198],[3526,9198],[3527,9198],[3528,9198],[3529,9198],[3530,9198],[3531,9198],[3532,9198],[3533,9198],[3534,9198],[3535,9198],[3536,9198],[3537,9198],[3538,9199],[3539,9198],[3540,9201],[3541,9198],[3542,9199],[3543,9199],[3544,9199],[3545,9199],[3546,9199],[3547,9201],[3548,9203],[3549,9203],[3550,9203],[3551,9203],[3552,9203],[3553,9203],[3554,9203],[3555,9198],[3556,9198],[3557,9198],[3558,9198],[3559,9198],[3560,9198],[3561,9198],[3562,9198],[3563,9198],[3564,9198],[3565,9198],[3566,9198],[3567,9198],[3568,9198],[3569,9198],[3570,9198],[3571,9198],[3572,9198],[3573,9201],[3574,9198],[3575,9198],[3576,9198],[3577,9198],[3578,9201],[3579,9201],[3580,9207],[3581,9207],[3582,9207],[3583,9207],[3584,9207],[3585,9207],[3586,9198],[3587,9198],[3588,9198],[3589,9198],[3590,9198],[3591,9198],[3592,9198],[3593,9198],[3594,9198],[3595,9198],[3596,9198],[3597,9198],[3598,9198],[3599,9198],[3600,9198],[3601,9198],[3602,9198],[3603,9198],[3604,9198],[3605,9198],[3606,9198],[3607,9198],[3608,9198],[3609,9198],[3610,9198],[3611,9198],[3612,9198],[3613,9198],[3614,9198],[3615,9198],[3616,9198],[3617,9198],[3618,9198],[3619,9198],[3620,9198],[3621,9198],[3622,9198],[3623,9198],[3624,9198],[3625,9198],[3626,9198],[3627,9198],[3628,9198],[3629,9198],[3630,9198],[3631,9198],[3632,9198],[3633,9198],[3634,9198],[3635,9198],[3636,9198],[3637,9198],[3638,9198],[3639,9198],[3640,9198],[3641,9198],[3642,9198],[3643,9198],[3644,9198],[3645,9198],[3646,9198],[3647,9198],[3648,9198],[3649,9198],[3650,9198],[3651,9198],[3652,9198],[3653,9198],[3654,9198],[3655,9198],[3656,9198],[3657,9198],[3658,9198],[3659,9198],[3660,9198],[3661,9198],[3662,9198],[3663,9198],[3664,9198],[3665,9198],[3666,9198],[3667,9198],[3668,9198],[3669,9198],[3670,9198],[3671,9198],[3672,9198],[3673,9198],[3674,9198],[3675,9198],[3676,9198],[3677,9198],[3678,9198],[3679,9198],[3680,9198],[3681,9198],[3682,9198],[3683,9198],[3684,9198],[3685,9198],[3686,9198],[3687,9198],[3688,9198],[3689,9198],[3690,9198],[3691,9201],[3692,9201],[3693,9198],[3694,9201],[3695,9198],[3696,9201],[3697,9198],[3698,9201],[3699,9198],[3700,9203],[3701,9203],[3702,9198],[3703,9198],[3704,9198],[3705,9198],[3706,9198],[3707,9198],[3708,9198],[3709,9198],[3710,9198],[3711,9198],[3712,9201],[3713,9201],[3714,9201],[3715,9201],[3716,9201],[3717,9201],[3718,9203],[3719,9203],[3720,9203],[3721,9201],[3722,9201],[3723,9201],[3724,9199],[3725,9201],[3726,9201],[3727,9201],[3728,9201],[3729,9203],[3730,9200],[3731,9201],[3732,9201],[3733,9203],[3734,9203],[3735,9203],[3736,9201],[3737,9201],[3738,9201],[3739,9201],[3740,9203],[3741,9203],[3742,9203],[3743,9203],[3744,9201],[3745,9201],[3746,9203],[3747,9203],[3748,9203],[3749,9203],[3750,9203],[3751,9203],[3752,9203],[3753,9203],[3754,9203],[3755,9203],[3756,9203],[3757,9203],[3758,9200],[3759,9200],[3760,9200],[3761,9203],[3762,9203],[3763,9198],[3764,9198],[3765,9198],[3766,9198],[3767,9198],[3768,9198],[3769,9198],[3770,9198],[3771,9198],[3772,9198],[3773,9198],[3774,9198],[3775,9198],[3776,9198],[3777,9198],[3778,9198],[3779,9198],[3780,9198],[3781,9198],[3782,9198],[3783,9198],[3784,9198],[3785,9198],[3786,9198],[3787,9198],[3788,9198],[3789,9198],[3790,9198],[3791,9198],[3792,9198],[3793,9198],[3794,9198],[3795,9198],[3796,9198],[3797,9198],[3798,9198],[3799,9198],[3800,9198],[3801,9198],[3802,9198],[3803,9198],[3804,9198],[3805,9198],[3806,9198],[3807,9198],[3808,9198],[3809,9198],[3810,9198],[3811,9198],[3812,9198],[3813,9198],[3814,9198],[3815,9198],[3816,9198],[3817,9198],[3818,9198],[3819,9198],[3820,9198],[3821,9198],[3822,9198],[3823,9198],[3824,9198],[3825,9198],[3826,9198],[3827,9198],[3828,9198],[3829,9198],[3830,9198],[3831,9198],[3832,9198],[3833,9198],[3834,9198],[3835,9198],[3836,9198],[3837,9198],[3838,9198],[3839,9198],[3840,9198],[3841,9198],[3842,9198],[3843,9198],[3844,9198],[3845,9198],[3846,9198],[3847,9198],[3848,9198],[3849,9198],[3850,9198],[3851,9198],[3852,9198],[3853,9198],[3854,9198],[3855,9198],[3856,9198],[3857,9198],[3858,9198],[3859,9198],[3860,9198],[3861,9198],[3862,9198],[3863,9198],[3864,9198],[3865,9198],[3866,9198],[3867,9198],[3868,9198],[3869,9198],[3870,9198],[3871,9198],[3872,9198],[3873,9198],[3874,9198],[3875,9198],[3876,9201],[3877,9198],[3878,9198],[3879,9198],[3880,9198],[3881,9198],[3882,9198],[3883,9198],[3884,9198],[3885,9198],[3886,9198],[3887,9198],[3888,9198],[3889,9198],[3890,9198],[3891,9198],[3892,9198],[3893,9198],[3894,9198],[3895,9198],[3896,9198],[3897,9198],[3898,9198],[3899,9198],[3900,9198],[3901,9198],[3902,9198],[3903,9198],[3904,9198],[3905,9198],[3906,9201],[3907,9201],[3908,9198],[3909,9198],[3910,9201],[3911,9199],[3912,9203],[3913,9199],[3914,9199],[3915,9201],[3916,9201],[3917,9199],[3918,9203],[3919,9198],[3920,9198],[3921,9198],[3922,9198],[3923,9198],[3924,9198],[3925,9198],[3926,9198],[3927,9198],[3928,9198],[3929,9198],[3930,9198],[3931,9198],[3932,9198],[3933,9198],[3934,9198],[3935,9198],[3936,9201],[3937,9201],[3938,9201],[3939,9201],[3940,9199],[3941,9198],[3942,9198],[3943,9198],[3944,9201],[3945,9201],[3946,9201],[3947,9201],[3948,9201],[3949,9201],[3950,9199],[3951,9201],[3952,9201],[3953,9201],[3954,9199],[3955,9201],[3956,9199],[3957,9199],[3958,9201],[3959,9199],[3960,9199],[3961,9207],[3962,9201],[3963,9201],[3964,9198],[3965,9201],[3966,9201],[3967,9199],[3968,9199],[3969,9207],[3970,9207],[3971,9207],[3972,9207],[3973,9207],[3974,9207],[3975,9207],[3976,9207],[3977,9207],[3978,9207],[3979,9207],[3980,9207],[3981,9207],[3982,9201],[3983,9207],[3984,9207],[3985,9207],[3986,9207],[3987,9207],[3988,9198],[3989,9198],[3990,9198],[3991,9198],[3992,9198],[3993,9198],[3994,9198],[3995,9207],[3996,9207],[3997,9207],[3998,9207],[3999,9198],[4000,9198],[4001,9198],[4002,9198],[4003,9207],[4004,9207],[4005,9207],[4006,9207],[4007,9207],[4008,9207],[4009,9207],[4010,9207],[4011,9207],[4012,9198],[4013,9207],[4014,9207],[4015,9207],[4016,9207],[4017,9207],[4018,9207],[4019,9207],[4020,9207],[4021,9207],[4022,9207],[4023,9207],[4024,9207],[4025,9207],[4026,9207],[4027,9207],[4028,9207],[4029,9207],[4030,9207],[4031,9207],[4032,9207],[4033,9207],[4034,9207],[4035,9207],[4036,9207],[4037,9207],[4038,9207],[4039,9207],[4040,9207],[4041,9207],[4042,9207],[4043,9207],[4044,9207],[4045,9207],[4046,9207],[4047,9207],[4048,9207],[4049,9201],[4050,9201],[4051,9201],[4052,9201],[4053,9203],[4054,9201],[4055,9201],[4056,9199],[4057,9199],[4058,9199],[4059,9199],[4060,9199],[4061,9199],[4062,9199],[4063,9199],[4064,9199],[4065,9199],[4066,9199],[4067,9199],[4068,9199],[4069,9199],[4070,9199],[4071,9199],[4072,9199],[4073,9199],[4074,9199],[4075,9199],[4076,9199],[4077,9199],[4078,9199],[4079,9199],[4080,9199],[4081,9199],[4082,9199],[4083,9199],[4084,9199],[4085,9199],[4086,9199],[4087,9199],[4088,9199],[4089,9199],[4090,9199],[4091,9199],[4092,9199],[4093,9199],[4094,9199],[4095,9199],[4096,9199],[4097,9199],[4098,9199],[4099,9201],[4100,9201],[4101,9201],[4102,9201],[4103,9198],[4104,9198],[4105,9198],[4106,9198],[4107,9198],[4108,9198],[4109,9198],[4110,9198],[4111,9198],[4112,9199],[4113,9198],[4114,9198],[4115,9198],[4116,9198],[4117,9198],[4118,9198],[4119,9198],[4120,9198],[4121,9198],[4122,9201],[4123,9204],[4124,9204],[4125,9204],[4126,9204],[4127,9204],[4128,9204],[4129,9204],[4130,9204],[4131,9204],[4132,9204],[4133,9204],[4134,9204],[4135,9204],[4136,9204],[4137,9204],[4138,9204],[4139,9204],[4140,9204],[4141,9204],[4142,9204],[4143,9204],[4144,9204],[4145,9204],[4146,9204],[4147,9204],[4148,9204],[4149,9204],[4150,9204],[4151,9204],[4152,9204],[4153,9204],[4154,9204],[4155,9204],[4156,9204],[4157,9204],[4158,9204],[4159,9204],[4160,9204],[4161,9204],[4162,9204],[4163,9204],[4164,9204],[4165,9204],[4166,9204],[4167,9204],[4168,9204],[4169,9204],[4170,9204],[4171,9204],[4172,9204],[4173,9204],[4174,9204],[4175,9204],[4176,9204],[4177,9204],[4178,9204],[4179,9204],[4180,9204],[4181,9204],[4182,9204],[4183,9204],[4184,9204],[4185,9204],[4186,9204],[4187,9204],[4188,9204],[4189,9204],[4190,9204],[4191,9204],[4192,9204],[4193,9204],[4194,9204],[4195,9204],[4196,9204],[4197,9204],[4198,9204],[4199,9204],[4200,9204],[4201,9204],[4202,9204],[4203,9204],[4204,9204],[4205,9204],[4206,9204],[4207,9204],[4208,9204],[4209,9204],[4210,9204],[4211,9204],[4212,9204],[4213,9204],[4214,9204],[4215,9204],[4216,9204],[4217,9204],[4218,9204],[4219,9204],[4220,9204],[4221,9204],[4222,9204],[4223,9204],[4224,9204],[4225,9204],[4226,9204],[4227,9204],[4228,9204],[4229,9204],[4230,9204],[4231,9204],[4232,9204],[4233,9204],[4234,9204],[4235,9204],[4236,9204],[4237,9204],[4238,9204],[4239,9204],[4240,9204],[4241,9204],[4242,9204],[4243,9204],[4244,9204],[4245,9204],[4246,9204],[4247,9204],[4248,9204],[4249,9204],[4250,9204],[4251,9204],[4252,9204],[4253,9204],[4254,9204],[4255,9204],[4256,9204],[4257,9204],[4258,9204],[4259,9204],[4260,9204],[4261,9204],[4262,9204],[4263,9204],[4264,9204],[4265,9204],[4266,9204],[4267,9204],[4268,9204],[4269,9204],[4270,9204],[4271,9204],[4272,9204],[4273,9204],[4274,9204],[4275,9204],[4276,9204],[4277,9204],[4278,9204],[4279,9204],[4280,9204],[4281,9204],[4282,9204],[4283,9204],[4284,9204],[4285,9204],[4286,9204],[4287,9204],[4288,9204],[4289,9204],[4290,9204],[4291,9204],[4292,9204],[4293,9204],[4294,9204],[4295,9204],[4296,9204],[4297,9204],[4298,9204],[4299,9204],[4300,9204],[4301,9204],[4302,9204],[4303,9204],[4304,9204],[4305,9204],[4306,9204],[4307,9204],[4308,9204],[4309,9204],[4310,9204],[4311,9204],[4312,9204],[4313,9204],[4314,9204],[4315,9204],[4316,9204],[4317,9204],[4318,9204],[4319,9204],[4320,9204],[4321,9204],[4322,9204],[4323,9204],[4324,9204],[4325,9204],[4326,9204],[4327,9204],[4328,9204],[4329,9204],[4330,9204],[4331,9204],[4332,9204],[4333,9204],[4334,9204],[4335,9204],[4336,9204],[4337,9204],[4338,9204],[4339,9204],[4340,9204],[4341,9204],[4342,9204],[4343,9204],[4344,9204],[4345,9204],[4346,9204],[4347,9204],[4348,9204],[4349,9204],[4350,9204],[4351,9204],[4352,9204],[4353,9204],[4354,9204],[4355,9204],[4356,9204],[4357,9204],[4358,9204],[4359,9204],[4360,9204],[4361,9204],[4362,9204],[4363,9204],[4364,9204],[4365,9204],[4366,9204],[4367,9204],[4368,9204],[4369,9204],[4370,9204],[4371,9204],[4372,9204],[4373,9204],[4374,9204],[4375,9204],[4376,9204],[4377,9204],[4378,9204],[4379,9204],[4380,9204],[4381,9204],[4382,9204],[4383,9204],[4384,9204],[4385,9204],[4386,9204],[4387,9204],[4388,9204],[4389,9204],[4390,9204],[4391,9204],[4392,9204],[4393,9204],[4394,9204],[4395,9204],[4396,9204],[4397,9204],[4398,9204],[4399,9204],[4400,9204],[4401,9204],[4402,9204],[4403,9204],[4404,9204],[4405,9204],[4406,9204],[4407,9204],[4408,9204],[4409,9204],[4410,9204],[4411,9204],[4412,9204],[4413,9204],[4414,9204],[4415,9204],[4416,9204],[4417,9204],[4418,9204],[4419,9204],[4420,9204],[4421,9204],[4422,9204],[4423,9204],[4424,9204],[4425,9204],[4426,9204],[4427,9204],[4428,9204],[4429,9204],[4430,9204],[4431,9204],[4432,9204],[4433,9204],[4434,9204],[4435,9204],[4436,9204],[4437,9204],[4438,9204],[4439,9204],[4440,9204],[4441,9204],[4442,9204],[4443,9204],[4444,9204],[4445,9204],[4446,9204],[4447,9204],[4448,9204],[4449,9204],[4450,9204],[4451,9204],[4452,9204],[4453,9204],[4454,9204],[4455,9204],[4456,9204],[4457,9204],[4458,9204],[4459,9204],[4460,9204],[4461,9204],[4462,9204],[4463,9204],[4464,9204],[4465,9204],[4466,9204],[4467,9204],[4468,9204],[4469,9204],[4470,9204],[4471,9204],[4472,9204],[4473,9204],[4474,9204],[4475,9204],[4476,9204],[4477,9204],[4478,9204],[4479,9204],[4480,9204],[4481,9204],[4482,9204],[4483,9204],[4484,9198],[4485,9201],[4486,9201],[4487,9201],[4488,9201],[4489,9201],[4490,9201],[4491,9201],[4492,9201],[4493,9198],[4494,9201],[4495,9201],[4496,9201],[4497,9201],[4498,9201],[4499,9201],[4500,9200],[4501,9200],[4502,9200],[4503,9201],[4504,9201],[4505,9198],[4506,9201],[4507,9201],[4508,9201],[4509,9201],[4510,9201],[4511,9203],[4512,9203],[4513,9203],[4514,9203],[4515,9199],[4516,9199],[4517,9198],[4518,9199],[4519,9198],[4520,9198],[4521,9199],[4522,9198],[4523,9198],[4524,9198],[4525,9198],[4526,9198],[4527,9198],[4528,9207],[4529,9207],[4530,9207],[4531,9207],[4532,9207],[4533,9201],[4534,9201],[4535,9201],[4536,9201],[4537,9201],[4538,9201],[4539,9201],[4540,9201],[4541,9201],[4542,9201],[4543,9201],[4544,9201],[4545,9201],[4546,9201],[4547,9201],[4548,9201],[4549,9201],[4550,9201],[4551,9201],[4552,9201],[4553,9201],[4554,9201],[4555,9201],[4556,9201],[4557,9201],[4558,9201],[4559,9201],[4560,9201],[4561,9201],[4562,9201],[4563,9201],[4564,9201],[4565,9201],[4566,9201],[4567,9201],[4568,9201],[4569,9201],[4570,9201],[4571,9201],[4572,9201],[4573,9201],[4574,9201],[4575,9201],[4576,9201],[4577,9201],[4578,9203],[4579,9203],[4580,9203],[4581,9207],[4582,9207],[4583,9207],[4584,9207],[4585,9207],[4586,9207],[4587,9207],[4588,9207],[4589,9207],[4590,9207],[4591,9207],[4592,9207],[4593,9207],[4594,9207],[4595,9207],[4596,9198],[4597,9198],[4598,9198],[4599,9198],[4600,9198],[4601,9201],[4602,9199],[4603,9199],[4604,9199],[4605,9199],[4606,9199],[4607,9199],[4608,9199],[4609,9207],[4610,9207],[4611,9207],[4612,9207],[4613,9207],[4614,9207],[4615,9207],[4616,9207],[4617,9207],[4618,9207],[4619,9207],[4620,9207],[4621,9207],[4622,9207],[4623,9207],[4624,9207],[4625,9207],[4626,9207],[4627,9207],[4628,9207],[4629,9207],[4630,9207],[4631,9207],[4632,9207],[4633,9207],[4634,9207],[4635,9207],[4636,9207],[4637,9207],[4638,9207],[4639,9207],[4640,9207],[4641,9207],[4642,9207],[4643,9207],[4644,9207],[4645,9207],[4646,9207],[4647,9207],[4648,9207],[4649,9207],[4650,9207],[4651,9207],[4652,9207],[4653,9207],[4654,9207],[4655,9207],[4656,9207],[4657,9207],[4658,9207],[4659,9207],[4660,9207],[4661,9207],[4662,9207],[4663,9207],[4664,9207],[4665,9207],[4666,9207],[4667,9207],[4668,9207],[4669,9198],[4670,9198],[4671,9198],[4672,9198],[4673,9198],[4674,9198],[4675,9198],[4676,9198],[4677,9198],[4678,9198],[4679,9198],[4680,9198],[4681,9198],[4682,9198],[4683,9198],[4684,9198],[4685,9198],[4686,9198],[4687,9198],[4688,9198],[4689,9198],[4690,9198],[4691,9198],[4692,9198],[4693,9198],[4694,9198],[4695,9198],[4696,9198],[4697,9201],[4698,9199],[4699,9203],[4700,9201],[4701,9198],[4702,9198],[4703,9198],[4704,9198],[4705,9198],[4706,9198],[4707,9198],[4708,9198],[4709,9198],[4710,9198],[4711,9198],[4712,9198],[4713,9198],[4714,9198],[4715,9198],[4716,9198],[4717,9201],[4718,9198],[4719,9198],[4720,9198],[4721,9198],[4722,9198],[4723,9198],[4724,9198],[4725,9198],[4726,9201],[4727,9201],[4728,9199],[4729,9201],[4730,9199],[4731,9200],[4732,9201],[4733,9201],[4734,9203],[4735,9203],[4736,9203],[4737,9203],[4738,9201],[4739,9201],[4740,9201],[4741,9201],[4742,9198],[4743,9198],[4744,9198],[4745,9198],[4746,9198],[4747,9198],[4748,9203],[4749,9198],[4750,9198],[4751,9198],[4752,9198],[4753,9198],[4754,9198],[4755,9198],[4756,9198],[4757,9198],[4758,9198],[4759,9198],[4760,9198],[4761,9198],[4762,9198],[4763,9198],[4764,9198],[4765,9198],[4766,9198],[4767,9198],[4768,9198],[4769,9198],[4770,9198],[4771,9198],[4772,9198],[4773,9198],[4774,9198],[4775,9198],[4776,9201],[4777,9203],[4778,9203],[4779,9203],[4780,9203],[4781,9203],[4782,9201],[4783,9203],[4784,9203],[4785,9203],[4786,9203],[4787,9201],[4788,9201],[4789,9201],[4790,9201],[4791,9201],[4792,9201],[4793,9201],[4794,9201],[4795,9201],[4796,9198],[4797,9201],[4798,9201],[4799,9201],[4800,9201],[4801,9201],[4802,9201],[4803,9201],[4804,9201],[4805,9201],[4806,9201],[4807,9201],[4808,9199],[4809,9199],[4810,9199],[4811,9199],[4812,9199],[4813,9199],[4814,9199],[4815,9199],[4816,9199],[4817,9199],[4818,9199],[4819,9199],[4820,9199],[4821,9199],[4822,9199],[4823,9199],[4824,9199],[4825,9199],[4826,9199],[4827,9199],[4828,9199],[4829,9201],[4830,9199],[4831,9199],[4832,9199],[4833,9203],[4834,9201],[4835,9198],[4836,9198],[4837,9199],[4838,9199],[4839,9199],[4840,9201],[4841,9201],[4842,9201],[4843,9198],[4844,9198],[4845,9198],[4846,9198],[4847,9198],[4848,9198],[4849,9198],[4850,9198],[4851,9198],[4852,9198],[4853,9198],[4854,9198],[4855,9198],[4856,9198],[4857,9198],[4858,9198],[4859,9198],[4860,9198],[4861,9198],[4862,9198],[4863,9198],[4864,9198],[4865,9198],[4866,9198],[4867,9198],[4868,9199],[4869,9198],[4870,9198],[4871,9198],[4872,9198],[4873,9198],[4874,9198],[4875,9198],[4876,9198],[4877,9198],[4878,9198],[4879,9198],[4880,9198],[4881,9198],[4882,9198],[4883,9198],[4884,9198],[4885,9198],[4886,9198],[4887,9198],[4888,9198],[4889,9198],[4890,9199],[4891,9198],[4892,9198],[4893,9198],[4894,9198],[4895,9199],[4896,9199],[4897,9199],[4898,9199],[4899,9198],[4900,9198],[4901,9198],[4902,9198],[4903,9198],[4904,9199],[4905,9199],[4906,9198],[4907,9199],[4908,9199],[4909,9199],[4910,9199],[4911,9198],[4912,9199],[4913,9199],[4914,9199],[4915,9199],[4916,9199],[4917,9198],[4918,9198],[4919,9198],[4920,9198],[4921,9199],[4922,9199],[4923,9198],[4924,9198],[4925,9198],[4926,9199],[4927,9199],[4928,9199],[4929,9199],[4930,9199],[4931,9199],[4932,9199],[4933,9199],[4934,9199],[4935,9199],[4936,9199],[4937,9199],[4938,9199],[4939,9199],[4940,9199],[4941,9198],[4942,9198],[4943,9199],[4944,9198],[4945,9199],[4946,9198],[4947,9198],[4948,9198],[4949,9198],[4950,9198],[4951,9198],[4952,9198],[4953,9199],[4954,9199],[4955,9198],[4956,9199],[4957,9199],[4958,9199],[4959,9199],[4960,9199],[4961,9199],[4962,9198],[4963,9198],[4964,9198],[4965,9198],[4966,9198],[4967,9198],[4968,9198],[4969,9198],[4970,9199],[4971,9199],[4972,9199],[4973,9199],[4974,9199],[4975,9199],[4976,9199],[4977,9199],[4978,9199],[4979,9199],[4980,9199],[4981,9199],[4982,9198],[4983,9198],[4984,9198],[4985,9198],[4986,9198],[4987,9198],[4988,9199],[4989,9198],[4990,9198],[4991,9198],[4992,9199],[4993,9199],[4994,9199],[4995,9198],[4996,9198],[4997,9198],[4998,9198],[4999,9198],[5000,9199],[5001,9199],[5002,9199],[5003,9198],[5004,9199],[5005,9198],[5006,9198],[5007,9198],[5008,9199],[5009,9198],[5010,9198],[5011,9198],[5012,9198],[5013,9198],[5014,9199],[5015,9199],[5016,9198],[5017,9198],[5018,9198],[5019,9198],[5020,9198],[5021,9198],[5022,9198],[5023,9198],[5024,9198],[5025,9198],[5026,9198],[5027,9198],[5028,9198],[5029,9198],[5030,9198],[5031,9198],[5032,9198],[5033,9198],[5034,9198],[5035,9198],[5036,9198],[5037,9198],[5038,9198],[5039,9198],[5040,9198],[5041,9198],[5042,9198],[5043,9198],[5044,9198],[5045,9198],[5046,9199],[5047,9199],[5048,9199],[5049,9198],[5050,9199],[5051,9199],[5052,9199],[5053,9199],[5054,9198],[5055,9198],[5056,9198],[5057,9198],[5058,9198],[5059,9198],[5060,9198],[5061,9198],[5062,9198],[5063,9199],[5064,9198],[5065,9198],[5066,9198],[5067,9198],[5068,9198],[5069,9198],[5070,9198],[5071,9198],[5072,9198],[5073,9198],[5074,9198],[5075,9198],[5076,9198],[5077,9198],[5078,9198],[5079,9198],[5080,9198],[5081,9198],[5082,9203],[5083,9204],[5084,9203],[5085,9198],[5086,9203],[5087,9204],[5088,9202],[5089,9204],[5090,9199],[5091,9199],[5092,9199],[5093,9201],[5094,9201],[5095,9201],[5096,9198],[5097,9198],[5098,9198],[5099,9199],[5100,9199],[5101,9199],[5102,9199],[5103,9198],[5104,9198],[5105,9198],[5107,9199],[5108,9202],[5113,9199],[5115,9199],[5116,9199],[5117,9198],[5118,9198],[5119,9203],[5122,9202],[5123,9199],[5124,9198],[5125,9198],[5126,9203],[5127,9198],[5141,9203],[5142,9203],[5143,9203],[5165,9201],[5169,9198],[5203,9199],[5226,9198],[5227,9201],[5228,9201],[5229,9201],[5242,9198],[5243,9202],[5244,9203],[5716,9203],[5717,9200],[5718,9200],[5721,9200],[5728,9204],[5729,9200],[5734,9200],[5735,9200],[5736,9200],[5737,9200],[5738,9204],[5739,9200],[5740,9200],[5741,9210],[5746,9198],[5748,9198],[5749,9198],[5755,9198],[5756,9198],[5757,9198],[5758,9200],[5791,9202],[5793,9201],[6020,9205],[6029,9199],[6042,9198],[6078,9198],[6081,9198],[6082,9198],[6086,9198],[6118,9198],[6181,9201],[6195,9198],[6261,9198],[6264,9198],[6275,9201],[6282,9198],[6283,9198],[6284,9198],[6287,9198],[6288,9198],[6289,9198],[6290,9198],[6291,9198],[6292,9198],[6302,9198],[6323,9203],[6325,9203],[6337,9198],[6338,9200],[6592,9202],[6600,9202],[6601,9198],[6626,9198],[6699,9200],[6710,9199],[6711,9198],[6724,9203],[6726,9200],[6745,9200],[6747,9198],[6752,9198],[6759,9201],[6760,9198],[6765,9198],[6775,9201],[6778,9198],[6786,9198],[6808,9209],[6809,9198],[6810,9198],[6811,9201],[6812,9201],[6813,9200],[6814,9201],[6815,9200],[6821,9198],[6822,9202],[6824,9198],[6828,9198],[6829,9198],[6830,9198],[6831,9198],[6832,9198],[6835,9214],[6836,9214],[6837,9214],[6838,9214],[6848,9200],[7080,9200],[7081,9199],[7087,9200],[7089,9201],[7090,9201],[7091,9201],[7092,9203],[7098,9200],[7120,9198],[7121,9200],[7128,9198],[7140,9201],[7160,9201],[7174,9200],[7182,9200],[7187,9198],[7201,9198],[7203,9198],[7204,9199],[7206,9199],[7215,9205],[7219,9203],[7235,9198],[7253,9201],[7260,9198],[7263,9198],[7271,9198],[7285,9198],[7312,9199],[7313,9198],[7314,9202],[7320,9202],[7326,9202],[7344,9198],[7350,9198],[7354,9198],[7357,9199],[7358,9199],[7360,9199],[7363,9198],[7364,9203],[7370,9198],[7371,9198],[7390,9199],[7397,9198],[7398,9202],[7405,9208],[7413,9198],[7440,9198],[7445,9198],[7455,9198],[7460,9200],[7465,9200],[7487,9198],[7502,9198],[7518,9198],[7527,9200],[7546,9203],[7549,9198],[7555,9198],[7561,9198],[7570,9198],[7584,9198],[7590,9198],[7603,9198],[7605,9198],[7609,9198],[7620,9198],[7634,9198],[7635,9199],[7637,9199],[7638,9203],[7639,9199],[7640,9200],[7714,9199],[7717,9198],[7718,9199],[7748,9198],[7753,9202],[7754,9200],[7755,9198],[7778,9199],[7795,9200],[7814,9201],[7830,9198],[7840,9201],[7851,9198],[7852,9198],[7853,9198],[7854,9198],[7855,9198],[7856,9198],[7857,9198],[7858,9198],[7861,9198],[7863,9198],[7865,9198],[7866,9198],[7868,9198],[7885,9206],[7891,9198],[7894,9202],[7895,9199],[7912,9200],[7984,9202],[7988,9203],[8000,9203],[8010,9201],[8012,9200],[8013,9203],[8018,9198],[8023,9202],[8026,9200],[8053,9200],[8070,9198],[8071,9198],[8072,9198],[8073,9198],[8074,9201],[8075,9198],[8076,9198],[8077,9201],[8078,9201],[8079,9201],[8080,9198],[8081,9201],[8082,9201],[8083,9198],[8084,9199],[8087,9198],[8097,9201],[8100,9198],[8133,9200],[8183,9203],[8188,9203],[8190,9203],[8192,9203],[8194,9203],[8197,9204],[8199,9203],[8201,9199],[8203,9199],[8268,9203],[8293,9202],[8301,9201],[8312,9199],[8313,9207],[8320,9202],[8327,9201],[8332,9200],[8333,9200],[8334,9199],[8335,9201],[8337,9198],[8338,9198],[8339,9198],[8340,9198],[8341,9201],[8356,9200],[9100,9203],[9101,9198],[9104,9200],[9105,9198],[9106,9198],[9107,9198],[9108,9198],[9109,9198],[9110,9214],[9111,9214],[9112,9214],[9113,9214],[9114,9200],[9115,9200],[9130,9198],[9132,9203],[9133,9203],[9134,9203],[9148,9200],[9153,9199],[9155,9201],[9174,9203],[9179,9200],[9187,9199],[9188,9199],[9189,9199],[9190,9199],[9191,9199],[9192,9199],[9193,9199],[9194,9199],[9195,9199],[9196,9199]],"b":[],"c":"OjAAAAEAAAAAABEAEAAAAN0CqAXSDNsMpg6LEjIUtBq1GrYatxrWG9cblyOYI5kjmiPPIw==","e":"OzAAAAEAAAEiEQABAOUB6AGsA5YFAAChBQEApQUAAKcFAwCsBQAAtAUAALYFew4zFDoCbxZoAr8ZfQA+GkMAgxo+AKkbhAEvHeIAEx7bBQ=="}],\ -["mavlink",{"t":"TTTFFSSSKFFGKRKTPPCNNNNNNNNNNCCHNNNNNNNNNNNNCNNNOHNNNMMNNNNNNCMNNNNNNNNNNNNNNNOCNNNNNNNMNNMMONNMNNNNCMONNHHHHHMNMNNNNOMMNNNNNNNNNMNNONNNNNNNNNNNNNNNNNNNNCCHHHPPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTPFPPFPFFPFTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFOPFPFPFPPFFPFTTTTTTPFPFPFPFPFPPPPGGGGGFFGGFGPFPPFPFPFTTTTTTTTTTTTPPPFPPPPFPFPFPPPPFPFPPPPPPPPFPFPPPPPPPPPPPFPFPPFPPPFPPFPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPFFOPFPFPFPFPFPFPFPFPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPFFGGGGGGGGGGGGGOOOGOPFPFPFPFPFPFPFPFPFPFPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPFPFPFPFPFPFPFGGOPFTTTTTTTTPFTTTPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPTTTTTTTTPFPFPFPFPFTTTTTTTTTTPFTTPFPFFGFFPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPFPPPPFPFOPFPPPPPPFPPPPPPPPFGGGGGGPFPPPPPPPPPPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPPFFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPFPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPFPFPPPPPPPPPPFPFPFTTTTTTTTPFPFPFPFPPGGGFFFFGGGGGGGFGGGGGGGGGGGGFGPPPFPFPFPFTTTTTTTTTTTTTTTPPFFPFPFPFPFPFPFTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTPFPFPFGFFFOOOOPPPPPPPFPFPPPPFGGPFPPPPTPFPPPPPPPPPFPTTTPFPPFFPFPFPPFFPFPFPFPFPFPFGGFGPPPPPFPFPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTPPPPPPPPTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTPTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTPFOOOOPFPFPFPFPFPFPFPFPFPFPPFPFPFPFPPFPPPPPPPFPOPPPPPPPPFPFPFPFGGGGGGGGGGGGGGGGGGGFGGGGFGGGGGGFGGGGGGGGGGGGGGGGGGGGGFFGGGGGGGFGGGGFGGGGPFPFPFPPPGPPFFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPPPFPFPPPPPPPPPPPPFPFPGGGOPPPPPPPPFPFPFPFPFPFPPFPFPPPPFPFPPPFPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPFTTTTTTTTTTTTPFPPPPFGGOOOGGFGGGPFPFPFPFPFPFPFPFPFPFPFPFPPPFPFPFPFPFPFPPPPPPPPPPPPPFPPFGGGPFPFPPFPFFPPFPFFPPPPPFPFPPPPPTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPFPFPFPFPFPFPPOPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFGGFGGGGGGPFPFPFPFPFPFPPPPPPPFPFTTPFGFPPPPPFPPPPPPFPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPFPPPPPPTTTTTPPPPPPTTTPTTTTPFPTTTTTTTTPPPPPPFGGGGGGGFFFFGPFPFPFPFPFPFPPPPPPPFPFPFPPPPPOOOGGOGPFPFPFPPPPPPPPPPPPPPPPPPPPPFPPFFGGGPPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONONNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTPFTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPPFFPFTTTTTTPFPFPFPFPPPPGGGGFFGGFGPPFPFPFTTTTTTTTTTTTPFPFPFPPPPFPFPFPPPPPPPPPPPFPFPPFPPPFPPFPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPFFOPFPFPFPFPFPFPFPPPPPPPFPFFGGGGGGGGGGGPFPFPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPTTTTTTTTPFPFTTTTTTTTTTPFTTPFPFGFFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPPPPPFPPPPPPPPFGGGGGGPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTTTPPPPPPPPPPPFPFPFPFPFPPFFPFPFPFPPPPPPPPPPFPFPFTTTTTTTTPFPFPFPFPPFFFFGGFGPFPFTTTTTTTTTTTTTTTPPFFPFPFPFPFPFPFTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTPFPFFFFOPFPFPPPPPFPPFFPFPFPPFFPFPFPFPFPFPFGPPPPPFPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTPPPPPPPPTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTPTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTPFPFPFPFPFPFPFPFPFPPFPFPFPFPPFPPPPPPPFPOPPPPPPPPFGGGGGGGGGGGGGGGGGGFGGGGFGGGGGGFGGGGGGGGGGGGGGGGGGGGFFGGGGGFGGGGFGGGGPFPFPFPPPGPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPGPPPPPPPPFPFPFPFPFPFPPFPFPPPPFPFPPFPFPFPFPFTTTTTTTTTTTTPFPPPPFGGFGGGPFPFPFPFPFPFPFPFPPPFPFPFPFPPGGPFPFPPFPFFPPFPFFPFPPPPPTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPPPPPPPPPPPPPPFPFPFGFGGGGPFPFPFPFPFPFPFPFTTPFFPPPPPFPPPPPPFPTTTTTTTTPPPPPPFGGFGPFPFPFPFPFPFPPPPPPPFPFPPPPPOGGOGPFPFPPPPPPPPPPPPPPPPPPPPPFPFGGGPPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONONNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPGGPGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOTTTTTTPPPPPPPFPFPPPGGGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNOOOOOONNNNNNNNNONNNNNNNNNNNNNNNNNNNOOOOONNNNNFNNNNNNNNNNNNNNPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTPFTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPPFFPFTTTTTTPFPFPFPFPPPPGGGGFFGGFGPPFPFPFTTTTTTTTTTTTPFPFPFPPPPFPFPFPPPPPPPPPPPFPFPPFPPPFPPFPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPFFOPFPFPFPFPFPFPFPPPPPPPFPFFGGGGGGGGGGGPFPFPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPTTTTTTTTPFPFTTTTTTTTTTPFTTPFPFGFFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPPPPPFPPPPPPPPFGGGGGGPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTTTPPPPPPPPPPPFPFPFPFPFPPFFPFPFPFPPPPPPPPPPFPFPFTTTTTTTTPFPFPFPFPPFFFFGGFGPFPFTTTTTTTTTTTTTTTPPFFPFPFPFPFPFPFTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTPFPFFFFOOPFPFPPPPPFPPFFPFPFPPFFPFPFPFPFPFPFGPPPPPFPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTPPPPPPPPTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTPTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTPFPFPFPFPFPFPFPFPFPPFPFPFPFPPFPPPPPPPFPOPPPPPPPPFGGGGGGGGGGGGGGGGGGFGGGGFGGGGGGFGGGGGGGGGGGGGGGGGGGGFFGGGGGFGGGGFGGGGPFPFPFPPPGPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPGPPPPPPPPFPFPFPFPFPFPPFPFPPPPFPFPPFPFPFPFPFTTTTTTTTTTTTPFPPPPFGGFGGGPFPFPFPFPFPFPFPFPPPFPFPFPFPPGGPFPFPPFPFFPPFPFFPFPPPPPTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPPPPPPPPPPPPPPFPFPFGFGGGGPFPFPFPFPFPFPFPFTTPFFPPPPPFPPPPPPFPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPFPPPPPPTTTTTPPPPPPTTTPTTTTPFPTTTTTTTTPPPPPPFGGGGGGGFFFFGPFPFPFPFPFPFPPPPPPPFPFPPPPPOOGGOGPFPFPPPPPPPPPPPPPPPPPPPPPFPFGGGPPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONONNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOKHM","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","has_valid_crc","has_valid_crc","header","header","header","header","icarous","incompatibility_flags","incompatibility_flags_mut","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","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","serialize_message_for_signing","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","RustDefault","remove_trailing_zeroes","rust_default"],"q":[[0,"mavlink"],[158,"mavlink::ardupilotmega"],[15500,"mavlink::bytes"],[15524,"mavlink::bytes_mut"],[15549,"mavlink::common"],[27062,"mavlink::error"],[27104,"mavlink::error::ParserError"],[27109,"mavlink::icarous"],[27241,"mavlink::peek_reader"],[27256,"mavlink::uavionix"],[39176,"mavlink::utils"],[39179,"mavlink_core"],[39180,"core::clone"],[39181,"mavlink_core::connection"],[39182,"alloc::boxed"],[39183,"std::io::error"],[39184,"core::result"],[39185,"mavlink_core::error"],[39186,"serde::de"],[39187,"core::fmt"],[39188,"mavlink_core::peek_reader"],[39189,"std::io"],[39190,"serde::ser"],[39191,"core::any"],[39192,"core::cmp"],[39193,"core::iter::traits::collect"],[39194,"core::option"],[39195,"core::hash"],[39196,"mavlink_core::bytes"],[39197,"mavlink_core::bytes_mut"],[39198,"alloc::string"],[39199,"mavlink_core::utils"]],"i":[21,21,21,0,0,0,0,0,0,0,0,0,0,21,0,21,9,9,0,8,9,10,6,7,8,9,10,6,7,0,0,0,6,7,8,9,10,6,7,8,9,10,6,7,0,7,6,7,8,0,8,6,7,12,21,10,8,8,9,6,7,0,12,8,9,10,6,7,8,9,10,6,7,6,7,10,6,7,10,0,7,7,8,9,10,6,7,12,6,7,12,12,10,6,7,12,6,7,6,7,0,15,10,6,7,0,0,0,0,0,15,15,15,15,15,6,7,8,12,21,10,8,9,10,6,7,6,7,7,15,6,7,8,8,9,10,6,7,8,9,10,6,7,8,9,10,6,7,8,9,10,6,7,0,0,0,0,0,394,394,394,394,394,394,394,394,517,517,517,517,517,517,71,0,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,71,0,71,0,498,498,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,50,50,50,50,50,50,50,50,50,50,71,0,71,71,0,71,0,0,71,0,61,61,61,61,61,61,61,61,61,61,61,61,61,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,71,0,71,0,361,71,0,71,0,71,0,71,71,0,0,71,0,38,38,38,38,38,38,71,0,71,0,71,0,71,0,71,0,499,499,499,499,0,0,0,0,0,0,0,0,0,0,0,71,0,478,71,0,71,0,71,0,56,56,56,56,56,56,56,56,56,56,56,56,71,492,492,0,492,492,492,71,0,71,0,71,0,417,417,417,71,0,71,0,505,505,505,505,505,505,505,71,0,71,0,503,503,503,441,441,441,426,426,426,426,71,0,71,0,407,71,0,407,407,71,0,71,374,0,374,374,374,374,471,471,471,471,527,527,527,527,527,71,0,376,376,376,376,376,376,376,376,376,376,376,376,376,71,71,0,0,172,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,479,479,479,479,479,479,71,0,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,71,0,71,0,71,0,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,148,148,0,95,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,419,419,419,419,419,419,419,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,477,477,71,0,71,0,71,0,71,0,71,0,71,0,71,0,0,0,263,71,0,49,49,49,49,49,49,49,49,71,0,49,49,49,71,0,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,406,406,406,406,406,406,57,57,57,57,57,57,57,57,71,0,71,0,71,0,71,0,71,0,69,69,69,69,69,69,69,69,69,69,71,0,69,69,71,0,71,0,0,0,0,0,409,409,409,409,409,409,409,409,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,62,469,469,469,469,469,469,469,469,452,452,452,452,71,0,523,523,523,71,0,71,0,95,71,0,521,521,521,521,521,71,0,451,451,451,451,451,451,451,71,0,0,0,0,0,0,0,71,0,438,438,438,455,455,455,393,393,393,71,0,71,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,66,66,66,66,66,66,66,66,66,66,58,58,58,58,58,58,58,58,58,58,71,0,71,0,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,408,408,408,408,408,408,408,408,408,408,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,71,0,0,71,0,504,504,504,504,504,504,504,504,504,399,399,399,399,399,399,399,399,437,437,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,483,483,483,54,392,392,392,392,392,392,392,392,392,392,392,392,392,392,71,0,71,0,71,0,410,410,410,410,467,467,467,467,467,415,415,415,415,415,445,445,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,389,389,389,389,389,470,470,470,368,368,368,368,368,519,519,444,444,444,444,444,444,444,444,444,444,444,444,444,444,71,0,71,0,482,71,0,71,0,386,386,386,386,386,386,386,386,386,71,0,71,0,71,0,67,67,67,67,67,67,67,67,71,0,71,0,71,0,71,0,442,442,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,450,450,71,0,71,0,71,0,71,0,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,71,71,0,0,71,0,71,0,71,0,71,0,71,0,71,0,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,71,0,71,0,64,64,64,64,64,64,64,64,64,64,64,64,64,64,71,0,71,0,71,0,0,0,0,0,95,180,284,77,491,491,491,491,491,491,71,0,71,0,424,424,424,71,0,0,0,71,0,371,371,371,371,62,71,0,388,388,388,520,520,520,520,520,71,0,520,55,55,55,71,0,71,71,0,0,71,0,71,0,71,71,0,0,71,0,71,0,71,0,71,0,71,0,71,0,0,0,0,0,480,480,480,480,71,0,71,0,480,480,480,480,71,0,71,0,431,431,431,431,431,431,506,506,506,506,506,506,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,400,400,400,400,400,400,400,400,478,478,478,478,478,478,478,478,369,369,369,369,369,398,398,398,528,528,528,528,528,429,380,380,380,380,380,380,380,380,380,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,391,391,391,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,382,382,382,382,382,382,382,502,502,381,381,381,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,423,423,423,423,423,423,423,423,423,373,373,373,373,373,496,396,396,396,396,396,396,396,396,396,51,463,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,411,411,411,411,411,411,411,411,411,411,411,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,490,490,490,490,513,513,513,513,513,446,446,446,446,446,446,446,446,446,446,446,446,446,446,370,370,370,370,446,446,500,500,43,43,378,378,378,378,378,378,378,378,43,43,43,43,43,43,484,484,484,484,484,484,484,500,500,500,500,500,500,500,500,500,460,460,460,460,460,460,460,489,489,522,522,522,522,522,522,511,511,511,511,449,449,526,526,526,526,526,526,526,526,412,412,412,379,379,401,401,401,401,401,401,401,401,401,401,401,401,401,439,439,439,439,439,508,525,525,525,453,453,453,453,453,395,395,395,395,395,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,458,458,458,458,458,458,458,516,516,516,516,516,516,516,516,516,516,516,375,375,375,375,375,375,375,375,375,375,60,60,60,60,60,60,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,465,465,481,481,509,509,509,509,509,509,509,473,473,473,473,473,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,413,413,413,413,413,413,413,413,448,448,448,448,448,448,448,448,448,47,47,47,47,47,47,510,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,377,377,377,377,377,377,377,377,377,377,377,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,474,474,474,474,474,68,68,68,68,68,68,68,68,68,68,68,68,68,68,71,0,260,260,260,260,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,418,71,0,71,0,71,0,71,0,418,71,0,454,454,454,454,454,454,71,0,418,172,427,421,421,421,427,427,427,71,0,71,0,71,0,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,0,71,0,71,0,390,390,390,0,71,71,0,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,372,372,372,372,372,402,71,0,71,0,402,402,402,402,384,384,384,402,402,402,402,71,0,71,0,384,0,0,0,95,414,414,414,403,403,403,403,71,0,71,0,71,0,71,0,71,0,71,0,488,71,0,71,0,488,488,488,71,0,71,0,488,71,387,0,387,387,387,387,387,71,0,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,71,0,71,0,71,0,71,0,40,40,40,40,40,40,40,40,40,40,40,40,71,0,385,385,385,71,0,0,0,263,263,263,0,0,0,0,0,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,487,487,71,0,71,0,71,0,71,0,71,0,71,0,436,436,436,436,436,436,436,436,436,436,436,436,71,0,494,494,0,0,0,0,71,0,71,0,71,71,0,71,0,0,71,71,0,71,0,0,475,475,475,475,71,0,71,0,420,420,420,420,420,63,63,63,63,63,420,420,420,420,420,420,420,420,420,420,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,428,428,361,71,0,71,0,468,468,468,468,524,524,524,524,524,524,524,524,524,457,457,457,457,501,501,501,501,501,501,501,501,501,71,0,71,0,71,0,0,0,0,0,0,0,0,0,0,71,0,71,0,71,0,71,0,71,0,71,0,435,435,435,435,435,435,71,0,71,0,53,53,71,0,0,0,485,485,485,485,71,0,440,440,440,440,440,71,0,71,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,0,466,466,466,466,466,466,466,466,456,456,495,71,0,433,433,433,433,433,433,42,42,42,42,42,495,495,495,495,495,495,39,39,39,495,44,44,44,44,71,0,404,41,41,41,41,41,41,41,41,383,383,383,383,383,71,0,0,0,0,0,0,0,0,0,0,0,0,0,71,0,71,0,71,0,71,0,71,0,71,0,397,397,447,447,447,447,71,0,71,0,71,0,416,416,416,416,416,108,180,160,0,0,108,0,71,0,71,0,71,0,512,512,512,512,434,434,434,434,434,434,486,486,486,486,486,486,486,486,486,486,71,0,71,71,0,0,0,0,0,432,432,432,432,96,127,187,292,292,292,264,264,264,207,146,157,160,160,160,95,121,118,102,353,353,243,243,243,243,243,243,147,165,269,73,91,100,327,73,91,100,327,73,91,100,327,284,123,132,201,322,201,322,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,68,69,73,89,91,97,117,119,123,184,187,265,267,271,299,304,308,323,332,337,302,329,302,87,87,77,200,201,202,223,283,338,342,354,303,322,288,288,303,102,303,303,322,303,77,196,347,347,133,153,246,133,153,246,133,153,246,321,359,200,202,200,202,200,202,223,223,136,136,136,136,266,131,320,329,135,187,265,72,72,128,162,169,201,362,244,285,285,285,285,241,314,107,95,121,107,107,272,160,288,139,197,322,362,146,157,146,157,146,157,146,157,110,201,110,143,174,138,143,322,177,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,68,69,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,68,69,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,68,69,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,68,69,114,259,312,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,68,69,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,68,69,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,68,69,189,206,294,206,294,206,294,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,303,81,185,81,81,81,89,300,147,181,209,213,269,110,147,269,147,269,82,135,244,135,244,77,172,284,94,94,87,333,114,323,80,85,189,174,174,152,323,136,258,360,258,360,258,360,360,360,360,360,360,360,205,258,339,360,158,205,258,339,360,158,205,258,339,360,158,205,258,339,360,158,205,258,339,360,158,205,258,339,360,158,205,258,339,360,158,205,258,339,360,158,258,360,360,174,364,136,136,123,201,322,309,309,309,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,113,238,242,356,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,68,69,117,119,304,128,150,162,169,275,292,367,290,321,279,135,244,324,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,68,69,135,135,196,194,220,367,120,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,68,69,118,231,151,186,341,73,91,100,327,89,120,126,130,147,177,212,221,253,259,269,270,334,346,348,120,107,217,267,296,313,313,86,223,128,148,162,169,203,221,253,261,348,98,138,143,143,217,88,201,201,201,335,85,335,197,201,322,362,85,187,174,139,84,90,166,176,177,192,198,209,212,213,214,237,269,282,298,334,366,72,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,71,101,291,291,291,291,291,291,291,357,357,357,154,154,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,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,95,121,266,266,177,174,117,117,244,244,244,96,127,263,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,68,69,172,172,172,172,249,288,135,135,135,174,97,130,184,224,252,336,347,104,138,139,272,160,284,77,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,68,69,359,359,190,164,228,143,321,139,117,119,201,304,117,119,201,304,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,115,121,120,207,207,138,138,138,138,138,187,293,107,267,333,266,139,223,321,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,68,69,71,290,321,290,321,121,121,111,322,120,153,201,219,313,293,96,127,142,323,85,94,192,237,236,244,117,119,304,332,125,355,77,79,87,89,93,94,108,133,152,153,172,177,193,215,232,246,259,312,324,337,341,366,189,337,189,131,256,256,256,256,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,38,38,38,38,38,39,39,39,39,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,40,40,40,40,384,385,41,41,41,41,41,386,387,388,389,390,391,392,393,394,395,42,42,42,42,42,396,397,398,399,43,43,43,43,43,400,401,402,403,44,44,44,44,44,404,405,406,407,408,409,45,45,45,45,45,410,411,412,413,414,415,416,417,418,419,420,46,46,46,46,46,47,47,47,47,47,421,422,48,48,48,48,48,423,424,49,49,49,49,49,425,426,427,428,429,430,431,50,50,50,50,50,432,433,434,51,51,51,51,51,435,436,437,52,52,52,52,52,438,439,440,441,442,443,444,445,446,447,448,449,53,53,53,53,53,450,451,54,54,54,54,54,452,453,55,55,55,55,55,454,56,56,56,56,56,455,456,57,57,57,57,57,457,458,459,460,58,58,58,58,58,461,59,59,59,59,59,462,463,60,60,60,60,60,464,465,466,467,468,469,470,471,472,473,61,61,61,61,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,62,62,62,62,493,63,63,63,63,63,494,495,496,64,64,64,64,64,497,498,499,65,65,65,65,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,66,66,66,66,514,67,67,67,67,67,515,516,517,68,68,68,68,68,518,519,520,521,522,523,524,525,69,69,69,69,69,526,527,528,87,94,290,99,161,128,162,169,179,289,305,340,347,364,114,259,312,300,173,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,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,68,69,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,68,69,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,68,69,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,527,528,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,68,69,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,527,528,139,139,118,310,310,110,110,80,93,215,232,246,160,160,160,160,284,284,322,332,322,313,313,214,235,214,256,123,201,322,151,186,264,264,264,97,337,79,85,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,68,69,97,271,97,332,77,123,172,201,322,322,105,139,184,199,288,288,259,302,312,77,280,332,288,102,328,106,106,106,146,157,102,116,143,174,184,209,212,213,217,260,266,270,328,72,136,154,210,288,317,344,317,181,74,89,188,346,139,332,323,314,314,87,333,104,194,220,129,265,120,173,203,120,195,139,170,170,170,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,68,69,335,139,139,224,252,224,252,224,252,224,252,224,252,224,252,148,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,68,69,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,68,69,319,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,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,68,69,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,68,69,321,291,291,291,199,171,219,279,89,234,293,322,223,223,185,248,185,111,116,72,185,236,185,77,87,88,89,97,117,119,172,184,187,214,235,265,267,268,271,278,283,299,304,308,323,332,337,346,354,302,302,73,91,200,201,202,288,322,338,342,84,90,166,198,209,213,282,366,72,192,237,94,240,185,261,313,313,313,313,313,87,89,184,278,283,346,354,138,110,88,266,77,88,97,117,119,172,187,214,235,265,267,268,271,299,304,308,323,332,337,302,302,73,91,200,201,202,288,322,338,342,264,239,264,239,264,239,264,79,262,235,362,84,90,143,165,166,172,174,198,199,201,217,219,259,286,313,362,343,343,343,343,343,104,217,305,194,220,240,219,71,319,71,71,287,178,344,226,226,226,189,189,343,343,343,343,343,104,217,305,194,220,240,279,279,219,105,285,321,341,274,262,85,94,185,185,185,316,344,106,172,204,259,295,297,320,329,285,329,329,172,359,337,337,337,125,355,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,68,69,146,157,343,160,181,116,305,244,244,244,306,212,270,244,244,244,121,207,207,207,121,287,138,138,138,181,136,257,210,210,136,257,136,136,257,217,189,189,144,194,144,194,333,179,289,179,289,179,289,333,179,289,179,289,179,289,333,333,199,128,162,169,367,128,162,169,367,128,162,169,367,128,162,169,367,367,367,367,76,109,76,78,109,194,211,216,220,247,277,318,76,78,109,211,277,318,76,109,216,247,318,76,109,216,247,318,277,277,277,277,71,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,68,69,231,273,223,223,335,178,199,229,281,281,281,88,310,310,359,87,93,103,122,156,175,183,184,215,262,278,283,299,308,315,322,354,285,80,85,80,85,93,132,215,167,175,265,296,299,364,83,83,134,134,134,158,205,363,79,79,324,132,79,79,324,101,292,101,292,101,292,101,292,364,187,196,110,141,254,255,307,141,254,307,255,255,96,127,232,232,189,139,359,132,133,153,200,202,206,246,293,294,296,302,323,345,364,167,308,167,308,167,308,167,308,293,219,224,252,256,82,83,340,313,313,187,263,264,264,241,301,83,83,83,83,314,110,147,269,334,267,271,323,337,125,355,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,68,69,125,355,207,225,225,144,147,182,194,220,250,269,334,351,94,114,259,312,94,114,259,312,359,174,150,182,220,334,351,222,284,111,272,359,87,103,122,156,175,183,184,262,278,283,299,308,315,322,354,285,80,85,80,85,132,167,175,265,296,299,364,114,259,312,139,203,221,253,348,352,352,125,158,205,258,355,360,146,157,146,157,146,157,110,226,226,226,226,111,125,355,279,326,326,326,326,326,117,119,304,326,332,170,277,232,232,195,224,252,256,94,94,104,305,124,149,162,169,227,311,330,350,365,145,176,298,112,192,193,237,266,301,301,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,174,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,363,363,363,363,363,363,363,363,290,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,68,69,191,290,321,121,121,111,344,86,116,199,347,347,88,139,240,249,261,288,332,288,288,249,77,160,102,273,316,316,316,223,284,190,164,228,225,160,248,263,263,263,110,114,115,145,152,219,241,242,245,261,288,356,308,308,250,241,241,313,313,313,259,287,312,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,68,69,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,68,69,105,111,106,106,106,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,68,69,362,131,82,201,329,72,73,74,78,86,89,92,93,99,100,112,113,126,128,133,134,136,137,144,145,147,149,151,153,154,155,161,162,163,164,169,170,176,178,181,188,190,192,194,195,206,209,210,211,213,215,216,225,227,228,229,236,237,238,239,246,247,251,257,269,270,272,275,276,277,281,282,286,288,289,290,291,293,301,306,316,317,321,331,335,339,344,346,349,350,357,365,367,83,201,201,178,229,347,72,73,74,78,86,87,89,92,93,99,100,112,113,126,128,133,134,136,137,144,145,147,149,151,153,154,155,161,162,163,164,169,170,176,178,181,188,190,192,194,195,197,202,206,209,210,211,213,215,216,225,227,228,229,231,236,237,238,239,246,247,251,257,269,270,272,275,276,277,281,282,286,288,289,290,291,293,301,306,316,317,321,331,333,335,338,339,344,346,349,350,357,365,367,79,233,96,120,127,141,143,184,221,224,252,253,254,255,261,307,322,328,348,201,322,313,313,261,324,88,191,121,121,102,123,148,201,285,322,139,139,206,262,294,337,73,80,85,91,94,100,129,131,141,142,153,156,158,159,167,168,175,183,184,205,206,217,230,232,241,248,254,262,271,274,294,295,297,302,305,307,310,314,323,325,327,358,360,293,224,252,196,146,157,102,168,110,79,87,96,101,104,105,106,107,117,119,120,127,130,132,140,149,151,186,196,203,204,224,252,255,256,258,261,265,267,280,285,292,296,299,303,304,309,311,313,320,332,333,340,341,345,347,353,361,363,364,116,323,332,332,177,72,111,136,187,201,226,257,288,288,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,527,528,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,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,527,528,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,68,69,241,221,253,348,146,157,83,83,97,250,265,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,233,77,172,99,163,172,226,226,226,111,125,355,343,343,343,343,343,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,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,40,384,385,41,386,387,388,389,390,391,392,393,394,395,42,396,397,398,399,43,400,401,402,403,44,404,405,406,407,408,409,45,410,411,412,413,414,415,416,417,418,419,420,46,47,421,422,48,423,424,49,425,426,427,428,429,430,431,50,432,433,434,51,435,436,437,52,438,439,440,441,442,443,444,445,446,447,448,449,53,450,451,54,452,453,55,454,56,455,456,57,457,458,459,460,58,461,59,462,463,60,464,465,466,467,468,469,470,471,472,473,61,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,62,493,63,494,495,496,64,497,498,499,65,500,501,502,503,504,505,506,507,508,509,510,511,512,513,66,514,67,515,516,517,68,518,519,520,521,522,523,524,525,69,526,527,528,73,91,100,206,294,327,121,317,317,337,85,189,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,68,69,337,313,105,106,114,142,250,259,250,103,122,218,315,241,160,354,354,354,354,97,337,293,101,292,113,129,165,295,297,356,280,280,119,308,332,332,119,308,332,117,119,187,304,160,160,97,337,97,97,97,79,132,292,292,292,292,172,364,324,189,85,94,105,165,77,231,240,280,332,288,302,309,309,309,314,119,308,332,98,203,221,253,261,336,348,138,143,234,73,91,100,107,263,265,267,271,293,299,327,337,358,364,73,91,100,107,263,265,267,271,293,299,327,337,358,364,73,91,100,107,263,265,267,271,293,299,327,337,358,364,174,199,280,201,280,280,280,201,146,157,329,322,201,322,241,82,100,103,107,122,128,162,169,183,200,202,204,218,305,315,327,340,345,358,364,132,132,132,96,127,140,159,230,265,278,299,308,325,96,127,140,159,230,278,308,325,96,127,140,159,230,325,329,82,100,103,107,122,128,162,169,183,200,202,204,218,305,315,327,340,345,358,364,132,132,132,96,127,140,159,230,265,278,299,308,325,73,87,91,93,100,103,122,156,175,183,184,215,262,278,283,299,308,315,327,354,80,85,80,85,73,91,93,100,132,215,327,285,167,175,265,296,299,364,96,127,140,159,230,278,308,325,96,127,140,159,230,325,82,100,103,107,122,128,162,169,183,200,202,204,218,305,315,327,340,345,358,364,132,132,132,96,127,140,159,230,265,278,299,308,325,96,127,140,159,230,278,308,325,96,127,140,159,230,325,290,290,0,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,0,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,874,874,874,874,874,874,569,0,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,569,0,892,892,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,548,548,548,548,548,548,548,548,548,548,569,0,562,562,562,562,562,562,562,562,562,562,562,562,562,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,569,0,569,0,569,0,569,569,0,0,569,0,566,566,566,566,566,566,569,0,569,0,569,0,569,0,854,854,854,854,0,0,0,0,0,0,0,0,0,0,858,569,0,569,0,569,0,568,568,568,568,568,568,568,568,568,568,568,568,569,0,569,0,569,0,824,824,824,569,0,569,0,569,0,902,902,902,812,812,812,806,806,806,806,569,0,569,0,877,569,0,877,877,569,0,569,828,0,828,828,828,828,846,846,846,846,860,860,860,860,860,569,0,827,827,827,827,827,827,827,827,827,827,827,827,827,569,569,0,0,645,569,0,569,0,569,0,569,0,569,0,569,0,569,0,862,862,862,862,862,862,569,0,569,0,0,0,0,0,0,0,0,0,0,0,0,0,569,0,569,0,569,0,569,0,569,0,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,569,0,569,0,569,0,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,890,890,890,890,890,890,560,560,560,560,560,560,560,560,569,0,569,0,556,556,556,556,556,556,556,556,556,556,569,0,556,556,569,0,569,0,0,0,0,847,847,847,847,847,847,847,847,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,819,819,819,819,819,819,819,819,844,844,844,844,899,899,899,569,0,569,0,864,864,864,864,864,569,0,896,896,896,896,896,896,896,569,0,0,0,0,0,0,0,569,0,569,0,551,551,551,551,551,551,551,551,551,551,551,551,551,551,557,557,557,557,557,557,557,557,557,557,564,564,564,564,564,564,564,564,564,564,569,0,569,0,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,817,817,817,817,817,817,817,817,817,817,569,0,569,0,569,0,569,0,569,0,569,569,0,0,569,0,569,0,569,0,893,893,893,893,893,893,893,893,893,569,0,569,0,569,0,553,553,553,553,553,553,553,553,569,0,569,0,569,0,569,0,869,869,0,0,0,0,0,0,0,0,569,0,569,0,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,569,569,0,0,569,0,569,0,569,0,569,0,569,0,569,0,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,569,0,569,0,559,559,559,559,559,559,559,559,559,559,559,559,559,559,569,0,569,0,0,0,0,775,569,0,569,0,800,800,800,800,569,0,569,569,0,0,569,0,569,0,569,569,0,0,569,0,569,0,569,0,569,0,569,0,569,0,0,901,901,901,901,569,0,901,901,901,901,569,0,569,0,884,884,884,884,884,884,818,818,818,818,818,818,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,799,799,799,799,799,799,799,799,858,858,858,858,858,858,858,858,878,878,878,878,878,875,875,875,831,831,831,831,831,837,837,837,837,837,837,837,837,837,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,825,825,825,825,825,825,825,835,835,897,897,897,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,863,863,863,863,863,863,863,863,863,865,865,865,865,865,889,811,811,811,811,811,811,811,811,811,546,891,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,859,859,859,859,859,859,859,859,859,859,859,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,871,871,871,871,856,856,856,856,856,823,823,823,823,823,823,823,823,823,823,823,823,823,823,820,820,820,820,823,823,805,805,554,554,829,829,829,829,829,829,829,829,554,554,554,554,554,554,805,805,805,805,805,805,805,805,805,836,836,836,836,836,836,836,810,810,809,809,809,809,809,809,843,843,843,843,873,873,834,834,834,834,834,834,834,834,796,796,796,876,876,853,853,853,853,853,853,853,853,853,853,853,853,853,881,881,881,881,881,794,838,838,838,826,826,826,826,826,888,888,888,888,888,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,885,885,885,885,885,885,885,802,802,802,802,802,802,802,802,802,802,802,845,845,845,845,845,845,845,845,845,845,547,547,547,547,547,547,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,848,848,848,848,848,848,848,841,841,841,841,841,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,821,821,821,821,821,821,821,821,832,832,832,832,832,832,832,832,832,565,565,565,565,565,565,792,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,866,866,866,866,866,866,866,866,866,866,866,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,872,894,894,894,894,894,555,555,555,555,555,555,555,555,555,555,555,555,555,555,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,807,569,0,569,0,569,0,569,0,807,569,0,895,895,895,895,895,895,569,0,807,645,882,867,867,867,882,882,882,569,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,569,0,569,0,569,0,851,851,851,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,808,808,808,808,808,0,793,793,793,887,887,887,887,569,0,569,0,569,0,569,0,569,0,569,0,804,569,0,569,0,804,804,804,569,0,569,0,804,569,0,569,0,569,0,569,0,569,0,552,552,552,552,552,552,552,552,552,552,552,552,569,0,798,798,798,569,0,0,0,0,0,0,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,813,813,569,0,569,0,569,0,569,0,803,803,0,0,569,0,569,0,569,569,0,569,0,0,569,569,0,569,0,0,569,0,855,855,855,855,855,561,561,561,561,561,855,855,855,855,855,855,855,855,855,855,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,816,816,816,816,900,900,900,900,900,900,900,900,900,868,868,868,868,569,0,569,0,569,0,0,0,0,0,0,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,558,558,569,0,0,861,861,861,861,569,0,822,822,822,822,822,569,0,857,549,549,549,549,549,549,549,549,850,850,850,850,850,569,0,0,0,0,0,569,0,569,0,569,0,569,0,569,0,569,0,791,791,842,842,842,842,569,0,569,0,795,795,795,795,795,723,0,0,723,0,569,0,569,0,870,870,870,870,898,898,898,898,898,898,849,849,849,849,849,849,849,849,849,849,569,0,569,0,0,0,0,797,797,797,797,729,764,580,758,758,758,590,752,589,636,612,612,776,572,599,712,753,572,599,712,753,572,599,712,753,571,699,772,786,772,786,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,571,572,580,586,597,614,618,622,632,680,702,709,712,713,720,760,717,652,717,588,674,675,724,775,786,606,772,787,787,606,636,606,606,772,606,775,595,595,593,647,711,593,647,711,593,647,711,714,588,674,588,674,588,674,705,705,705,705,578,695,757,652,580,618,651,651,598,737,782,678,786,633,665,665,665,665,638,669,608,608,608,787,751,672,678,772,590,752,590,752,590,752,590,752,616,786,616,583,774,746,772,774,628,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,594,718,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,773,663,722,663,722,663,722,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,606,604,604,604,604,581,582,767,616,600,633,633,645,775,649,649,760,650,716,773,583,583,760,705,690,731,690,731,690,731,690,690,690,690,690,690,639,644,690,731,664,639,644,690,731,664,639,644,690,731,664,639,644,690,731,664,639,644,690,731,664,639,644,690,731,664,639,644,690,731,664,639,644,690,731,664,690,731,690,583,692,705,705,571,772,786,742,742,742,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,586,632,680,598,646,693,734,737,758,782,698,633,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,646,763,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,589,596,624,642,736,572,599,712,753,579,594,627,628,655,735,763,763,608,614,626,755,691,691,598,676,701,737,782,746,774,774,626,739,786,786,786,716,672,678,772,786,716,580,583,751,576,577,579,581,582,592,611,628,707,769,651,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,569,682,706,706,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,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,578,578,628,583,680,680,633,633,633,729,764,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,645,645,645,645,787,583,622,574,595,627,744,657,746,751,775,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,714,714,603,634,683,774,751,586,632,680,786,586,632,680,786,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,697,763,746,746,746,746,746,580,694,608,614,578,751,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,654,772,647,763,786,777,691,694,729,764,708,760,649,716,577,769,765,633,586,632,680,702,726,593,594,611,613,624,628,645,647,649,667,671,711,713,715,718,723,743,775,773,713,773,695,686,686,686,686,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,544,544,544,544,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,545,545,545,545,808,546,546,546,546,546,809,810,811,547,547,547,547,547,812,813,814,548,548,548,548,548,815,816,817,818,819,549,549,549,549,549,820,550,550,550,550,550,551,551,551,551,551,821,822,552,552,552,552,552,823,824,825,826,827,553,553,553,553,553,828,554,554,554,554,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,555,555,555,555,846,847,848,849,850,851,852,556,556,556,556,556,853,854,855,856,857,858,859,860,557,557,557,557,557,861,862,863,558,558,558,558,558,559,559,559,559,559,864,865,866,867,868,560,560,560,560,560,869,561,561,561,561,561,870,871,872,873,874,562,562,562,562,562,875,876,877,878,879,880,881,882,883,563,563,563,563,563,884,885,564,564,564,564,564,565,565,565,565,565,886,566,566,566,566,566,887,888,889,890,891,892,893,894,895,567,567,567,567,567,896,568,568,568,568,568,897,898,899,900,901,902,649,640,749,595,598,621,637,653,737,782,692,594,718,631,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,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,901,902,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,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,901,902,751,751,589,710,710,616,616,650,667,671,711,715,772,702,772,691,691,576,719,576,686,571,772,786,642,736,622,713,743,716,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,622,709,622,702,571,645,772,775,786,772,570,751,575,787,787,594,717,718,775,585,702,787,636,781,756,756,756,590,752,578,579,581,582,583,607,626,636,655,774,781,651,704,705,706,787,789,790,790,767,751,702,760,669,669,657,648,618,631,676,763,763,661,751,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,751,751,574,744,574,744,574,744,574,744,574,744,574,744,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,727,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,575,670,777,698,601,694,772,696,654,607,651,765,576,580,586,597,614,618,622,632,645,680,702,709,713,719,720,739,750,760,775,717,717,572,712,588,674,675,724,772,786,787,581,582,611,707,577,651,769,649,730,701,691,691,691,691,691,746,616,739,578,576,580,586,597,614,618,622,632,645,680,702,709,713,719,720,739,750,760,775,717,717,572,712,588,674,675,724,772,786,787,743,602,719,678,575,583,594,626,645,656,678,691,774,776,777,786,626,657,730,777,569,727,569,569,733,619,789,783,783,783,773,773,626,657,730,698,698,777,570,624,665,660,602,649,716,789,594,635,645,756,757,784,785,652,665,652,652,645,714,713,713,713,726,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,590,752,767,607,633,633,633,579,655,633,633,633,733,746,746,746,767,679,705,704,704,679,705,705,679,705,626,773,773,621,637,621,637,621,637,621,637,621,637,621,637,575,598,646,737,782,598,646,737,782,598,646,737,782,598,646,737,782,646,646,646,673,738,584,587,615,673,738,759,779,780,587,615,673,738,779,759,584,673,738,759,780,584,673,738,759,780,615,615,615,615,569,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,596,658,575,619,629,684,629,629,739,710,710,714,597,602,609,610,620,659,671,687,715,720,745,772,665,650,716,650,716,671,699,715,618,659,668,692,720,755,677,677,644,664,732,743,743,699,743,743,682,758,682,758,682,758,682,758,692,580,616,573,623,641,747,623,641,747,573,573,729,764,667,667,773,751,714,588,593,647,663,674,692,694,699,711,717,722,755,760,766,597,668,597,668,597,668,597,668,694,574,686,744,777,600,653,677,691,691,580,638,689,677,677,677,677,669,616,614,709,713,760,726,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,726,605,605,625,594,649,718,594,649,718,714,583,734,654,714,597,602,609,610,620,659,687,720,745,772,665,650,716,650,716,699,618,659,668,692,720,755,594,718,676,751,644,664,690,726,731,590,752,590,752,590,752,616,783,783,783,783,654,726,698,761,761,761,761,761,586,632,680,702,761,615,667,667,661,574,686,744,649,649,657,630,688,721,737,754,762,771,782,788,592,577,578,613,617,689,769,689,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,583,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,732,732,732,732,732,732,732,732,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,591,654,789,575,607,595,595,739,751,730,701,702,787,787,787,775,636,658,603,634,683,605,696,616,638,697,701,777,787,597,597,625,638,638,691,691,691,594,718,733,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,570,654,756,756,756,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,678,695,600,786,652,572,577,581,582,584,587,593,598,603,605,615,617,619,629,634,637,639,640,642,646,647,651,655,656,661,663,666,671,679,683,684,689,693,694,703,704,705,706,707,711,715,721,725,728,735,737,741,749,753,762,765,767,768,769,770,771,779,780,782,787,788,789,790,677,786,786,619,684,595,572,577,581,582,584,587,588,593,596,598,603,605,615,617,619,629,634,637,639,640,642,646,647,651,655,656,661,663,666,671,672,679,683,684,689,693,694,703,704,705,706,707,711,715,721,724,725,728,735,737,741,749,753,762,765,767,768,769,770,771,779,780,782,787,788,789,790,743,700,573,574,623,641,701,729,744,747,763,764,772,774,781,772,786,691,691,701,739,591,636,571,665,772,786,751,751,602,663,722,713,572,599,602,620,623,626,635,638,641,643,644,647,648,649,650,659,660,663,664,667,668,669,681,685,687,690,695,696,708,709,710,712,716,717,722,740,747,753,760,778,784,694,574,744,590,752,636,681,616,570,573,574,585,586,595,606,608,612,614,618,624,627,630,632,642,653,657,665,676,680,682,686,691,692,699,701,702,720,729,731,732,736,742,743,744,748,755,756,757,758,763,764,766,771,785,607,760,702,702,628,580,651,654,679,705,783,786,787,787,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,901,902,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,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,901,902,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,638,590,752,677,622,677,625,618,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,700,645,775,725,749,645,783,783,783,654,726,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,544,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,545,808,546,809,810,811,547,812,813,814,548,815,816,817,818,819,549,820,550,551,821,822,552,823,824,825,826,827,553,828,554,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,555,846,847,848,849,850,851,852,556,853,854,855,856,857,858,859,860,557,861,862,863,558,559,864,865,866,867,868,560,869,561,870,871,872,873,874,562,875,876,877,878,879,880,881,882,883,563,884,885,564,565,886,566,887,888,889,890,891,892,893,894,895,567,896,568,897,898,899,900,901,902,572,599,663,712,722,753,790,713,790,716,773,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,713,691,570,756,594,625,708,625,609,610,662,745,638,622,713,694,682,758,635,648,776,784,585,585,586,597,702,702,586,597,702,580,586,632,680,622,713,622,622,622,743,699,758,758,758,758,645,692,773,649,716,570,776,775,596,730,585,702,787,717,742,742,742,669,586,597,702,676,701,746,774,601,572,599,608,614,618,685,692,694,709,712,713,720,753,572,599,608,614,618,685,692,694,709,712,713,720,753,572,599,608,614,618,685,692,694,709,712,713,720,753,583,575,585,786,585,585,585,786,590,752,652,772,772,786,638,588,598,599,600,608,609,610,653,662,674,685,687,692,737,745,753,766,782,785,699,699,699,597,618,643,720,729,740,748,764,778,597,643,729,740,748,764,778,643,729,740,748,764,778,652,588,598,599,600,608,609,610,653,662,674,685,687,692,737,745,753,766,782,785,699,699,699,597,618,643,720,729,740,748,764,778,572,597,599,602,609,610,620,659,671,687,712,715,720,745,753,650,716,650,716,572,599,671,699,712,715,753,665,618,659,668,692,720,755,597,643,729,740,748,764,778,643,729,740,748,764,778,588,598,599,600,608,609,610,653,662,674,685,687,692,737,745,753,766,782,785,699,699,699,597,618,643,720,729,740,748,764,778,597,643,729,740,748,764,778,643,729,740,748,764,778,22,22,30,33,0,0,30,0,22,22,30,33,22,30,33,22,22,30,30,33,33,22,30,30,30,33,33,22,30,33,22,30,33,22,30,33,22,30,33,22,30,33,1280,1281,1282,1281,1280,905,906,907,908,905,906,907,907,907,907,907,907,904,0,904,0,908,908,908,0,0,0,904,905,906,907,908,904,905,906,907,908,904,905,906,907,908,904,905,906,907,908,905,906,907,908,904,905,906,904,905,906,907,908,904,905,906,907,908,904,904,905,906,907,908,904,905,906,907,908,907,908,907,908,904,905,906,907,908,906,906,906,906,906,904,904,904,906,906,906,906,906,906,904,904,905,906,904,905,906,907,908,905,907,908,904,905,906,907,908,907,908,904,905,906,907,908,904,905,906,907,908,906,906,906,906,906,904,905,906,907,908,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28,1247,1247,1247,1247,1247,1247,937,0,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,937,0,1195,1195,1275,1275,1275,1275,1275,1275,1275,1275,1275,1275,1275,1275,1275,1275,1275,1275,1275,1275,1275,1275,935,935,935,935,935,935,935,935,935,935,937,0,915,915,915,915,915,915,915,915,915,915,915,915,915,1218,1218,1218,1218,1218,1218,1218,1218,1218,1218,1218,1218,1218,1218,1218,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,937,0,937,0,937,0,937,937,0,0,937,0,925,925,925,925,925,925,937,0,937,0,937,0,937,0,1213,1213,1213,1213,0,0,0,0,0,0,0,0,0,0,1268,937,0,937,0,937,0,920,920,920,920,920,920,920,920,920,920,920,920,937,0,937,0,937,0,1212,1212,1212,937,0,937,0,937,0,1235,1235,1235,1174,1174,1174,1271,1271,1271,1271,937,0,937,0,1225,937,0,1225,1225,937,0,937,1188,0,1188,1188,1188,1188,1177,1177,1177,1177,1240,1240,1240,1240,1240,937,0,1251,1251,1251,1251,1251,1251,1251,1251,1251,1251,1251,1251,1251,937,937,0,0,976,937,0,937,0,937,0,937,0,937,0,937,0,937,0,1182,1182,1182,1182,1182,1182,937,0,937,0,0,0,0,0,0,0,0,0,0,0,0,0,937,0,937,0,937,0,937,0,937,0,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,937,0,937,0,937,0,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,1245,1245,1245,1245,1245,1245,918,918,918,918,918,918,918,918,937,0,937,0,926,926,926,926,926,926,926,926,926,926,937,0,926,926,937,0,937,0,0,0,0,1243,1243,1243,1243,1243,1243,1243,1243,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1197,1197,1197,1197,1197,1197,1197,1197,1164,1164,1164,1164,1170,1170,1170,937,0,937,0,1241,1241,1241,1241,1241,937,0,1206,1206,1206,1206,1206,1206,1206,937,0,0,0,0,0,0,0,937,0,937,0,931,931,931,931,931,931,931,931,931,931,931,931,931,931,910,910,910,910,910,910,910,910,910,910,919,919,919,919,919,919,919,919,919,919,937,0,937,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,937,0,937,0,937,0,937,0,937,0,937,937,0,0,937,0,937,0,937,0,1198,1198,1198,1198,1198,1198,1198,1198,1198,937,0,937,0,937,0,921,921,921,921,921,921,921,921,937,0,937,0,937,0,937,0,1274,1274,0,0,0,0,0,0,0,0,937,0,937,0,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,937,937,0,0,937,0,937,0,937,0,937,0,937,0,937,0,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,937,0,937,0,916,916,916,916,916,916,916,916,916,916,916,916,916,916,937,0,937,0,0,0,0,1155,1008,937,0,937,0,1175,1175,1175,1175,937,0,937,937,0,0,937,0,937,0,937,937,0,0,937,0,937,0,937,0,937,0,937,0,937,0,0,1277,1277,1277,1277,937,0,1277,1277,1277,1277,937,0,937,0,1200,1200,1200,1200,1200,1200,1171,1171,1171,1171,1171,1171,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1196,1196,1196,1196,1196,1196,1196,1196,1268,1268,1268,1268,1268,1268,1268,1268,1191,1191,1191,1191,1191,1217,1217,1217,1263,1263,1263,1263,1263,1202,1202,1202,1202,1202,1202,1202,1202,1202,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1239,1239,1239,1239,1239,1239,1239,1201,1201,1267,1267,1267,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1261,1261,1261,1261,1261,1261,1261,1261,1261,1226,1226,1226,1226,1226,1180,1246,1246,1246,1246,1246,1246,1246,1246,1246,934,1258,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1204,1204,1204,1204,1204,1204,1204,1204,1204,1204,1204,1204,1204,1204,1204,1204,1204,1204,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,1244,1244,1244,1244,1193,1193,1193,1193,1193,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1168,1168,1168,1168,1189,1189,1178,1178,936,936,1248,1248,1248,1248,1248,1248,1248,1248,936,936,936,936,936,936,1178,1178,1178,1178,1178,1178,1178,1178,1178,1208,1208,1208,1208,1208,1208,1208,1184,1184,1205,1205,1205,1205,1205,1205,1227,1227,1227,1227,1167,1167,1230,1230,1230,1230,1230,1230,1230,1230,1173,1173,1173,1265,1265,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1163,1163,1163,1163,1163,1209,1190,1190,1190,1273,1273,1273,1273,1273,1232,1232,1232,1232,1232,1236,1236,1236,1236,1236,1236,1236,1236,1236,1236,1236,1236,1236,1236,1236,1236,1210,1210,1210,1210,1210,1210,1210,1210,1210,1210,1210,1210,1210,1210,1210,1210,1223,1223,1223,1223,1223,1223,1223,1234,1234,1234,1234,1234,1234,1234,1234,1234,1234,1234,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,909,909,909,909,909,909,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,1256,1256,1256,1256,1256,1256,1256,1238,1238,1238,1238,1238,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1216,1216,1216,1216,1216,1216,1216,1216,1269,1269,1269,1269,1269,1269,1269,1269,1269,922,922,922,922,922,922,1199,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1250,1257,1257,1257,1257,1257,929,929,929,929,929,929,929,929,929,929,929,929,929,929,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,1162,937,0,937,0,937,0,937,0,1162,937,0,1186,1186,1186,1186,1186,1186,937,0,1162,976,1194,1260,1260,1260,1194,1194,1194,937,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,937,0,937,0,937,0,1249,1249,1249,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,1252,1252,1252,1252,1252,0,1270,1270,1270,1264,1264,1264,1264,937,0,937,0,937,0,937,0,937,0,937,0,1179,937,0,937,0,1179,1179,1179,937,0,937,0,1179,937,0,937,0,937,0,937,0,937,0,912,912,912,912,912,912,912,912,912,912,912,912,937,0,1166,1166,1166,937,0,0,0,0,0,0,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,1219,1219,937,0,937,0,937,0,937,0,1220,1220,0,0,937,0,937,0,937,937,0,937,0,0,937,937,0,937,0,0,937,0,1278,1278,1278,1278,1278,930,930,930,930,930,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,1215,1215,1215,1215,1228,1228,1228,1228,1228,1228,1228,1228,1228,1254,1254,1254,1254,937,0,937,0,937,0,0,0,0,0,0,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,933,933,937,0,0,1176,1176,1176,1176,937,0,1242,1242,1242,1242,1242,937,0,937,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,1272,0,1192,1192,1192,1192,1192,1192,1192,1192,1231,1231,1203,937,0,1233,1233,1233,1233,1233,1233,923,923,923,923,923,1203,1203,1203,1203,1203,1203,913,913,913,1203,917,917,917,917,937,0,1218,928,928,928,928,928,928,928,928,1172,1172,1172,1172,1172,937,0,0,0,0,0,0,0,0,0,0,0,0,0,937,0,937,0,937,0,937,0,937,0,937,0,1211,1211,1185,1185,1185,1185,937,0,937,0,1165,1165,1165,1165,1165,1102,1154,0,0,1102,0,937,0,937,0,1221,1221,1221,1221,1276,1276,1276,1276,1276,1276,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,937,0,937,0,0,0,0,1183,1183,1183,1183,938,1058,1128,1132,1132,1132,944,1156,1154,1154,1154,1028,948,983,983,972,1078,1081,1111,1160,1078,1081,1111,1160,1078,1081,1111,1160,1155,980,985,1019,1126,980,985,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,936,963,979,988,1015,1039,1050,1065,1088,1111,1126,1128,1137,1143,1150,1151,1160,981,1082,981,980,1008,1057,1072,1118,1122,985,1085,1091,1091,1085,948,1085,1085,985,1085,1008,1079,1079,1103,1107,1123,1103,1107,1123,1103,1107,1123,943,1072,1122,1072,1122,1072,1122,1135,1135,1135,1135,1161,1034,1036,1082,1128,1150,1145,1145,952,1108,1152,980,1158,1044,971,971,971,971,1054,1076,1075,1075,1075,1154,1091,946,985,1056,1158,944,1156,944,1156,944,1156,944,1156,974,980,974,968,1035,968,985,1049,1071,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,936,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,936,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,936,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,936,1020,1104,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,936,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,936,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,936,995,1087,1159,1087,1159,1087,1159,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1085,1083,1083,1083,1083,960,1098,1144,974,1024,1044,1044,976,1008,1155,1141,1141,963,967,1120,995,1035,1035,963,1135,1032,1127,1032,1127,1032,1127,1127,1127,1127,1127,1127,1127,1018,1032,1047,1127,1129,1018,1032,1047,1127,1129,1018,1032,1047,1127,1129,1018,1032,1047,1127,1129,1018,1032,1047,1127,1129,1018,1032,1047,1127,1129,1018,1032,1047,1127,1129,1018,1032,1047,1127,1129,1032,1127,1127,1035,1009,1135,1135,1126,980,985,1136,1136,1136,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,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,936,988,1039,1088,952,958,1046,1060,1108,1132,1152,1090,1044,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,936,1046,1094,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,936,975,1028,1025,1089,1100,1078,1081,1111,1160,1010,1011,1020,1061,1066,1071,1094,1094,978,1023,1075,1143,1062,1062,952,1016,1108,1146,1152,968,1049,968,978,1101,980,980,980,967,980,985,1056,1158,967,1128,1035,946,941,956,1012,1053,1061,1070,1071,1098,1121,1144,1145,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,937,1116,950,950,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,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1161,1161,1071,1035,1039,1039,1044,1044,1044,938,1058,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,936,976,976,976,976,1091,1035,1065,1026,1066,1079,1125,1064,1049,946,1154,1155,1008,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,936,943,943,953,1086,1099,968,946,980,988,1039,1088,980,988,1039,1088,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1142,1094,1049,1049,1049,1049,1049,1128,1030,1075,1143,1161,946,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,936,937,1052,985,980,1094,1107,973,1062,1030,938,1058,989,963,967,1141,1012,1070,1096,1044,988,1039,1088,1151,1157,976,1003,1008,1014,1015,1020,1037,1053,1067,1071,1084,1089,1102,1103,1104,1107,1123,1141,995,1015,995,1034,992,992,992,992,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,909,909,909,909,909,910,910,910,910,910,1163,911,911,911,911,911,912,912,912,912,912,1164,1165,1166,1167,1168,1169,1170,913,913,913,913,913,1171,1172,1173,914,914,914,914,914,915,915,915,915,915,1174,1175,1176,1177,1178,916,916,916,916,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,917,917,917,917,1191,1192,1193,918,918,918,918,918,1194,919,919,919,919,919,1195,1196,1197,1198,920,920,920,920,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,921,921,921,921,1209,1210,1211,922,922,922,922,922,1212,923,923,923,923,923,1213,1214,1215,1216,1217,1218,1219,1220,924,924,924,924,924,925,925,925,925,925,1221,1222,1223,926,926,926,926,926,1224,1225,927,927,927,927,927,1226,1227,928,928,928,928,928,1228,1229,1230,1231,929,929,929,929,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,930,930,930,930,931,931,931,931,931,1242,1243,1244,932,932,932,932,932,933,933,933,933,933,1245,1246,1247,1248,1249,934,934,934,934,934,1250,1251,1252,1253,1254,935,935,935,935,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,936,936,936,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1141,1106,1109,942,952,1051,1079,1108,1124,1152,1009,1020,1104,1043,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,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,936,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,936,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,936,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,1277,1278,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,936,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,1277,1278,946,946,1028,959,959,974,974,1003,1037,1084,1120,1123,1154,1154,1154,1154,1155,1155,985,1151,985,1062,1062,941,945,941,992,980,985,1126,1025,1100,1015,1065,1067,967,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,936,1065,1137,1065,1151,976,980,985,1008,1126,985,946,1059,1063,1091,1091,981,1020,1104,1008,1139,1151,1091,948,998,966,966,966,944,1156,948,951,968,978,998,1011,1035,1061,1098,1144,1161,950,986,1048,1091,1135,1138,1145,1048,960,946,1151,963,1054,1054,1064,1029,1150,1043,1094,1146,1094,1013,946,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,936,946,946,1026,1125,1026,1125,1026,1125,1026,1125,1026,1125,1026,1125,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,936,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,936,1000,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,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,936,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,936,1063,984,973,1090,985,1030,1113,1001,1052,951,1145,1096,941,945,963,976,979,982,988,1008,1015,1039,1050,1065,1088,1101,1128,1137,1143,1150,1151,981,981,1111,1160,980,985,1057,1072,1091,1118,1122,956,1053,1098,1144,1012,1070,1145,1141,1022,1016,1062,1062,1062,1062,1062,1049,974,1101,1161,941,945,963,976,979,982,988,1008,1015,1039,1050,1065,1088,1101,1128,1137,1143,1150,1151,981,981,1111,1160,980,985,1057,1072,1091,1118,1122,1067,1021,945,1158,968,972,973,976,978,980,1005,1020,1035,1062,1063,1158,978,1064,1022,973,937,1000,937,937,1147,1042,1138,1133,1133,1133,995,995,978,1064,1022,1090,1090,973,971,1059,1089,1140,1021,967,1141,1138,966,976,994,1004,1020,1036,1119,1082,971,1082,1082,976,943,1015,1015,1015,1157,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,936,944,1156,1154,960,951,1044,1044,1044,1011,1061,1044,1044,1044,1147,1049,1049,1049,960,1041,1135,986,986,1041,1135,1135,1041,1135,978,995,995,942,1124,942,1124,942,1124,942,1124,942,1124,942,1124,1063,952,1046,1108,1152,952,1046,1108,1152,952,1046,1108,1152,952,1046,1108,1152,1046,1046,1046,1002,1153,949,970,991,997,999,1002,1134,1153,970,997,1002,1134,1153,949,949,991,999,1002,1153,949,991,999,1002,1153,970,970,970,970,937,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,936,975,955,947,1033,1042,1063,1033,1033,1101,959,959,943,979,985,1003,1021,1050,1074,1084,1092,1093,1112,1114,1117,971,967,1120,967,1120,1003,1019,1084,1009,1023,1050,1092,1095,1150,1149,1149,1040,1047,1129,1067,1067,1019,1067,1067,1116,1132,1116,1132,1116,1132,1116,1132,1009,1128,974,957,961,1006,1027,957,961,1027,1006,1006,938,1058,1037,1037,995,946,943,963,981,1009,1019,1023,1030,1072,1087,1103,1107,1122,1123,1130,1159,979,1095,979,1095,979,1095,979,1095,1030,973,992,1026,1125,1024,1051,1149,1062,1062,1128,1076,939,1149,1149,1149,1149,1054,974,963,1015,1137,1143,1157,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,936,1157,1069,1069,987,1020,1104,1141,1020,1104,1141,943,1035,1060,1080,1155,1052,943,979,985,1021,1050,1074,1092,1093,1112,1114,1117,971,967,1120,967,1120,1019,1009,1023,1050,1092,1095,1150,1020,1104,946,1146,1032,1047,1127,1129,1157,944,1156,944,1156,944,1156,974,1133,1133,1133,1133,1052,1157,1090,1148,1148,1148,1148,1148,988,1039,1088,1148,1151,970,1037,1037,1013,992,1026,1125,1141,1141,1064,1007,1017,1055,1068,1073,1077,1097,1108,1152,1121,939,954,1012,1014,1070,1161,939,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,1035,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1040,1040,1040,1040,1040,1040,1040,1040,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,936,1131,1052,1138,951,1063,1079,1079,1101,946,1022,1016,1091,1151,1091,1091,1008,1154,948,955,1155,953,1086,1099,1069,1001,1154,973,974,1016,1076,1091,1142,979,979,987,1076,1076,1062,1062,1062,1020,1104,1147,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,936,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,936,1059,1052,966,966,966,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,936,1158,1034,1024,980,1082,939,940,947,950,952,953,954,956,958,960,964,965,969,970,977,986,991,997,999,1003,1005,1010,1011,1012,1013,1017,1018,1030,1031,1033,1041,1042,1046,1048,1068,1069,1070,1077,1078,1084,1086,1091,1096,1097,1098,1099,1100,1103,1106,1107,1108,1109,1110,1123,1124,1134,1135,1138,1144,1145,1152,1159,1160,1149,980,980,947,1042,1079,939,940,947,950,952,953,954,956,958,960,964,965,969,970,975,977,986,991,997,999,1003,1005,1010,1011,1012,1013,1017,1018,1030,1031,1033,1041,1042,1046,1048,1056,1068,1069,1070,1077,1078,1084,1086,1091,1096,1097,1098,1099,1100,1103,1106,1107,1108,1109,1110,1118,1122,1123,1124,1134,1135,1138,1144,1145,1152,1159,1160,1067,1115,938,957,961,968,985,998,1006,1016,1026,1027,1058,1094,1125,980,985,1062,1062,1016,1101,1131,948,971,980,985,1126,946,946,1021,1087,1159,1015,957,959,961,962,963,967,978,981,989,993,994,996,1001,1021,1027,1029,1034,1037,1038,1047,1054,1076,1078,1081,1087,1092,1095,1105,1107,1111,1112,1117,1119,1120,1127,1129,1137,1140,1141,1159,1160,1030,1026,1125,944,1156,948,1105,974,938,966,971,983,988,992,1004,1006,1009,1016,1017,1019,1023,1025,1026,1032,1036,1039,1040,1045,1050,1051,1055,1058,1059,1062,1064,1066,1067,1075,1079,1085,1088,1089,1094,1100,1116,1125,1130,1132,1136,1139,1143,1146,1150,1151,951,963,1151,1151,1071,980,1041,1052,1091,1128,1133,1135,1145,1091,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,1277,1278,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,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,1277,1278,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,936,1076,944,1156,1149,1065,1149,987,1150,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1115,976,1008,1106,1110,976,1133,1133,1133,1052,1157,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,909,910,1163,911,912,1164,1165,1166,1167,1168,1169,1170,913,1171,1172,1173,914,915,1174,1175,1176,1177,1178,916,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,917,1191,1192,1193,918,1194,919,1195,1196,1197,1198,920,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,921,1209,1210,1211,922,1212,923,1213,1214,1215,1216,1217,1218,1219,1220,924,925,1221,1222,1223,926,1224,1225,927,1226,1227,928,1228,1229,1230,1231,929,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,930,931,1242,1243,1244,932,933,1245,1246,1247,1248,1249,934,1250,1251,1252,1253,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,936,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1078,1081,1087,1111,1159,1160,1048,1015,1048,967,995,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,936,1015,1062,966,1059,987,989,1020,987,990,1074,1093,1114,1076,1154,1015,1065,1030,1116,1132,972,994,1029,1119,1139,1139,979,988,1151,1151,979,988,1151,988,1039,1088,1128,1154,1154,1015,1065,1065,1065,1065,1067,1019,1132,1132,1132,1132,976,1009,995,967,1141,1059,972,1008,975,1022,1139,1151,1091,981,1136,1136,1136,1054,979,988,1151,1016,1146,1049,968,1113,993,1009,1015,1030,1050,1075,1078,1081,1111,1137,1143,1150,1160,993,1009,1015,1030,1050,1075,1078,1081,1111,1137,1143,1150,1160,993,1009,1015,1030,1050,1075,1078,1081,1111,1137,1143,1150,1160,1035,1063,1139,980,1139,1139,1139,980,944,1156,1082,985,980,985,1076,952,990,993,1004,1009,1024,1051,1072,1074,1075,1078,1081,1093,1108,1114,1117,1122,1130,1152,1019,1019,1019,938,962,979,996,1038,1045,1050,1058,1150,938,962,979,996,1038,1045,1058,938,962,996,1038,1045,1058,1082,952,990,993,1004,1009,1024,1051,1072,1074,1075,1078,1081,1093,1108,1114,1117,1122,1130,1152,1019,1019,1019,938,962,979,996,1038,1045,1050,1058,1150,979,1003,1021,1050,1074,1078,1081,1084,1092,1093,1111,1112,1114,1117,1160,967,1120,967,1120,1003,1019,1078,1081,1084,1111,1160,971,1009,1023,1050,1092,1095,1150,938,962,979,996,1038,1045,1058,938,962,996,1038,1045,1058,952,990,993,1004,1009,1024,1051,1072,1074,1075,1078,1081,1093,1108,1114,1117,1122,1130,1152,1019,1019,1019,938,962,979,996,1038,1045,1050,1058,1150,938,962,979,996,1038,1045,1058,938,962,996,1038,1045,1058,0,0,1279],"f":"```````````````````{{{b{c}}}{{b{e}}}{}{}}0000{{{b{dc}}}{{b{de}}}{}{}}0000``{{{b{{h{f}}}}f}j}{{{b{l}}}j}{{{b{n}}}j}{{{b{A`}}}A`}{{{b{Ab}}}Ab}{{{b{{Ad{c}}}}}{{Ad{c}}}{AfAh}}{{{b{l}}}l}{{{b{n}}}n}{{{b{c}}{b{de}}}Aj{}{}}0000`{{{b{n}}}f}{{{b{l}}}f}1`{{{b{Al}}}{{Bd{{B`{An}}Bb}}}}{{}A`}{{}l}{{}n}{Bf{{Bd{Ah{b{Al}}}}}}{{Ab{b{{h{f}}}}}{{Bd{{Bj{}{{Bh{c}}}}Bl}}}Ah}{{Ab{b{{h{f}}}}}{{Bd{{Ad{c}}Bl}}}Ah}{c{{Bd{A`}}}Bn}{{{b{A`}}{b{A`}}}C`}{{{b{Ab}}{b{Ab}}}C`}{{{b{l}}{b{l}}}C`}{{{b{n}}{b{n}}}C`}`{Bff}{{{b{A`}}{b{dCb}}}{{Bd{AjCd}}}}{{{b{Ab}}{b{dCb}}}{{Bd{AjCd}}}}{{{b{{Ad{c}}}}{b{dCb}}}{{Bd{AjCd}}}{CfAh}}{{{b{l}}{b{dCb}}}{{Bd{AjCd}}}}{{{b{n}}{b{dCb}}}{{Bd{AjCd}}}}{cc{}}0000{{{b{l}}}C`}{{{b{n}}}C`}{{{b{{Ad{c}}}}}A`Ah}{{{b{dl}}}{{b{{h{f}}}}}}{{{b{n}}}{{b{{h{f}}}}}}``{{{b{n}}}f}{{{b{dn}}}{{b{df}}}}{ce{}{}}0000{{{b{Ah}}}Bf}{{{b{l}}}f}{{{b{n}}}Bf}{{{b{Al}}}{{Bd{Bf{b{Al}}}}}}{{{b{Ah}}}{{b{Al}}}}`{{}l}{{}n}{{AbBf{b{{h{f}}}}}{{Bd{AhBl}}}}{{{b{l}}}{{b{{h{f}}}}}}<7;`{{{b{An}}}Ab}`1={{{b{d{Ch{c}}}}}{{Bd{{Cj{A`e}}Cl}}}CnAh}{{{b{d{Ch{c}}}}}{{Bd{lCl}}}Cn}1{{{b{d{Ch{c}}}}}{{Bd{nCl}}}Cn}{{{b{d{Ch{c}}}}Ab}{{Bd{{Cj{A`e}}Cl}}}CnAh}{{{b{An}}}{{Bd{{Cj{A`c}}Cl}}}Ah}{{{b{An}}}{{Bd{{Ad{c}}Cl}}}Ah}{{{b{An}}{b{A`}}{b{c}}}{{Bd{D`Db}}}Ah}{{{b{An}}{b{c}}}{{Bd{D`Db}}}Ah}{{{b{An}}{b{{Ad{c}}}}}{{Bd{D`Db}}}Ah}{{{b{l}}}f}{{{b{n}}}f}`{{{b{Ah}}Ab{b{d{h{f}}}}}D`}{{{b{{Bj{}{{Bh{c}}}}}}Ab{b{d{h{f}}}}}D`Ah}{{{b{{Ad{c}}}}{b{d{h{f}}}}}D`Ah}{{{b{A`}}c}BdDd}{{{b{Ab}}c}BdDd}{{{b{{Ad{c}}}}e}Bd{AhDf}Dd}{{{b{dl}}A`{b{c}}}AjAh}{{{b{dn}}A`{b{c}}}AjAh}{{{b{dl}}A`{b{c}}}AjBj}{{{b{dn}}A`{b{c}}}AjBj}2{{{b{dAn}}Ab}Aj}<;`{{{b{c}}}e{}{}}0000{c{{Bd{e}}}{}{}}000000000{{{b{c}}}Dh{}}0000``{{{b{dc}}A`{b{e}}}{{Bd{D`Db}}}DjAh}0{{{b{dc}}AbA`{b{e}}}{{Bd{D`Db}}}DjAh}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{}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}{{}Hh}{{}Hj}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{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}{{HhHh}Hh}{{HjHj}Hj}{{{b{dDl}}Dl}Aj}{{{b{dDn}}Dn}Aj}{{{b{dE`}}E`}Aj}{{{b{dEb}}Eb}Aj}{{{b{dEd}}Ed}Aj}{{{b{dEf}}Ef}Aj}{{{b{dEh}}Eh}Aj}{{{b{dEj}}Ej}Aj}{{{b{dEl}}El}Aj}{{{b{dEn}}En}Aj}{{{b{dF`}}F`}Aj}{{{b{dFb}}Fb}Aj}{{{b{dFd}}Fd}Aj}{{{b{dFf}}Ff}Aj}{{{b{dFh}}Fh}Aj}{{{b{dFj}}Fj}Aj}{{{b{dFl}}Fl}Aj}{{{b{dFn}}Fn}Aj}{{{b{dG`}}G`}Aj}{{{b{dGb}}Gb}Aj}{{{b{dGd}}Gd}Aj}{{{b{dGf}}Gf}Aj}{{{b{dGh}}Gh}Aj}{{{b{dGj}}Gj}Aj}{{{b{dGl}}Gl}Aj}{{{b{dGn}}Gn}Aj}{{{b{dH`}}H`}Aj}{{{b{dHb}}Hb}Aj}{{{b{dHd}}Hd}Aj}{{{b{dHf}}Hf}Aj}{{{b{dHh}}Hh}Aj}{{{b{dHj}}Hj}Aj}{{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}{{HhHh}Hh}{{HjHj}Hj}{{{b{dDl}}Dl}Aj}{{{b{dDn}}Dn}Aj}{{{b{dE`}}E`}Aj}{{{b{dEb}}Eb}Aj}{{{b{dEd}}Ed}Aj}{{{b{dEf}}Ef}Aj}{{{b{dEh}}Eh}Aj}{{{b{dEj}}Ej}Aj}{{{b{dEl}}El}Aj}{{{b{dEn}}En}Aj}{{{b{dF`}}F`}Aj}{{{b{dFb}}Fb}Aj}{{{b{dFd}}Fd}Aj}{{{b{dFf}}Ff}Aj}{{{b{dFh}}Fh}Aj}{{{b{dFj}}Fj}Aj}{{{b{dFl}}Fl}Aj}{{{b{dFn}}Fn}Aj}{{{b{dG`}}G`}Aj}{{{b{dGb}}Gb}Aj}{{{b{dGd}}Gd}Aj}{{{b{dGf}}Gf}Aj}{{{b{dGh}}Gh}Aj}{{{b{dGj}}Gj}Aj}{{{b{dGl}}Gl}Aj}{{{b{dGn}}Gn}Aj}{{{b{dH`}}H`}Aj}{{{b{dHb}}Hb}Aj}{{{b{dHd}}Hd}Aj}{{{b{dHf}}Hf}Aj}{{{b{dHh}}Hh}Aj}{{{b{dHj}}Hj}Aj}```{{{b{Dl}}}f}{{{b{Dn}}}f}{{{b{E`}}}j}{{{b{Eb}}}f}{{{b{Ed}}}j}{{{b{Ef}}}f}{{{b{Eh}}}f}{{{b{Ej}}}Hl}{{{b{El}}}Bf}{{{b{En}}}Bf}{{{b{F`}}}j}{{{b{Fb}}}j}{{{b{Fd}}}j}{{{b{Ff}}}f}{{{b{Fh}}}Bf}{{{b{Fj}}}Bf}{{{b{Fl}}}f}{{{b{Fn}}}f}{{{b{G`}}}Bf}{{{b{Gb}}}j}{{{b{Gd}}}j}{{{b{Gf}}}j}{{{b{Gh}}}j}{{{b{Gj}}}j}{{{b{Gl}}}f}{{{b{Gn}}}f}{{{b{H`}}}j}{{{b{Hb}}}Hl}{{{b{Hd}}}Bf}{{{b{Hf}}}j}{{{b{Hh}}}Bf}{{{b{Hj}}}j}{{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}{{HhHh}Hh}{{HjHj}Hj}{{{b{dDl}}Dl}Aj}{{{b{dDn}}Dn}Aj}{{{b{dE`}}E`}Aj}{{{b{dEb}}Eb}Aj}{{{b{dEd}}Ed}Aj}{{{b{dEf}}Ef}Aj}{{{b{dEh}}Eh}Aj}{{{b{dEj}}Ej}Aj}{{{b{dEl}}El}Aj}{{{b{dEn}}En}Aj}{{{b{dF`}}F`}Aj}{{{b{dFb}}Fb}Aj}{{{b{dFd}}Fd}Aj}{{{b{dFf}}Ff}Aj}{{{b{dFh}}Fh}Aj}{{{b{dFj}}Fj}Aj}{{{b{dFl}}Fl}Aj}{{{b{dFn}}Fn}Aj}{{{b{dG`}}G`}Aj}{{{b{dGb}}Gb}Aj}{{{b{dGd}}Gd}Aj}{{{b{dGf}}Gf}Aj}{{{b{dGh}}Gh}Aj}{{{b{dGj}}Gj}Aj}{{{b{dGl}}Gl}Aj}{{{b{dGn}}Gn}Aj}{{{b{dH`}}H`}Aj}{{{b{dHb}}Hb}Aj}{{{b{dHd}}Hd}Aj}{{{b{dHf}}Hf}Aj}{{{b{dHh}}Hh}Aj}{{{b{dHj}}Hj}Aj}```````{{{b{c}}}{{b{e}}}{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{dc}}}{{b{de}}}{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{Hn}}}Hn}{{{b{I`}}}I`}{{{b{Ib}}}Ib}{{{b{Id}}}Id}{{{b{If}}}If}{{{b{Ih}}}Ih}{{{b{Ij}}}Ij}{{{b{Il}}}Il}{{{b{In}}}In}{{{b{J`}}}J`}{{{b{Jb}}}Jb}{{{b{Jd}}}Jd}{{{b{Jf}}}Jf}{{{b{Jh}}}Jh}{{{b{Jj}}}Jj}{{{b{Jl}}}Jl}{{{b{Jn}}}Jn}{{{b{K`}}}K`}{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{{b{Kf}}}Kf}{{{b{Kh}}}Kh}{{{b{Kj}}}Kj}{{{b{Kl}}}Kl}{{{b{Kn}}}Kn}{{{b{L`}}}L`}{{{b{Lb}}}Lb}{{{b{Ld}}}Ld}{{{b{Lf}}}Lf}{{{b{Lh}}}Lh}{{{b{Lj}}}Lj}{{{b{Ll}}}Ll}{{{b{Ln}}}Ln}{{{b{M`}}}M`}{{{b{Mb}}}Mb}{{{b{Md}}}Md}{{{b{Mf}}}Mf}{{{b{Mh}}}Mh}{{{b{Mj}}}Mj}{{{b{Ml}}}Ml}{{{b{Mn}}}Mn}{{{b{N`}}}N`}{{{b{Nb}}}Nb}{{{b{Nd}}}Nd}{{{b{Nf}}}Nf}{{{b{Nh}}}Nh}{{{b{Nj}}}Nj}{{{b{Nl}}}Nl}{{{b{Nn}}}Nn}{{{b{O`}}}O`}{{{b{Ob}}}Ob}{{{b{Od}}}Od}{{{b{Of}}}Of}{{{b{Oh}}}Oh}{{{b{Oj}}}Oj}{{{b{Ol}}}Ol}{{{b{On}}}On}{{{b{A@`}}}A@`}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{AAb}}}AAb}{{{b{AAd}}}AAd}{{{b{AAf}}}AAf}{{{b{AAh}}}AAh}{{{b{AAj}}}AAj}{{{b{AAl}}}AAl}{{{b{AAn}}}AAn}{{{b{AB`}}}AB`}{{{b{ABb}}}ABb}{{{b{ABd}}}ABd}{{{b{ABf}}}ABf}{{{b{ABh}}}ABh}{{{b{ABj}}}ABj}{{{b{ABl}}}ABl}{{{b{ABn}}}ABn}{{{b{AC`}}}AC`}{{{b{ACb}}}ACb}{{{b{ACd}}}ACd}{{{b{ACf}}}ACf}{{{b{ACh}}}ACh}{{{b{ACj}}}ACj}{{{b{ACl}}}ACl}{{{b{ACn}}}ACn}{{{b{AD`}}}AD`}{{{b{ADb}}}ADb}{{{b{ADd}}}ADd}{{{b{ADf}}}ADf}{{{b{ADh}}}ADh}{{{b{ADj}}}ADj}{{{b{ADl}}}ADl}{{{b{ADn}}}ADn}{{{b{AE`}}}AE`}{{{b{AEb}}}AEb}{{{b{AEd}}}AEd}{{{b{AEf}}}AEf}{{{b{AEh}}}AEh}{{{b{AEj}}}AEj}{{{b{AEl}}}AEl}{{{b{AEn}}}AEn}{{{b{AF`}}}AF`}{{{b{AFb}}}AFb}{{{b{AFd}}}AFd}{{{b{AFf}}}AFf}{{{b{AFh}}}AFh}{{{b{AFj}}}AFj}{{{b{AFl}}}AFl}{{{b{AFn}}}AFn}{{{b{AG`}}}AG`}{{{b{AGb}}}AGb}{{{b{AGd}}}AGd}{{{b{AGf}}}AGf}{{{b{AGh}}}AGh}{{{b{AGj}}}AGj}{{{b{AGl}}}AGl}{{{b{AGn}}}AGn}{{{b{AH`}}}AH`}{{{b{AHb}}}AHb}{{{b{AHd}}}AHd}{{{b{AHf}}}AHf}{{{b{AHh}}}AHh}{{{b{AHj}}}AHj}{{{b{AHl}}}AHl}{{{b{AHn}}}AHn}{{{b{AI`}}}AI`}{{{b{AIb}}}AIb}{{{b{AId}}}AId}{{{b{AIf}}}AIf}{{{b{AIh}}}AIh}{{{b{AIj}}}AIj}{{{b{AIl}}}AIl}{{{b{AIn}}}AIn}{{{b{AJ`}}}AJ`}{{{b{AJb}}}AJb}{{{b{AJd}}}AJd}{{{b{AJf}}}AJf}{{{b{AJh}}}AJh}{{{b{AJj}}}AJj}{{{b{AJl}}}AJl}{{{b{AJn}}}AJn}{{{b{AK`}}}AK`}{{{b{AKb}}}AKb}{{{b{AKd}}}AKd}{{{b{AKf}}}AKf}{{{b{AKh}}}AKh}{{{b{AKj}}}AKj}{{{b{AKl}}}AKl}{{{b{AKn}}}AKn}{{{b{AL`}}}AL`}{{{b{ALb}}}ALb}{{{b{ALd}}}ALd}{{{b{ALf}}}ALf}{{{b{ALh}}}ALh}{{{b{ALj}}}ALj}{{{b{ALl}}}ALl}{{{b{ALn}}}ALn}{{{b{AM`}}}AM`}{{{b{AMb}}}AMb}{{{b{AMd}}}AMd}{{{b{AMf}}}AMf}{{{b{AMh}}}AMh}{{{b{AMj}}}AMj}{{{b{AMl}}}AMl}{{{b{AMn}}}AMn}{{{b{AN`}}}AN`}{{{b{ANb}}}ANb}{{{b{ANd}}}ANd}{{{b{ANf}}}ANf}{{{b{ANh}}}ANh}{{{b{ANj}}}ANj}{{{b{ANl}}}ANl}{{{b{ANn}}}ANn}{{{b{AO`}}}AO`}{{{b{AOb}}}AOb}{{{b{AOd}}}AOd}{{{b{AOf}}}AOf}{{{b{AOh}}}AOh}{{{b{AOj}}}AOj}{{{b{AOl}}}AOl}{{{b{AOn}}}AOn}{{{b{B@`}}}B@`}{{{b{B@b}}}B@b}{{{b{B@d}}}B@d}{{{b{B@f}}}B@f}{{{b{B@h}}}B@h}{{{b{B@j}}}B@j}{{{b{B@l}}}B@l}{{{b{B@n}}}B@n}{{{b{BA`}}}BA`}{{{b{BAb}}}BAb}{{{b{BAd}}}BAd}{{{b{BAf}}}BAf}{{{b{BAh}}}BAh}{{{b{BAj}}}BAj}{{{b{BAl}}}BAl}{{{b{BAn}}}BAn}{{{b{BB`}}}BB`}{{{b{BBb}}}BBb}{{{b{BBd}}}BBd}{{{b{BBf}}}BBf}{{{b{BBh}}}BBh}{{{b{BBj}}}BBj}{{{b{BBl}}}BBl}{{{b{BBn}}}BBn}{{{b{BC`}}}BC`}{{{b{BCb}}}BCb}{{{b{BCd}}}BCd}{{{b{BCf}}}BCf}{{{b{BCh}}}BCh}{{{b{BCj}}}BCj}{{{b{BCl}}}BCl}{{{b{BCn}}}BCn}{{{b{BD`}}}BD`}{{{b{BDb}}}BDb}{{{b{BDd}}}BDd}{{{b{BDf}}}BDf}{{{b{BDh}}}BDh}{{{b{BDj}}}BDj}{{{b{BDl}}}BDl}{{{b{BDn}}}BDn}{{{b{BE`}}}BE`}{{{b{BEb}}}BEb}{{{b{BEd}}}BEd}{{{b{BEf}}}BEf}{{{b{BEh}}}BEh}{{{b{BEj}}}BEj}{{{b{BEl}}}BEl}{{{b{BEn}}}BEn}{{{b{BF`}}}BF`}{{{b{BFb}}}BFb}{{{b{BFd}}}BFd}{{{b{BFf}}}BFf}{{{b{BFh}}}BFh}{{{b{BFj}}}BFj}{{{b{BFl}}}BFl}{{{b{BFn}}}BFn}{{{b{BG`}}}BG`}{{{b{BGb}}}BGb}{{{b{BGd}}}BGd}{{{b{BGf}}}BGf}{{{b{BGh}}}BGh}{{{b{BGj}}}BGj}{{{b{BGl}}}BGl}{{{b{BGn}}}BGn}{{{b{BH`}}}BH`}{{{b{BHb}}}BHb}{{{b{BHd}}}BHd}{{{b{BHf}}}BHf}{{{b{BHh}}}BHh}{{{b{BHj}}}BHj}{{{b{BHl}}}BHl}{{{b{BHn}}}BHn}{{{b{BI`}}}BI`}{{{b{BIb}}}BIb}{{{b{BId}}}BId}{{{b{BIf}}}BIf}{{{b{BIh}}}BIh}{{{b{BIj}}}BIj}{{{b{BIl}}}BIl}{{{b{BIn}}}BIn}{{{b{BJ`}}}BJ`}{{{b{BJb}}}BJb}{{{b{BJd}}}BJd}{{{b{BJf}}}BJf}{{{b{BJh}}}BJh}{{{b{BJj}}}BJj}{{{b{BJl}}}BJl}{{{b{BJn}}}BJn}{{{b{BK`}}}BK`}{{{b{BKb}}}BKb}{{{b{BKd}}}BKd}{{{b{BKf}}}BKf}{{{b{BKh}}}BKh}{{{b{BKj}}}BKj}{{{b{BKl}}}BKl}{{{b{BKn}}}BKn}{{{b{BL`}}}BL`}{{{b{BLb}}}BLb}{{{b{BLd}}}BLd}{{{b{BLf}}}BLf}{{{b{BLh}}}BLh}{{{b{BLj}}}BLj}{{{b{BLl}}}BLl}{{{b{BLn}}}BLn}{{{b{BM`}}}BM`}{{{b{BMb}}}BMb}{{{b{BMd}}}BMd}{{{b{BMf}}}BMf}{{{b{BMh}}}BMh}{{{b{BMj}}}BMj}{{{b{BMl}}}BMl}{{{b{BMn}}}BMn}{{{b{BN`}}}BN`}{{{b{BNb}}}BNb}{{{b{Dl}}}Dl}{{{b{Dn}}}Dn}{{{b{BNd}}}BNd}{{{b{BNf}}}BNf}{{{b{BNh}}}BNh}{{{b{BNj}}}BNj}{{{b{BNl}}}BNl}{{{b{BNn}}}BNn}{{{b{BO`}}}BO`}{{{b{BOb}}}BOb}{{{b{BOd}}}BOd}{{{b{BOf}}}BOf}{{{b{BOh}}}BOh}{{{b{BOj}}}BOj}{{{b{BOl}}}BOl}{{{b{BOn}}}BOn}{{{b{E`}}}E`}{{{b{C@`}}}C@`}{{{b{C@b}}}C@b}{{{b{Eb}}}Eb}{{{b{C@d}}}C@d}{{{b{C@f}}}C@f}{{{b{C@h}}}C@h}{{{b{C@j}}}C@j}{{{b{C@l}}}C@l}{{{b{C@n}}}C@n}{{{b{CA`}}}CA`}{{{b{CAb}}}CAb}{{{b{CAd}}}CAd}{{{b{CAf}}}CAf}{{{b{Ed}}}Ed}{{{b{CAh}}}CAh}{{{b{CAj}}}CAj}{{{b{CAl}}}CAl}{{{b{CAn}}}CAn}{{{b{Ef}}}Ef}{{{b{CB`}}}CB`}{{{b{CBb}}}CBb}{{{b{CBd}}}CBd}{{{b{CBf}}}CBf}{{{b{Eh}}}Eh}{{{b{CBh}}}CBh}{{{b{CBj}}}CBj}{{{b{CBl}}}CBl}{{{b{CBn}}}CBn}{{{b{CC`}}}CC`}{{{b{CCb}}}CCb}{{{b{Ej}}}Ej}{{{b{CCd}}}CCd}{{{b{CCf}}}CCf}{{{b{CCh}}}CCh}{{{b{CCj}}}CCj}{{{b{CCl}}}CCl}{{{b{CCn}}}CCn}{{{b{CD`}}}CD`}{{{b{CDb}}}CDb}{{{b{CDd}}}CDd}{{{b{CDf}}}CDf}{{{b{CDh}}}CDh}{{{b{El}}}El}{{{b{En}}}En}{{{b{CDj}}}CDj}{{{b{CDl}}}CDl}{{{b{F`}}}F`}{{{b{CDn}}}CDn}{{{b{CE`}}}CE`}{{{b{Fb}}}Fb}{{{b{CEb}}}CEb}{{{b{CEd}}}CEd}{{{b{CEf}}}CEf}{{{b{CEh}}}CEh}{{{b{CEj}}}CEj}{{{b{CEl}}}CEl}{{{b{CEn}}}CEn}{{{b{Fd}}}Fd}{{{b{CF`}}}CF`}{{{b{CFb}}}CFb}{{{b{CFd}}}CFd}{{{b{Ff}}}Ff}{{{b{CFf}}}CFf}{{{b{CFh}}}CFh}{{{b{CFj}}}CFj}{{{b{Fh}}}Fh}{{{b{CFl}}}CFl}{{{b{CFn}}}CFn}{{{b{CG`}}}CG`}{{{b{CGb}}}CGb}{{{b{CGd}}}CGd}{{{b{CGf}}}CGf}{{{b{CGh}}}CGh}{{{b{CGj}}}CGj}{{{b{CGl}}}CGl}{{{b{CGn}}}CGn}{{{b{CH`}}}CH`}{{{b{CHb}}}CHb}{{{b{Fj}}}Fj}{{{b{CHd}}}CHd}{{{b{CHf}}}CHf}{{{b{Fl}}}Fl}{{{b{CHh}}}CHh}{{{b{CHj}}}CHj}{{{b{Fn}}}Fn}{{{b{CHl}}}CHl}{{{b{G`}}}G`}{{{b{CHn}}}CHn}{{{b{CI`}}}CI`}{{{b{Gb}}}Gb}{{{b{CIb}}}CIb}{{{b{CId}}}CId}{{{b{CIf}}}CIf}{{{b{CIh}}}CIh}{{{b{Gd}}}Gd}{{{b{CIj}}}CIj}{{{b{Gf}}}Gf}{{{b{CIl}}}CIl}{{{b{CIn}}}CIn}{{{b{Gh}}}Gh}{{{b{CJ`}}}CJ`}{{{b{CJb}}}CJb}{{{b{CJd}}}CJd}{{{b{CJf}}}CJf}{{{b{CJh}}}CJh}{{{b{CJj}}}CJj}{{{b{CJl}}}CJl}{{{b{CJn}}}CJn}{{{b{CK`}}}CK`}{{{b{CKb}}}CKb}{{{b{Gj}}}Gj}{{{b{CKd}}}CKd}{{{b{CKf}}}CKf}{{{b{CKh}}}CKh}{{{b{CKj}}}CKj}{{{b{CKl}}}CKl}{{{b{CKn}}}CKn}{{{b{CL`}}}CL`}{{{b{CLb}}}CLb}{{{b{CLd}}}CLd}{{{b{CLf}}}CLf}{{{b{CLh}}}CLh}{{{b{CLj}}}CLj}{{{b{CLl}}}CLl}{{{b{CLn}}}CLn}{{{b{CM`}}}CM`}{{{b{CMb}}}CMb}{{{b{CMd}}}CMd}{{{b{CMf}}}CMf}{{{b{CMh}}}CMh}{{{b{Gl}}}Gl}{{{b{CMj}}}CMj}{{{b{Gn}}}Gn}{{{b{CMl}}}CMl}{{{b{CMn}}}CMn}{{{b{CN`}}}CN`}{{{b{H`}}}H`}{{{b{CNb}}}CNb}{{{b{CNd}}}CNd}{{{b{CNf}}}CNf}{{{b{Hb}}}Hb}{{{b{CNh}}}CNh}{{{b{CNj}}}CNj}{{{b{CNl}}}CNl}{{{b{CNn}}}CNn}{{{b{CO`}}}CO`}{{{b{COb}}}COb}{{{b{COd}}}COd}{{{b{COf}}}COf}{{{b{COh}}}COh}{{{b{COj}}}COj}{{{b{COl}}}COl}{{{b{COn}}}COn}{{{b{D@`}}}D@`}{{{b{D@b}}}D@b}{{{b{Hd}}}Hd}{{{b{D@d}}}D@d}{{{b{Hf}}}Hf}{{{b{D@f}}}D@f}{{{b{D@h}}}D@h}{{{b{D@j}}}D@j}{{{b{Hh}}}Hh}{{{b{D@l}}}D@l}{{{b{D@n}}}D@n}{{{b{DA`}}}DA`}{{{b{DAb}}}DAb}{{{b{DAd}}}DAd}{{{b{DAf}}}DAf}{{{b{DAh}}}DAh}{{{b{DAj}}}DAj}{{{b{Hj}}}Hj}{{{b{DAl}}}DAl}{{{b{DAn}}}DAn}{{{b{DB`}}}DB`}{{{b{c}}{b{de}}}Aj{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000````{{{b{Dl}}{b{Dl}}}DBb}{{{b{Dn}}{b{Dn}}}DBb}{{{b{E`}}{b{E`}}}DBb}{{{b{Eb}}{b{Eb}}}DBb}{{{b{Ed}}{b{Ed}}}DBb}{{{b{Ef}}{b{Ef}}}DBb}{{{b{Eh}}{b{Eh}}}DBb}{{{b{Ej}}{b{Ej}}}DBb}{{{b{El}}{b{El}}}DBb}{{{b{En}}{b{En}}}DBb}{{{b{F`}}{b{F`}}}DBb}{{{b{Fb}}{b{Fb}}}DBb}{{{b{Fd}}{b{Fd}}}DBb}{{{b{Ff}}{b{Ff}}}DBb}{{{b{Fh}}{b{Fh}}}DBb}{{{b{Fj}}{b{Fj}}}DBb}{{{b{Fl}}{b{Fl}}}DBb}{{{b{Fn}}{b{Fn}}}DBb}{{{b{G`}}{b{G`}}}DBb}{{{b{Gb}}{b{Gb}}}DBb}{{{b{Gd}}{b{Gd}}}DBb}{{{b{Gf}}{b{Gf}}}DBb}{{{b{Gh}}{b{Gh}}}DBb}{{{b{Gj}}{b{Gj}}}DBb}{{{b{Gl}}{b{Gl}}}DBb}{{{b{Gn}}{b{Gn}}}DBb}{{{b{H`}}{b{H`}}}DBb}{{{b{Hb}}{b{Hb}}}DBb}{{{b{Hd}}{b{Hd}}}DBb}{{{b{Hf}}{b{Hf}}}DBb}{{{b{Hh}}{b{Hh}}}DBb}{{{b{Hj}}{b{Hj}}}DBb}````````````````{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}{HhHh}{HjHj}```````{{{b{Dl}}Dl}C`}{{{b{Dn}}Dn}C`}{{{b{E`}}E`}C`}{{{b{Eb}}Eb}C`}{{{b{Ed}}Ed}C`}{{{b{Ef}}Ef}C`}{{{b{Eh}}Eh}C`}{{{b{Ej}}Ej}C`}{{{b{El}}El}C`}{{{b{En}}En}C`}{{{b{F`}}F`}C`}{{{b{Fb}}Fb}C`}{{{b{Fd}}Fd}C`}{{{b{Ff}}Ff}C`}{{{b{Fh}}Fh}C`}{{{b{Fj}}Fj}C`}{{{b{Fl}}Fl}C`}{{{b{Fn}}Fn}C`}{{{b{G`}}G`}C`}{{{b{Gb}}Gb}C`}{{{b{Gd}}Gd}C`}{{{b{Gf}}Gf}C`}{{{b{Gh}}Gh}C`}{{{b{Gj}}Gj}C`}{{{b{Gl}}Gl}C`}{{{b{Gn}}Gn}C`}{{{b{H`}}H`}C`}{{{b{Hb}}Hb}C`}{{{b{Hd}}Hd}C`}{{{b{Hf}}Hf}C`}{{{b{Hh}}Hh}C`}{{{b{Hj}}Hj}C`}````````````````````````````````````````````````````````````````````````````````{{}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}{{}Dl}{{}Dn}{{}BNd}{{}BNf}{{}BNh}{{}BNj}{{}BNl}{{}BNn}{{}BO`}{{}BOb}{{}BOd}{{}BOf}{{}BOh}{{}BOj}{{}BOl}{{}BOn}{{}E`}{{}C@`}{{}C@b}{{}Eb}{{}C@d}{{}C@f}{{}C@h}{{}C@j}{{}C@l}{{}C@n}{{}CA`}{{}CAb}{{}CAd}{{}CAf}{{}Ed}{{}CAh}{{}CAj}{{}CAl}{{}CAn}{{}Ef}{{}CB`}{{}CBb}{{}CBd}{{}CBf}{{}Eh}{{}CBh}{{}CBj}{{}CBl}{{}CBn}{{}CC`}{{}CCb}{{}Ej}{{}CCd}{{}CCf}{{}CCh}{{}CCj}{{}CCl}{{}CCn}{{}CD`}{{}CDb}{{}CDd}{{}CDf}{{}CDh}{{}El}{{}En}{{}CDj}{{}CDl}{{}F`}{{}CDn}{{}CE`}{{}Fb}{{}CEb}{{}CEd}{{}CEf}{{}CEh}{{}CEj}{{}CEl}{{}CEn}{{}Fd}{{}CF`}{{}CFb}{{}CFd}{{}Ff}{{}CFf}{{}CFh}{{}CFj}{{}Fh}{{}CFl}{{}CFn}{{}CG`}{{}CGb}{{}CGd}{{}CGf}{{}CGh}{{}CGj}{{}CGl}{{}CGn}{{}CH`}{{}CHb}{{}Fj}{{}CHd}{{}CHf}{{}Fl}{{}CHh}{{}CHj}{{}Fn}{{}CHl}{{}G`}{{}CHn}{{}CI`}{{}Gb}{{}CIb}{{}CId}{{}CIf}{{}CIh}{{}Gd}{{}CIj}{{}Gf}{{}CIl}{{}CIn}{{}Gh}{{}CJ`}{{}CJb}{{}CJd}{{}CJf}{{}CJh}{{}CJj}{{}CJl}{{}CJn}{{}CK`}{{}CKb}{{}Gj}{{}CKd}{{}CKf}{{}CKh}{{}CKj}{{}CKl}{{}CKn}{{}CL`}{{}CLb}{{}CLd}{{}CLf}{{}CLh}{{}CLj}{{}CLl}{{}CLn}{{}CM`}{{}CMb}{{}CMd}{{}CMf}{{}CMh}{{}Gl}{{}CMj}{{}Gn}{{}CMl}{{}CMn}{{}CN`}{{}H`}{{}CNb}{{}CNd}{{}CNf}{{}Hb}{{}CNh}{{}CNj}{{}CNl}{{}CNn}{{}CO`}{{}COb}{{}COd}{{}COf}{{}COh}{{}COj}{{}COl}{{}COn}{{}D@`}{{}D@b}{{}Hd}{{}D@d}{{}Hf}{{}D@f}{{}D@h}{{}D@j}{{}Hh}{{}D@l}{{}D@n}{{}DA`}{{}DAb}{{}DAd}{{}DAf}{{}DAh}{{}DAj}{{}Hj}{{}DAl}{{}DAn}{{}DB`}{Bf{{Bd{Hn{b{Al}}}}}}`````````````{{Ab{b{{h{f}}}}}{{Bd{I`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{IbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{IdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{IfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{IhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{IjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{IlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{InBl}}}}{{Ab{b{{h{f}}}}}{{Bd{J`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{JbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{JdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{JfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{JhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{JjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{JlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{JnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{K`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{KbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{KdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{KfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{KhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{KjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{KlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{KnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{L`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{LbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{LdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{LfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{LhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{LjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{LlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{LnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{M`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{MbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{MdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{MfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{MhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{MjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{MlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{MnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{N`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{NbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{NdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{NfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{NhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{NjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{NlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{NnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{O`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ObBl}}}}{{Ab{b{{h{f}}}}}{{Bd{OdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{OfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{OhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{OjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{OlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{OnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@bBl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@dBl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@fBl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@hBl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@jBl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@lBl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@nBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AA`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AAbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AAdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AAfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AAhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AAjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AAlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AAnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AB`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ABbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ABdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ABfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ABhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ABjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ABlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ABnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AC`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ACbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ACdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ACfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AChBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ACjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AClBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ACnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AD`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ADbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ADdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ADfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ADhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ADjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ADlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ADnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AE`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AEbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AEdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AEfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AEhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AEjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AElBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AEnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AF`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AFbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AFdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AFfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AFhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AFjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AFlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AFnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AG`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AGbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AGdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AGfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AGhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AGjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AGlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AGnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AH`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AHbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AHdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AHfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AHhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AHjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AHlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AHnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AI`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AIbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AIdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AIfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AIhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AIjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AIlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AInBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJ`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AK`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AKbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AKdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AKfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AKhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AKjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AKlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AKnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AL`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ALbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ALdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ALfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ALhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ALjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ALlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ALnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AM`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AMbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AMdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AMfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AMhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AMjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AMlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AMnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AN`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ANbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ANdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ANfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ANhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ANjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ANlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ANnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AO`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AObBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AOdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AOfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AOhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AOjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AOlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AOnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@bBl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@dBl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@fBl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@hBl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@jBl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@lBl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@nBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BA`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BAbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BAdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BAfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BAhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BAjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BAlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BAnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BB`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BBbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BBdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BBfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BBhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BBjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BBlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BBnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BC`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BCbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BCdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BCfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BChBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BCjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BClBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BCnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BD`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BDbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BDdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BDfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BDhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BDjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BDlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BDnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BE`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BEbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BEdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BEfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BEhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BEjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BElBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BEnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BF`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BFbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BFdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BFfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BFhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BFjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BFlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BFnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BG`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BGbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BGdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BGfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BGhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BGjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BGlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BGnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BH`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BHbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BHdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BHfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BHhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BHjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BHlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BHnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BI`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BIbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BIdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BIfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BIhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BIjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BIlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BInBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJ`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BK`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BKbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BKdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BKfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BKhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BKjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BKlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BKnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BL`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BLbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BLdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BLfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BLhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BLjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BLlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BLnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BM`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BMbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BMdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BMfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BMhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BMjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BMlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BMnBl}}}}{c{{Bd{Hn}}}Bn}{c{{Bd{I`}}}Bn}{c{{Bd{Ib}}}Bn}{c{{Bd{Id}}}Bn}{c{{Bd{If}}}Bn}{c{{Bd{Ih}}}Bn}{c{{Bd{Ij}}}Bn}{c{{Bd{Il}}}Bn}{c{{Bd{In}}}Bn}{c{{Bd{J`}}}Bn}{c{{Bd{Jb}}}Bn}{c{{Bd{Jd}}}Bn}{c{{Bd{Jf}}}Bn}{c{{Bd{Jh}}}Bn}{c{{Bd{Jj}}}Bn}{c{{Bd{Jl}}}Bn}{c{{Bd{Jn}}}Bn}{c{{Bd{K`}}}Bn}{c{{Bd{Kb}}}Bn}{c{{Bd{Kd}}}Bn}{c{{Bd{Kf}}}Bn}{c{{Bd{Kh}}}Bn}{c{{Bd{Kj}}}Bn}{c{{Bd{Kl}}}Bn}{c{{Bd{Kn}}}Bn}{c{{Bd{L`}}}Bn}{c{{Bd{Lb}}}Bn}{c{{Bd{Ld}}}Bn}{c{{Bd{Lf}}}Bn}{c{{Bd{Lh}}}Bn}{c{{Bd{Lj}}}Bn}{c{{Bd{Ll}}}Bn}{c{{Bd{Ln}}}Bn}{c{{Bd{M`}}}Bn}{c{{Bd{Mb}}}Bn}{c{{Bd{Md}}}Bn}{c{{Bd{Mf}}}Bn}{c{{Bd{Mh}}}Bn}{c{{Bd{Mj}}}Bn}{c{{Bd{Ml}}}Bn}{c{{Bd{Mn}}}Bn}{c{{Bd{N`}}}Bn}{c{{Bd{Nb}}}Bn}{c{{Bd{Nd}}}Bn}{c{{Bd{Nf}}}Bn}{c{{Bd{Nh}}}Bn}{c{{Bd{Nj}}}Bn}{c{{Bd{Nl}}}Bn}{c{{Bd{Nn}}}Bn}{c{{Bd{O`}}}Bn}{c{{Bd{Ob}}}Bn}{c{{Bd{Od}}}Bn}{c{{Bd{Of}}}Bn}{c{{Bd{Oh}}}Bn}{c{{Bd{Oj}}}Bn}{c{{Bd{Ol}}}Bn}{c{{Bd{On}}}Bn}{c{{Bd{A@`}}}Bn}{c{{Bd{A@b}}}Bn}{c{{Bd{A@d}}}Bn}{c{{Bd{A@f}}}Bn}{c{{Bd{A@h}}}Bn}{c{{Bd{A@j}}}Bn}{c{{Bd{A@l}}}Bn}{c{{Bd{A@n}}}Bn}{c{{Bd{AA`}}}Bn}{c{{Bd{AAb}}}Bn}{c{{Bd{AAd}}}Bn}{c{{Bd{AAf}}}Bn}{c{{Bd{AAh}}}Bn}{c{{Bd{AAj}}}Bn}{c{{Bd{AAl}}}Bn}{c{{Bd{AAn}}}Bn}{c{{Bd{AB`}}}Bn}{c{{Bd{ABb}}}Bn}{c{{Bd{ABd}}}Bn}{c{{Bd{ABf}}}Bn}{c{{Bd{ABh}}}Bn}{c{{Bd{ABj}}}Bn}{c{{Bd{ABl}}}Bn}{c{{Bd{ABn}}}Bn}{c{{Bd{AC`}}}Bn}{c{{Bd{ACb}}}Bn}{c{{Bd{ACd}}}Bn}{c{{Bd{ACf}}}Bn}{c{{Bd{ACh}}}Bn}{c{{Bd{ACj}}}Bn}{c{{Bd{ACl}}}Bn}{c{{Bd{ACn}}}Bn}{c{{Bd{AD`}}}Bn}{c{{Bd{ADb}}}Bn}{c{{Bd{ADd}}}Bn}{c{{Bd{ADf}}}Bn}{c{{Bd{ADh}}}Bn}{c{{Bd{ADj}}}Bn}{c{{Bd{ADl}}}Bn}{c{{Bd{ADn}}}Bn}{c{{Bd{AE`}}}Bn}{c{{Bd{AEb}}}Bn}{c{{Bd{AEd}}}Bn}{c{{Bd{AEf}}}Bn}{c{{Bd{AEh}}}Bn}{c{{Bd{AEj}}}Bn}{c{{Bd{AEl}}}Bn}{c{{Bd{AEn}}}Bn}{c{{Bd{AF`}}}Bn}{c{{Bd{AFb}}}Bn}{c{{Bd{AFd}}}Bn}{c{{Bd{AFf}}}Bn}{c{{Bd{AFh}}}Bn}{c{{Bd{AFj}}}Bn}{c{{Bd{AFl}}}Bn}{c{{Bd{AFn}}}Bn}{c{{Bd{AG`}}}Bn}{c{{Bd{AGb}}}Bn}{c{{Bd{AGd}}}Bn}{c{{Bd{AGf}}}Bn}{c{{Bd{AGh}}}Bn}{c{{Bd{AGj}}}Bn}{c{{Bd{AGl}}}Bn}{c{{Bd{AGn}}}Bn}{c{{Bd{AH`}}}Bn}{c{{Bd{AHb}}}Bn}{c{{Bd{AHd}}}Bn}{c{{Bd{AHf}}}Bn}{c{{Bd{AHh}}}Bn}{c{{Bd{AHj}}}Bn}{c{{Bd{AHl}}}Bn}{c{{Bd{AHn}}}Bn}{c{{Bd{AI`}}}Bn}{c{{Bd{AIb}}}Bn}{c{{Bd{AId}}}Bn}{c{{Bd{AIf}}}Bn}{c{{Bd{AIh}}}Bn}{c{{Bd{AIj}}}Bn}{c{{Bd{AIl}}}Bn}{c{{Bd{AIn}}}Bn}{c{{Bd{AJ`}}}Bn}{c{{Bd{AJb}}}Bn}{c{{Bd{AJd}}}Bn}{c{{Bd{AJf}}}Bn}{c{{Bd{AJh}}}Bn}{c{{Bd{AJj}}}Bn}{c{{Bd{AJl}}}Bn}{c{{Bd{AJn}}}Bn}{c{{Bd{AK`}}}Bn}{c{{Bd{AKb}}}Bn}{c{{Bd{AKd}}}Bn}{c{{Bd{AKf}}}Bn}{c{{Bd{AKh}}}Bn}{c{{Bd{AKj}}}Bn}{c{{Bd{AKl}}}Bn}{c{{Bd{AKn}}}Bn}{c{{Bd{AL`}}}Bn}{c{{Bd{ALb}}}Bn}{c{{Bd{ALd}}}Bn}{c{{Bd{ALf}}}Bn}{c{{Bd{ALh}}}Bn}{c{{Bd{ALj}}}Bn}{c{{Bd{ALl}}}Bn}{c{{Bd{ALn}}}Bn}{c{{Bd{AM`}}}Bn}{c{{Bd{AMb}}}Bn}{c{{Bd{AMd}}}Bn}{c{{Bd{AMf}}}Bn}{c{{Bd{AMh}}}Bn}{c{{Bd{AMj}}}Bn}{c{{Bd{AMl}}}Bn}{c{{Bd{AMn}}}Bn}{c{{Bd{AN`}}}Bn}{c{{Bd{ANb}}}Bn}{c{{Bd{ANd}}}Bn}{c{{Bd{ANf}}}Bn}{c{{Bd{ANh}}}Bn}{c{{Bd{ANj}}}Bn}{c{{Bd{ANl}}}Bn}{c{{Bd{ANn}}}Bn}{c{{Bd{AO`}}}Bn}{c{{Bd{AOb}}}Bn}{c{{Bd{AOd}}}Bn}{c{{Bd{AOf}}}Bn}{c{{Bd{AOh}}}Bn}{c{{Bd{AOj}}}Bn}{c{{Bd{AOl}}}Bn}{c{{Bd{AOn}}}Bn}{c{{Bd{B@`}}}Bn}{c{{Bd{B@b}}}Bn}{c{{Bd{B@d}}}Bn}{c{{Bd{B@f}}}Bn}{c{{Bd{B@h}}}Bn}{c{{Bd{B@j}}}Bn}{c{{Bd{B@l}}}Bn}{c{{Bd{B@n}}}Bn}{c{{Bd{BA`}}}Bn}{c{{Bd{BAb}}}Bn}{c{{Bd{BAd}}}Bn}{c{{Bd{BAf}}}Bn}{c{{Bd{BAh}}}Bn}{c{{Bd{BAj}}}Bn}{c{{Bd{BAl}}}Bn}{c{{Bd{BAn}}}Bn}{c{{Bd{BB`}}}Bn}{c{{Bd{BBb}}}Bn}{c{{Bd{BBd}}}Bn}{c{{Bd{BBf}}}Bn}{c{{Bd{BBh}}}Bn}{c{{Bd{BBj}}}Bn}{c{{Bd{BBl}}}Bn}{c{{Bd{BBn}}}Bn}{c{{Bd{BC`}}}Bn}{c{{Bd{BCb}}}Bn}{c{{Bd{BCd}}}Bn}{c{{Bd{BCf}}}Bn}{c{{Bd{BCh}}}Bn}{c{{Bd{BCj}}}Bn}{c{{Bd{BCl}}}Bn}{c{{Bd{BCn}}}Bn}{c{{Bd{BD`}}}Bn}{c{{Bd{BDb}}}Bn}{c{{Bd{BDd}}}Bn}{c{{Bd{BDf}}}Bn}{c{{Bd{BDh}}}Bn}{c{{Bd{BDj}}}Bn}{c{{Bd{BDl}}}Bn}{c{{Bd{BDn}}}Bn}{c{{Bd{BE`}}}Bn}{c{{Bd{BEb}}}Bn}{c{{Bd{BEd}}}Bn}{c{{Bd{BEf}}}Bn}{c{{Bd{BEh}}}Bn}{c{{Bd{BEj}}}Bn}{c{{Bd{BEl}}}Bn}{c{{Bd{BEn}}}Bn}{c{{Bd{BF`}}}Bn}{c{{Bd{BFb}}}Bn}{c{{Bd{BFd}}}Bn}{c{{Bd{BFf}}}Bn}{c{{Bd{BFh}}}Bn}{c{{Bd{BFj}}}Bn}{c{{Bd{BFl}}}Bn}{c{{Bd{BFn}}}Bn}{c{{Bd{BG`}}}Bn}{c{{Bd{BGb}}}Bn}{c{{Bd{BGd}}}Bn}{c{{Bd{BGf}}}Bn}{c{{Bd{BGh}}}Bn}{c{{Bd{BGj}}}Bn}{c{{Bd{BGl}}}Bn}{c{{Bd{BGn}}}Bn}{c{{Bd{BH`}}}Bn}{c{{Bd{BHb}}}Bn}{c{{Bd{BHd}}}Bn}{c{{Bd{BHf}}}Bn}{c{{Bd{BHh}}}Bn}{c{{Bd{BHj}}}Bn}{c{{Bd{BHl}}}Bn}{c{{Bd{BHn}}}Bn}{c{{Bd{BI`}}}Bn}{c{{Bd{BIb}}}Bn}{c{{Bd{BId}}}Bn}{c{{Bd{BIf}}}Bn}{c{{Bd{BIh}}}Bn}{c{{Bd{BIj}}}Bn}{c{{Bd{BIl}}}Bn}{c{{Bd{BIn}}}Bn}{c{{Bd{BJ`}}}Bn}{c{{Bd{BJb}}}Bn}{c{{Bd{BJd}}}Bn}{c{{Bd{BJf}}}Bn}{c{{Bd{BJh}}}Bn}{c{{Bd{BJj}}}Bn}{c{{Bd{BJl}}}Bn}{c{{Bd{BJn}}}Bn}{c{{Bd{BK`}}}Bn}{c{{Bd{BKb}}}Bn}{c{{Bd{BKd}}}Bn}{c{{Bd{BKf}}}Bn}{c{{Bd{BKh}}}Bn}{c{{Bd{BKj}}}Bn}{c{{Bd{BKl}}}Bn}{c{{Bd{BKn}}}Bn}{c{{Bd{BL`}}}Bn}{c{{Bd{BLb}}}Bn}{c{{Bd{BLd}}}Bn}{c{{Bd{BLf}}}Bn}{c{{Bd{BLh}}}Bn}{c{{Bd{BLj}}}Bn}{c{{Bd{BLl}}}Bn}{c{{Bd{BLn}}}Bn}{c{{Bd{BM`}}}Bn}{c{{Bd{BMb}}}Bn}{c{{Bd{BMd}}}Bn}{c{{Bd{BMf}}}Bn}{c{{Bd{BMh}}}Bn}{c{{Bd{BMj}}}Bn}{c{{Bd{BMl}}}Bn}{c{{Bd{BMn}}}Bn}{c{{Bd{BN`}}}Bn}{c{{Bd{BNb}}}Bn}{c{{Bd{Dl}}}Bn}{c{{Bd{Dn}}}Bn}{c{{Bd{BNd}}}Bn}{c{{Bd{BNf}}}Bn}{c{{Bd{BNh}}}Bn}{c{{Bd{BNj}}}Bn}{c{{Bd{BNl}}}Bn}{c{{Bd{BNn}}}Bn}{c{{Bd{BO`}}}Bn}{c{{Bd{BOb}}}Bn}{c{{Bd{BOd}}}Bn}{c{{Bd{BOf}}}Bn}{c{{Bd{BOh}}}Bn}{c{{Bd{BOj}}}Bn}{c{{Bd{BOl}}}Bn}{c{{Bd{BOn}}}Bn}{c{{Bd{E`}}}Bn}{c{{Bd{C@`}}}Bn}{c{{Bd{C@b}}}Bn}{c{{Bd{Eb}}}Bn}{c{{Bd{C@d}}}Bn}{c{{Bd{C@f}}}Bn}{c{{Bd{C@h}}}Bn}{c{{Bd{C@j}}}Bn}{c{{Bd{C@l}}}Bn}{c{{Bd{C@n}}}Bn}{c{{Bd{CA`}}}Bn}{c{{Bd{CAb}}}Bn}{c{{Bd{CAd}}}Bn}{c{{Bd{CAf}}}Bn}{c{{Bd{Ed}}}Bn}{c{{Bd{CAh}}}Bn}{c{{Bd{CAj}}}Bn}{c{{Bd{CAl}}}Bn}{c{{Bd{CAn}}}Bn}{c{{Bd{Ef}}}Bn}{c{{Bd{CB`}}}Bn}{c{{Bd{CBb}}}Bn}{c{{Bd{CBd}}}Bn}{c{{Bd{CBf}}}Bn}{c{{Bd{Eh}}}Bn}{c{{Bd{CBh}}}Bn}{c{{Bd{CBj}}}Bn}{c{{Bd{CBl}}}Bn}{c{{Bd{CBn}}}Bn}{c{{Bd{CC`}}}Bn}{c{{Bd{CCb}}}Bn}{c{{Bd{Ej}}}Bn}{c{{Bd{CCd}}}Bn}{c{{Bd{CCf}}}Bn}{c{{Bd{CCh}}}Bn}{c{{Bd{CCj}}}Bn}{c{{Bd{CCl}}}Bn}{c{{Bd{CCn}}}Bn}{c{{Bd{CD`}}}Bn}{c{{Bd{CDb}}}Bn}{c{{Bd{CDd}}}Bn}{c{{Bd{CDf}}}Bn}{c{{Bd{CDh}}}Bn}{c{{Bd{El}}}Bn}{c{{Bd{En}}}Bn}{c{{Bd{CDj}}}Bn}{c{{Bd{CDl}}}Bn}{c{{Bd{F`}}}Bn}{c{{Bd{CDn}}}Bn}{c{{Bd{CE`}}}Bn}{c{{Bd{Fb}}}Bn}{c{{Bd{CEb}}}Bn}{c{{Bd{CEd}}}Bn}{c{{Bd{CEf}}}Bn}{c{{Bd{CEh}}}Bn}{c{{Bd{CEj}}}Bn}{c{{Bd{CEl}}}Bn}{c{{Bd{CEn}}}Bn}{c{{Bd{Fd}}}Bn}{c{{Bd{CF`}}}Bn}{c{{Bd{CFb}}}Bn}{c{{Bd{CFd}}}Bn}{c{{Bd{Ff}}}Bn}{c{{Bd{CFf}}}Bn}{c{{Bd{CFh}}}Bn}{c{{Bd{CFj}}}Bn}{c{{Bd{Fh}}}Bn}{c{{Bd{CFl}}}Bn}{c{{Bd{CFn}}}Bn}{c{{Bd{CG`}}}Bn}{c{{Bd{CGb}}}Bn}{c{{Bd{CGd}}}Bn}{c{{Bd{CGf}}}Bn}{c{{Bd{CGh}}}Bn}{c{{Bd{CGj}}}Bn}{c{{Bd{CGl}}}Bn}{c{{Bd{CGn}}}Bn}{c{{Bd{CH`}}}Bn}{c{{Bd{CHb}}}Bn}{c{{Bd{Fj}}}Bn}{c{{Bd{CHd}}}Bn}{c{{Bd{CHf}}}Bn}{c{{Bd{Fl}}}Bn}{c{{Bd{CHh}}}Bn}{c{{Bd{CHj}}}Bn}{c{{Bd{Fn}}}Bn}{c{{Bd{CHl}}}Bn}{c{{Bd{G`}}}Bn}{c{{Bd{CHn}}}Bn}{c{{Bd{CI`}}}Bn}{c{{Bd{Gb}}}Bn}{c{{Bd{CIb}}}Bn}{c{{Bd{CId}}}Bn}{c{{Bd{CIf}}}Bn}{c{{Bd{CIh}}}Bn}{c{{Bd{Gd}}}Bn}{c{{Bd{CIj}}}Bn}{c{{Bd{Gf}}}Bn}{c{{Bd{CIl}}}Bn}{c{{Bd{CIn}}}Bn}{c{{Bd{Gh}}}Bn}{c{{Bd{CJ`}}}Bn}{c{{Bd{CJb}}}Bn}{c{{Bd{CJd}}}Bn}{c{{Bd{CJf}}}Bn}{c{{Bd{CJh}}}Bn}{c{{Bd{CJj}}}Bn}{c{{Bd{CJl}}}Bn}{c{{Bd{CJn}}}Bn}{c{{Bd{CK`}}}Bn}{c{{Bd{CKb}}}Bn}{c{{Bd{Gj}}}Bn}{c{{Bd{CKd}}}Bn}{c{{Bd{CKf}}}Bn}{c{{Bd{CKh}}}Bn}{c{{Bd{CKj}}}Bn}{c{{Bd{CKl}}}Bn}{c{{Bd{CKn}}}Bn}{c{{Bd{CL`}}}Bn}{c{{Bd{CLb}}}Bn}{c{{Bd{CLd}}}Bn}{c{{Bd{CLf}}}Bn}{c{{Bd{CLh}}}Bn}{c{{Bd{CLj}}}Bn}{c{{Bd{CLl}}}Bn}{c{{Bd{CLn}}}Bn}{c{{Bd{CM`}}}Bn}{c{{Bd{CMb}}}Bn}{c{{Bd{CMd}}}Bn}{c{{Bd{CMf}}}Bn}{c{{Bd{CMh}}}Bn}{c{{Bd{Gl}}}Bn}{c{{Bd{CMj}}}Bn}{c{{Bd{Gn}}}Bn}{c{{Bd{CMl}}}Bn}{c{{Bd{CMn}}}Bn}{c{{Bd{CN`}}}Bn}{c{{Bd{H`}}}Bn}{c{{Bd{CNb}}}Bn}{c{{Bd{CNd}}}Bn}{c{{Bd{CNf}}}Bn}{c{{Bd{Hb}}}Bn}{c{{Bd{CNh}}}Bn}{c{{Bd{CNj}}}Bn}{c{{Bd{CNl}}}Bn}{c{{Bd{CNn}}}Bn}{c{{Bd{CO`}}}Bn}{c{{Bd{COb}}}Bn}{c{{Bd{COd}}}Bn}{c{{Bd{COf}}}Bn}{c{{Bd{COh}}}Bn}{c{{Bd{COj}}}Bn}{c{{Bd{COl}}}Bn}{c{{Bd{COn}}}Bn}{c{{Bd{D@`}}}Bn}{c{{Bd{D@b}}}Bn}{c{{Bd{Hd}}}Bn}{c{{Bd{D@d}}}Bn}{c{{Bd{Hf}}}Bn}{c{{Bd{D@f}}}Bn}{c{{Bd{D@h}}}Bn}{c{{Bd{D@j}}}Bn}{c{{Bd{Hh}}}Bn}{c{{Bd{D@l}}}Bn}{c{{Bd{D@n}}}Bn}{c{{Bd{DA`}}}Bn}{c{{Bd{DAb}}}Bn}{c{{Bd{DAd}}}Bn}{c{{Bd{DAf}}}Bn}{c{{Bd{DAh}}}Bn}{c{{Bd{DAj}}}Bn}{c{{Bd{Hj}}}Bn}{c{{Bd{DAl}}}Bn}{c{{Bd{DAn}}}Bn}{c{{Bd{DB`}}}Bn}``````````````{{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}{{HhHh}Hh}{{HjHj}Hj}````````````````````````{{}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}{{}Hh}{{}Hj}````````````````{{{b{Hn}}{b{Hn}}}C`}{{{b{I`}}{b{I`}}}C`}{{{b{Ib}}{b{Ib}}}C`}{{{b{Id}}{b{Id}}}C`}{{{b{If}}{b{If}}}C`}{{{b{Ih}}{b{Ih}}}C`}{{{b{Ij}}{b{Ij}}}C`}{{{b{Il}}{b{Il}}}C`}{{{b{In}}{b{In}}}C`}{{{b{J`}}{b{J`}}}C`}{{{b{Jb}}{b{Jb}}}C`}{{{b{Jd}}{b{Jd}}}C`}{{{b{Jf}}{b{Jf}}}C`}{{{b{Jh}}{b{Jh}}}C`}{{{b{Jj}}{b{Jj}}}C`}{{{b{Jl}}{b{Jl}}}C`}{{{b{Jn}}{b{Jn}}}C`}{{{b{K`}}{b{K`}}}C`}{{{b{Kb}}{b{Kb}}}C`}{{{b{Kd}}{b{Kd}}}C`}{{{b{Kf}}{b{Kf}}}C`}{{{b{Kh}}{b{Kh}}}C`}{{{b{Kj}}{b{Kj}}}C`}{{{b{Kl}}{b{Kl}}}C`}{{{b{Kn}}{b{Kn}}}C`}{{{b{L`}}{b{L`}}}C`}{{{b{Lb}}{b{Lb}}}C`}{{{b{Ld}}{b{Ld}}}C`}{{{b{Lf}}{b{Lf}}}C`}{{{b{Lh}}{b{Lh}}}C`}{{{b{Lj}}{b{Lj}}}C`}{{{b{Ll}}{b{Ll}}}C`}{{{b{Ln}}{b{Ln}}}C`}{{{b{M`}}{b{M`}}}C`}{{{b{Mb}}{b{Mb}}}C`}{{{b{Md}}{b{Md}}}C`}{{{b{Mf}}{b{Mf}}}C`}{{{b{Mh}}{b{Mh}}}C`}{{{b{Mj}}{b{Mj}}}C`}{{{b{Ml}}{b{Ml}}}C`}{{{b{Mn}}{b{Mn}}}C`}{{{b{N`}}{b{N`}}}C`}{{{b{Nb}}{b{Nb}}}C`}{{{b{Nd}}{b{Nd}}}C`}{{{b{Nf}}{b{Nf}}}C`}{{{b{Nh}}{b{Nh}}}C`}{{{b{Nj}}{b{Nj}}}C`}{{{b{Nl}}{b{Nl}}}C`}{{{b{Nn}}{b{Nn}}}C`}{{{b{O`}}{b{O`}}}C`}{{{b{Ob}}{b{Ob}}}C`}{{{b{Od}}{b{Od}}}C`}{{{b{Of}}{b{Of}}}C`}{{{b{Oh}}{b{Oh}}}C`}{{{b{Oj}}{b{Oj}}}C`}{{{b{Ol}}{b{Ol}}}C`}{{{b{On}}{b{On}}}C`}{{{b{A@`}}{b{A@`}}}C`}{{{b{A@b}}{b{A@b}}}C`}{{{b{A@d}}{b{A@d}}}C`}{{{b{A@f}}{b{A@f}}}C`}{{{b{A@h}}{b{A@h}}}C`}{{{b{A@j}}{b{A@j}}}C`}{{{b{A@l}}{b{A@l}}}C`}{{{b{A@n}}{b{A@n}}}C`}{{{b{AA`}}{b{AA`}}}C`}{{{b{AAb}}{b{AAb}}}C`}{{{b{AAd}}{b{AAd}}}C`}{{{b{AAf}}{b{AAf}}}C`}{{{b{AAh}}{b{AAh}}}C`}{{{b{AAj}}{b{AAj}}}C`}{{{b{AAl}}{b{AAl}}}C`}{{{b{AAn}}{b{AAn}}}C`}{{{b{AB`}}{b{AB`}}}C`}{{{b{ABb}}{b{ABb}}}C`}{{{b{ABd}}{b{ABd}}}C`}{{{b{ABf}}{b{ABf}}}C`}{{{b{ABh}}{b{ABh}}}C`}{{{b{ABj}}{b{ABj}}}C`}{{{b{ABl}}{b{ABl}}}C`}{{{b{ABn}}{b{ABn}}}C`}{{{b{AC`}}{b{AC`}}}C`}{{{b{ACb}}{b{ACb}}}C`}{{{b{ACd}}{b{ACd}}}C`}{{{b{ACf}}{b{ACf}}}C`}{{{b{ACh}}{b{ACh}}}C`}{{{b{ACj}}{b{ACj}}}C`}{{{b{ACl}}{b{ACl}}}C`}{{{b{ACn}}{b{ACn}}}C`}{{{b{AD`}}{b{AD`}}}C`}{{{b{ADb}}{b{ADb}}}C`}{{{b{ADd}}{b{ADd}}}C`}{{{b{ADf}}{b{ADf}}}C`}{{{b{ADh}}{b{ADh}}}C`}{{{b{ADj}}{b{ADj}}}C`}{{{b{ADl}}{b{ADl}}}C`}{{{b{ADn}}{b{ADn}}}C`}{{{b{AE`}}{b{AE`}}}C`}{{{b{AEb}}{b{AEb}}}C`}{{{b{AEd}}{b{AEd}}}C`}{{{b{AEf}}{b{AEf}}}C`}{{{b{AEh}}{b{AEh}}}C`}{{{b{AEj}}{b{AEj}}}C`}{{{b{AEl}}{b{AEl}}}C`}{{{b{AEn}}{b{AEn}}}C`}{{{b{AF`}}{b{AF`}}}C`}{{{b{AFb}}{b{AFb}}}C`}{{{b{AFd}}{b{AFd}}}C`}{{{b{AFf}}{b{AFf}}}C`}{{{b{AFh}}{b{AFh}}}C`}{{{b{AFj}}{b{AFj}}}C`}{{{b{AFl}}{b{AFl}}}C`}{{{b{AFn}}{b{AFn}}}C`}{{{b{AG`}}{b{AG`}}}C`}{{{b{AGb}}{b{AGb}}}C`}{{{b{AGd}}{b{AGd}}}C`}{{{b{AGf}}{b{AGf}}}C`}{{{b{AGh}}{b{AGh}}}C`}{{{b{AGj}}{b{AGj}}}C`}{{{b{AGl}}{b{AGl}}}C`}{{{b{AGn}}{b{AGn}}}C`}{{{b{AH`}}{b{AH`}}}C`}{{{b{AHb}}{b{AHb}}}C`}{{{b{AHd}}{b{AHd}}}C`}{{{b{AHf}}{b{AHf}}}C`}{{{b{AHh}}{b{AHh}}}C`}{{{b{AHj}}{b{AHj}}}C`}{{{b{AHl}}{b{AHl}}}C`}{{{b{AHn}}{b{AHn}}}C`}{{{b{AI`}}{b{AI`}}}C`}{{{b{AIb}}{b{AIb}}}C`}{{{b{AId}}{b{AId}}}C`}{{{b{AIf}}{b{AIf}}}C`}{{{b{AIh}}{b{AIh}}}C`}{{{b{AIj}}{b{AIj}}}C`}{{{b{AIl}}{b{AIl}}}C`}{{{b{AIn}}{b{AIn}}}C`}{{{b{AJ`}}{b{AJ`}}}C`}{{{b{AJb}}{b{AJb}}}C`}{{{b{AJd}}{b{AJd}}}C`}{{{b{AJf}}{b{AJf}}}C`}{{{b{AJh}}{b{AJh}}}C`}{{{b{AJj}}{b{AJj}}}C`}{{{b{AJl}}{b{AJl}}}C`}{{{b{AJn}}{b{AJn}}}C`}{{{b{AK`}}{b{AK`}}}C`}{{{b{AKb}}{b{AKb}}}C`}{{{b{AKd}}{b{AKd}}}C`}{{{b{AKf}}{b{AKf}}}C`}{{{b{AKh}}{b{AKh}}}C`}{{{b{AKj}}{b{AKj}}}C`}{{{b{AKl}}{b{AKl}}}C`}{{{b{AKn}}{b{AKn}}}C`}{{{b{AL`}}{b{AL`}}}C`}{{{b{ALb}}{b{ALb}}}C`}{{{b{ALd}}{b{ALd}}}C`}{{{b{ALf}}{b{ALf}}}C`}{{{b{ALh}}{b{ALh}}}C`}{{{b{ALj}}{b{ALj}}}C`}{{{b{ALl}}{b{ALl}}}C`}{{{b{ALn}}{b{ALn}}}C`}{{{b{AM`}}{b{AM`}}}C`}{{{b{AMb}}{b{AMb}}}C`}{{{b{AMd}}{b{AMd}}}C`}{{{b{AMf}}{b{AMf}}}C`}{{{b{AMh}}{b{AMh}}}C`}{{{b{AMj}}{b{AMj}}}C`}{{{b{AMl}}{b{AMl}}}C`}{{{b{AMn}}{b{AMn}}}C`}{{{b{AN`}}{b{AN`}}}C`}{{{b{ANb}}{b{ANb}}}C`}{{{b{ANd}}{b{ANd}}}C`}{{{b{ANf}}{b{ANf}}}C`}{{{b{ANh}}{b{ANh}}}C`}{{{b{ANj}}{b{ANj}}}C`}{{{b{ANl}}{b{ANl}}}C`}{{{b{ANn}}{b{ANn}}}C`}{{{b{AO`}}{b{AO`}}}C`}{{{b{AOb}}{b{AOb}}}C`}{{{b{AOd}}{b{AOd}}}C`}{{{b{AOf}}{b{AOf}}}C`}{{{b{AOh}}{b{AOh}}}C`}{{{b{AOj}}{b{AOj}}}C`}{{{b{AOl}}{b{AOl}}}C`}{{{b{AOn}}{b{AOn}}}C`}{{{b{B@`}}{b{B@`}}}C`}{{{b{B@b}}{b{B@b}}}C`}{{{b{B@d}}{b{B@d}}}C`}{{{b{B@f}}{b{B@f}}}C`}{{{b{B@h}}{b{B@h}}}C`}{{{b{B@j}}{b{B@j}}}C`}{{{b{B@l}}{b{B@l}}}C`}{{{b{B@n}}{b{B@n}}}C`}{{{b{BA`}}{b{BA`}}}C`}{{{b{BAb}}{b{BAb}}}C`}{{{b{BAd}}{b{BAd}}}C`}{{{b{BAf}}{b{BAf}}}C`}{{{b{BAh}}{b{BAh}}}C`}{{{b{BAj}}{b{BAj}}}C`}{{{b{BAl}}{b{BAl}}}C`}{{{b{BAn}}{b{BAn}}}C`}{{{b{BB`}}{b{BB`}}}C`}{{{b{BBb}}{b{BBb}}}C`}{{{b{BBd}}{b{BBd}}}C`}{{{b{BBf}}{b{BBf}}}C`}{{{b{BBh}}{b{BBh}}}C`}{{{b{BBj}}{b{BBj}}}C`}{{{b{BBl}}{b{BBl}}}C`}{{{b{BBn}}{b{BBn}}}C`}{{{b{BC`}}{b{BC`}}}C`}{{{b{BCb}}{b{BCb}}}C`}{{{b{BCd}}{b{BCd}}}C`}{{{b{BCf}}{b{BCf}}}C`}{{{b{BCh}}{b{BCh}}}C`}{{{b{BCj}}{b{BCj}}}C`}{{{b{BCl}}{b{BCl}}}C`}{{{b{BCn}}{b{BCn}}}C`}{{{b{BD`}}{b{BD`}}}C`}{{{b{BDb}}{b{BDb}}}C`}{{{b{BDd}}{b{BDd}}}C`}{{{b{BDf}}{b{BDf}}}C`}{{{b{BDh}}{b{BDh}}}C`}{{{b{BDj}}{b{BDj}}}C`}{{{b{BDl}}{b{BDl}}}C`}{{{b{BDn}}{b{BDn}}}C`}{{{b{BE`}}{b{BE`}}}C`}{{{b{BEb}}{b{BEb}}}C`}{{{b{BEd}}{b{BEd}}}C`}{{{b{BEf}}{b{BEf}}}C`}{{{b{BEh}}{b{BEh}}}C`}{{{b{BEj}}{b{BEj}}}C`}{{{b{BEl}}{b{BEl}}}C`}{{{b{BEn}}{b{BEn}}}C`}{{{b{BF`}}{b{BF`}}}C`}{{{b{BFb}}{b{BFb}}}C`}{{{b{BFd}}{b{BFd}}}C`}{{{b{BFf}}{b{BFf}}}C`}{{{b{BFh}}{b{BFh}}}C`}{{{b{BFj}}{b{BFj}}}C`}{{{b{BFl}}{b{BFl}}}C`}{{{b{BFn}}{b{BFn}}}C`}{{{b{BG`}}{b{BG`}}}C`}{{{b{BGb}}{b{BGb}}}C`}{{{b{BGd}}{b{BGd}}}C`}{{{b{BGf}}{b{BGf}}}C`}{{{b{BGh}}{b{BGh}}}C`}{{{b{BGj}}{b{BGj}}}C`}{{{b{BGl}}{b{BGl}}}C`}{{{b{BGn}}{b{BGn}}}C`}{{{b{BH`}}{b{BH`}}}C`}{{{b{BHb}}{b{BHb}}}C`}{{{b{BHd}}{b{BHd}}}C`}{{{b{BHf}}{b{BHf}}}C`}{{{b{BHh}}{b{BHh}}}C`}{{{b{BHj}}{b{BHj}}}C`}{{{b{BHl}}{b{BHl}}}C`}{{{b{BHn}}{b{BHn}}}C`}{{{b{BI`}}{b{BI`}}}C`}{{{b{BIb}}{b{BIb}}}C`}{{{b{BId}}{b{BId}}}C`}{{{b{BIf}}{b{BIf}}}C`}{{{b{BIh}}{b{BIh}}}C`}{{{b{BIj}}{b{BIj}}}C`}{{{b{BIl}}{b{BIl}}}C`}{{{b{BIn}}{b{BIn}}}C`}{{{b{BJ`}}{b{BJ`}}}C`}{{{b{BJb}}{b{BJb}}}C`}{{{b{BJd}}{b{BJd}}}C`}{{{b{BJf}}{b{BJf}}}C`}{{{b{BJh}}{b{BJh}}}C`}{{{b{BJj}}{b{BJj}}}C`}{{{b{BJl}}{b{BJl}}}C`}{{{b{BJn}}{b{BJn}}}C`}{{{b{BK`}}{b{BK`}}}C`}{{{b{BKb}}{b{BKb}}}C`}{{{b{BKd}}{b{BKd}}}C`}{{{b{BKf}}{b{BKf}}}C`}{{{b{BKh}}{b{BKh}}}C`}{{{b{BKj}}{b{BKj}}}C`}{{{b{BKl}}{b{BKl}}}C`}{{{b{BKn}}{b{BKn}}}C`}{{{b{BL`}}{b{BL`}}}C`}{{{b{BLb}}{b{BLb}}}C`}{{{b{BLd}}{b{BLd}}}C`}{{{b{BLf}}{b{BLf}}}C`}{{{b{BLh}}{b{BLh}}}C`}{{{b{BLj}}{b{BLj}}}C`}{{{b{BLl}}{b{BLl}}}C`}{{{b{BLn}}{b{BLn}}}C`}{{{b{BM`}}{b{BM`}}}C`}{{{b{BMb}}{b{BMb}}}C`}{{{b{BMd}}{b{BMd}}}C`}{{{b{BMf}}{b{BMf}}}C`}{{{b{BMh}}{b{BMh}}}C`}{{{b{BMj}}{b{BMj}}}C`}{{{b{BMl}}{b{BMl}}}C`}{{{b{BMn}}{b{BMn}}}C`}{{{b{BN`}}{b{BN`}}}C`}{{{b{BNb}}{b{BNb}}}C`}{{{b{Dl}}{b{Dl}}}C`}{{{b{Dn}}{b{Dn}}}C`}{{{b{BNd}}{b{BNd}}}C`}{{{b{BNf}}{b{BNf}}}C`}{{{b{BNh}}{b{BNh}}}C`}{{{b{BNj}}{b{BNj}}}C`}{{{b{BNl}}{b{BNl}}}C`}{{{b{BNn}}{b{BNn}}}C`}{{{b{BO`}}{b{BO`}}}C`}{{{b{BOb}}{b{BOb}}}C`}{{{b{BOd}}{b{BOd}}}C`}{{{b{BOf}}{b{BOf}}}C`}{{{b{BOh}}{b{BOh}}}C`}{{{b{BOj}}{b{BOj}}}C`}{{{b{BOl}}{b{BOl}}}C`}{{{b{BOn}}{b{BOn}}}C`}{{{b{E`}}{b{E`}}}C`}{{{b{C@`}}{b{C@`}}}C`}{{{b{C@b}}{b{C@b}}}C`}{{{b{Eb}}{b{Eb}}}C`}{{{b{C@d}}{b{C@d}}}C`}{{{b{C@f}}{b{C@f}}}C`}{{{b{C@h}}{b{C@h}}}C`}{{{b{C@j}}{b{C@j}}}C`}{{{b{C@l}}{b{C@l}}}C`}{{{b{C@n}}{b{C@n}}}C`}{{{b{CA`}}{b{CA`}}}C`}{{{b{CAb}}{b{CAb}}}C`}{{{b{CAd}}{b{CAd}}}C`}{{{b{CAf}}{b{CAf}}}C`}{{{b{Ed}}{b{Ed}}}C`}{{{b{CAh}}{b{CAh}}}C`}{{{b{CAj}}{b{CAj}}}C`}{{{b{CAl}}{b{CAl}}}C`}{{{b{CAn}}{b{CAn}}}C`}{{{b{Ef}}{b{Ef}}}C`}{{{b{CB`}}{b{CB`}}}C`}{{{b{CBb}}{b{CBb}}}C`}{{{b{CBd}}{b{CBd}}}C`}{{{b{CBf}}{b{CBf}}}C`}{{{b{Eh}}{b{Eh}}}C`}{{{b{CBh}}{b{CBh}}}C`}{{{b{CBj}}{b{CBj}}}C`}{{{b{CBl}}{b{CBl}}}C`}{{{b{CBn}}{b{CBn}}}C`}{{{b{CC`}}{b{CC`}}}C`}{{{b{CCb}}{b{CCb}}}C`}{{{b{Ej}}{b{Ej}}}C`}{{{b{CCd}}{b{CCd}}}C`}{{{b{CCf}}{b{CCf}}}C`}{{{b{CCh}}{b{CCh}}}C`}{{{b{CCj}}{b{CCj}}}C`}{{{b{CCl}}{b{CCl}}}C`}{{{b{CCn}}{b{CCn}}}C`}{{{b{CD`}}{b{CD`}}}C`}{{{b{CDb}}{b{CDb}}}C`}{{{b{CDd}}{b{CDd}}}C`}{{{b{CDf}}{b{CDf}}}C`}{{{b{CDh}}{b{CDh}}}C`}{{{b{El}}{b{El}}}C`}{{{b{En}}{b{En}}}C`}{{{b{CDj}}{b{CDj}}}C`}{{{b{CDl}}{b{CDl}}}C`}{{{b{F`}}{b{F`}}}C`}{{{b{CDn}}{b{CDn}}}C`}{{{b{CE`}}{b{CE`}}}C`}{{{b{Fb}}{b{Fb}}}C`}{{{b{CEb}}{b{CEb}}}C`}{{{b{CEd}}{b{CEd}}}C`}{{{b{CEf}}{b{CEf}}}C`}{{{b{CEh}}{b{CEh}}}C`}{{{b{CEj}}{b{CEj}}}C`}{{{b{CEl}}{b{CEl}}}C`}{{{b{CEn}}{b{CEn}}}C`}{{{b{Fd}}{b{Fd}}}C`}{{{b{CF`}}{b{CF`}}}C`}{{{b{CFb}}{b{CFb}}}C`}{{{b{CFd}}{b{CFd}}}C`}{{{b{Ff}}{b{Ff}}}C`}{{{b{CFf}}{b{CFf}}}C`}{{{b{CFh}}{b{CFh}}}C`}{{{b{CFj}}{b{CFj}}}C`}{{{b{Fh}}{b{Fh}}}C`}{{{b{CFl}}{b{CFl}}}C`}{{{b{CFn}}{b{CFn}}}C`}{{{b{CG`}}{b{CG`}}}C`}{{{b{CGb}}{b{CGb}}}C`}{{{b{CGd}}{b{CGd}}}C`}{{{b{CGf}}{b{CGf}}}C`}{{{b{CGh}}{b{CGh}}}C`}{{{b{CGj}}{b{CGj}}}C`}{{{b{CGl}}{b{CGl}}}C`}{{{b{CGn}}{b{CGn}}}C`}{{{b{CH`}}{b{CH`}}}C`}{{{b{CHb}}{b{CHb}}}C`}{{{b{Fj}}{b{Fj}}}C`}{{{b{CHd}}{b{CHd}}}C`}{{{b{CHf}}{b{CHf}}}C`}{{{b{Fl}}{b{Fl}}}C`}{{{b{CHh}}{b{CHh}}}C`}{{{b{CHj}}{b{CHj}}}C`}{{{b{Fn}}{b{Fn}}}C`}{{{b{CHl}}{b{CHl}}}C`}{{{b{G`}}{b{G`}}}C`}{{{b{CHn}}{b{CHn}}}C`}{{{b{CI`}}{b{CI`}}}C`}{{{b{Gb}}{b{Gb}}}C`}{{{b{CIb}}{b{CIb}}}C`}{{{b{CId}}{b{CId}}}C`}{{{b{CIf}}{b{CIf}}}C`}{{{b{CIh}}{b{CIh}}}C`}{{{b{Gd}}{b{Gd}}}C`}{{{b{CIj}}{b{CIj}}}C`}{{{b{Gf}}{b{Gf}}}C`}{{{b{CIl}}{b{CIl}}}C`}{{{b{CIn}}{b{CIn}}}C`}{{{b{Gh}}{b{Gh}}}C`}{{{b{CJ`}}{b{CJ`}}}C`}{{{b{CJb}}{b{CJb}}}C`}{{{b{CJd}}{b{CJd}}}C`}{{{b{CJf}}{b{CJf}}}C`}{{{b{CJh}}{b{CJh}}}C`}{{{b{CJj}}{b{CJj}}}C`}{{{b{CJl}}{b{CJl}}}C`}{{{b{CJn}}{b{CJn}}}C`}{{{b{CK`}}{b{CK`}}}C`}{{{b{CKb}}{b{CKb}}}C`}{{{b{Gj}}{b{Gj}}}C`}{{{b{CKd}}{b{CKd}}}C`}{{{b{CKf}}{b{CKf}}}C`}{{{b{CKh}}{b{CKh}}}C`}{{{b{CKj}}{b{CKj}}}C`}{{{b{CKl}}{b{CKl}}}C`}{{{b{CKn}}{b{CKn}}}C`}{{{b{CL`}}{b{CL`}}}C`}{{{b{CLb}}{b{CLb}}}C`}{{{b{CLd}}{b{CLd}}}C`}{{{b{CLf}}{b{CLf}}}C`}{{{b{CLh}}{b{CLh}}}C`}{{{b{CLj}}{b{CLj}}}C`}{{{b{CLl}}{b{CLl}}}C`}{{{b{CLn}}{b{CLn}}}C`}{{{b{CM`}}{b{CM`}}}C`}{{{b{CMb}}{b{CMb}}}C`}{{{b{CMd}}{b{CMd}}}C`}{{{b{CMf}}{b{CMf}}}C`}{{{b{CMh}}{b{CMh}}}C`}{{{b{Gl}}{b{Gl}}}C`}{{{b{CMj}}{b{CMj}}}C`}{{{b{Gn}}{b{Gn}}}C`}{{{b{CMl}}{b{CMl}}}C`}{{{b{CMn}}{b{CMn}}}C`}{{{b{CN`}}{b{CN`}}}C`}{{{b{H`}}{b{H`}}}C`}{{{b{CNb}}{b{CNb}}}C`}{{{b{CNd}}{b{CNd}}}C`}{{{b{CNf}}{b{CNf}}}C`}{{{b{Hb}}{b{Hb}}}C`}{{{b{CNh}}{b{CNh}}}C`}{{{b{CNj}}{b{CNj}}}C`}{{{b{CNl}}{b{CNl}}}C`}{{{b{CNn}}{b{CNn}}}C`}{{{b{CO`}}{b{CO`}}}C`}{{{b{COb}}{b{COb}}}C`}{{{b{COd}}{b{COd}}}C`}{{{b{COf}}{b{COf}}}C`}{{{b{COh}}{b{COh}}}C`}{{{b{COj}}{b{COj}}}C`}{{{b{COl}}{b{COl}}}C`}{{{b{COn}}{b{COn}}}C`}{{{b{D@`}}{b{D@`}}}C`}{{{b{D@b}}{b{D@b}}}C`}{{{b{Hd}}{b{Hd}}}C`}{{{b{D@d}}{b{D@d}}}C`}{{{b{Hf}}{b{Hf}}}C`}{{{b{D@f}}{b{D@f}}}C`}{{{b{D@h}}{b{D@h}}}C`}{{{b{D@j}}{b{D@j}}}C`}{{{b{Hh}}{b{Hh}}}C`}{{{b{D@l}}{b{D@l}}}C`}{{{b{D@n}}{b{D@n}}}C`}{{{b{DA`}}{b{DA`}}}C`}{{{b{DAb}}{b{DAb}}}C`}{{{b{DAd}}{b{DAd}}}C`}{{{b{DAf}}{b{DAf}}}C`}{{{b{DAh}}{b{DAh}}}C`}{{{b{DAj}}{b{DAj}}}C`}{{{b{Hj}}{b{Hj}}}C`}{{{b{DAl}}{b{DAl}}}C`}{{{b{DAn}}{b{DAn}}}C`}{{{b{DB`}}{b{DB`}}}C`}```````````````````{{{b{dDl}}c}Aj{{DBf{}{{DBd{Dl}}}}}}{{{b{dDn}}c}Aj{{DBf{}{{DBd{Dn}}}}}}{{{b{dE`}}c}Aj{{DBf{}{{DBd{E`}}}}}}{{{b{dEb}}c}Aj{{DBf{}{{DBd{Eb}}}}}}{{{b{dEd}}c}Aj{{DBf{}{{DBd{Ed}}}}}}{{{b{dEf}}c}Aj{{DBf{}{{DBd{Ef}}}}}}{{{b{dEh}}c}Aj{{DBf{}{{DBd{Eh}}}}}}{{{b{dEj}}c}Aj{{DBf{}{{DBd{Ej}}}}}}{{{b{dEl}}c}Aj{{DBf{}{{DBd{El}}}}}}{{{b{dEn}}c}Aj{{DBf{}{{DBd{En}}}}}}{{{b{dF`}}c}Aj{{DBf{}{{DBd{F`}}}}}}{{{b{dFb}}c}Aj{{DBf{}{{DBd{Fb}}}}}}{{{b{dFd}}c}Aj{{DBf{}{{DBd{Fd}}}}}}{{{b{dFf}}c}Aj{{DBf{}{{DBd{Ff}}}}}}{{{b{dFh}}c}Aj{{DBf{}{{DBd{Fh}}}}}}{{{b{dFj}}c}Aj{{DBf{}{{DBd{Fj}}}}}}{{{b{dFl}}c}Aj{{DBf{}{{DBd{Fl}}}}}}{{{b{dFn}}c}Aj{{DBf{}{{DBd{Fn}}}}}}{{{b{dG`}}c}Aj{{DBf{}{{DBd{G`}}}}}}{{{b{dGb}}c}Aj{{DBf{}{{DBd{Gb}}}}}}{{{b{dGd}}c}Aj{{DBf{}{{DBd{Gd}}}}}}{{{b{dGf}}c}Aj{{DBf{}{{DBd{Gf}}}}}}{{{b{dGh}}c}Aj{{DBf{}{{DBd{Gh}}}}}}{{{b{dGj}}c}Aj{{DBf{}{{DBd{Gj}}}}}}{{{b{dGl}}c}Aj{{DBf{}{{DBd{Gl}}}}}}{{{b{dGn}}c}Aj{{DBf{}{{DBd{Gn}}}}}}{{{b{dH`}}c}Aj{{DBf{}{{DBd{H`}}}}}}{{{b{dHb}}c}Aj{{DBf{}{{DBd{Hb}}}}}}{{{b{dHd}}c}Aj{{DBf{}{{DBd{Hd}}}}}}{{{b{dHf}}c}Aj{{DBf{}{{DBd{Hf}}}}}}{{{b{dHh}}c}Aj{{DBf{}{{DBd{Hh}}}}}}{{{b{dHj}}c}Aj{{DBf{}{{DBd{Hj}}}}}}{Bff}````````````````````````````````````````````````````````````{{{b{Hn}}{b{dCb}}}DBh}{{{b{I`}}{b{dCb}}}DBh}{{{b{Ib}}{b{dCb}}}DBh}{{{b{Id}}{b{dCb}}}DBh}{{{b{If}}{b{dCb}}}DBh}{{{b{Ih}}{b{dCb}}}DBh}{{{b{Ij}}{b{dCb}}}DBh}{{{b{Il}}{b{dCb}}}DBh}{{{b{In}}{b{dCb}}}DBh}{{{b{J`}}{b{dCb}}}DBh}{{{b{Jb}}{b{dCb}}}DBh}{{{b{Jd}}{b{dCb}}}DBh}{{{b{Jf}}{b{dCb}}}DBh}{{{b{Jh}}{b{dCb}}}DBh}{{{b{Jj}}{b{dCb}}}DBh}{{{b{Jl}}{b{dCb}}}DBh}{{{b{Jn}}{b{dCb}}}DBh}{{{b{K`}}{b{dCb}}}DBh}{{{b{Kb}}{b{dCb}}}DBh}{{{b{Kd}}{b{dCb}}}DBh}{{{b{Kf}}{b{dCb}}}DBh}{{{b{Kh}}{b{dCb}}}DBh}{{{b{Kj}}{b{dCb}}}DBh}{{{b{Kl}}{b{dCb}}}DBh}{{{b{Kn}}{b{dCb}}}DBh}{{{b{L`}}{b{dCb}}}DBh}{{{b{Lb}}{b{dCb}}}DBh}{{{b{Ld}}{b{dCb}}}DBh}{{{b{Lf}}{b{dCb}}}DBh}{{{b{Lh}}{b{dCb}}}DBh}{{{b{Lj}}{b{dCb}}}DBh}{{{b{Ll}}{b{dCb}}}DBh}{{{b{Ln}}{b{dCb}}}DBh}{{{b{M`}}{b{dCb}}}DBh}{{{b{Mb}}{b{dCb}}}DBh}{{{b{Md}}{b{dCb}}}DBh}{{{b{Mf}}{b{dCb}}}DBh}{{{b{Mh}}{b{dCb}}}DBh}{{{b{Mj}}{b{dCb}}}DBh}{{{b{Ml}}{b{dCb}}}DBh}{{{b{Mn}}{b{dCb}}}DBh}{{{b{N`}}{b{dCb}}}DBh}{{{b{Nb}}{b{dCb}}}DBh}{{{b{Nd}}{b{dCb}}}DBh}{{{b{Nf}}{b{dCb}}}DBh}{{{b{Nh}}{b{dCb}}}DBh}{{{b{Nj}}{b{dCb}}}DBh}{{{b{Nl}}{b{dCb}}}DBh}{{{b{Nn}}{b{dCb}}}DBh}{{{b{O`}}{b{dCb}}}DBh}{{{b{Ob}}{b{dCb}}}DBh}{{{b{Od}}{b{dCb}}}DBh}{{{b{Of}}{b{dCb}}}DBh}{{{b{Oh}}{b{dCb}}}DBh}{{{b{Oj}}{b{dCb}}}DBh}{{{b{Ol}}{b{dCb}}}DBh}{{{b{On}}{b{dCb}}}DBh}{{{b{A@`}}{b{dCb}}}DBh}{{{b{A@b}}{b{dCb}}}DBh}{{{b{A@d}}{b{dCb}}}DBh}{{{b{A@f}}{b{dCb}}}DBh}{{{b{A@h}}{b{dCb}}}DBh}{{{b{A@j}}{b{dCb}}}DBh}{{{b{A@l}}{b{dCb}}}DBh}{{{b{A@n}}{b{dCb}}}DBh}{{{b{AA`}}{b{dCb}}}DBh}{{{b{AAb}}{b{dCb}}}DBh}{{{b{AAd}}{b{dCb}}}DBh}{{{b{AAf}}{b{dCb}}}DBh}{{{b{AAh}}{b{dCb}}}DBh}{{{b{AAj}}{b{dCb}}}DBh}{{{b{AAl}}{b{dCb}}}DBh}{{{b{AAn}}{b{dCb}}}DBh}{{{b{AB`}}{b{dCb}}}DBh}{{{b{ABb}}{b{dCb}}}DBh}{{{b{ABd}}{b{dCb}}}DBh}{{{b{ABf}}{b{dCb}}}DBh}{{{b{ABh}}{b{dCb}}}DBh}{{{b{ABj}}{b{dCb}}}DBh}{{{b{ABl}}{b{dCb}}}DBh}{{{b{ABn}}{b{dCb}}}DBh}{{{b{AC`}}{b{dCb}}}DBh}{{{b{ACb}}{b{dCb}}}DBh}{{{b{ACd}}{b{dCb}}}DBh}{{{b{ACf}}{b{dCb}}}DBh}{{{b{ACh}}{b{dCb}}}DBh}{{{b{ACj}}{b{dCb}}}DBh}{{{b{ACl}}{b{dCb}}}DBh}{{{b{ACn}}{b{dCb}}}DBh}{{{b{AD`}}{b{dCb}}}DBh}{{{b{ADb}}{b{dCb}}}DBh}{{{b{ADd}}{b{dCb}}}DBh}{{{b{ADf}}{b{dCb}}}DBh}{{{b{ADh}}{b{dCb}}}DBh}{{{b{ADj}}{b{dCb}}}DBh}{{{b{ADl}}{b{dCb}}}DBh}{{{b{ADn}}{b{dCb}}}DBh}{{{b{AE`}}{b{dCb}}}DBh}{{{b{AEb}}{b{dCb}}}DBh}{{{b{AEd}}{b{dCb}}}DBh}{{{b{AEf}}{b{dCb}}}DBh}{{{b{AEh}}{b{dCb}}}DBh}{{{b{AEj}}{b{dCb}}}DBh}{{{b{AEl}}{b{dCb}}}DBh}{{{b{AEn}}{b{dCb}}}DBh}{{{b{AF`}}{b{dCb}}}DBh}{{{b{AFb}}{b{dCb}}}DBh}{{{b{AFd}}{b{dCb}}}DBh}{{{b{AFf}}{b{dCb}}}DBh}{{{b{AFh}}{b{dCb}}}DBh}{{{b{AFj}}{b{dCb}}}DBh}{{{b{AFl}}{b{dCb}}}DBh}{{{b{AFn}}{b{dCb}}}DBh}{{{b{AG`}}{b{dCb}}}DBh}{{{b{AGb}}{b{dCb}}}DBh}{{{b{AGd}}{b{dCb}}}DBh}{{{b{AGf}}{b{dCb}}}DBh}{{{b{AGh}}{b{dCb}}}DBh}{{{b{AGj}}{b{dCb}}}DBh}{{{b{AGl}}{b{dCb}}}DBh}{{{b{AGn}}{b{dCb}}}DBh}{{{b{AH`}}{b{dCb}}}DBh}{{{b{AHb}}{b{dCb}}}DBh}{{{b{AHd}}{b{dCb}}}DBh}{{{b{AHf}}{b{dCb}}}DBh}{{{b{AHh}}{b{dCb}}}DBh}{{{b{AHj}}{b{dCb}}}DBh}{{{b{AHl}}{b{dCb}}}DBh}{{{b{AHn}}{b{dCb}}}DBh}{{{b{AI`}}{b{dCb}}}DBh}{{{b{AIb}}{b{dCb}}}DBh}{{{b{AId}}{b{dCb}}}DBh}{{{b{AIf}}{b{dCb}}}DBh}{{{b{AIh}}{b{dCb}}}DBh}{{{b{AIj}}{b{dCb}}}DBh}{{{b{AIl}}{b{dCb}}}DBh}{{{b{AIn}}{b{dCb}}}DBh}{{{b{AJ`}}{b{dCb}}}DBh}{{{b{AJb}}{b{dCb}}}DBh}{{{b{AJd}}{b{dCb}}}DBh}{{{b{AJf}}{b{dCb}}}DBh}{{{b{AJh}}{b{dCb}}}DBh}{{{b{AJj}}{b{dCb}}}DBh}{{{b{AJl}}{b{dCb}}}DBh}{{{b{AJn}}{b{dCb}}}DBh}{{{b{AK`}}{b{dCb}}}DBh}{{{b{AKb}}{b{dCb}}}DBh}{{{b{AKd}}{b{dCb}}}DBh}{{{b{AKf}}{b{dCb}}}DBh}{{{b{AKh}}{b{dCb}}}DBh}{{{b{AKj}}{b{dCb}}}DBh}{{{b{AKl}}{b{dCb}}}DBh}{{{b{AKn}}{b{dCb}}}DBh}{{{b{AL`}}{b{dCb}}}DBh}{{{b{ALb}}{b{dCb}}}DBh}{{{b{ALd}}{b{dCb}}}DBh}{{{b{ALf}}{b{dCb}}}DBh}{{{b{ALh}}{b{dCb}}}DBh}{{{b{ALj}}{b{dCb}}}DBh}{{{b{ALl}}{b{dCb}}}DBh}{{{b{ALn}}{b{dCb}}}DBh}{{{b{AM`}}{b{dCb}}}DBh}{{{b{AMb}}{b{dCb}}}DBh}{{{b{AMd}}{b{dCb}}}DBh}{{{b{AMf}}{b{dCb}}}DBh}{{{b{AMh}}{b{dCb}}}DBh}{{{b{AMj}}{b{dCb}}}DBh}{{{b{AMl}}{b{dCb}}}DBh}{{{b{AMn}}{b{dCb}}}DBh}{{{b{AN`}}{b{dCb}}}DBh}{{{b{ANb}}{b{dCb}}}DBh}{{{b{ANd}}{b{dCb}}}DBh}{{{b{ANf}}{b{dCb}}}DBh}{{{b{ANh}}{b{dCb}}}DBh}{{{b{ANj}}{b{dCb}}}DBh}{{{b{ANl}}{b{dCb}}}DBh}{{{b{ANn}}{b{dCb}}}DBh}{{{b{AO`}}{b{dCb}}}DBh}{{{b{AOb}}{b{dCb}}}DBh}{{{b{AOd}}{b{dCb}}}DBh}{{{b{AOf}}{b{dCb}}}DBh}{{{b{AOh}}{b{dCb}}}DBh}{{{b{AOj}}{b{dCb}}}DBh}{{{b{AOl}}{b{dCb}}}DBh}{{{b{AOn}}{b{dCb}}}DBh}{{{b{B@`}}{b{dCb}}}DBh}{{{b{B@b}}{b{dCb}}}DBh}{{{b{B@d}}{b{dCb}}}DBh}{{{b{B@f}}{b{dCb}}}DBh}{{{b{B@h}}{b{dCb}}}DBh}{{{b{B@j}}{b{dCb}}}DBh}{{{b{B@l}}{b{dCb}}}DBh}{{{b{B@n}}{b{dCb}}}DBh}{{{b{BA`}}{b{dCb}}}DBh}{{{b{BAb}}{b{dCb}}}DBh}{{{b{BAd}}{b{dCb}}}DBh}{{{b{BAf}}{b{dCb}}}DBh}{{{b{BAh}}{b{dCb}}}DBh}{{{b{BAj}}{b{dCb}}}DBh}{{{b{BAl}}{b{dCb}}}DBh}{{{b{BAn}}{b{dCb}}}DBh}{{{b{BB`}}{b{dCb}}}DBh}{{{b{BBb}}{b{dCb}}}DBh}{{{b{BBd}}{b{dCb}}}DBh}{{{b{BBf}}{b{dCb}}}DBh}{{{b{BBh}}{b{dCb}}}DBh}{{{b{BBj}}{b{dCb}}}DBh}{{{b{BBl}}{b{dCb}}}DBh}{{{b{BBn}}{b{dCb}}}DBh}{{{b{BC`}}{b{dCb}}}DBh}{{{b{BCb}}{b{dCb}}}DBh}{{{b{BCd}}{b{dCb}}}DBh}{{{b{BCf}}{b{dCb}}}DBh}{{{b{BCh}}{b{dCb}}}DBh}{{{b{BCj}}{b{dCb}}}DBh}{{{b{BCl}}{b{dCb}}}DBh}{{{b{BCn}}{b{dCb}}}DBh}{{{b{BD`}}{b{dCb}}}DBh}{{{b{BDb}}{b{dCb}}}DBh}{{{b{BDd}}{b{dCb}}}DBh}{{{b{BDf}}{b{dCb}}}DBh}{{{b{BDh}}{b{dCb}}}DBh}{{{b{BDj}}{b{dCb}}}DBh}{{{b{BDl}}{b{dCb}}}DBh}{{{b{BDn}}{b{dCb}}}DBh}{{{b{BE`}}{b{dCb}}}DBh}{{{b{BEb}}{b{dCb}}}DBh}{{{b{BEd}}{b{dCb}}}DBh}{{{b{BEf}}{b{dCb}}}DBh}{{{b{BEh}}{b{dCb}}}DBh}{{{b{BEj}}{b{dCb}}}DBh}{{{b{BEl}}{b{dCb}}}DBh}{{{b{BEn}}{b{dCb}}}DBh}{{{b{BF`}}{b{dCb}}}DBh}{{{b{BFb}}{b{dCb}}}DBh}{{{b{BFd}}{b{dCb}}}DBh}{{{b{BFf}}{b{dCb}}}DBh}{{{b{BFh}}{b{dCb}}}DBh}{{{b{BFj}}{b{dCb}}}DBh}{{{b{BFl}}{b{dCb}}}DBh}{{{b{BFn}}{b{dCb}}}DBh}{{{b{BG`}}{b{dCb}}}DBh}{{{b{BGb}}{b{dCb}}}DBh}{{{b{BGd}}{b{dCb}}}DBh}{{{b{BGf}}{b{dCb}}}DBh}{{{b{BGh}}{b{dCb}}}DBh}{{{b{BGj}}{b{dCb}}}DBh}{{{b{BGl}}{b{dCb}}}DBh}{{{b{BGn}}{b{dCb}}}DBh}{{{b{BH`}}{b{dCb}}}DBh}{{{b{BHb}}{b{dCb}}}DBh}{{{b{BHd}}{b{dCb}}}DBh}{{{b{BHf}}{b{dCb}}}DBh}{{{b{BHh}}{b{dCb}}}DBh}{{{b{BHj}}{b{dCb}}}DBh}{{{b{BHl}}{b{dCb}}}DBh}{{{b{BHn}}{b{dCb}}}DBh}{{{b{BI`}}{b{dCb}}}DBh}{{{b{BIb}}{b{dCb}}}DBh}{{{b{BId}}{b{dCb}}}DBh}{{{b{BIf}}{b{dCb}}}DBh}{{{b{BIh}}{b{dCb}}}DBh}{{{b{BIj}}{b{dCb}}}DBh}{{{b{BIl}}{b{dCb}}}DBh}{{{b{BIn}}{b{dCb}}}DBh}{{{b{BJ`}}{b{dCb}}}DBh}{{{b{BJb}}{b{dCb}}}DBh}{{{b{BJd}}{b{dCb}}}DBh}{{{b{BJf}}{b{dCb}}}DBh}{{{b{BJh}}{b{dCb}}}DBh}{{{b{BJj}}{b{dCb}}}DBh}{{{b{BJl}}{b{dCb}}}DBh}{{{b{BJn}}{b{dCb}}}DBh}{{{b{BK`}}{b{dCb}}}DBh}{{{b{BKb}}{b{dCb}}}DBh}{{{b{BKd}}{b{dCb}}}DBh}{{{b{BKf}}{b{dCb}}}DBh}{{{b{BKh}}{b{dCb}}}DBh}{{{b{BKj}}{b{dCb}}}DBh}{{{b{BKl}}{b{dCb}}}DBh}{{{b{BKn}}{b{dCb}}}DBh}{{{b{BL`}}{b{dCb}}}DBh}{{{b{BLb}}{b{dCb}}}DBh}{{{b{BLd}}{b{dCb}}}DBh}{{{b{BLf}}{b{dCb}}}DBh}{{{b{BLh}}{b{dCb}}}DBh}{{{b{BLj}}{b{dCb}}}DBh}{{{b{BLl}}{b{dCb}}}DBh}{{{b{BLn}}{b{dCb}}}DBh}{{{b{BM`}}{b{dCb}}}DBh}{{{b{BMb}}{b{dCb}}}DBh}{{{b{BMd}}{b{dCb}}}DBh}{{{b{BMf}}{b{dCb}}}DBh}{{{b{BMh}}{b{dCb}}}DBh}{{{b{BMj}}{b{dCb}}}DBh}{{{b{BMl}}{b{dCb}}}DBh}{{{b{BMn}}{b{dCb}}}DBh}{{{b{BN`}}{b{dCb}}}DBh}{{{b{BNb}}{b{dCb}}}DBh}{{{b{Dl}}{b{dCb}}}DBh}0000{{{b{Dn}}{b{dCb}}}DBh}0000{{{b{BNd}}{b{dCb}}}DBh}{{{b{BNf}}{b{dCb}}}DBh}{{{b{BNh}}{b{dCb}}}DBh}{{{b{BNj}}{b{dCb}}}DBh}{{{b{BNl}}{b{dCb}}}DBh}{{{b{BNn}}{b{dCb}}}DBh}{{{b{BO`}}{b{dCb}}}DBh}{{{b{BOb}}{b{dCb}}}DBh}{{{b{BOd}}{b{dCb}}}DBh}{{{b{BOf}}{b{dCb}}}DBh}{{{b{BOh}}{b{dCb}}}DBh}{{{b{BOj}}{b{dCb}}}DBh}{{{b{BOl}}{b{dCb}}}DBh}{{{b{BOn}}{b{dCb}}}DBh}{{{b{E`}}{b{dCb}}}DBh}0000{{{b{C@`}}{b{dCb}}}DBh}{{{b{C@b}}{b{dCb}}}DBh}{{{b{Eb}}{b{dCb}}}DBh}0000{{{b{C@d}}{b{dCb}}}DBh}{{{b{C@f}}{b{dCb}}}DBh}{{{b{C@h}}{b{dCb}}}DBh}{{{b{C@j}}{b{dCb}}}DBh}{{{b{C@l}}{b{dCb}}}DBh}{{{b{C@n}}{b{dCb}}}DBh}{{{b{CA`}}{b{dCb}}}DBh}{{{b{CAb}}{b{dCb}}}DBh}{{{b{CAd}}{b{dCb}}}DBh}{{{b{CAf}}{b{dCb}}}DBh}{{{b{Ed}}{b{dCb}}}DBh}0000{{{b{CAh}}{b{dCb}}}DBh}{{{b{CAj}}{b{dCb}}}DBh}{{{b{CAl}}{b{dCb}}}DBh}{{{b{CAn}}{b{dCb}}}DBh}{{{b{Ef}}{b{dCb}}}DBh}0000{{{b{CB`}}{b{dCb}}}DBh}{{{b{CBb}}{b{dCb}}}DBh}{{{b{CBd}}{b{dCb}}}DBh}{{{b{CBf}}{b{dCb}}}DBh}{{{b{Eh}}{b{dCb}}}DBh}0000{{{b{CBh}}{b{dCb}}}DBh}{{{b{CBj}}{b{dCb}}}DBh}{{{b{CBl}}{b{dCb}}}DBh}{{{b{CBn}}{b{dCb}}}DBh}{{{b{CC`}}{b{dCb}}}DBh}{{{b{CCb}}{b{dCb}}}DBh}{{{b{Ej}}{b{dCb}}}DBh}0000{{{b{CCd}}{b{dCb}}}DBh}{{{b{CCf}}{b{dCb}}}DBh}{{{b{CCh}}{b{dCb}}}DBh}{{{b{CCj}}{b{dCb}}}DBh}{{{b{CCl}}{b{dCb}}}DBh}{{{b{CCn}}{b{dCb}}}DBh}{{{b{CD`}}{b{dCb}}}DBh}{{{b{CDb}}{b{dCb}}}DBh}{{{b{CDd}}{b{dCb}}}DBh}{{{b{CDf}}{b{dCb}}}DBh}{{{b{CDh}}{b{dCb}}}DBh}{{{b{El}}{b{dCb}}}DBh}0000{{{b{En}}{b{dCb}}}DBh}0000{{{b{CDj}}{b{dCb}}}DBh}{{{b{CDl}}{b{dCb}}}DBh}{{{b{F`}}{b{dCb}}}DBh}0000{{{b{CDn}}{b{dCb}}}DBh}{{{b{CE`}}{b{dCb}}}DBh}{{{b{Fb}}{b{dCb}}}DBh}0000{{{b{CEb}}{b{dCb}}}DBh}{{{b{CEd}}{b{dCb}}}DBh}{{{b{CEf}}{b{dCb}}}DBh}{{{b{CEh}}{b{dCb}}}DBh}{{{b{CEj}}{b{dCb}}}DBh}{{{b{CEl}}{b{dCb}}}DBh}{{{b{CEn}}{b{dCb}}}DBh}{{{b{Fd}}{b{dCb}}}DBh}0000{{{b{CF`}}{b{dCb}}}DBh}{{{b{CFb}}{b{dCb}}}DBh}{{{b{CFd}}{b{dCb}}}DBh}{{{b{Ff}}{b{dCb}}}DBh}0000{{{b{CFf}}{b{dCb}}}DBh}{{{b{CFh}}{b{dCb}}}DBh}{{{b{CFj}}{b{dCb}}}DBh}{{{b{Fh}}{b{dCb}}}DBh}0000{{{b{CFl}}{b{dCb}}}DBh}{{{b{CFn}}{b{dCb}}}DBh}{{{b{CG`}}{b{dCb}}}DBh}{{{b{CGb}}{b{dCb}}}DBh}{{{b{CGd}}{b{dCb}}}DBh}{{{b{CGf}}{b{dCb}}}DBh}{{{b{CGh}}{b{dCb}}}DBh}{{{b{CGj}}{b{dCb}}}DBh}{{{b{CGl}}{b{dCb}}}DBh}{{{b{CGn}}{b{dCb}}}DBh}{{{b{CH`}}{b{dCb}}}DBh}{{{b{CHb}}{b{dCb}}}DBh}{{{b{Fj}}{b{dCb}}}DBh}0000{{{b{CHd}}{b{dCb}}}DBh}{{{b{CHf}}{b{dCb}}}DBh}{{{b{Fl}}{b{dCb}}}DBh}0000{{{b{CHh}}{b{dCb}}}DBh}{{{b{CHj}}{b{dCb}}}DBh}{{{b{Fn}}{b{dCb}}}DBh}0000{{{b{CHl}}{b{dCb}}}DBh}{{{b{G`}}{b{dCb}}}DBh}0000{{{b{CHn}}{b{dCb}}}DBh}{{{b{CI`}}{b{dCb}}}DBh}{{{b{Gb}}{b{dCb}}}DBh}0000{{{b{CIb}}{b{dCb}}}DBh}{{{b{CId}}{b{dCb}}}DBh}{{{b{CIf}}{b{dCb}}}DBh}{{{b{CIh}}{b{dCb}}}DBh}{{{b{Gd}}{b{dCb}}}DBh}0000{{{b{CIj}}{b{dCb}}}DBh}{{{b{Gf}}{b{dCb}}}DBh}0000{{{b{CIl}}{b{dCb}}}DBh}{{{b{CIn}}{b{dCb}}}DBh}{{{b{Gh}}{b{dCb}}}DBh}0000{{{b{CJ`}}{b{dCb}}}DBh}{{{b{CJb}}{b{dCb}}}DBh}{{{b{CJd}}{b{dCb}}}DBh}{{{b{CJf}}{b{dCb}}}DBh}{{{b{CJh}}{b{dCb}}}DBh}{{{b{CJj}}{b{dCb}}}DBh}{{{b{CJl}}{b{dCb}}}DBh}{{{b{CJn}}{b{dCb}}}DBh}{{{b{CK`}}{b{dCb}}}DBh}{{{b{CKb}}{b{dCb}}}DBh}{{{b{Gj}}{b{dCb}}}DBh}0000{{{b{CKd}}{b{dCb}}}DBh}{{{b{CKf}}{b{dCb}}}DBh}{{{b{CKh}}{b{dCb}}}DBh}{{{b{CKj}}{b{dCb}}}DBh}{{{b{CKl}}{b{dCb}}}DBh}{{{b{CKn}}{b{dCb}}}DBh}{{{b{CL`}}{b{dCb}}}DBh}{{{b{CLb}}{b{dCb}}}DBh}{{{b{CLd}}{b{dCb}}}DBh}{{{b{CLf}}{b{dCb}}}DBh}{{{b{CLh}}{b{dCb}}}DBh}{{{b{CLj}}{b{dCb}}}DBh}{{{b{CLl}}{b{dCb}}}DBh}{{{b{CLn}}{b{dCb}}}DBh}{{{b{CM`}}{b{dCb}}}DBh}{{{b{CMb}}{b{dCb}}}DBh}{{{b{CMd}}{b{dCb}}}DBh}{{{b{CMf}}{b{dCb}}}DBh}{{{b{CMh}}{b{dCb}}}DBh}{{{b{Gl}}{b{dCb}}}DBh}0000{{{b{CMj}}{b{dCb}}}DBh}{{{b{Gn}}{b{dCb}}}DBh}0000{{{b{CMl}}{b{dCb}}}DBh}{{{b{CMn}}{b{dCb}}}DBh}{{{b{CN`}}{b{dCb}}}DBh}{{{b{H`}}{b{dCb}}}DBh}0000{{{b{CNb}}{b{dCb}}}DBh}{{{b{CNd}}{b{dCb}}}DBh}{{{b{CNf}}{b{dCb}}}DBh}{{{b{Hb}}{b{dCb}}}DBh}0000{{{b{CNh}}{b{dCb}}}DBh}{{{b{CNj}}{b{dCb}}}DBh}{{{b{CNl}}{b{dCb}}}DBh}{{{b{CNn}}{b{dCb}}}DBh}{{{b{CO`}}{b{dCb}}}DBh}{{{b{COb}}{b{dCb}}}DBh}{{{b{COd}}{b{dCb}}}DBh}{{{b{COf}}{b{dCb}}}DBh}{{{b{COh}}{b{dCb}}}DBh}{{{b{COj}}{b{dCb}}}DBh}{{{b{COl}}{b{dCb}}}DBh}{{{b{COn}}{b{dCb}}}DBh}{{{b{D@`}}{b{dCb}}}DBh}{{{b{D@b}}{b{dCb}}}DBh}{{{b{Hd}}{b{dCb}}}DBh}0000{{{b{D@d}}{b{dCb}}}DBh}{{{b{Hf}}{b{dCb}}}DBh}0000{{{b{D@f}}{b{dCb}}}DBh}{{{b{D@h}}{b{dCb}}}DBh}{{{b{D@j}}{b{dCb}}}DBh}{{{b{Hh}}{b{dCb}}}DBh}0000{{{b{D@l}}{b{dCb}}}DBh}{{{b{D@n}}{b{dCb}}}DBh}{{{b{DA`}}{b{dCb}}}DBh}{{{b{DAb}}{b{dCb}}}DBh}{{{b{DAd}}{b{dCb}}}DBh}{{{b{DAf}}{b{dCb}}}DBh}{{{b{DAh}}{b{dCb}}}DBh}{{{b{DAj}}{b{dCb}}}DBh}{{{b{Hj}}{b{dCb}}}DBh}0000{{{b{DAl}}{b{dCb}}}DBh}{{{b{DAn}}{b{dCb}}}DBh}{{{b{DB`}}{b{dCb}}}DBh}```````````````````{cc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{f{{DBj{Dl}}}}{f{{DBj{Dn}}}}{j{{DBj{E`}}}}{f{{DBj{Eb}}}}{j{{DBj{Ed}}}}{f{{DBj{Ef}}}}{f{{DBj{Eh}}}}{Hl{{DBj{Ej}}}}{Bf{{DBj{El}}}}{Bf{{DBj{En}}}}{j{{DBj{F`}}}}{j{{DBj{Fb}}}}{j{{DBj{Fd}}}}{f{{DBj{Ff}}}}{Bf{{DBj{Fh}}}}{Bf{{DBj{Fj}}}}{f{{DBj{Fl}}}}{f{{DBj{Fn}}}}{Bf{{DBj{G`}}}}{j{{DBj{Gb}}}}{j{{DBj{Gd}}}}{j{{DBj{Gf}}}}{j{{DBj{Gh}}}}{j{{DBj{Gj}}}}{f{{DBj{Gl}}}}{f{{DBj{Gn}}}}{j{{DBj{H`}}}}{Hl{{DBj{Hb}}}}{Bf{{DBj{Hd}}}}{j{{DBj{Hf}}}}{Bf{{DBj{Hh}}}}{j{{DBj{Hj}}}}{fDl}{fDn}{jE`}{fEb}{jEd}{fEf}{fEh}{HlEj}{BfEl}{BfEn}{jF`}{jFb}{jFd}{fFf}{BfFh}{BfFj}{fFl}{fFn}{BfG`}{jGb}{jGd}{jGf}{jGh}{jGj}{fGl}{fGn}{jH`}{HlHb}{BfHd}{jHf}{BfHh}{jHj}{fDl}{fDn}{jE`}{fEb}{jEd}{fEf}{fEh}{HlEj}{BfEl}{BfEn}{jF`}{jFb}{jFd}{fFf}{BfFh}{BfFj}{fFl}{fFn}{BfG`}{jGb}{jGd}{jGf}{jGh}{jGj}{fGl}{fGn}{jH`}{HlHb}{BfHd}{jHf}{BfHh}{jHj}{DBl{{DBj{BN`}}}}{DBl{{DBj{BNb}}}}{DBl{{DBj{BNd}}}}{DBl{{DBj{BNf}}}}{DBl{{DBj{BNh}}}}{DBl{{DBj{BNj}}}}{DBl{{DBj{BNl}}}}{DBl{{DBj{BNn}}}}{DBl{{DBj{BO`}}}}{DBl{{DBj{BOb}}}}{DBl{{DBj{BOd}}}}{DBl{{DBj{BOf}}}}{DBl{{DBj{BOh}}}}{DBl{{DBj{BOj}}}}{DBl{{DBj{BOl}}}}{DBl{{DBj{BOn}}}}{DBl{{DBj{C@`}}}}{DBl{{DBj{C@b}}}}{DBl{{DBj{C@d}}}}{DBl{{DBj{C@f}}}}{DBl{{DBj{C@h}}}}{DBl{{DBj{C@j}}}}{DBl{{DBj{C@l}}}}{DBl{{DBj{C@n}}}}{DBl{{DBj{CA`}}}}{DBl{{DBj{CAb}}}}{DBl{{DBj{CAd}}}}{DBl{{DBj{CAf}}}}{DBl{{DBj{CAh}}}}{DBl{{DBj{CAj}}}}{DBl{{DBj{CAl}}}}{DBl{{DBj{CAn}}}}{DBl{{DBj{CB`}}}}{DBl{{DBj{CBb}}}}{DBl{{DBj{CBd}}}}{DBl{{DBj{CBf}}}}{DBl{{DBj{CBh}}}}{DBl{{DBj{CBj}}}}{DBl{{DBj{CBl}}}}{DBl{{DBj{CBn}}}}{DBl{{DBj{CC`}}}}{DBl{{DBj{CCb}}}}{DBl{{DBj{CCd}}}}{DBl{{DBj{CCf}}}}{DBl{{DBj{CCh}}}}{DBl{{DBj{CCj}}}}{DBl{{DBj{CCl}}}}{DBl{{DBj{CCn}}}}{DBl{{DBj{CD`}}}}{DBl{{DBj{CDb}}}}{DBl{{DBj{CDd}}}}{DBl{{DBj{CDf}}}}{DBl{{DBj{CDh}}}}{DBl{{DBj{CDj}}}}{DBl{{DBj{CDl}}}}{DBl{{DBj{CDn}}}}{DBl{{DBj{CE`}}}}{DBl{{DBj{CEb}}}}{DBl{{DBj{CEd}}}}{DBl{{DBj{CEf}}}}{DBl{{DBj{CEh}}}}{DBl{{DBj{CEj}}}}{DBl{{DBj{CEl}}}}{DBl{{DBj{CEn}}}}{DBl{{DBj{CF`}}}}{DBl{{DBj{CFb}}}}{DBl{{DBj{CFd}}}}{DBl{{DBj{CFf}}}}{DBl{{DBj{CFh}}}}{DBl{{DBj{CFj}}}}{DBl{{DBj{CFl}}}}{DBl{{DBj{CFn}}}}{DBl{{DBj{CG`}}}}{DBl{{DBj{CGb}}}}{DBl{{DBj{CGd}}}}{DBl{{DBj{CGf}}}}{DBl{{DBj{CGh}}}}{DBl{{DBj{CGj}}}}{DBl{{DBj{CGl}}}}{DBl{{DBj{CGn}}}}{DBl{{DBj{CH`}}}}{DBl{{DBj{CHb}}}}{DBl{{DBj{CHd}}}}{DBl{{DBj{CHf}}}}{DBl{{DBj{CHh}}}}{DBl{{DBj{CHj}}}}{DBl{{DBj{CHl}}}}{DBl{{DBj{CHn}}}}{DBl{{DBj{CI`}}}}{DBl{{DBj{CIb}}}}{DBl{{DBj{CId}}}}{DBl{{DBj{CIf}}}}{DBl{{DBj{CIh}}}}{DBl{{DBj{CIj}}}}{DBl{{DBj{CIl}}}}{DBl{{DBj{CIn}}}}{DBl{{DBj{CJ`}}}}{DBl{{DBj{CJb}}}}{DBl{{DBj{CJd}}}}{DBl{{DBj{CJf}}}}{DBl{{DBj{CJh}}}}{DBl{{DBj{CJj}}}}{DBl{{DBj{CJl}}}}{DBl{{DBj{CJn}}}}{DBl{{DBj{CK`}}}}{DBl{{DBj{CKb}}}}{DBl{{DBj{CKd}}}}{DBl{{DBj{CKf}}}}{DBl{{DBj{CKh}}}}{DBl{{DBj{CKj}}}}{DBl{{DBj{CKl}}}}{DBl{{DBj{CKn}}}}{DBl{{DBj{CL`}}}}{DBl{{DBj{CLb}}}}{DBl{{DBj{CLd}}}}{DBl{{DBj{CLf}}}}{DBl{{DBj{CLh}}}}{DBl{{DBj{CLj}}}}{DBl{{DBj{CLl}}}}{DBl{{DBj{CLn}}}}{DBl{{DBj{CM`}}}}{DBl{{DBj{CMb}}}}{DBl{{DBj{CMd}}}}{DBl{{DBj{CMf}}}}{DBl{{DBj{CMh}}}}{DBl{{DBj{CMj}}}}{DBl{{DBj{CMl}}}}{DBl{{DBj{CMn}}}}{DBl{{DBj{CN`}}}}{DBl{{DBj{CNb}}}}{DBl{{DBj{CNd}}}}{DBl{{DBj{CNf}}}}{DBl{{DBj{CNh}}}}{DBl{{DBj{CNj}}}}{DBl{{DBj{CNl}}}}{DBl{{DBj{CNn}}}}{DBl{{DBj{CO`}}}}{DBl{{DBj{COb}}}}{DBl{{DBj{COd}}}}{DBl{{DBj{COf}}}}{DBl{{DBj{COh}}}}{DBl{{DBj{COj}}}}{DBl{{DBj{COl}}}}{DBl{{DBj{COn}}}}{DBl{{DBj{D@`}}}}{DBl{{DBj{D@b}}}}{DBl{{DBj{D@d}}}}{DBl{{DBj{D@f}}}}{DBl{{DBj{D@h}}}}{DBl{{DBj{D@j}}}}{DBl{{DBj{D@l}}}}{DBl{{DBj{D@n}}}}{DBl{{DBj{DA`}}}}{DBl{{DBj{DAb}}}}{DBl{{DBj{DAd}}}}{DBl{{DBj{DAf}}}}{DBl{{DBj{DAh}}}}{DBl{{DBj{DAj}}}}{DBl{{DBj{DAl}}}}{DBl{{DBj{DAn}}}}{DBl{{DBj{DB`}}}}{cDl{{DBf{}{{DBd{Dl}}}}}}{cDn{{DBf{}{{DBd{Dn}}}}}}{cE`{{DBf{}{{DBd{E`}}}}}}{cEb{{DBf{}{{DBd{Eb}}}}}}{cEd{{DBf{}{{DBd{Ed}}}}}}{cEf{{DBf{}{{DBd{Ef}}}}}}{cEh{{DBf{}{{DBd{Eh}}}}}}{cEj{{DBf{}{{DBd{Ej}}}}}}{cEl{{DBf{}{{DBd{El}}}}}}{cEn{{DBf{}{{DBd{En}}}}}}{cF`{{DBf{}{{DBd{F`}}}}}}{cFb{{DBf{}{{DBd{Fb}}}}}}{cFd{{DBf{}{{DBd{Fd}}}}}}{cFf{{DBf{}{{DBd{Ff}}}}}}{cFh{{DBf{}{{DBd{Fh}}}}}}{cFj{{DBf{}{{DBd{Fj}}}}}}{cFl{{DBf{}{{DBd{Fl}}}}}}{cFn{{DBf{}{{DBd{Fn}}}}}}{cG`{{DBf{}{{DBd{G`}}}}}}{cGb{{DBf{}{{DBd{Gb}}}}}}{cGd{{DBf{}{{DBd{Gd}}}}}}{cGf{{DBf{}{{DBd{Gf}}}}}}{cGh{{DBf{}{{DBd{Gh}}}}}}{cGj{{DBf{}{{DBd{Gj}}}}}}{cGl{{DBf{}{{DBd{Gl}}}}}}{cGn{{DBf{}{{DBd{Gn}}}}}}{cH`{{DBf{}{{DBd{H`}}}}}}{cHb{{DBf{}{{DBd{Hb}}}}}}{cHd{{DBf{}{{DBd{Hd}}}}}}{cHf{{DBf{}{{DBd{Hf}}}}}}{cHh{{DBf{}{{DBd{Hh}}}}}}{cHj{{DBf{}{{DBd{Hj}}}}}}{Hl{{DBj{BN`}}}}{Hl{{DBj{BNb}}}}{Hl{{DBj{BNd}}}}{Hl{{DBj{BNf}}}}{Hl{{DBj{BNh}}}}{Hl{{DBj{BNj}}}}{Hl{{DBj{BNl}}}}{Hl{{DBj{BNn}}}}{Hl{{DBj{BO`}}}}{Hl{{DBj{BOb}}}}{Hl{{DBj{BOd}}}}{Hl{{DBj{BOf}}}}{Hl{{DBj{BOh}}}}{Hl{{DBj{BOj}}}}{Hl{{DBj{BOl}}}}{Hl{{DBj{BOn}}}}{Hl{{DBj{C@`}}}}{Hl{{DBj{C@b}}}}{Hl{{DBj{C@d}}}}{Hl{{DBj{C@f}}}}{Hl{{DBj{C@h}}}}{Hl{{DBj{C@j}}}}{Hl{{DBj{C@l}}}}{Hl{{DBj{C@n}}}}{Hl{{DBj{CA`}}}}{Hl{{DBj{CAb}}}}{Hl{{DBj{CAd}}}}{Hl{{DBj{CAf}}}}{Hl{{DBj{CAh}}}}{Hl{{DBj{CAj}}}}{Hl{{DBj{CAl}}}}{Hl{{DBj{CAn}}}}{Hl{{DBj{CB`}}}}{Hl{{DBj{CBb}}}}{Hl{{DBj{CBd}}}}{Hl{{DBj{CBf}}}}{Hl{{DBj{CBh}}}}{Hl{{DBj{CBj}}}}{Hl{{DBj{CBl}}}}{Hl{{DBj{CBn}}}}{Hl{{DBj{CC`}}}}{Hl{{DBj{CCb}}}}{Hl{{DBj{CCd}}}}{Hl{{DBj{CCf}}}}{Hl{{DBj{CCh}}}}{Hl{{DBj{CCj}}}}{Hl{{DBj{CCl}}}}{Hl{{DBj{CCn}}}}{Hl{{DBj{CD`}}}}{Hl{{DBj{CDb}}}}{Hl{{DBj{CDd}}}}{Hl{{DBj{CDf}}}}{Hl{{DBj{CDh}}}}{Hl{{DBj{CDj}}}}{Hl{{DBj{CDl}}}}{Hl{{DBj{CDn}}}}{Hl{{DBj{CE`}}}}{Hl{{DBj{CEb}}}}{Hl{{DBj{CEd}}}}{Hl{{DBj{CEf}}}}{Hl{{DBj{CEh}}}}{Hl{{DBj{CEj}}}}{Hl{{DBj{CEl}}}}{Hl{{DBj{CEn}}}}{Hl{{DBj{CF`}}}}{Hl{{DBj{CFb}}}}{Hl{{DBj{CFd}}}}{Hl{{DBj{CFf}}}}{Hl{{DBj{CFh}}}}{Hl{{DBj{CFj}}}}{Hl{{DBj{CFl}}}}{Hl{{DBj{CFn}}}}{Hl{{DBj{CG`}}}}{Hl{{DBj{CGb}}}}{Hl{{DBj{CGd}}}}{Hl{{DBj{CGf}}}}{Hl{{DBj{CGh}}}}{Hl{{DBj{CGj}}}}{Hl{{DBj{CGl}}}}{Hl{{DBj{CGn}}}}{Hl{{DBj{CH`}}}}{Hl{{DBj{CHb}}}}{Hl{{DBj{CHd}}}}{Hl{{DBj{CHf}}}}{Hl{{DBj{CHh}}}}{Hl{{DBj{CHj}}}}{Hl{{DBj{CHl}}}}{Hl{{DBj{CHn}}}}{Hl{{DBj{CI`}}}}{Hl{{DBj{CIb}}}}{Hl{{DBj{CId}}}}{Hl{{DBj{CIf}}}}{Hl{{DBj{CIh}}}}{Hl{{DBj{CIj}}}}{Hl{{DBj{CIl}}}}{Hl{{DBj{CIn}}}}{Hl{{DBj{CJ`}}}}{Hl{{DBj{CJb}}}}{Hl{{DBj{CJd}}}}{Hl{{DBj{CJf}}}}{Hl{{DBj{CJh}}}}{Hl{{DBj{CJj}}}}{Hl{{DBj{CJl}}}}{Hl{{DBj{CJn}}}}{Hl{{DBj{CK`}}}}{Hl{{DBj{CKb}}}}{Hl{{DBj{CKd}}}}{Hl{{DBj{CKf}}}}{Hl{{DBj{CKh}}}}{Hl{{DBj{CKj}}}}{Hl{{DBj{CKl}}}}{Hl{{DBj{CKn}}}}{Hl{{DBj{CL`}}}}{Hl{{DBj{CLb}}}}{Hl{{DBj{CLd}}}}{Hl{{DBj{CLf}}}}{Hl{{DBj{CLh}}}}{Hl{{DBj{CLj}}}}{Hl{{DBj{CLl}}}}{Hl{{DBj{CLn}}}}{Hl{{DBj{CM`}}}}{Hl{{DBj{CMb}}}}{Hl{{DBj{CMd}}}}{Hl{{DBj{CMf}}}}{Hl{{DBj{CMh}}}}{Hl{{DBj{CMj}}}}{Hl{{DBj{CMl}}}}{Hl{{DBj{CMn}}}}{Hl{{DBj{CN`}}}}{Hl{{DBj{CNb}}}}{Hl{{DBj{CNd}}}}{Hl{{DBj{CNf}}}}{Hl{{DBj{CNh}}}}{Hl{{DBj{CNj}}}}{Hl{{DBj{CNl}}}}{Hl{{DBj{CNn}}}}{Hl{{DBj{CO`}}}}{Hl{{DBj{COb}}}}{Hl{{DBj{COd}}}}{Hl{{DBj{COf}}}}{Hl{{DBj{COh}}}}{Hl{{DBj{COj}}}}{Hl{{DBj{COl}}}}{Hl{{DBj{COn}}}}{Hl{{DBj{D@`}}}}{Hl{{DBj{D@b}}}}{Hl{{DBj{D@d}}}}{Hl{{DBj{D@f}}}}{Hl{{DBj{D@h}}}}{Hl{{DBj{D@j}}}}{Hl{{DBj{D@l}}}}{Hl{{DBj{D@n}}}}{Hl{{DBj{DA`}}}}{Hl{{DBj{DAb}}}}{Hl{{DBj{DAd}}}}{Hl{{DBj{DAf}}}}{Hl{{DBj{DAh}}}}{Hl{{DBj{DAj}}}}{Hl{{DBj{DAl}}}}{Hl{{DBj{DAn}}}}{Hl{{DBj{DB`}}}}```````````````````````````````````````{{{b{Dl}}{b{dc}}}AjDBn}{{{b{Dn}}{b{dc}}}AjDBn}{{{b{E`}}{b{dc}}}AjDBn}{{{b{Eb}}{b{dc}}}AjDBn}{{{b{Ed}}{b{dc}}}AjDBn}{{{b{Ef}}{b{dc}}}AjDBn}{{{b{Eh}}{b{dc}}}AjDBn}{{{b{Ej}}{b{dc}}}AjDBn}{{{b{El}}{b{dc}}}AjDBn}{{{b{En}}{b{dc}}}AjDBn}{{{b{F`}}{b{dc}}}AjDBn}{{{b{Fb}}{b{dc}}}AjDBn}{{{b{Fd}}{b{dc}}}AjDBn}{{{b{Ff}}{b{dc}}}AjDBn}{{{b{Fh}}{b{dc}}}AjDBn}{{{b{Fj}}{b{dc}}}AjDBn}{{{b{Fl}}{b{dc}}}AjDBn}{{{b{Fn}}{b{dc}}}AjDBn}{{{b{G`}}{b{dc}}}AjDBn}{{{b{Gb}}{b{dc}}}AjDBn}{{{b{Gd}}{b{dc}}}AjDBn}{{{b{Gf}}{b{dc}}}AjDBn}{{{b{Gh}}{b{dc}}}AjDBn}{{{b{Gj}}{b{dc}}}AjDBn}{{{b{Gl}}{b{dc}}}AjDBn}{{{b{Gn}}{b{dc}}}AjDBn}{{{b{H`}}{b{dc}}}AjDBn}{{{b{Hb}}{b{dc}}}AjDBn}{{{b{Hd}}{b{dc}}}AjDBn}{{{b{Hf}}{b{dc}}}AjDBn}{{{b{Hh}}{b{dc}}}AjDBn}{{{b{Hj}}{b{dc}}}AjDBn}`````````````````````````````````````````````````````````````````````````````{{{b{dDl}}Dl}Aj}{{{b{dDn}}Dn}Aj}{{{b{dE`}}E`}Aj}{{{b{dEb}}Eb}Aj}{{{b{dEd}}Ed}Aj}{{{b{dEf}}Ef}Aj}{{{b{dEh}}Eh}Aj}{{{b{dEj}}Ej}Aj}{{{b{dEl}}El}Aj}{{{b{dEn}}En}Aj}{{{b{dF`}}F`}Aj}{{{b{dFb}}Fb}Aj}{{{b{dFd}}Fd}Aj}{{{b{dFf}}Ff}Aj}{{{b{dFh}}Fh}Aj}{{{b{dFj}}Fj}Aj}{{{b{dFl}}Fl}Aj}{{{b{dFn}}Fn}Aj}{{{b{dG`}}G`}Aj}{{{b{dGb}}Gb}Aj}{{{b{dGd}}Gd}Aj}{{{b{dGf}}Gf}Aj}{{{b{dGh}}Gh}Aj}{{{b{dGj}}Gj}Aj}{{{b{dGl}}Gl}Aj}{{{b{dGn}}Gn}Aj}{{{b{dH`}}H`}Aj}{{{b{dHb}}Hb}Aj}{{{b{dHd}}Hd}Aj}{{{b{dHf}}Hf}Aj}{{{b{dHh}}Hh}Aj}{{{b{dHj}}Hj}Aj}````````````````{{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}{{HhHh}Hh}{{HjHj}Hj}{{{b{Dl}}Dl}C`}{{{b{Dn}}Dn}C`}{{{b{E`}}E`}C`}{{{b{Eb}}Eb}C`}{{{b{Ed}}Ed}C`}{{{b{Ef}}Ef}C`}{{{b{Eh}}Eh}C`}{{{b{Ej}}Ej}C`}{{{b{El}}El}C`}{{{b{En}}En}C`}{{{b{F`}}F`}C`}{{{b{Fb}}Fb}C`}{{{b{Fd}}Fd}C`}{{{b{Ff}}Ff}C`}{{{b{Fh}}Fh}C`}{{{b{Fj}}Fj}C`}{{{b{Fl}}Fl}C`}{{{b{Fn}}Fn}C`}{{{b{G`}}G`}C`}{{{b{Gb}}Gb}C`}{{{b{Gd}}Gd}C`}{{{b{Gf}}Gf}C`}{{{b{Gh}}Gh}C`}{{{b{Gj}}Gj}C`}{{{b{Gl}}Gl}C`}{{{b{Gn}}Gn}C`}{{{b{H`}}H`}C`}{{{b{Hb}}Hb}C`}{{{b{Hd}}Hd}C`}{{{b{Hf}}Hf}C`}{{{b{Hh}}Hh}C`}{{{b{Hj}}Hj}C`}`{ce{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{Dl}}}C`}{{{b{Dn}}}C`}{{{b{E`}}}C`}{{{b{Eb}}}C`}{{{b{Ed}}}C`}{{{b{Ef}}}C`}{{{b{Eh}}}C`}{{{b{Ej}}}C`}{{{b{El}}}C`}{{{b{En}}}C`}{{{b{F`}}}C`}{{{b{Fb}}}C`}{{{b{Fd}}}C`}{{{b{Ff}}}C`}{{{b{Fh}}}C`}{{{b{Fj}}}C`}{{{b{Fl}}}C`}{{{b{Fn}}}C`}{{{b{G`}}}C`}{{{b{Gb}}}C`}{{{b{Gd}}}C`}{{{b{Gf}}}C`}{{{b{Gh}}}C`}{{{b{Gj}}}C`}{{{b{Gl}}}C`}{{{b{Gn}}}C`}{{{b{H`}}}C`}{{{b{Hb}}}C`}{{{b{Hd}}}C`}{{{b{Hf}}}C`}{{{b{Hh}}}C`}{{{b{Hj}}}C`}{{{b{Dl}}}C`}{{{b{Dn}}}C`}{{{b{E`}}}C`}{{{b{Eb}}}C`}{{{b{Ed}}}C`}{{{b{Ef}}}C`}{{{b{Eh}}}C`}{{{b{Ej}}}C`}{{{b{El}}}C`}{{{b{En}}}C`}{{{b{F`}}}C`}{{{b{Fb}}}C`}{{{b{Fd}}}C`}{{{b{Ff}}}C`}{{{b{Fh}}}C`}{{{b{Fj}}}C`}{{{b{Fl}}}C`}{{{b{Fn}}}C`}{{{b{G`}}}C`}{{{b{Gb}}}C`}{{{b{Gd}}}C`}{{{b{Gf}}}C`}{{{b{Gh}}}C`}{{{b{Gj}}}C`}{{{b{Gl}}}C`}{{{b{Gn}}}C`}{{{b{H`}}}C`}{{{b{Hb}}}C`}{{{b{Hd}}}C`}{{{b{Hf}}}C`}{{{b{Hh}}}C`}{{{b{Hj}}}C`}````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{Hn}}}Bf}`{{{b{Al}}}{{Bd{Bf{b{Al}}}}}}{{{b{Hn}}}{{b{Al}}}}`````````````````````````````````````````````````````{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}{HhHh}{HjHj}``````````````````````````````````````````````````````````````````````````````````````````````````````````````{{AbBf{b{{h{f}}}}}{{Bd{HnBl}}}}{{{b{Dl}}{b{Dl}}}{{DBj{DBb}}}}{{{b{Dn}}{b{Dn}}}{{DBj{DBb}}}}{{{b{E`}}{b{E`}}}{{DBj{DBb}}}}{{{b{Eb}}{b{Eb}}}{{DBj{DBb}}}}{{{b{Ed}}{b{Ed}}}{{DBj{DBb}}}}{{{b{Ef}}{b{Ef}}}{{DBj{DBb}}}}{{{b{Eh}}{b{Eh}}}{{DBj{DBb}}}}{{{b{Ej}}{b{Ej}}}{{DBj{DBb}}}}{{{b{El}}{b{El}}}{{DBj{DBb}}}}{{{b{En}}{b{En}}}{{DBj{DBb}}}}{{{b{F`}}{b{F`}}}{{DBj{DBb}}}}{{{b{Fb}}{b{Fb}}}{{DBj{DBb}}}}{{{b{Fd}}{b{Fd}}}{{DBj{DBb}}}}{{{b{Ff}}{b{Ff}}}{{DBj{DBb}}}}{{{b{Fh}}{b{Fh}}}{{DBj{DBb}}}}{{{b{Fj}}{b{Fj}}}{{DBj{DBb}}}}{{{b{Fl}}{b{Fl}}}{{DBj{DBb}}}}{{{b{Fn}}{b{Fn}}}{{DBj{DBb}}}}{{{b{G`}}{b{G`}}}{{DBj{DBb}}}}{{{b{Gb}}{b{Gb}}}{{DBj{DBb}}}}{{{b{Gd}}{b{Gd}}}{{DBj{DBb}}}}{{{b{Gf}}{b{Gf}}}{{DBj{DBb}}}}{{{b{Gh}}{b{Gh}}}{{DBj{DBb}}}}{{{b{Gj}}{b{Gj}}}{{DBj{DBb}}}}{{{b{Gl}}{b{Gl}}}{{DBj{DBb}}}}{{{b{Gn}}{b{Gn}}}{{DBj{DBb}}}}{{{b{H`}}{b{H`}}}{{DBj{DBb}}}}{{{b{Hb}}{b{Hb}}}{{DBj{DBb}}}}{{{b{Hd}}{b{Hd}}}{{DBj{DBb}}}}{{{b{Hf}}{b{Hf}}}{{DBj{DBb}}}}{{{b{Hh}}{b{Hh}}}{{DBj{DBb}}}}{{{b{Hj}}{b{Hj}}}{{DBj{DBb}}}}``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{dDl}}Dl}Aj}{{{b{dDn}}Dn}Aj}{{{b{dE`}}E`}Aj}{{{b{dEb}}Eb}Aj}{{{b{dEd}}Ed}Aj}{{{b{dEf}}Ef}Aj}{{{b{dEh}}Eh}Aj}{{{b{dEj}}Ej}Aj}{{{b{dEl}}El}Aj}{{{b{dEn}}En}Aj}{{{b{dF`}}F`}Aj}{{{b{dFb}}Fb}Aj}{{{b{dFd}}Fd}Aj}{{{b{dFf}}Ff}Aj}{{{b{dFh}}Fh}Aj}{{{b{dFj}}Fj}Aj}{{{b{dFl}}Fl}Aj}{{{b{dFn}}Fn}Aj}{{{b{dG`}}G`}Aj}{{{b{dGb}}Gb}Aj}{{{b{dGd}}Gd}Aj}{{{b{dGf}}Gf}Aj}{{{b{dGh}}Gh}Aj}{{{b{dGj}}Gj}Aj}{{{b{dGl}}Gl}Aj}{{{b{dGn}}Gn}Aj}{{{b{dH`}}H`}Aj}{{{b{dHb}}Hb}Aj}{{{b{dHd}}Hd}Aj}{{{b{dHf}}Hf}Aj}{{{b{dHh}}Hh}Aj}{{{b{dHj}}Hj}Aj}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{Hn}}Ab{b{d{h{f}}}}}D`}{{{b{I`}}Ab{b{d{h{f}}}}}D`}{{{b{Ib}}Ab{b{d{h{f}}}}}D`}{{{b{Id}}Ab{b{d{h{f}}}}}D`}{{{b{If}}Ab{b{d{h{f}}}}}D`}{{{b{Ih}}Ab{b{d{h{f}}}}}D`}{{{b{Ij}}Ab{b{d{h{f}}}}}D`}{{{b{Il}}Ab{b{d{h{f}}}}}D`}{{{b{In}}Ab{b{d{h{f}}}}}D`}{{{b{J`}}Ab{b{d{h{f}}}}}D`}{{{b{Jb}}Ab{b{d{h{f}}}}}D`}{{{b{Jd}}Ab{b{d{h{f}}}}}D`}{{{b{Jf}}Ab{b{d{h{f}}}}}D`}{{{b{Jh}}Ab{b{d{h{f}}}}}D`}{{{b{Jj}}Ab{b{d{h{f}}}}}D`}{{{b{Jl}}Ab{b{d{h{f}}}}}D`}{{{b{Jn}}Ab{b{d{h{f}}}}}D`}{{{b{K`}}Ab{b{d{h{f}}}}}D`}{{{b{Kb}}Ab{b{d{h{f}}}}}D`}{{{b{Kd}}Ab{b{d{h{f}}}}}D`}{{{b{Kf}}Ab{b{d{h{f}}}}}D`}{{{b{Kh}}Ab{b{d{h{f}}}}}D`}{{{b{Kj}}Ab{b{d{h{f}}}}}D`}{{{b{Kl}}Ab{b{d{h{f}}}}}D`}{{{b{Kn}}Ab{b{d{h{f}}}}}D`}{{{b{L`}}Ab{b{d{h{f}}}}}D`}{{{b{Lb}}Ab{b{d{h{f}}}}}D`}{{{b{Ld}}Ab{b{d{h{f}}}}}D`}{{{b{Lf}}Ab{b{d{h{f}}}}}D`}{{{b{Lh}}Ab{b{d{h{f}}}}}D`}{{{b{Lj}}Ab{b{d{h{f}}}}}D`}{{{b{Ll}}Ab{b{d{h{f}}}}}D`}{{{b{Ln}}Ab{b{d{h{f}}}}}D`}{{{b{M`}}Ab{b{d{h{f}}}}}D`}{{{b{Mb}}Ab{b{d{h{f}}}}}D`}{{{b{Md}}Ab{b{d{h{f}}}}}D`}{{{b{Mf}}Ab{b{d{h{f}}}}}D`}{{{b{Mh}}Ab{b{d{h{f}}}}}D`}{{{b{Mj}}Ab{b{d{h{f}}}}}D`}{{{b{Ml}}Ab{b{d{h{f}}}}}D`}{{{b{Mn}}Ab{b{d{h{f}}}}}D`}{{{b{N`}}Ab{b{d{h{f}}}}}D`}{{{b{Nb}}Ab{b{d{h{f}}}}}D`}{{{b{Nd}}Ab{b{d{h{f}}}}}D`}{{{b{Nf}}Ab{b{d{h{f}}}}}D`}{{{b{Nh}}Ab{b{d{h{f}}}}}D`}{{{b{Nj}}Ab{b{d{h{f}}}}}D`}{{{b{Nl}}Ab{b{d{h{f}}}}}D`}{{{b{Nn}}Ab{b{d{h{f}}}}}D`}{{{b{O`}}Ab{b{d{h{f}}}}}D`}{{{b{Ob}}Ab{b{d{h{f}}}}}D`}{{{b{Od}}Ab{b{d{h{f}}}}}D`}{{{b{Of}}Ab{b{d{h{f}}}}}D`}{{{b{Oh}}Ab{b{d{h{f}}}}}D`}{{{b{Oj}}Ab{b{d{h{f}}}}}D`}{{{b{Ol}}Ab{b{d{h{f}}}}}D`}{{{b{On}}Ab{b{d{h{f}}}}}D`}{{{b{A@`}}Ab{b{d{h{f}}}}}D`}{{{b{A@b}}Ab{b{d{h{f}}}}}D`}{{{b{A@d}}Ab{b{d{h{f}}}}}D`}{{{b{A@f}}Ab{b{d{h{f}}}}}D`}{{{b{A@h}}Ab{b{d{h{f}}}}}D`}{{{b{A@j}}Ab{b{d{h{f}}}}}D`}{{{b{A@l}}Ab{b{d{h{f}}}}}D`}{{{b{A@n}}Ab{b{d{h{f}}}}}D`}{{{b{AA`}}Ab{b{d{h{f}}}}}D`}{{{b{AAb}}Ab{b{d{h{f}}}}}D`}{{{b{AAd}}Ab{b{d{h{f}}}}}D`}{{{b{AAf}}Ab{b{d{h{f}}}}}D`}{{{b{AAh}}Ab{b{d{h{f}}}}}D`}{{{b{AAj}}Ab{b{d{h{f}}}}}D`}{{{b{AAl}}Ab{b{d{h{f}}}}}D`}{{{b{AAn}}Ab{b{d{h{f}}}}}D`}{{{b{AB`}}Ab{b{d{h{f}}}}}D`}{{{b{ABb}}Ab{b{d{h{f}}}}}D`}{{{b{ABd}}Ab{b{d{h{f}}}}}D`}{{{b{ABf}}Ab{b{d{h{f}}}}}D`}{{{b{ABh}}Ab{b{d{h{f}}}}}D`}{{{b{ABj}}Ab{b{d{h{f}}}}}D`}{{{b{ABl}}Ab{b{d{h{f}}}}}D`}{{{b{ABn}}Ab{b{d{h{f}}}}}D`}{{{b{AC`}}Ab{b{d{h{f}}}}}D`}{{{b{ACb}}Ab{b{d{h{f}}}}}D`}{{{b{ACd}}Ab{b{d{h{f}}}}}D`}{{{b{ACf}}Ab{b{d{h{f}}}}}D`}{{{b{ACh}}Ab{b{d{h{f}}}}}D`}{{{b{ACj}}Ab{b{d{h{f}}}}}D`}{{{b{ACl}}Ab{b{d{h{f}}}}}D`}{{{b{ACn}}Ab{b{d{h{f}}}}}D`}{{{b{AD`}}Ab{b{d{h{f}}}}}D`}{{{b{ADb}}Ab{b{d{h{f}}}}}D`}{{{b{ADd}}Ab{b{d{h{f}}}}}D`}{{{b{ADf}}Ab{b{d{h{f}}}}}D`}{{{b{ADh}}Ab{b{d{h{f}}}}}D`}{{{b{ADj}}Ab{b{d{h{f}}}}}D`}{{{b{ADl}}Ab{b{d{h{f}}}}}D`}{{{b{ADn}}Ab{b{d{h{f}}}}}D`}{{{b{AE`}}Ab{b{d{h{f}}}}}D`}{{{b{AEb}}Ab{b{d{h{f}}}}}D`}{{{b{AEd}}Ab{b{d{h{f}}}}}D`}{{{b{AEf}}Ab{b{d{h{f}}}}}D`}{{{b{AEh}}Ab{b{d{h{f}}}}}D`}{{{b{AEj}}Ab{b{d{h{f}}}}}D`}{{{b{AEl}}Ab{b{d{h{f}}}}}D`}{{{b{AEn}}Ab{b{d{h{f}}}}}D`}{{{b{AF`}}Ab{b{d{h{f}}}}}D`}{{{b{AFb}}Ab{b{d{h{f}}}}}D`}{{{b{AFd}}Ab{b{d{h{f}}}}}D`}{{{b{AFf}}Ab{b{d{h{f}}}}}D`}{{{b{AFh}}Ab{b{d{h{f}}}}}D`}{{{b{AFj}}Ab{b{d{h{f}}}}}D`}{{{b{AFl}}Ab{b{d{h{f}}}}}D`}{{{b{AFn}}Ab{b{d{h{f}}}}}D`}{{{b{AG`}}Ab{b{d{h{f}}}}}D`}{{{b{AGb}}Ab{b{d{h{f}}}}}D`}{{{b{AGd}}Ab{b{d{h{f}}}}}D`}{{{b{AGf}}Ab{b{d{h{f}}}}}D`}{{{b{AGh}}Ab{b{d{h{f}}}}}D`}{{{b{AGj}}Ab{b{d{h{f}}}}}D`}{{{b{AGl}}Ab{b{d{h{f}}}}}D`}{{{b{AGn}}Ab{b{d{h{f}}}}}D`}{{{b{AH`}}Ab{b{d{h{f}}}}}D`}{{{b{AHb}}Ab{b{d{h{f}}}}}D`}{{{b{AHd}}Ab{b{d{h{f}}}}}D`}{{{b{AHf}}Ab{b{d{h{f}}}}}D`}{{{b{AHh}}Ab{b{d{h{f}}}}}D`}{{{b{AHj}}Ab{b{d{h{f}}}}}D`}{{{b{AHl}}Ab{b{d{h{f}}}}}D`}{{{b{AHn}}Ab{b{d{h{f}}}}}D`}{{{b{AI`}}Ab{b{d{h{f}}}}}D`}{{{b{AIb}}Ab{b{d{h{f}}}}}D`}{{{b{AId}}Ab{b{d{h{f}}}}}D`}{{{b{AIf}}Ab{b{d{h{f}}}}}D`}{{{b{AIh}}Ab{b{d{h{f}}}}}D`}{{{b{AIj}}Ab{b{d{h{f}}}}}D`}{{{b{AIl}}Ab{b{d{h{f}}}}}D`}{{{b{AIn}}Ab{b{d{h{f}}}}}D`}{{{b{AJ`}}Ab{b{d{h{f}}}}}D`}{{{b{AJb}}Ab{b{d{h{f}}}}}D`}{{{b{AJd}}Ab{b{d{h{f}}}}}D`}{{{b{AJf}}Ab{b{d{h{f}}}}}D`}{{{b{AJh}}Ab{b{d{h{f}}}}}D`}{{{b{AJj}}Ab{b{d{h{f}}}}}D`}{{{b{AJl}}Ab{b{d{h{f}}}}}D`}{{{b{AJn}}Ab{b{d{h{f}}}}}D`}{{{b{AK`}}Ab{b{d{h{f}}}}}D`}{{{b{AKb}}Ab{b{d{h{f}}}}}D`}{{{b{AKd}}Ab{b{d{h{f}}}}}D`}{{{b{AKf}}Ab{b{d{h{f}}}}}D`}{{{b{AKh}}Ab{b{d{h{f}}}}}D`}{{{b{AKj}}Ab{b{d{h{f}}}}}D`}{{{b{AKl}}Ab{b{d{h{f}}}}}D`}{{{b{AKn}}Ab{b{d{h{f}}}}}D`}{{{b{AL`}}Ab{b{d{h{f}}}}}D`}{{{b{ALb}}Ab{b{d{h{f}}}}}D`}{{{b{ALd}}Ab{b{d{h{f}}}}}D`}{{{b{ALf}}Ab{b{d{h{f}}}}}D`}{{{b{ALh}}Ab{b{d{h{f}}}}}D`}{{{b{ALj}}Ab{b{d{h{f}}}}}D`}{{{b{ALl}}Ab{b{d{h{f}}}}}D`}{{{b{ALn}}Ab{b{d{h{f}}}}}D`}{{{b{AM`}}Ab{b{d{h{f}}}}}D`}{{{b{AMb}}Ab{b{d{h{f}}}}}D`}{{{b{AMd}}Ab{b{d{h{f}}}}}D`}{{{b{AMf}}Ab{b{d{h{f}}}}}D`}{{{b{AMh}}Ab{b{d{h{f}}}}}D`}{{{b{AMj}}Ab{b{d{h{f}}}}}D`}{{{b{AMl}}Ab{b{d{h{f}}}}}D`}{{{b{AMn}}Ab{b{d{h{f}}}}}D`}{{{b{AN`}}Ab{b{d{h{f}}}}}D`}{{{b{ANb}}Ab{b{d{h{f}}}}}D`}{{{b{ANd}}Ab{b{d{h{f}}}}}D`}{{{b{ANf}}Ab{b{d{h{f}}}}}D`}{{{b{ANh}}Ab{b{d{h{f}}}}}D`}{{{b{ANj}}Ab{b{d{h{f}}}}}D`}{{{b{ANl}}Ab{b{d{h{f}}}}}D`}{{{b{ANn}}Ab{b{d{h{f}}}}}D`}{{{b{AO`}}Ab{b{d{h{f}}}}}D`}{{{b{AOb}}Ab{b{d{h{f}}}}}D`}{{{b{AOd}}Ab{b{d{h{f}}}}}D`}{{{b{AOf}}Ab{b{d{h{f}}}}}D`}{{{b{AOh}}Ab{b{d{h{f}}}}}D`}{{{b{AOj}}Ab{b{d{h{f}}}}}D`}{{{b{AOl}}Ab{b{d{h{f}}}}}D`}{{{b{AOn}}Ab{b{d{h{f}}}}}D`}{{{b{B@`}}Ab{b{d{h{f}}}}}D`}{{{b{B@b}}Ab{b{d{h{f}}}}}D`}{{{b{B@d}}Ab{b{d{h{f}}}}}D`}{{{b{B@f}}Ab{b{d{h{f}}}}}D`}{{{b{B@h}}Ab{b{d{h{f}}}}}D`}{{{b{B@j}}Ab{b{d{h{f}}}}}D`}{{{b{B@l}}Ab{b{d{h{f}}}}}D`}{{{b{B@n}}Ab{b{d{h{f}}}}}D`}{{{b{BA`}}Ab{b{d{h{f}}}}}D`}{{{b{BAb}}Ab{b{d{h{f}}}}}D`}{{{b{BAd}}Ab{b{d{h{f}}}}}D`}{{{b{BAf}}Ab{b{d{h{f}}}}}D`}{{{b{BAh}}Ab{b{d{h{f}}}}}D`}{{{b{BAj}}Ab{b{d{h{f}}}}}D`}{{{b{BAl}}Ab{b{d{h{f}}}}}D`}{{{b{BAn}}Ab{b{d{h{f}}}}}D`}{{{b{BB`}}Ab{b{d{h{f}}}}}D`}{{{b{BBb}}Ab{b{d{h{f}}}}}D`}{{{b{BBd}}Ab{b{d{h{f}}}}}D`}{{{b{BBf}}Ab{b{d{h{f}}}}}D`}{{{b{BBh}}Ab{b{d{h{f}}}}}D`}{{{b{BBj}}Ab{b{d{h{f}}}}}D`}{{{b{BBl}}Ab{b{d{h{f}}}}}D`}{{{b{BBn}}Ab{b{d{h{f}}}}}D`}{{{b{BC`}}Ab{b{d{h{f}}}}}D`}{{{b{BCb}}Ab{b{d{h{f}}}}}D`}{{{b{BCd}}Ab{b{d{h{f}}}}}D`}{{{b{BCf}}Ab{b{d{h{f}}}}}D`}{{{b{BCh}}Ab{b{d{h{f}}}}}D`}{{{b{BCj}}Ab{b{d{h{f}}}}}D`}{{{b{BCl}}Ab{b{d{h{f}}}}}D`}{{{b{BCn}}Ab{b{d{h{f}}}}}D`}{{{b{BD`}}Ab{b{d{h{f}}}}}D`}{{{b{BDb}}Ab{b{d{h{f}}}}}D`}{{{b{BDd}}Ab{b{d{h{f}}}}}D`}{{{b{BDf}}Ab{b{d{h{f}}}}}D`}{{{b{BDh}}Ab{b{d{h{f}}}}}D`}{{{b{BDj}}Ab{b{d{h{f}}}}}D`}{{{b{BDl}}Ab{b{d{h{f}}}}}D`}{{{b{BDn}}Ab{b{d{h{f}}}}}D`}{{{b{BE`}}Ab{b{d{h{f}}}}}D`}{{{b{BEb}}Ab{b{d{h{f}}}}}D`}{{{b{BEd}}Ab{b{d{h{f}}}}}D`}{{{b{BEf}}Ab{b{d{h{f}}}}}D`}{{{b{BEh}}Ab{b{d{h{f}}}}}D`}{{{b{BEj}}Ab{b{d{h{f}}}}}D`}{{{b{BEl}}Ab{b{d{h{f}}}}}D`}{{{b{BEn}}Ab{b{d{h{f}}}}}D`}{{{b{BF`}}Ab{b{d{h{f}}}}}D`}{{{b{BFb}}Ab{b{d{h{f}}}}}D`}{{{b{BFd}}Ab{b{d{h{f}}}}}D`}{{{b{BFf}}Ab{b{d{h{f}}}}}D`}{{{b{BFh}}Ab{b{d{h{f}}}}}D`}{{{b{BFj}}Ab{b{d{h{f}}}}}D`}{{{b{BFl}}Ab{b{d{h{f}}}}}D`}{{{b{BFn}}Ab{b{d{h{f}}}}}D`}{{{b{BG`}}Ab{b{d{h{f}}}}}D`}{{{b{BGb}}Ab{b{d{h{f}}}}}D`}{{{b{BGd}}Ab{b{d{h{f}}}}}D`}{{{b{BGf}}Ab{b{d{h{f}}}}}D`}{{{b{BGh}}Ab{b{d{h{f}}}}}D`}{{{b{BGj}}Ab{b{d{h{f}}}}}D`}{{{b{BGl}}Ab{b{d{h{f}}}}}D`}{{{b{BGn}}Ab{b{d{h{f}}}}}D`}{{{b{BH`}}Ab{b{d{h{f}}}}}D`}{{{b{BHb}}Ab{b{d{h{f}}}}}D`}{{{b{BHd}}Ab{b{d{h{f}}}}}D`}{{{b{BHf}}Ab{b{d{h{f}}}}}D`}{{{b{BHh}}Ab{b{d{h{f}}}}}D`}{{{b{BHj}}Ab{b{d{h{f}}}}}D`}{{{b{BHl}}Ab{b{d{h{f}}}}}D`}{{{b{BHn}}Ab{b{d{h{f}}}}}D`}{{{b{BI`}}Ab{b{d{h{f}}}}}D`}{{{b{BIb}}Ab{b{d{h{f}}}}}D`}{{{b{BId}}Ab{b{d{h{f}}}}}D`}{{{b{BIf}}Ab{b{d{h{f}}}}}D`}{{{b{BIh}}Ab{b{d{h{f}}}}}D`}{{{b{BIj}}Ab{b{d{h{f}}}}}D`}{{{b{BIl}}Ab{b{d{h{f}}}}}D`}{{{b{BIn}}Ab{b{d{h{f}}}}}D`}{{{b{BJ`}}Ab{b{d{h{f}}}}}D`}{{{b{BJb}}Ab{b{d{h{f}}}}}D`}{{{b{BJd}}Ab{b{d{h{f}}}}}D`}{{{b{BJf}}Ab{b{d{h{f}}}}}D`}{{{b{BJh}}Ab{b{d{h{f}}}}}D`}{{{b{BJj}}Ab{b{d{h{f}}}}}D`}{{{b{BJl}}Ab{b{d{h{f}}}}}D`}{{{b{BJn}}Ab{b{d{h{f}}}}}D`}{{{b{BK`}}Ab{b{d{h{f}}}}}D`}{{{b{BKb}}Ab{b{d{h{f}}}}}D`}{{{b{BKd}}Ab{b{d{h{f}}}}}D`}{{{b{BKf}}Ab{b{d{h{f}}}}}D`}{{{b{BKh}}Ab{b{d{h{f}}}}}D`}{{{b{BKj}}Ab{b{d{h{f}}}}}D`}{{{b{BKl}}Ab{b{d{h{f}}}}}D`}{{{b{BKn}}Ab{b{d{h{f}}}}}D`}{{{b{BL`}}Ab{b{d{h{f}}}}}D`}{{{b{BLb}}Ab{b{d{h{f}}}}}D`}{{{b{BLd}}Ab{b{d{h{f}}}}}D`}{{{b{BLf}}Ab{b{d{h{f}}}}}D`}{{{b{BLh}}Ab{b{d{h{f}}}}}D`}{{{b{BLj}}Ab{b{d{h{f}}}}}D`}{{{b{BLl}}Ab{b{d{h{f}}}}}D`}{{{b{BLn}}Ab{b{d{h{f}}}}}D`}{{{b{BM`}}Ab{b{d{h{f}}}}}D`}{{{b{BMb}}Ab{b{d{h{f}}}}}D`}{{{b{BMd}}Ab{b{d{h{f}}}}}D`}{{{b{BMf}}Ab{b{d{h{f}}}}}D`}{{{b{BMh}}Ab{b{d{h{f}}}}}D`}{{{b{BMj}}Ab{b{d{h{f}}}}}D`}{{{b{BMl}}Ab{b{d{h{f}}}}}D`}{{{b{BMn}}Ab{b{d{h{f}}}}}D`}`{{{b{Hn}}c}BdDd}{{{b{I`}}c}BdDd}{{{b{Ib}}c}BdDd}{{{b{Id}}c}BdDd}{{{b{If}}c}BdDd}{{{b{Ih}}c}BdDd}{{{b{Ij}}c}BdDd}{{{b{Il}}c}BdDd}{{{b{In}}c}BdDd}{{{b{J`}}c}BdDd}{{{b{Jb}}c}BdDd}{{{b{Jd}}c}BdDd}{{{b{Jf}}c}BdDd}{{{b{Jh}}c}BdDd}{{{b{Jj}}c}BdDd}{{{b{Jl}}c}BdDd}{{{b{Jn}}c}BdDd}{{{b{K`}}c}BdDd}{{{b{Kb}}c}BdDd}{{{b{Kd}}c}BdDd}{{{b{Kf}}c}BdDd}{{{b{Kh}}c}BdDd}{{{b{Kj}}c}BdDd}{{{b{Kl}}c}BdDd}{{{b{Kn}}c}BdDd}{{{b{L`}}c}BdDd}{{{b{Lb}}c}BdDd}{{{b{Ld}}c}BdDd}{{{b{Lf}}c}BdDd}{{{b{Lh}}c}BdDd}{{{b{Lj}}c}BdDd}{{{b{Ll}}c}BdDd}{{{b{Ln}}c}BdDd}{{{b{M`}}c}BdDd}{{{b{Mb}}c}BdDd}{{{b{Md}}c}BdDd}{{{b{Mf}}c}BdDd}{{{b{Mh}}c}BdDd}{{{b{Mj}}c}BdDd}{{{b{Ml}}c}BdDd}{{{b{Mn}}c}BdDd}{{{b{N`}}c}BdDd}{{{b{Nb}}c}BdDd}{{{b{Nd}}c}BdDd}{{{b{Nf}}c}BdDd}{{{b{Nh}}c}BdDd}{{{b{Nj}}c}BdDd}{{{b{Nl}}c}BdDd}{{{b{Nn}}c}BdDd}{{{b{O`}}c}BdDd}{{{b{Ob}}c}BdDd}{{{b{Od}}c}BdDd}{{{b{Of}}c}BdDd}{{{b{Oh}}c}BdDd}{{{b{Oj}}c}BdDd}{{{b{Ol}}c}BdDd}{{{b{On}}c}BdDd}{{{b{A@`}}c}BdDd}{{{b{A@b}}c}BdDd}{{{b{A@d}}c}BdDd}{{{b{A@f}}c}BdDd}{{{b{A@h}}c}BdDd}{{{b{A@j}}c}BdDd}{{{b{A@l}}c}BdDd}{{{b{A@n}}c}BdDd}{{{b{AA`}}c}BdDd}{{{b{AAb}}c}BdDd}{{{b{AAd}}c}BdDd}{{{b{AAf}}c}BdDd}{{{b{AAh}}c}BdDd}{{{b{AAj}}c}BdDd}{{{b{AAl}}c}BdDd}{{{b{AAn}}c}BdDd}{{{b{AB`}}c}BdDd}{{{b{ABb}}c}BdDd}{{{b{ABd}}c}BdDd}{{{b{ABf}}c}BdDd}{{{b{ABh}}c}BdDd}{{{b{ABj}}c}BdDd}{{{b{ABl}}c}BdDd}{{{b{ABn}}c}BdDd}{{{b{AC`}}c}BdDd}{{{b{ACb}}c}BdDd}{{{b{ACd}}c}BdDd}{{{b{ACf}}c}BdDd}{{{b{ACh}}c}BdDd}{{{b{ACj}}c}BdDd}{{{b{ACl}}c}BdDd}{{{b{ACn}}c}BdDd}{{{b{AD`}}c}BdDd}{{{b{ADb}}c}BdDd}{{{b{ADd}}c}BdDd}{{{b{ADf}}c}BdDd}{{{b{ADh}}c}BdDd}{{{b{ADj}}c}BdDd}{{{b{ADl}}c}BdDd}{{{b{ADn}}c}BdDd}{{{b{AE`}}c}BdDd}{{{b{AEb}}c}BdDd}{{{b{AEd}}c}BdDd}{{{b{AEf}}c}BdDd}{{{b{AEh}}c}BdDd}{{{b{AEj}}c}BdDd}{{{b{AEl}}c}BdDd}{{{b{AEn}}c}BdDd}{{{b{AF`}}c}BdDd}{{{b{AFb}}c}BdDd}{{{b{AFd}}c}BdDd}{{{b{AFf}}c}BdDd}{{{b{AFh}}c}BdDd}{{{b{AFj}}c}BdDd}{{{b{AFl}}c}BdDd}{{{b{AFn}}c}BdDd}{{{b{AG`}}c}BdDd}{{{b{AGb}}c}BdDd}{{{b{AGd}}c}BdDd}{{{b{AGf}}c}BdDd}{{{b{AGh}}c}BdDd}{{{b{AGj}}c}BdDd}{{{b{AGl}}c}BdDd}{{{b{AGn}}c}BdDd}{{{b{AH`}}c}BdDd}{{{b{AHb}}c}BdDd}{{{b{AHd}}c}BdDd}{{{b{AHf}}c}BdDd}{{{b{AHh}}c}BdDd}{{{b{AHj}}c}BdDd}{{{b{AHl}}c}BdDd}{{{b{AHn}}c}BdDd}{{{b{AI`}}c}BdDd}{{{b{AIb}}c}BdDd}{{{b{AId}}c}BdDd}{{{b{AIf}}c}BdDd}{{{b{AIh}}c}BdDd}{{{b{AIj}}c}BdDd}{{{b{AIl}}c}BdDd}{{{b{AIn}}c}BdDd}{{{b{AJ`}}c}BdDd}{{{b{AJb}}c}BdDd}{{{b{AJd}}c}BdDd}{{{b{AJf}}c}BdDd}{{{b{AJh}}c}BdDd}{{{b{AJj}}c}BdDd}{{{b{AJl}}c}BdDd}{{{b{AJn}}c}BdDd}{{{b{AK`}}c}BdDd}{{{b{AKb}}c}BdDd}{{{b{AKd}}c}BdDd}{{{b{AKf}}c}BdDd}{{{b{AKh}}c}BdDd}{{{b{AKj}}c}BdDd}{{{b{AKl}}c}BdDd}{{{b{AKn}}c}BdDd}{{{b{AL`}}c}BdDd}{{{b{ALb}}c}BdDd}{{{b{ALd}}c}BdDd}{{{b{ALf}}c}BdDd}{{{b{ALh}}c}BdDd}{{{b{ALj}}c}BdDd}{{{b{ALl}}c}BdDd}{{{b{ALn}}c}BdDd}{{{b{AM`}}c}BdDd}{{{b{AMb}}c}BdDd}{{{b{AMd}}c}BdDd}{{{b{AMf}}c}BdDd}{{{b{AMh}}c}BdDd}{{{b{AMj}}c}BdDd}{{{b{AMl}}c}BdDd}{{{b{AMn}}c}BdDd}{{{b{AN`}}c}BdDd}{{{b{ANb}}c}BdDd}{{{b{ANd}}c}BdDd}{{{b{ANf}}c}BdDd}{{{b{ANh}}c}BdDd}{{{b{ANj}}c}BdDd}{{{b{ANl}}c}BdDd}{{{b{ANn}}c}BdDd}{{{b{AO`}}c}BdDd}{{{b{AOb}}c}BdDd}{{{b{AOd}}c}BdDd}{{{b{AOf}}c}BdDd}{{{b{AOh}}c}BdDd}{{{b{AOj}}c}BdDd}{{{b{AOl}}c}BdDd}{{{b{AOn}}c}BdDd}{{{b{B@`}}c}BdDd}{{{b{B@b}}c}BdDd}{{{b{B@d}}c}BdDd}{{{b{B@f}}c}BdDd}{{{b{B@h}}c}BdDd}{{{b{B@j}}c}BdDd}{{{b{B@l}}c}BdDd}{{{b{B@n}}c}BdDd}{{{b{BA`}}c}BdDd}{{{b{BAb}}c}BdDd}{{{b{BAd}}c}BdDd}{{{b{BAf}}c}BdDd}{{{b{BAh}}c}BdDd}{{{b{BAj}}c}BdDd}{{{b{BAl}}c}BdDd}{{{b{BAn}}c}BdDd}{{{b{BB`}}c}BdDd}{{{b{BBb}}c}BdDd}{{{b{BBd}}c}BdDd}{{{b{BBf}}c}BdDd}{{{b{BBh}}c}BdDd}{{{b{BBj}}c}BdDd}{{{b{BBl}}c}BdDd}{{{b{BBn}}c}BdDd}{{{b{BC`}}c}BdDd}{{{b{BCb}}c}BdDd}{{{b{BCd}}c}BdDd}{{{b{BCf}}c}BdDd}{{{b{BCh}}c}BdDd}{{{b{BCj}}c}BdDd}{{{b{BCl}}c}BdDd}{{{b{BCn}}c}BdDd}{{{b{BD`}}c}BdDd}{{{b{BDb}}c}BdDd}{{{b{BDd}}c}BdDd}{{{b{BDf}}c}BdDd}{{{b{BDh}}c}BdDd}{{{b{BDj}}c}BdDd}{{{b{BDl}}c}BdDd}{{{b{BDn}}c}BdDd}{{{b{BE`}}c}BdDd}{{{b{BEb}}c}BdDd}{{{b{BEd}}c}BdDd}{{{b{BEf}}c}BdDd}{{{b{BEh}}c}BdDd}{{{b{BEj}}c}BdDd}{{{b{BEl}}c}BdDd}{{{b{BEn}}c}BdDd}{{{b{BF`}}c}BdDd}{{{b{BFb}}c}BdDd}{{{b{BFd}}c}BdDd}{{{b{BFf}}c}BdDd}{{{b{BFh}}c}BdDd}{{{b{BFj}}c}BdDd}{{{b{BFl}}c}BdDd}{{{b{BFn}}c}BdDd}{{{b{BG`}}c}BdDd}{{{b{BGb}}c}BdDd}{{{b{BGd}}c}BdDd}{{{b{BGf}}c}BdDd}{{{b{BGh}}c}BdDd}{{{b{BGj}}c}BdDd}{{{b{BGl}}c}BdDd}{{{b{BGn}}c}BdDd}{{{b{BH`}}c}BdDd}{{{b{BHb}}c}BdDd}{{{b{BHd}}c}BdDd}{{{b{BHf}}c}BdDd}{{{b{BHh}}c}BdDd}{{{b{BHj}}c}BdDd}{{{b{BHl}}c}BdDd}{{{b{BHn}}c}BdDd}{{{b{BI`}}c}BdDd}{{{b{BIb}}c}BdDd}{{{b{BId}}c}BdDd}{{{b{BIf}}c}BdDd}{{{b{BIh}}c}BdDd}{{{b{BIj}}c}BdDd}{{{b{BIl}}c}BdDd}{{{b{BIn}}c}BdDd}{{{b{BJ`}}c}BdDd}{{{b{BJb}}c}BdDd}{{{b{BJd}}c}BdDd}{{{b{BJf}}c}BdDd}{{{b{BJh}}c}BdDd}{{{b{BJj}}c}BdDd}{{{b{BJl}}c}BdDd}{{{b{BJn}}c}BdDd}{{{b{BK`}}c}BdDd}{{{b{BKb}}c}BdDd}{{{b{BKd}}c}BdDd}{{{b{BKf}}c}BdDd}{{{b{BKh}}c}BdDd}{{{b{BKj}}c}BdDd}{{{b{BKl}}c}BdDd}{{{b{BKn}}c}BdDd}{{{b{BL`}}c}BdDd}{{{b{BLb}}c}BdDd}{{{b{BLd}}c}BdDd}{{{b{BLf}}c}BdDd}{{{b{BLh}}c}BdDd}{{{b{BLj}}c}BdDd}{{{b{BLl}}c}BdDd}{{{b{BLn}}c}BdDd}{{{b{BM`}}c}BdDd}{{{b{BMb}}c}BdDd}{{{b{BMd}}c}BdDd}{{{b{BMf}}c}BdDd}{{{b{BMh}}c}BdDd}{{{b{BMj}}c}BdDd}{{{b{BMl}}c}BdDd}{{{b{BMn}}c}BdDd}{{{b{BN`}}c}BdDd}{{{b{BNb}}c}BdDd}{{{b{Dl}}c}BdDd}{{{b{Dn}}c}BdDd}{{{b{BNd}}c}BdDd}{{{b{BNf}}c}BdDd}{{{b{BNh}}c}BdDd}{{{b{BNj}}c}BdDd}{{{b{BNl}}c}BdDd}{{{b{BNn}}c}BdDd}{{{b{BO`}}c}BdDd}{{{b{BOb}}c}BdDd}{{{b{BOd}}c}BdDd}{{{b{BOf}}c}BdDd}{{{b{BOh}}c}BdDd}{{{b{BOj}}c}BdDd}{{{b{BOl}}c}BdDd}{{{b{BOn}}c}BdDd}{{{b{E`}}c}BdDd}{{{b{C@`}}c}BdDd}{{{b{C@b}}c}BdDd}{{{b{Eb}}c}BdDd}{{{b{C@d}}c}BdDd}{{{b{C@f}}c}BdDd}{{{b{C@h}}c}BdDd}{{{b{C@j}}c}BdDd}{{{b{C@l}}c}BdDd}{{{b{C@n}}c}BdDd}{{{b{CA`}}c}BdDd}{{{b{CAb}}c}BdDd}{{{b{CAd}}c}BdDd}{{{b{CAf}}c}BdDd}{{{b{Ed}}c}BdDd}{{{b{CAh}}c}BdDd}{{{b{CAj}}c}BdDd}{{{b{CAl}}c}BdDd}{{{b{CAn}}c}BdDd}{{{b{Ef}}c}BdDd}{{{b{CB`}}c}BdDd}{{{b{CBb}}c}BdDd}{{{b{CBd}}c}BdDd}{{{b{CBf}}c}BdDd}{{{b{Eh}}c}BdDd}{{{b{CBh}}c}BdDd}{{{b{CBj}}c}BdDd}{{{b{CBl}}c}BdDd}{{{b{CBn}}c}BdDd}{{{b{CC`}}c}BdDd}{{{b{CCb}}c}BdDd}{{{b{Ej}}c}BdDd}{{{b{CCd}}c}BdDd}{{{b{CCf}}c}BdDd}{{{b{CCh}}c}BdDd}{{{b{CCj}}c}BdDd}{{{b{CCl}}c}BdDd}{{{b{CCn}}c}BdDd}{{{b{CD`}}c}BdDd}{{{b{CDb}}c}BdDd}{{{b{CDd}}c}BdDd}{{{b{CDf}}c}BdDd}{{{b{CDh}}c}BdDd}{{{b{El}}c}BdDd}{{{b{En}}c}BdDd}{{{b{CDj}}c}BdDd}{{{b{CDl}}c}BdDd}{{{b{F`}}c}BdDd}{{{b{CDn}}c}BdDd}{{{b{CE`}}c}BdDd}{{{b{Fb}}c}BdDd}{{{b{CEb}}c}BdDd}{{{b{CEd}}c}BdDd}{{{b{CEf}}c}BdDd}{{{b{CEh}}c}BdDd}{{{b{CEj}}c}BdDd}{{{b{CEl}}c}BdDd}{{{b{CEn}}c}BdDd}{{{b{Fd}}c}BdDd}{{{b{CF`}}c}BdDd}{{{b{CFb}}c}BdDd}{{{b{CFd}}c}BdDd}{{{b{Ff}}c}BdDd}{{{b{CFf}}c}BdDd}{{{b{CFh}}c}BdDd}{{{b{CFj}}c}BdDd}{{{b{Fh}}c}BdDd}{{{b{CFl}}c}BdDd}{{{b{CFn}}c}BdDd}{{{b{CG`}}c}BdDd}{{{b{CGb}}c}BdDd}{{{b{CGd}}c}BdDd}{{{b{CGf}}c}BdDd}{{{b{CGh}}c}BdDd}{{{b{CGj}}c}BdDd}{{{b{CGl}}c}BdDd}{{{b{CGn}}c}BdDd}{{{b{CH`}}c}BdDd}{{{b{CHb}}c}BdDd}{{{b{Fj}}c}BdDd}{{{b{CHd}}c}BdDd}{{{b{CHf}}c}BdDd}{{{b{Fl}}c}BdDd}{{{b{CHh}}c}BdDd}{{{b{CHj}}c}BdDd}{{{b{Fn}}c}BdDd}{{{b{CHl}}c}BdDd}{{{b{G`}}c}BdDd}{{{b{CHn}}c}BdDd}{{{b{CI`}}c}BdDd}{{{b{Gb}}c}BdDd}{{{b{CIb}}c}BdDd}{{{b{CId}}c}BdDd}{{{b{CIf}}c}BdDd}{{{b{CIh}}c}BdDd}{{{b{Gd}}c}BdDd}{{{b{CIj}}c}BdDd}{{{b{Gf}}c}BdDd}{{{b{CIl}}c}BdDd}{{{b{CIn}}c}BdDd}{{{b{Gh}}c}BdDd}{{{b{CJ`}}c}BdDd}{{{b{CJb}}c}BdDd}{{{b{CJd}}c}BdDd}{{{b{CJf}}c}BdDd}{{{b{CJh}}c}BdDd}{{{b{CJj}}c}BdDd}{{{b{CJl}}c}BdDd}{{{b{CJn}}c}BdDd}{{{b{CK`}}c}BdDd}{{{b{CKb}}c}BdDd}{{{b{Gj}}c}BdDd}{{{b{CKd}}c}BdDd}{{{b{CKf}}c}BdDd}{{{b{CKh}}c}BdDd}{{{b{CKj}}c}BdDd}{{{b{CKl}}c}BdDd}{{{b{CKn}}c}BdDd}{{{b{CL`}}c}BdDd}{{{b{CLb}}c}BdDd}{{{b{CLd}}c}BdDd}{{{b{CLf}}c}BdDd}{{{b{CLh}}c}BdDd}{{{b{CLj}}c}BdDd}{{{b{CLl}}c}BdDd}{{{b{CLn}}c}BdDd}{{{b{CM`}}c}BdDd}{{{b{CMb}}c}BdDd}{{{b{CMd}}c}BdDd}{{{b{CMf}}c}BdDd}{{{b{CMh}}c}BdDd}{{{b{Gl}}c}BdDd}{{{b{CMj}}c}BdDd}{{{b{Gn}}c}BdDd}{{{b{CMl}}c}BdDd}{{{b{CMn}}c}BdDd}{{{b{CN`}}c}BdDd}{{{b{H`}}c}BdDd}{{{b{CNb}}c}BdDd}{{{b{CNd}}c}BdDd}{{{b{CNf}}c}BdDd}{{{b{Hb}}c}BdDd}{{{b{CNh}}c}BdDd}{{{b{CNj}}c}BdDd}{{{b{CNl}}c}BdDd}{{{b{CNn}}c}BdDd}{{{b{CO`}}c}BdDd}{{{b{COb}}c}BdDd}{{{b{COd}}c}BdDd}{{{b{COf}}c}BdDd}{{{b{COh}}c}BdDd}{{{b{COj}}c}BdDd}{{{b{COl}}c}BdDd}{{{b{COn}}c}BdDd}{{{b{D@`}}c}BdDd}{{{b{D@b}}c}BdDd}{{{b{Hd}}c}BdDd}{{{b{D@d}}c}BdDd}{{{b{Hf}}c}BdDd}{{{b{D@f}}c}BdDd}{{{b{D@h}}c}BdDd}{{{b{D@j}}c}BdDd}{{{b{Hh}}c}BdDd}{{{b{D@l}}c}BdDd}{{{b{D@n}}c}BdDd}{{{b{DA`}}c}BdDd}{{{b{DAb}}c}BdDd}{{{b{DAd}}c}BdDd}{{{b{DAf}}c}BdDd}{{{b{DAh}}c}BdDd}{{{b{DAj}}c}BdDd}{{{b{Hj}}c}BdDd}{{{b{DAl}}c}BdDd}{{{b{DAn}}c}BdDd}{{{b{DB`}}c}BdDd}`````````{{{b{dDl}}DlC`}Aj}{{{b{dDn}}DnC`}Aj}{{{b{dE`}}E`C`}Aj}{{{b{dEb}}EbC`}Aj}{{{b{dEd}}EdC`}Aj}{{{b{dEf}}EfC`}Aj}{{{b{dEh}}EhC`}Aj}{{{b{dEj}}EjC`}Aj}{{{b{dEl}}ElC`}Aj}{{{b{dEn}}EnC`}Aj}{{{b{dF`}}F`C`}Aj}{{{b{dFb}}FbC`}Aj}{{{b{dFd}}FdC`}Aj}{{{b{dFf}}FfC`}Aj}{{{b{dFh}}FhC`}Aj}{{{b{dFj}}FjC`}Aj}{{{b{dFl}}FlC`}Aj}{{{b{dFn}}FnC`}Aj}{{{b{dG`}}G`C`}Aj}{{{b{dGb}}GbC`}Aj}{{{b{dGd}}GdC`}Aj}{{{b{dGf}}GfC`}Aj}{{{b{dGh}}GhC`}Aj}{{{b{dGj}}GjC`}Aj}{{{b{dGl}}GlC`}Aj}{{{b{dGn}}GnC`}Aj}{{{b{dH`}}H`C`}Aj}{{{b{dHb}}HbC`}Aj}{{{b{dHd}}HdC`}Aj}{{{b{dHf}}HfC`}Aj}{{{b{dHh}}HhC`}Aj}{{{b{dHj}}HjC`}Aj}```````````````````````````````````````````````````````````````{{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}{{HhHh}Hh}{{HjHj}Hj}{{{b{dDl}}Dl}Aj}{{{b{dDn}}Dn}Aj}{{{b{dE`}}E`}Aj}{{{b{dEb}}Eb}Aj}{{{b{dEd}}Ed}Aj}{{{b{dEf}}Ef}Aj}{{{b{dEh}}Eh}Aj}{{{b{dEj}}Ej}Aj}{{{b{dEl}}El}Aj}{{{b{dEn}}En}Aj}{{{b{dF`}}F`}Aj}{{{b{dFb}}Fb}Aj}{{{b{dFd}}Fd}Aj}{{{b{dFf}}Ff}Aj}{{{b{dFh}}Fh}Aj}{{{b{dFj}}Fj}Aj}{{{b{dFl}}Fl}Aj}{{{b{dFn}}Fn}Aj}{{{b{dG`}}G`}Aj}{{{b{dGb}}Gb}Aj}{{{b{dGd}}Gd}Aj}{{{b{dGf}}Gf}Aj}{{{b{dGh}}Gh}Aj}{{{b{dGj}}Gj}Aj}{{{b{dGl}}Gl}Aj}{{{b{dGn}}Gn}Aj}{{{b{dH`}}H`}Aj}{{{b{dHb}}Hb}Aj}{{{b{dHd}}Hd}Aj}{{{b{dHf}}Hf}Aj}{{{b{dHh}}Hh}Aj}{{{b{dHj}}Hj}Aj}`````{{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}{{HhHh}Hh}{{HjHj}Hj}``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{BN`}}}{{DBj{DBl}}}}{{{b{BNb}}}{{DBj{DBl}}}}{{{b{BNd}}}{{DBj{DBl}}}}{{{b{BNf}}}{{DBj{DBl}}}}{{{b{BNh}}}{{DBj{DBl}}}}{{{b{BNj}}}{{DBj{DBl}}}}{{{b{BNl}}}{{DBj{DBl}}}}{{{b{BNn}}}{{DBj{DBl}}}}{{{b{BO`}}}{{DBj{DBl}}}}{{{b{BOb}}}{{DBj{DBl}}}}{{{b{BOd}}}{{DBj{DBl}}}}{{{b{BOf}}}{{DBj{DBl}}}}{{{b{BOh}}}{{DBj{DBl}}}}{{{b{BOj}}}{{DBj{DBl}}}}{{{b{BOl}}}{{DBj{DBl}}}}{{{b{BOn}}}{{DBj{DBl}}}}{{{b{C@`}}}{{DBj{DBl}}}}{{{b{C@b}}}{{DBj{DBl}}}}{{{b{C@d}}}{{DBj{DBl}}}}{{{b{C@f}}}{{DBj{DBl}}}}{{{b{C@h}}}{{DBj{DBl}}}}{{{b{C@j}}}{{DBj{DBl}}}}{{{b{C@l}}}{{DBj{DBl}}}}{{{b{C@n}}}{{DBj{DBl}}}}{{{b{CA`}}}{{DBj{DBl}}}}{{{b{CAb}}}{{DBj{DBl}}}}{{{b{CAd}}}{{DBj{DBl}}}}{{{b{CAf}}}{{DBj{DBl}}}}{{{b{CAh}}}{{DBj{DBl}}}}{{{b{CAj}}}{{DBj{DBl}}}}{{{b{CAl}}}{{DBj{DBl}}}}{{{b{CAn}}}{{DBj{DBl}}}}{{{b{CB`}}}{{DBj{DBl}}}}{{{b{CBb}}}{{DBj{DBl}}}}{{{b{CBd}}}{{DBj{DBl}}}}{{{b{CBf}}}{{DBj{DBl}}}}{{{b{CBh}}}{{DBj{DBl}}}}{{{b{CBj}}}{{DBj{DBl}}}}{{{b{CBl}}}{{DBj{DBl}}}}{{{b{CBn}}}{{DBj{DBl}}}}{{{b{CC`}}}{{DBj{DBl}}}}{{{b{CCb}}}{{DBj{DBl}}}}{{{b{CCd}}}{{DBj{DBl}}}}{{{b{CCf}}}{{DBj{DBl}}}}{{{b{CCh}}}{{DBj{DBl}}}}{{{b{CCj}}}{{DBj{DBl}}}}{{{b{CCl}}}{{DBj{DBl}}}}{{{b{CCn}}}{{DBj{DBl}}}}{{{b{CD`}}}{{DBj{DBl}}}}{{{b{CDb}}}{{DBj{DBl}}}}{{{b{CDd}}}{{DBj{DBl}}}}{{{b{CDf}}}{{DBj{DBl}}}}{{{b{CDh}}}{{DBj{DBl}}}}{{{b{CDj}}}{{DBj{DBl}}}}{{{b{CDl}}}{{DBj{DBl}}}}{{{b{CDn}}}{{DBj{DBl}}}}{{{b{CE`}}}{{DBj{DBl}}}}{{{b{CEb}}}{{DBj{DBl}}}}{{{b{CEd}}}{{DBj{DBl}}}}{{{b{CEf}}}{{DBj{DBl}}}}{{{b{CEh}}}{{DBj{DBl}}}}{{{b{CEj}}}{{DBj{DBl}}}}{{{b{CEl}}}{{DBj{DBl}}}}{{{b{CEn}}}{{DBj{DBl}}}}{{{b{CF`}}}{{DBj{DBl}}}}{{{b{CFb}}}{{DBj{DBl}}}}{{{b{CFd}}}{{DBj{DBl}}}}{{{b{CFf}}}{{DBj{DBl}}}}{{{b{CFh}}}{{DBj{DBl}}}}{{{b{CFj}}}{{DBj{DBl}}}}{{{b{CFl}}}{{DBj{DBl}}}}{{{b{CFn}}}{{DBj{DBl}}}}{{{b{CG`}}}{{DBj{DBl}}}}{{{b{CGb}}}{{DBj{DBl}}}}{{{b{CGd}}}{{DBj{DBl}}}}{{{b{CGf}}}{{DBj{DBl}}}}{{{b{CGh}}}{{DBj{DBl}}}}{{{b{CGj}}}{{DBj{DBl}}}}{{{b{CGl}}}{{DBj{DBl}}}}{{{b{CGn}}}{{DBj{DBl}}}}{{{b{CH`}}}{{DBj{DBl}}}}{{{b{CHb}}}{{DBj{DBl}}}}{{{b{CHd}}}{{DBj{DBl}}}}{{{b{CHf}}}{{DBj{DBl}}}}{{{b{CHh}}}{{DBj{DBl}}}}{{{b{CHj}}}{{DBj{DBl}}}}{{{b{CHl}}}{{DBj{DBl}}}}{{{b{CHn}}}{{DBj{DBl}}}}{{{b{CI`}}}{{DBj{DBl}}}}{{{b{CIb}}}{{DBj{DBl}}}}{{{b{CId}}}{{DBj{DBl}}}}{{{b{CIf}}}{{DBj{DBl}}}}{{{b{CIh}}}{{DBj{DBl}}}}{{{b{CIj}}}{{DBj{DBl}}}}{{{b{CIl}}}{{DBj{DBl}}}}{{{b{CIn}}}{{DBj{DBl}}}}{{{b{CJ`}}}{{DBj{DBl}}}}{{{b{CJb}}}{{DBj{DBl}}}}{{{b{CJd}}}{{DBj{DBl}}}}{{{b{CJf}}}{{DBj{DBl}}}}{{{b{CJh}}}{{DBj{DBl}}}}{{{b{CJj}}}{{DBj{DBl}}}}{{{b{CJl}}}{{DBj{DBl}}}}{{{b{CJn}}}{{DBj{DBl}}}}{{{b{CK`}}}{{DBj{DBl}}}}{{{b{CKb}}}{{DBj{DBl}}}}{{{b{CKd}}}{{DBj{DBl}}}}{{{b{CKf}}}{{DBj{DBl}}}}{{{b{CKh}}}{{DBj{DBl}}}}{{{b{CKj}}}{{DBj{DBl}}}}{{{b{CKl}}}{{DBj{DBl}}}}{{{b{CKn}}}{{DBj{DBl}}}}{{{b{CL`}}}{{DBj{DBl}}}}{{{b{CLb}}}{{DBj{DBl}}}}{{{b{CLd}}}{{DBj{DBl}}}}{{{b{CLf}}}{{DBj{DBl}}}}{{{b{CLh}}}{{DBj{DBl}}}}{{{b{CLj}}}{{DBj{DBl}}}}{{{b{CLl}}}{{DBj{DBl}}}}{{{b{CLn}}}{{DBj{DBl}}}}{{{b{CM`}}}{{DBj{DBl}}}}{{{b{CMb}}}{{DBj{DBl}}}}{{{b{CMd}}}{{DBj{DBl}}}}{{{b{CMf}}}{{DBj{DBl}}}}{{{b{CMh}}}{{DBj{DBl}}}}{{{b{CMj}}}{{DBj{DBl}}}}{{{b{CMl}}}{{DBj{DBl}}}}{{{b{CMn}}}{{DBj{DBl}}}}{{{b{CN`}}}{{DBj{DBl}}}}{{{b{CNb}}}{{DBj{DBl}}}}{{{b{CNd}}}{{DBj{DBl}}}}{{{b{CNf}}}{{DBj{DBl}}}}{{{b{CNh}}}{{DBj{DBl}}}}{{{b{CNj}}}{{DBj{DBl}}}}{{{b{CNl}}}{{DBj{DBl}}}}{{{b{CNn}}}{{DBj{DBl}}}}{{{b{CO`}}}{{DBj{DBl}}}}{{{b{COb}}}{{DBj{DBl}}}}{{{b{COd}}}{{DBj{DBl}}}}{{{b{COf}}}{{DBj{DBl}}}}{{{b{COh}}}{{DBj{DBl}}}}{{{b{COj}}}{{DBj{DBl}}}}{{{b{COl}}}{{DBj{DBl}}}}{{{b{COn}}}{{DBj{DBl}}}}{{{b{D@`}}}{{DBj{DBl}}}}{{{b{D@b}}}{{DBj{DBl}}}}{{{b{D@d}}}{{DBj{DBl}}}}{{{b{D@f}}}{{DBj{DBl}}}}{{{b{D@h}}}{{DBj{DBl}}}}{{{b{D@j}}}{{DBj{DBl}}}}{{{b{D@l}}}{{DBj{DBl}}}}{{{b{D@n}}}{{DBj{DBl}}}}{{{b{DA`}}}{{DBj{DBl}}}}{{{b{DAb}}}{{DBj{DBl}}}}{{{b{DAd}}}{{DBj{DBl}}}}{{{b{DAf}}}{{DBj{DBl}}}}{{{b{DAh}}}{{DBj{DBl}}}}{{{b{DAj}}}{{DBj{DBl}}}}{{{b{DAl}}}{{DBj{DBl}}}}{{{b{DAn}}}{{DBj{DBl}}}}{{{b{DB`}}}{{DBj{DBl}}}}{{{b{c}}}e{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{BN`}}}{{DBj{Hl}}}}{{{b{BNb}}}{{DBj{Hl}}}}{{{b{BNd}}}{{DBj{Hl}}}}{{{b{BNf}}}{{DBj{Hl}}}}{{{b{BNh}}}{{DBj{Hl}}}}{{{b{BNj}}}{{DBj{Hl}}}}{{{b{BNl}}}{{DBj{Hl}}}}{{{b{BNn}}}{{DBj{Hl}}}}{{{b{BO`}}}{{DBj{Hl}}}}{{{b{BOb}}}{{DBj{Hl}}}}{{{b{BOd}}}{{DBj{Hl}}}}{{{b{BOf}}}{{DBj{Hl}}}}{{{b{BOh}}}{{DBj{Hl}}}}{{{b{BOj}}}{{DBj{Hl}}}}{{{b{BOl}}}{{DBj{Hl}}}}{{{b{BOn}}}{{DBj{Hl}}}}{{{b{C@`}}}{{DBj{Hl}}}}{{{b{C@b}}}{{DBj{Hl}}}}{{{b{C@d}}}{{DBj{Hl}}}}{{{b{C@f}}}{{DBj{Hl}}}}{{{b{C@h}}}{{DBj{Hl}}}}{{{b{C@j}}}{{DBj{Hl}}}}{{{b{C@l}}}{{DBj{Hl}}}}{{{b{C@n}}}{{DBj{Hl}}}}{{{b{CA`}}}{{DBj{Hl}}}}{{{b{CAb}}}{{DBj{Hl}}}}{{{b{CAd}}}{{DBj{Hl}}}}{{{b{CAf}}}{{DBj{Hl}}}}{{{b{CAh}}}{{DBj{Hl}}}}{{{b{CAj}}}{{DBj{Hl}}}}{{{b{CAl}}}{{DBj{Hl}}}}{{{b{CAn}}}{{DBj{Hl}}}}{{{b{CB`}}}{{DBj{Hl}}}}{{{b{CBb}}}{{DBj{Hl}}}}{{{b{CBd}}}{{DBj{Hl}}}}{{{b{CBf}}}{{DBj{Hl}}}}{{{b{CBh}}}{{DBj{Hl}}}}{{{b{CBj}}}{{DBj{Hl}}}}{{{b{CBl}}}{{DBj{Hl}}}}{{{b{CBn}}}{{DBj{Hl}}}}{{{b{CC`}}}{{DBj{Hl}}}}{{{b{CCb}}}{{DBj{Hl}}}}{{{b{CCd}}}{{DBj{Hl}}}}{{{b{CCf}}}{{DBj{Hl}}}}{{{b{CCh}}}{{DBj{Hl}}}}{{{b{CCj}}}{{DBj{Hl}}}}{{{b{CCl}}}{{DBj{Hl}}}}{{{b{CCn}}}{{DBj{Hl}}}}{{{b{CD`}}}{{DBj{Hl}}}}{{{b{CDb}}}{{DBj{Hl}}}}{{{b{CDd}}}{{DBj{Hl}}}}{{{b{CDf}}}{{DBj{Hl}}}}{{{b{CDh}}}{{DBj{Hl}}}}{{{b{CDj}}}{{DBj{Hl}}}}{{{b{CDl}}}{{DBj{Hl}}}}{{{b{CDn}}}{{DBj{Hl}}}}{{{b{CE`}}}{{DBj{Hl}}}}{{{b{CEb}}}{{DBj{Hl}}}}{{{b{CEd}}}{{DBj{Hl}}}}{{{b{CEf}}}{{DBj{Hl}}}}{{{b{CEh}}}{{DBj{Hl}}}}{{{b{CEj}}}{{DBj{Hl}}}}{{{b{CEl}}}{{DBj{Hl}}}}{{{b{CEn}}}{{DBj{Hl}}}}{{{b{CF`}}}{{DBj{Hl}}}}{{{b{CFb}}}{{DBj{Hl}}}}{{{b{CFd}}}{{DBj{Hl}}}}{{{b{CFf}}}{{DBj{Hl}}}}{{{b{CFh}}}{{DBj{Hl}}}}{{{b{CFj}}}{{DBj{Hl}}}}{{{b{CFl}}}{{DBj{Hl}}}}{{{b{CFn}}}{{DBj{Hl}}}}{{{b{CG`}}}{{DBj{Hl}}}}{{{b{CGb}}}{{DBj{Hl}}}}{{{b{CGd}}}{{DBj{Hl}}}}{{{b{CGf}}}{{DBj{Hl}}}}{{{b{CGh}}}{{DBj{Hl}}}}{{{b{CGj}}}{{DBj{Hl}}}}{{{b{CGl}}}{{DBj{Hl}}}}{{{b{CGn}}}{{DBj{Hl}}}}{{{b{CH`}}}{{DBj{Hl}}}}{{{b{CHb}}}{{DBj{Hl}}}}{{{b{CHd}}}{{DBj{Hl}}}}{{{b{CHf}}}{{DBj{Hl}}}}{{{b{CHh}}}{{DBj{Hl}}}}{{{b{CHj}}}{{DBj{Hl}}}}{{{b{CHl}}}{{DBj{Hl}}}}{{{b{CHn}}}{{DBj{Hl}}}}{{{b{CI`}}}{{DBj{Hl}}}}{{{b{CIb}}}{{DBj{Hl}}}}{{{b{CId}}}{{DBj{Hl}}}}{{{b{CIf}}}{{DBj{Hl}}}}{{{b{CIh}}}{{DBj{Hl}}}}{{{b{CIj}}}{{DBj{Hl}}}}{{{b{CIl}}}{{DBj{Hl}}}}{{{b{CIn}}}{{DBj{Hl}}}}{{{b{CJ`}}}{{DBj{Hl}}}}{{{b{CJb}}}{{DBj{Hl}}}}{{{b{CJd}}}{{DBj{Hl}}}}{{{b{CJf}}}{{DBj{Hl}}}}{{{b{CJh}}}{{DBj{Hl}}}}{{{b{CJj}}}{{DBj{Hl}}}}{{{b{CJl}}}{{DBj{Hl}}}}{{{b{CJn}}}{{DBj{Hl}}}}{{{b{CK`}}}{{DBj{Hl}}}}{{{b{CKb}}}{{DBj{Hl}}}}{{{b{CKd}}}{{DBj{Hl}}}}{{{b{CKf}}}{{DBj{Hl}}}}{{{b{CKh}}}{{DBj{Hl}}}}{{{b{CKj}}}{{DBj{Hl}}}}{{{b{CKl}}}{{DBj{Hl}}}}{{{b{CKn}}}{{DBj{Hl}}}}{{{b{CL`}}}{{DBj{Hl}}}}{{{b{CLb}}}{{DBj{Hl}}}}{{{b{CLd}}}{{DBj{Hl}}}}{{{b{CLf}}}{{DBj{Hl}}}}{{{b{CLh}}}{{DBj{Hl}}}}{{{b{CLj}}}{{DBj{Hl}}}}{{{b{CLl}}}{{DBj{Hl}}}}{{{b{CLn}}}{{DBj{Hl}}}}{{{b{CM`}}}{{DBj{Hl}}}}{{{b{CMb}}}{{DBj{Hl}}}}{{{b{CMd}}}{{DBj{Hl}}}}{{{b{CMf}}}{{DBj{Hl}}}}{{{b{CMh}}}{{DBj{Hl}}}}{{{b{CMj}}}{{DBj{Hl}}}}{{{b{CMl}}}{{DBj{Hl}}}}{{{b{CMn}}}{{DBj{Hl}}}}{{{b{CN`}}}{{DBj{Hl}}}}{{{b{CNb}}}{{DBj{Hl}}}}{{{b{CNd}}}{{DBj{Hl}}}}{{{b{CNf}}}{{DBj{Hl}}}}{{{b{CNh}}}{{DBj{Hl}}}}{{{b{CNj}}}{{DBj{Hl}}}}{{{b{CNl}}}{{DBj{Hl}}}}{{{b{CNn}}}{{DBj{Hl}}}}{{{b{CO`}}}{{DBj{Hl}}}}{{{b{COb}}}{{DBj{Hl}}}}{{{b{COd}}}{{DBj{Hl}}}}{{{b{COf}}}{{DBj{Hl}}}}{{{b{COh}}}{{DBj{Hl}}}}{{{b{COj}}}{{DBj{Hl}}}}{{{b{COl}}}{{DBj{Hl}}}}{{{b{COn}}}{{DBj{Hl}}}}{{{b{D@`}}}{{DBj{Hl}}}}{{{b{D@b}}}{{DBj{Hl}}}}{{{b{D@d}}}{{DBj{Hl}}}}{{{b{D@f}}}{{DBj{Hl}}}}{{{b{D@h}}}{{DBj{Hl}}}}{{{b{D@j}}}{{DBj{Hl}}}}{{{b{D@l}}}{{DBj{Hl}}}}{{{b{D@n}}}{{DBj{Hl}}}}{{{b{DA`}}}{{DBj{Hl}}}}{{{b{DAb}}}{{DBj{Hl}}}}{{{b{DAd}}}{{DBj{Hl}}}}{{{b{DAf}}}{{DBj{Hl}}}}{{{b{DAh}}}{{DBj{Hl}}}}{{{b{DAj}}}{{DBj{Hl}}}}{{{b{DAl}}}{{DBj{Hl}}}}{{{b{DAn}}}{{DBj{Hl}}}}{{{b{DB`}}}{{DBj{Hl}}}}{{{b{dDl}}Dl}Aj}{{{b{dDn}}Dn}Aj}{{{b{dE`}}E`}Aj}{{{b{dEb}}Eb}Aj}{{{b{dEd}}Ed}Aj}{{{b{dEf}}Ef}Aj}{{{b{dEh}}Eh}Aj}{{{b{dEj}}Ej}Aj}{{{b{dEl}}El}Aj}{{{b{dEn}}En}Aj}{{{b{dF`}}F`}Aj}{{{b{dFb}}Fb}Aj}{{{b{dFd}}Fd}Aj}{{{b{dFf}}Ff}Aj}{{{b{dFh}}Fh}Aj}{{{b{dFj}}Fj}Aj}{{{b{dFl}}Fl}Aj}{{{b{dFn}}Fn}Aj}{{{b{dG`}}G`}Aj}{{{b{dGb}}Gb}Aj}{{{b{dGd}}Gd}Aj}{{{b{dGf}}Gf}Aj}{{{b{dGh}}Gh}Aj}{{{b{dGj}}Gj}Aj}{{{b{dGl}}Gl}Aj}{{{b{dGn}}Gn}Aj}{{{b{dH`}}H`}Aj}{{{b{dHb}}Hb}Aj}{{{b{dHd}}Hd}Aj}{{{b{dHf}}Hf}Aj}{{{b{dHh}}Hh}Aj}{{{b{dHj}}Hj}Aj}```````````{c{{Bd{e}}}{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`````````````````{{{b{c}}}Dh{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000````````````{{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}{{HhHh}Hh}{{HjHj}Hj}````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{cc{}}{{{b{dDC`}}}{{DCb{f}}}}{{{b{dDC`}}D`}{{b{{h{f}}}}}}{{{b{dDC`}}}DCd}{{{b{dDC`}}}DCf}{{{b{dDC`}}}DCh}{{{b{dDC`}}}DCj}0{{{b{dDC`}}}DBl}{{{b{dDC`}}}DCl}{{{b{dDC`}}}j}{{{b{dDC`}}}Bf}0{{{b{dDC`}}}Hl}{{{b{dDC`}}}f}{ce{}{}}{{{b{{h{f}}}}}DC`}{{{b{DC`}}}{{b{{h{f}}}}}}{c{{Bd{e}}}{}{}}0{{{b{c}}}Dh{}}`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{cc{}}7{{{b{DCn}}}C`}{{{b{DCn}}}D`}{{{b{d{h{f}}}}}DCn}{{{b{dDCn}}DCd}Aj}{{{b{dDCn}}DCf}Aj}{{{b{dDCn}}DCh}Aj}{{{b{dDCn}}DCj}Aj}0{{{b{dDCn}}DBl}Aj}{{{b{dDCn}}DCl}Aj}{{{b{dDCn}}{b{{h{f}}}}}Aj}{{{b{dDCn}}j}Aj}{{{b{dDCn}}Bf}Aj}0{{{b{dDCn}}Hl}Aj}{{{b{dDCn}}f}Aj}<{c{{Bd{e}}}{}{}}0{{{b{c}}}Dh{}}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{}DD`}{{}DDb}{{}DDd}{{}DDf}{{}DDh}{{}DDj}{{}DDl}{{}DDn}{{}DE`}{{}DEb}{{}DEd}{{}DEf}{{}DEh}{{}DEj}{{}DEl}{{}DEn}{{}DF`}{{}DFb}{{}DFd}{{}DFf}{{}DFh}{{}DFj}{{}DFl}{{}DFn}{{}DG`}```````````````````````````````````````````````````````````````````````````````````````````````````````{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}{{{b{dDD`}}DD`}Aj}{{{b{dDDb}}DDb}Aj}{{{b{dDDd}}DDd}Aj}{{{b{dDDf}}DDf}Aj}{{{b{dDDh}}DDh}Aj}{{{b{dDDj}}DDj}Aj}{{{b{dDDl}}DDl}Aj}{{{b{dDDn}}DDn}Aj}{{{b{dDE`}}DE`}Aj}{{{b{dDEb}}DEb}Aj}{{{b{dDEd}}DEd}Aj}{{{b{dDEf}}DEf}Aj}{{{b{dDEh}}DEh}Aj}{{{b{dDEj}}DEj}Aj}{{{b{dDEl}}DEl}Aj}{{{b{dDEn}}DEn}Aj}{{{b{dDF`}}DF`}Aj}{{{b{dDFb}}DFb}Aj}{{{b{dDFd}}DFd}Aj}{{{b{dDFf}}DFf}Aj}{{{b{dDFh}}DFh}Aj}{{{b{dDFj}}DFj}Aj}{{{b{dDFl}}DFl}Aj}{{{b{dDFn}}DFn}Aj}{{{b{dDG`}}DG`}Aj}{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}{{{b{dDD`}}DD`}Aj}{{{b{dDDb}}DDb}Aj}{{{b{dDDd}}DDd}Aj}{{{b{dDDf}}DDf}Aj}{{{b{dDDh}}DDh}Aj}{{{b{dDDj}}DDj}Aj}{{{b{dDDl}}DDl}Aj}{{{b{dDDn}}DDn}Aj}{{{b{dDE`}}DE`}Aj}{{{b{dDEb}}DEb}Aj}{{{b{dDEd}}DEd}Aj}{{{b{dDEf}}DEf}Aj}{{{b{dDEh}}DEh}Aj}{{{b{dDEj}}DEj}Aj}{{{b{dDEl}}DEl}Aj}{{{b{dDEn}}DEn}Aj}{{{b{dDF`}}DF`}Aj}{{{b{dDFb}}DFb}Aj}{{{b{dDFd}}DFd}Aj}{{{b{dDFf}}DFf}Aj}{{{b{dDFh}}DFh}Aj}{{{b{dDFj}}DFj}Aj}{{{b{dDFl}}DFl}Aj}{{{b{dDFn}}DFn}Aj}{{{b{dDG`}}DG`}Aj}``{{{b{DD`}}}Bf}{{{b{DDb}}}Bf}{{{b{DDd}}}f}{{{b{DDf}}}j}{{{b{DDh}}}j}{{{b{DDj}}}f}{{{b{DDl}}}Hl}{{{b{DDn}}}j}{{{b{DE`}}}j}{{{b{DEb}}}j}{{{b{DEd}}}f}{{{b{DEf}}}Bf}{{{b{DEh}}}j}{{{b{DEj}}}Bf}{{{b{DEl}}}Bf}{{{b{DEn}}}j}{{{b{DF`}}}j}{{{b{DFb}}}f}{{{b{DFd}}}j}{{{b{DFf}}}Hl}{{{b{DFh}}}j}{{{b{DFj}}}Bf}{{{b{DFl}}}f}{{{b{DFn}}}j}{{{b{DG`}}}Bf}{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}{{{b{dDD`}}DD`}Aj}{{{b{dDDb}}DDb}Aj}{{{b{dDDd}}DDd}Aj}{{{b{dDDf}}DDf}Aj}{{{b{dDDh}}DDh}Aj}{{{b{dDDj}}DDj}Aj}{{{b{dDDl}}DDl}Aj}{{{b{dDDn}}DDn}Aj}{{{b{dDE`}}DE`}Aj}{{{b{dDEb}}DEb}Aj}{{{b{dDEd}}DEd}Aj}{{{b{dDEf}}DEf}Aj}{{{b{dDEh}}DEh}Aj}{{{b{dDEj}}DEj}Aj}{{{b{dDEl}}DEl}Aj}{{{b{dDEn}}DEn}Aj}{{{b{dDF`}}DF`}Aj}{{{b{dDFb}}DFb}Aj}{{{b{dDFd}}DFd}Aj}{{{b{dDFf}}DFf}Aj}{{{b{dDFh}}DFh}Aj}{{{b{dDFj}}DFj}Aj}{{{b{dDFl}}DFl}Aj}{{{b{dDFn}}DFn}Aj}{{{b{dDG`}}DG`}Aj}```````{{{b{c}}}{{b{e}}}{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{dc}}}{{b{de}}}{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`````````````````````````````````````````````````````````````````````````````````````````{{{b{DGb}}}DGb}{{{b{DGd}}}DGd}{{{b{DGf}}}DGf}{{{b{DGh}}}DGh}{{{b{DGj}}}DGj}{{{b{DGl}}}DGl}{{{b{DGn}}}DGn}{{{b{DH`}}}DH`}{{{b{DHb}}}DHb}{{{b{DHd}}}DHd}{{{b{DHf}}}DHf}{{{b{DHh}}}DHh}{{{b{DHj}}}DHj}{{{b{DHl}}}DHl}{{{b{DHn}}}DHn}{{{b{DI`}}}DI`}{{{b{DIb}}}DIb}{{{b{DId}}}DId}{{{b{DIf}}}DIf}{{{b{DIh}}}DIh}{{{b{DIj}}}DIj}{{{b{DIl}}}DIl}{{{b{DIn}}}DIn}{{{b{DJ`}}}DJ`}{{{b{DJb}}}DJb}{{{b{DJd}}}DJd}{{{b{DJf}}}DJf}{{{b{DJh}}}DJh}{{{b{DJj}}}DJj}{{{b{DJl}}}DJl}{{{b{DJn}}}DJn}{{{b{DK`}}}DK`}{{{b{DKb}}}DKb}{{{b{DKd}}}DKd}{{{b{DKf}}}DKf}{{{b{DKh}}}DKh}{{{b{DKj}}}DKj}{{{b{DKl}}}DKl}{{{b{DKn}}}DKn}{{{b{DL`}}}DL`}{{{b{DLb}}}DLb}{{{b{DLd}}}DLd}{{{b{DLf}}}DLf}{{{b{DLh}}}DLh}{{{b{DLj}}}DLj}{{{b{DLl}}}DLl}{{{b{DLn}}}DLn}{{{b{DM`}}}DM`}{{{b{DMb}}}DMb}{{{b{DMd}}}DMd}{{{b{DMf}}}DMf}{{{b{DMh}}}DMh}{{{b{DMj}}}DMj}{{{b{DMl}}}DMl}{{{b{DMn}}}DMn}{{{b{DN`}}}DN`}{{{b{DNb}}}DNb}{{{b{DNd}}}DNd}{{{b{DNf}}}DNf}{{{b{DNh}}}DNh}{{{b{DNj}}}DNj}{{{b{DNl}}}DNl}{{{b{DNn}}}DNn}{{{b{DO`}}}DO`}{{{b{DOb}}}DOb}{{{b{DOd}}}DOd}{{{b{DOf}}}DOf}{{{b{DOh}}}DOh}{{{b{DOj}}}DOj}{{{b{DOl}}}DOl}{{{b{DOn}}}DOn}{{{b{E@`}}}E@`}{{{b{E@b}}}E@b}{{{b{E@d}}}E@d}{{{b{E@f}}}E@f}{{{b{E@h}}}E@h}{{{b{E@j}}}E@j}{{{b{E@l}}}E@l}{{{b{E@n}}}E@n}{{{b{EA`}}}EA`}{{{b{EAb}}}EAb}{{{b{EAd}}}EAd}{{{b{EAf}}}EAf}{{{b{EAh}}}EAh}{{{b{EAj}}}EAj}{{{b{EAl}}}EAl}{{{b{EAn}}}EAn}{{{b{EB`}}}EB`}{{{b{EBb}}}EBb}{{{b{EBd}}}EBd}{{{b{EBf}}}EBf}{{{b{EBh}}}EBh}{{{b{EBj}}}EBj}{{{b{EBl}}}EBl}{{{b{EBn}}}EBn}{{{b{EC`}}}EC`}{{{b{ECb}}}ECb}{{{b{ECd}}}ECd}{{{b{ECf}}}ECf}{{{b{ECh}}}ECh}{{{b{ECj}}}ECj}{{{b{ECl}}}ECl}{{{b{ECn}}}ECn}{{{b{ED`}}}ED`}{{{b{EDb}}}EDb}{{{b{EDd}}}EDd}{{{b{EDf}}}EDf}{{{b{EDh}}}EDh}{{{b{EDj}}}EDj}{{{b{EDl}}}EDl}{{{b{EDn}}}EDn}{{{b{EE`}}}EE`}{{{b{EEb}}}EEb}{{{b{EEd}}}EEd}{{{b{EEf}}}EEf}{{{b{EEh}}}EEh}{{{b{EEj}}}EEj}{{{b{EEl}}}EEl}{{{b{EEn}}}EEn}{{{b{EF`}}}EF`}{{{b{EFb}}}EFb}{{{b{EFd}}}EFd}{{{b{EFf}}}EFf}{{{b{EFh}}}EFh}{{{b{EFj}}}EFj}{{{b{EFl}}}EFl}{{{b{EFn}}}EFn}{{{b{EG`}}}EG`}{{{b{EGb}}}EGb}{{{b{EGd}}}EGd}{{{b{EGf}}}EGf}{{{b{EGh}}}EGh}{{{b{EGj}}}EGj}{{{b{EGl}}}EGl}{{{b{EGn}}}EGn}{{{b{EH`}}}EH`}{{{b{EHb}}}EHb}{{{b{EHd}}}EHd}{{{b{EHf}}}EHf}{{{b{EHh}}}EHh}{{{b{EHj}}}EHj}{{{b{EHl}}}EHl}{{{b{EHn}}}EHn}{{{b{EI`}}}EI`}{{{b{EIb}}}EIb}{{{b{EId}}}EId}{{{b{EIf}}}EIf}{{{b{EIh}}}EIh}{{{b{EIj}}}EIj}{{{b{EIl}}}EIl}{{{b{EIn}}}EIn}{{{b{EJ`}}}EJ`}{{{b{EJb}}}EJb}{{{b{EJd}}}EJd}{{{b{EJf}}}EJf}{{{b{EJh}}}EJh}{{{b{EJj}}}EJj}{{{b{EJl}}}EJl}{{{b{EJn}}}EJn}{{{b{EK`}}}EK`}{{{b{EKb}}}EKb}{{{b{EKd}}}EKd}{{{b{EKf}}}EKf}{{{b{EKh}}}EKh}{{{b{EKj}}}EKj}{{{b{EKl}}}EKl}{{{b{EKn}}}EKn}{{{b{EL`}}}EL`}{{{b{ELb}}}ELb}{{{b{ELd}}}ELd}{{{b{ELf}}}ELf}{{{b{ELh}}}ELh}{{{b{ELj}}}ELj}{{{b{ELl}}}ELl}{{{b{ELn}}}ELn}{{{b{EM`}}}EM`}{{{b{EMb}}}EMb}{{{b{EMd}}}EMd}{{{b{EMf}}}EMf}{{{b{EMh}}}EMh}{{{b{EMj}}}EMj}{{{b{EMl}}}EMl}{{{b{EMn}}}EMn}{{{b{EN`}}}EN`}{{{b{ENb}}}ENb}{{{b{ENd}}}ENd}{{{b{ENf}}}ENf}{{{b{ENh}}}ENh}{{{b{ENj}}}ENj}{{{b{ENl}}}ENl}{{{b{ENn}}}ENn}{{{b{EO`}}}EO`}{{{b{EOb}}}EOb}{{{b{EOd}}}EOd}{{{b{EOf}}}EOf}{{{b{EOh}}}EOh}{{{b{EOj}}}EOj}{{{b{EOl}}}EOl}{{{b{EOn}}}EOn}{{{b{F@`}}}F@`}{{{b{F@b}}}F@b}{{{b{F@d}}}F@d}{{{b{F@f}}}F@f}{{{b{F@h}}}F@h}{{{b{F@j}}}F@j}{{{b{F@l}}}F@l}{{{b{F@n}}}F@n}{{{b{FA`}}}FA`}{{{b{FAb}}}FAb}{{{b{FAd}}}FAd}{{{b{FAf}}}FAf}{{{b{FAh}}}FAh}{{{b{FAj}}}FAj}{{{b{FAl}}}FAl}{{{b{FAn}}}FAn}{{{b{FB`}}}FB`}{{{b{FBb}}}FBb}{{{b{FBd}}}FBd}{{{b{FBf}}}FBf}{{{b{FBh}}}FBh}{{{b{FBj}}}FBj}{{{b{FBl}}}FBl}{{{b{FBn}}}FBn}{{{b{FC`}}}FC`}{{{b{DD`}}}DD`}{{{b{FCb}}}FCb}{{{b{FCd}}}FCd}{{{b{FCf}}}FCf}{{{b{FCh}}}FCh}{{{b{FCj}}}FCj}{{{b{FCl}}}FCl}{{{b{FCn}}}FCn}{{{b{FD`}}}FD`}{{{b{FDb}}}FDb}{{{b{FDd}}}FDd}{{{b{FDf}}}FDf}{{{b{FDh}}}FDh}{{{b{FDj}}}FDj}{{{b{FDl}}}FDl}{{{b{FDn}}}FDn}{{{b{DDb}}}DDb}{{{b{FE`}}}FE`}{{{b{DDd}}}DDd}{{{b{FEb}}}FEb}{{{b{FEd}}}FEd}{{{b{FEf}}}FEf}{{{b{DDf}}}DDf}{{{b{FEh}}}FEh}{{{b{FEj}}}FEj}{{{b{FEl}}}FEl}{{{b{DDh}}}DDh}{{{b{FEn}}}FEn}{{{b{FF`}}}FF`}{{{b{FFb}}}FFb}{{{b{FFd}}}FFd}{{{b{FFf}}}FFf}{{{b{DDj}}}DDj}{{{b{FFh}}}FFh}{{{b{DDl}}}DDl}{{{b{DDn}}}DDn}{{{b{FFj}}}FFj}{{{b{FFl}}}FFl}{{{b{DE`}}}DE`}{{{b{FFn}}}FFn}{{{b{FG`}}}FG`}{{{b{FGb}}}FGb}{{{b{FGd}}}FGd}{{{b{FGf}}}FGf}{{{b{DEb}}}DEb}{{{b{FGh}}}FGh}{{{b{DEd}}}DEd}{{{b{FGj}}}FGj}{{{b{FGl}}}FGl}{{{b{FGn}}}FGn}{{{b{FH`}}}FH`}{{{b{FHb}}}FHb}{{{b{FHd}}}FHd}{{{b{FHf}}}FHf}{{{b{FHh}}}FHh}{{{b{FHj}}}FHj}{{{b{FHl}}}FHl}{{{b{FHn}}}FHn}{{{b{FI`}}}FI`}{{{b{FIb}}}FIb}{{{b{FId}}}FId}{{{b{FIf}}}FIf}{{{b{FIh}}}FIh}{{{b{FIj}}}FIj}{{{b{DEf}}}DEf}{{{b{FIl}}}FIl}{{{b{FIn}}}FIn}{{{b{FJ`}}}FJ`}{{{b{FJb}}}FJb}{{{b{FJd}}}FJd}{{{b{FJf}}}FJf}{{{b{FJh}}}FJh}{{{b{DEh}}}DEh}{{{b{FJj}}}FJj}{{{b{FJl}}}FJl}{{{b{FJn}}}FJn}{{{b{FK`}}}FK`}{{{b{FKb}}}FKb}{{{b{FKd}}}FKd}{{{b{FKf}}}FKf}{{{b{FKh}}}FKh}{{{b{DEj}}}DEj}{{{b{FKj}}}FKj}{{{b{FKl}}}FKl}{{{b{FKn}}}FKn}{{{b{DEl}}}DEl}{{{b{DEn}}}DEn}{{{b{FL`}}}FL`}{{{b{FLb}}}FLb}{{{b{FLd}}}FLd}{{{b{FLf}}}FLf}{{{b{FLh}}}FLh}{{{b{DF`}}}DF`}{{{b{FLj}}}FLj}{{{b{DFb}}}DFb}{{{b{FLl}}}FLl}{{{b{FLn}}}FLn}{{{b{FM`}}}FM`}{{{b{FMb}}}FMb}{{{b{FMd}}}FMd}{{{b{DFd}}}DFd}{{{b{FMf}}}FMf}{{{b{FMh}}}FMh}{{{b{FMj}}}FMj}{{{b{FMl}}}FMl}{{{b{FMn}}}FMn}{{{b{FN`}}}FN`}{{{b{FNb}}}FNb}{{{b{FNd}}}FNd}{{{b{FNf}}}FNf}{{{b{DFf}}}DFf}{{{b{FNh}}}FNh}{{{b{FNj}}}FNj}{{{b{DFh}}}DFh}{{{b{DFj}}}DFj}{{{b{FNl}}}FNl}{{{b{DFl}}}DFl}{{{b{FNn}}}FNn}{{{b{FO`}}}FO`}{{{b{FOb}}}FOb}{{{b{FOd}}}FOd}{{{b{FOf}}}FOf}{{{b{FOh}}}FOh}{{{b{FOj}}}FOj}{{{b{FOl}}}FOl}{{{b{FOn}}}FOn}{{{b{DFn}}}DFn}{{{b{G@`}}}G@`}{{{b{DG`}}}DG`}{{{b{G@b}}}G@b}{{{b{G@d}}}G@d}{{{b{G@f}}}G@f}{{{b{G@h}}}G@h}{{{b{G@j}}}G@j}{{{b{G@l}}}G@l}{{{b{c}}{b{de}}}Aj{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{DD`}}{b{DD`}}}DBb}{{{b{DDb}}{b{DDb}}}DBb}{{{b{DDd}}{b{DDd}}}DBb}{{{b{DDf}}{b{DDf}}}DBb}{{{b{DDh}}{b{DDh}}}DBb}{{{b{DDj}}{b{DDj}}}DBb}{{{b{DDl}}{b{DDl}}}DBb}{{{b{DDn}}{b{DDn}}}DBb}{{{b{DE`}}{b{DE`}}}DBb}{{{b{DEb}}{b{DEb}}}DBb}{{{b{DEd}}{b{DEd}}}DBb}{{{b{DEf}}{b{DEf}}}DBb}{{{b{DEh}}{b{DEh}}}DBb}{{{b{DEj}}{b{DEj}}}DBb}{{{b{DEl}}{b{DEl}}}DBb}{{{b{DEn}}{b{DEn}}}DBb}{{{b{DF`}}{b{DF`}}}DBb}{{{b{DFb}}{b{DFb}}}DBb}{{{b{DFd}}{b{DFd}}}DBb}{{{b{DFf}}{b{DFf}}}DBb}{{{b{DFh}}{b{DFh}}}DBb}{{{b{DFj}}{b{DFj}}}DBb}{{{b{DFl}}{b{DFl}}}DBb}{{{b{DFn}}{b{DFn}}}DBb}{{{b{DG`}}{b{DG`}}}DBb}````````````{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}{DFnDFn}{DG`DG`}``{{{b{DD`}}DD`}C`}{{{b{DDb}}DDb}C`}{{{b{DDd}}DDd}C`}{{{b{DDf}}DDf}C`}{{{b{DDh}}DDh}C`}{{{b{DDj}}DDj}C`}{{{b{DDl}}DDl}C`}{{{b{DDn}}DDn}C`}{{{b{DE`}}DE`}C`}{{{b{DEb}}DEb}C`}{{{b{DEd}}DEd}C`}{{{b{DEf}}DEf}C`}{{{b{DEh}}DEh}C`}{{{b{DEj}}DEj}C`}{{{b{DEl}}DEl}C`}{{{b{DEn}}DEn}C`}{{{b{DF`}}DF`}C`}{{{b{DFb}}DFb}C`}{{{b{DFd}}DFd}C`}{{{b{DFf}}DFf}C`}{{{b{DFh}}DFh}C`}{{{b{DFj}}DFj}C`}{{{b{DFl}}DFl}C`}{{{b{DFn}}DFn}C`}{{{b{DG`}}DG`}C`}````````````````````````````````````````````````````````{{}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`}{{}DD`}{{}FCb}{{}FCd}{{}FCf}{{}FCh}{{}FCj}{{}FCl}{{}FCn}{{}FD`}{{}FDb}{{}FDd}{{}FDf}{{}FDh}{{}FDj}{{}FDl}{{}FDn}{{}DDb}{{}FE`}{{}DDd}{{}FEb}{{}FEd}{{}FEf}{{}DDf}{{}FEh}{{}FEj}{{}FEl}{{}DDh}{{}FEn}{{}FF`}{{}FFb}{{}FFd}{{}FFf}{{}DDj}{{}FFh}{{}DDl}{{}DDn}{{}FFj}{{}FFl}{{}DE`}{{}FFn}{{}FG`}{{}FGb}{{}FGd}{{}FGf}{{}DEb}{{}FGh}{{}DEd}{{}FGj}{{}FGl}{{}FGn}{{}FH`}{{}FHb}{{}FHd}{{}FHf}{{}FHh}{{}FHj}{{}FHl}{{}FHn}{{}FI`}{{}FIb}{{}FId}{{}FIf}{{}FIh}{{}FIj}{{}DEf}{{}FIl}{{}FIn}{{}FJ`}{{}FJb}{{}FJd}{{}FJf}{{}FJh}{{}DEh}{{}FJj}{{}FJl}{{}FJn}{{}FK`}{{}FKb}{{}FKd}{{}FKf}{{}FKh}{{}DEj}{{}FKj}{{}FKl}{{}FKn}{{}DEl}{{}DEn}{{}FL`}{{}FLb}{{}FLd}{{}FLf}{{}FLh}{{}DF`}{{}FLj}{{}DFb}{{}FLl}{{}FLn}{{}FM`}{{}FMb}{{}FMd}{{}DFd}{{}FMf}{{}FMh}{{}FMj}{{}FMl}{{}FMn}{{}FN`}{{}FNb}{{}FNd}{{}FNf}{{}DFf}{{}FNh}{{}FNj}{{}DFh}{{}DFj}{{}FNl}{{}DFl}{{}FNn}{{}FO`}{{}FOb}{{}FOd}{{}FOf}{{}FOh}{{}FOj}{{}FOl}{{}FOn}{{}DFn}{{}G@`}{{}DG`}{{}G@b}{{}G@d}{{}G@f}{{}G@h}{{}G@j}{{}G@l}{Bf{{Bd{DGb{b{Al}}}}}}```{{Ab{b{{h{f}}}}}{{Bd{DGdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DGfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DGhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DGjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DGlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DGnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DH`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DHbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DHdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DHfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DHhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DHjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DHlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DHnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DI`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DIbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DIdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DIfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DIhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DIjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DIlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DInBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJ`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DK`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DKbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DKdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DKfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DKhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DKjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DKlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DKnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DL`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DLbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DLdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DLfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DLhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DLjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DLlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DLnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DM`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DMbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DMdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DMfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DMhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DMjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DMlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DMnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DN`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DNbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DNdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DNfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DNhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DNjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DNlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DNnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DO`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DObBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DOdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DOfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DOhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DOjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DOlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DOnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@bBl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@dBl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@fBl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@hBl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@jBl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@lBl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@nBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EA`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EAbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EAdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EAfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EAhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EAjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EAlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EAnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EB`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EBbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EBdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EBfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EBhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EBjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EBlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EBnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EC`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ECbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ECdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ECfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EChBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ECjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EClBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ECnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ED`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EDbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EDdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EDfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EDhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EDjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EDlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EDnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EE`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EEbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EEdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EEfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EEhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EEjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EElBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EEnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EF`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EFbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EFdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EFfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EFhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EFjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EFlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EFnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EG`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EGbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EGdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EGfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EGhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EGjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EGlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EGnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EH`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EHbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EHdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EHfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EHhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EHjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EHlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EHnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EI`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EIbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EIdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EIfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EIhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EIjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EIlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EInBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJ`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EK`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EKbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EKdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EKfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EKhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EKjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EKlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EKnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EL`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ELbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ELdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ELfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ELhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ELjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ELlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ELnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EM`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EMbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EMdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EMfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EMhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EMjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EMlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EMnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EN`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ENbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ENdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ENfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ENhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ENjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ENlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ENnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EO`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EObBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EOdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EOfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EOhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EOjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EOlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EOnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@bBl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@dBl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@fBl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@hBl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@jBl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@lBl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@nBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FA`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{FAbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FAdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FAfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FAhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FAjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FAlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FAnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FB`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{FBbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FBdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FBfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FBhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FBjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FBlBl}}}}{c{{Bd{DGb}}}Bn}{c{{Bd{DGd}}}Bn}{c{{Bd{DGf}}}Bn}{c{{Bd{DGh}}}Bn}{c{{Bd{DGj}}}Bn}{c{{Bd{DGl}}}Bn}{c{{Bd{DGn}}}Bn}{c{{Bd{DH`}}}Bn}{c{{Bd{DHb}}}Bn}{c{{Bd{DHd}}}Bn}{c{{Bd{DHf}}}Bn}{c{{Bd{DHh}}}Bn}{c{{Bd{DHj}}}Bn}{c{{Bd{DHl}}}Bn}{c{{Bd{DHn}}}Bn}{c{{Bd{DI`}}}Bn}{c{{Bd{DIb}}}Bn}{c{{Bd{DId}}}Bn}{c{{Bd{DIf}}}Bn}{c{{Bd{DIh}}}Bn}{c{{Bd{DIj}}}Bn}{c{{Bd{DIl}}}Bn}{c{{Bd{DIn}}}Bn}{c{{Bd{DJ`}}}Bn}{c{{Bd{DJb}}}Bn}{c{{Bd{DJd}}}Bn}{c{{Bd{DJf}}}Bn}{c{{Bd{DJh}}}Bn}{c{{Bd{DJj}}}Bn}{c{{Bd{DJl}}}Bn}{c{{Bd{DJn}}}Bn}{c{{Bd{DK`}}}Bn}{c{{Bd{DKb}}}Bn}{c{{Bd{DKd}}}Bn}{c{{Bd{DKf}}}Bn}{c{{Bd{DKh}}}Bn}{c{{Bd{DKj}}}Bn}{c{{Bd{DKl}}}Bn}{c{{Bd{DKn}}}Bn}{c{{Bd{DL`}}}Bn}{c{{Bd{DLb}}}Bn}{c{{Bd{DLd}}}Bn}{c{{Bd{DLf}}}Bn}{c{{Bd{DLh}}}Bn}{c{{Bd{DLj}}}Bn}{c{{Bd{DLl}}}Bn}{c{{Bd{DLn}}}Bn}{c{{Bd{DM`}}}Bn}{c{{Bd{DMb}}}Bn}{c{{Bd{DMd}}}Bn}{c{{Bd{DMf}}}Bn}{c{{Bd{DMh}}}Bn}{c{{Bd{DMj}}}Bn}{c{{Bd{DMl}}}Bn}{c{{Bd{DMn}}}Bn}{c{{Bd{DN`}}}Bn}{c{{Bd{DNb}}}Bn}{c{{Bd{DNd}}}Bn}{c{{Bd{DNf}}}Bn}{c{{Bd{DNh}}}Bn}{c{{Bd{DNj}}}Bn}{c{{Bd{DNl}}}Bn}{c{{Bd{DNn}}}Bn}{c{{Bd{DO`}}}Bn}{c{{Bd{DOb}}}Bn}{c{{Bd{DOd}}}Bn}{c{{Bd{DOf}}}Bn}{c{{Bd{DOh}}}Bn}{c{{Bd{DOj}}}Bn}{c{{Bd{DOl}}}Bn}{c{{Bd{DOn}}}Bn}{c{{Bd{E@`}}}Bn}{c{{Bd{E@b}}}Bn}{c{{Bd{E@d}}}Bn}{c{{Bd{E@f}}}Bn}{c{{Bd{E@h}}}Bn}{c{{Bd{E@j}}}Bn}{c{{Bd{E@l}}}Bn}{c{{Bd{E@n}}}Bn}{c{{Bd{EA`}}}Bn}{c{{Bd{EAb}}}Bn}{c{{Bd{EAd}}}Bn}{c{{Bd{EAf}}}Bn}{c{{Bd{EAh}}}Bn}{c{{Bd{EAj}}}Bn}{c{{Bd{EAl}}}Bn}{c{{Bd{EAn}}}Bn}{c{{Bd{EB`}}}Bn}{c{{Bd{EBb}}}Bn}{c{{Bd{EBd}}}Bn}{c{{Bd{EBf}}}Bn}{c{{Bd{EBh}}}Bn}{c{{Bd{EBj}}}Bn}{c{{Bd{EBl}}}Bn}{c{{Bd{EBn}}}Bn}{c{{Bd{EC`}}}Bn}{c{{Bd{ECb}}}Bn}{c{{Bd{ECd}}}Bn}{c{{Bd{ECf}}}Bn}{c{{Bd{ECh}}}Bn}{c{{Bd{ECj}}}Bn}{c{{Bd{ECl}}}Bn}{c{{Bd{ECn}}}Bn}{c{{Bd{ED`}}}Bn}{c{{Bd{EDb}}}Bn}{c{{Bd{EDd}}}Bn}{c{{Bd{EDf}}}Bn}{c{{Bd{EDh}}}Bn}{c{{Bd{EDj}}}Bn}{c{{Bd{EDl}}}Bn}{c{{Bd{EDn}}}Bn}{c{{Bd{EE`}}}Bn}{c{{Bd{EEb}}}Bn}{c{{Bd{EEd}}}Bn}{c{{Bd{EEf}}}Bn}{c{{Bd{EEh}}}Bn}{c{{Bd{EEj}}}Bn}{c{{Bd{EEl}}}Bn}{c{{Bd{EEn}}}Bn}{c{{Bd{EF`}}}Bn}{c{{Bd{EFb}}}Bn}{c{{Bd{EFd}}}Bn}{c{{Bd{EFf}}}Bn}{c{{Bd{EFh}}}Bn}{c{{Bd{EFj}}}Bn}{c{{Bd{EFl}}}Bn}{c{{Bd{EFn}}}Bn}{c{{Bd{EG`}}}Bn}{c{{Bd{EGb}}}Bn}{c{{Bd{EGd}}}Bn}{c{{Bd{EGf}}}Bn}{c{{Bd{EGh}}}Bn}{c{{Bd{EGj}}}Bn}{c{{Bd{EGl}}}Bn}{c{{Bd{EGn}}}Bn}{c{{Bd{EH`}}}Bn}{c{{Bd{EHb}}}Bn}{c{{Bd{EHd}}}Bn}{c{{Bd{EHf}}}Bn}{c{{Bd{EHh}}}Bn}{c{{Bd{EHj}}}Bn}{c{{Bd{EHl}}}Bn}{c{{Bd{EHn}}}Bn}{c{{Bd{EI`}}}Bn}{c{{Bd{EIb}}}Bn}{c{{Bd{EId}}}Bn}{c{{Bd{EIf}}}Bn}{c{{Bd{EIh}}}Bn}{c{{Bd{EIj}}}Bn}{c{{Bd{EIl}}}Bn}{c{{Bd{EIn}}}Bn}{c{{Bd{EJ`}}}Bn}{c{{Bd{EJb}}}Bn}{c{{Bd{EJd}}}Bn}{c{{Bd{EJf}}}Bn}{c{{Bd{EJh}}}Bn}{c{{Bd{EJj}}}Bn}{c{{Bd{EJl}}}Bn}{c{{Bd{EJn}}}Bn}{c{{Bd{EK`}}}Bn}{c{{Bd{EKb}}}Bn}{c{{Bd{EKd}}}Bn}{c{{Bd{EKf}}}Bn}{c{{Bd{EKh}}}Bn}{c{{Bd{EKj}}}Bn}{c{{Bd{EKl}}}Bn}{c{{Bd{EKn}}}Bn}{c{{Bd{EL`}}}Bn}{c{{Bd{ELb}}}Bn}{c{{Bd{ELd}}}Bn}{c{{Bd{ELf}}}Bn}{c{{Bd{ELh}}}Bn}{c{{Bd{ELj}}}Bn}{c{{Bd{ELl}}}Bn}{c{{Bd{ELn}}}Bn}{c{{Bd{EM`}}}Bn}{c{{Bd{EMb}}}Bn}{c{{Bd{EMd}}}Bn}{c{{Bd{EMf}}}Bn}{c{{Bd{EMh}}}Bn}{c{{Bd{EMj}}}Bn}{c{{Bd{EMl}}}Bn}{c{{Bd{EMn}}}Bn}{c{{Bd{EN`}}}Bn}{c{{Bd{ENb}}}Bn}{c{{Bd{ENd}}}Bn}{c{{Bd{ENf}}}Bn}{c{{Bd{ENh}}}Bn}{c{{Bd{ENj}}}Bn}{c{{Bd{ENl}}}Bn}{c{{Bd{ENn}}}Bn}{c{{Bd{EO`}}}Bn}{c{{Bd{EOb}}}Bn}{c{{Bd{EOd}}}Bn}{c{{Bd{EOf}}}Bn}{c{{Bd{EOh}}}Bn}{c{{Bd{EOj}}}Bn}{c{{Bd{EOl}}}Bn}{c{{Bd{EOn}}}Bn}{c{{Bd{F@`}}}Bn}{c{{Bd{F@b}}}Bn}{c{{Bd{F@d}}}Bn}{c{{Bd{F@f}}}Bn}{c{{Bd{F@h}}}Bn}{c{{Bd{F@j}}}Bn}{c{{Bd{F@l}}}Bn}{c{{Bd{F@n}}}Bn}{c{{Bd{FA`}}}Bn}{c{{Bd{FAb}}}Bn}{c{{Bd{FAd}}}Bn}{c{{Bd{FAf}}}Bn}{c{{Bd{FAh}}}Bn}{c{{Bd{FAj}}}Bn}{c{{Bd{FAl}}}Bn}{c{{Bd{FAn}}}Bn}{c{{Bd{FB`}}}Bn}{c{{Bd{FBb}}}Bn}{c{{Bd{FBd}}}Bn}{c{{Bd{FBf}}}Bn}{c{{Bd{FBh}}}Bn}{c{{Bd{FBj}}}Bn}{c{{Bd{FBl}}}Bn}{c{{Bd{FBn}}}Bn}{c{{Bd{FC`}}}Bn}{c{{Bd{DD`}}}Bn}{c{{Bd{FCb}}}Bn}{c{{Bd{FCd}}}Bn}{c{{Bd{FCf}}}Bn}{c{{Bd{FCh}}}Bn}{c{{Bd{FCj}}}Bn}{c{{Bd{FCl}}}Bn}{c{{Bd{FCn}}}Bn}{c{{Bd{FD`}}}Bn}{c{{Bd{FDb}}}Bn}{c{{Bd{FDd}}}Bn}{c{{Bd{FDf}}}Bn}{c{{Bd{FDh}}}Bn}{c{{Bd{FDj}}}Bn}{c{{Bd{FDl}}}Bn}{c{{Bd{FDn}}}Bn}{c{{Bd{DDb}}}Bn}{c{{Bd{FE`}}}Bn}{c{{Bd{DDd}}}Bn}{c{{Bd{FEb}}}Bn}{c{{Bd{FEd}}}Bn}{c{{Bd{FEf}}}Bn}{c{{Bd{DDf}}}Bn}{c{{Bd{FEh}}}Bn}{c{{Bd{FEj}}}Bn}{c{{Bd{FEl}}}Bn}{c{{Bd{DDh}}}Bn}{c{{Bd{FEn}}}Bn}{c{{Bd{FF`}}}Bn}{c{{Bd{FFb}}}Bn}{c{{Bd{FFd}}}Bn}{c{{Bd{FFf}}}Bn}{c{{Bd{DDj}}}Bn}{c{{Bd{FFh}}}Bn}{c{{Bd{DDl}}}Bn}{c{{Bd{DDn}}}Bn}{c{{Bd{FFj}}}Bn}{c{{Bd{FFl}}}Bn}{c{{Bd{DE`}}}Bn}{c{{Bd{FFn}}}Bn}{c{{Bd{FG`}}}Bn}{c{{Bd{FGb}}}Bn}{c{{Bd{FGd}}}Bn}{c{{Bd{FGf}}}Bn}{c{{Bd{DEb}}}Bn}{c{{Bd{FGh}}}Bn}{c{{Bd{DEd}}}Bn}{c{{Bd{FGj}}}Bn}{c{{Bd{FGl}}}Bn}{c{{Bd{FGn}}}Bn}{c{{Bd{FH`}}}Bn}{c{{Bd{FHb}}}Bn}{c{{Bd{FHd}}}Bn}{c{{Bd{FHf}}}Bn}{c{{Bd{FHh}}}Bn}{c{{Bd{FHj}}}Bn}{c{{Bd{FHl}}}Bn}{c{{Bd{FHn}}}Bn}{c{{Bd{FI`}}}Bn}{c{{Bd{FIb}}}Bn}{c{{Bd{FId}}}Bn}{c{{Bd{FIf}}}Bn}{c{{Bd{FIh}}}Bn}{c{{Bd{FIj}}}Bn}{c{{Bd{DEf}}}Bn}{c{{Bd{FIl}}}Bn}{c{{Bd{FIn}}}Bn}{c{{Bd{FJ`}}}Bn}{c{{Bd{FJb}}}Bn}{c{{Bd{FJd}}}Bn}{c{{Bd{FJf}}}Bn}{c{{Bd{FJh}}}Bn}{c{{Bd{DEh}}}Bn}{c{{Bd{FJj}}}Bn}{c{{Bd{FJl}}}Bn}{c{{Bd{FJn}}}Bn}{c{{Bd{FK`}}}Bn}{c{{Bd{FKb}}}Bn}{c{{Bd{FKd}}}Bn}{c{{Bd{FKf}}}Bn}{c{{Bd{FKh}}}Bn}{c{{Bd{DEj}}}Bn}{c{{Bd{FKj}}}Bn}{c{{Bd{FKl}}}Bn}{c{{Bd{FKn}}}Bn}{c{{Bd{DEl}}}Bn}{c{{Bd{DEn}}}Bn}{c{{Bd{FL`}}}Bn}{c{{Bd{FLb}}}Bn}{c{{Bd{FLd}}}Bn}{c{{Bd{FLf}}}Bn}{c{{Bd{FLh}}}Bn}{c{{Bd{DF`}}}Bn}{c{{Bd{FLj}}}Bn}{c{{Bd{DFb}}}Bn}{c{{Bd{FLl}}}Bn}{c{{Bd{FLn}}}Bn}{c{{Bd{FM`}}}Bn}{c{{Bd{FMb}}}Bn}{c{{Bd{FMd}}}Bn}{c{{Bd{DFd}}}Bn}{c{{Bd{FMf}}}Bn}{c{{Bd{FMh}}}Bn}{c{{Bd{FMj}}}Bn}{c{{Bd{FMl}}}Bn}{c{{Bd{FMn}}}Bn}{c{{Bd{FN`}}}Bn}{c{{Bd{FNb}}}Bn}{c{{Bd{FNd}}}Bn}{c{{Bd{FNf}}}Bn}{c{{Bd{DFf}}}Bn}{c{{Bd{FNh}}}Bn}{c{{Bd{FNj}}}Bn}{c{{Bd{DFh}}}Bn}{c{{Bd{DFj}}}Bn}{c{{Bd{FNl}}}Bn}{c{{Bd{DFl}}}Bn}{c{{Bd{FNn}}}Bn}{c{{Bd{FO`}}}Bn}{c{{Bd{FOb}}}Bn}{c{{Bd{FOd}}}Bn}{c{{Bd{FOf}}}Bn}{c{{Bd{FOh}}}Bn}{c{{Bd{FOj}}}Bn}{c{{Bd{FOl}}}Bn}{c{{Bd{FOn}}}Bn}{c{{Bd{DFn}}}Bn}{c{{Bd{G@`}}}Bn}{c{{Bd{DG`}}}Bn}{c{{Bd{G@b}}}Bn}{c{{Bd{G@d}}}Bn}{c{{Bd{G@f}}}Bn}{c{{Bd{G@h}}}Bn}{c{{Bd{G@j}}}Bn}{c{{Bd{G@l}}}Bn}```````````{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}```````````````{{}DD`}{{}DDb}{{}DDd}{{}DDf}{{}DDh}{{}DDj}{{}DDl}{{}DDn}{{}DE`}{{}DEb}{{}DEd}{{}DEf}{{}DEh}{{}DEj}{{}DEl}{{}DEn}{{}DF`}{{}DFb}{{}DFd}{{}DFf}{{}DFh}{{}DFj}{{}DFl}{{}DFn}{{}DG`}```````````````{{{b{DGb}}{b{DGb}}}C`}{{{b{DGd}}{b{DGd}}}C`}{{{b{DGf}}{b{DGf}}}C`}{{{b{DGh}}{b{DGh}}}C`}{{{b{DGj}}{b{DGj}}}C`}{{{b{DGl}}{b{DGl}}}C`}{{{b{DGn}}{b{DGn}}}C`}{{{b{DH`}}{b{DH`}}}C`}{{{b{DHb}}{b{DHb}}}C`}{{{b{DHd}}{b{DHd}}}C`}{{{b{DHf}}{b{DHf}}}C`}{{{b{DHh}}{b{DHh}}}C`}{{{b{DHj}}{b{DHj}}}C`}{{{b{DHl}}{b{DHl}}}C`}{{{b{DHn}}{b{DHn}}}C`}{{{b{DI`}}{b{DI`}}}C`}{{{b{DIb}}{b{DIb}}}C`}{{{b{DId}}{b{DId}}}C`}{{{b{DIf}}{b{DIf}}}C`}{{{b{DIh}}{b{DIh}}}C`}{{{b{DIj}}{b{DIj}}}C`}{{{b{DIl}}{b{DIl}}}C`}{{{b{DIn}}{b{DIn}}}C`}{{{b{DJ`}}{b{DJ`}}}C`}{{{b{DJb}}{b{DJb}}}C`}{{{b{DJd}}{b{DJd}}}C`}{{{b{DJf}}{b{DJf}}}C`}{{{b{DJh}}{b{DJh}}}C`}{{{b{DJj}}{b{DJj}}}C`}{{{b{DJl}}{b{DJl}}}C`}{{{b{DJn}}{b{DJn}}}C`}{{{b{DK`}}{b{DK`}}}C`}{{{b{DKb}}{b{DKb}}}C`}{{{b{DKd}}{b{DKd}}}C`}{{{b{DKf}}{b{DKf}}}C`}{{{b{DKh}}{b{DKh}}}C`}{{{b{DKj}}{b{DKj}}}C`}{{{b{DKl}}{b{DKl}}}C`}{{{b{DKn}}{b{DKn}}}C`}{{{b{DL`}}{b{DL`}}}C`}{{{b{DLb}}{b{DLb}}}C`}{{{b{DLd}}{b{DLd}}}C`}{{{b{DLf}}{b{DLf}}}C`}{{{b{DLh}}{b{DLh}}}C`}{{{b{DLj}}{b{DLj}}}C`}{{{b{DLl}}{b{DLl}}}C`}{{{b{DLn}}{b{DLn}}}C`}{{{b{DM`}}{b{DM`}}}C`}{{{b{DMb}}{b{DMb}}}C`}{{{b{DMd}}{b{DMd}}}C`}{{{b{DMf}}{b{DMf}}}C`}{{{b{DMh}}{b{DMh}}}C`}{{{b{DMj}}{b{DMj}}}C`}{{{b{DMl}}{b{DMl}}}C`}{{{b{DMn}}{b{DMn}}}C`}{{{b{DN`}}{b{DN`}}}C`}{{{b{DNb}}{b{DNb}}}C`}{{{b{DNd}}{b{DNd}}}C`}{{{b{DNf}}{b{DNf}}}C`}{{{b{DNh}}{b{DNh}}}C`}{{{b{DNj}}{b{DNj}}}C`}{{{b{DNl}}{b{DNl}}}C`}{{{b{DNn}}{b{DNn}}}C`}{{{b{DO`}}{b{DO`}}}C`}{{{b{DOb}}{b{DOb}}}C`}{{{b{DOd}}{b{DOd}}}C`}{{{b{DOf}}{b{DOf}}}C`}{{{b{DOh}}{b{DOh}}}C`}{{{b{DOj}}{b{DOj}}}C`}{{{b{DOl}}{b{DOl}}}C`}{{{b{DOn}}{b{DOn}}}C`}{{{b{E@`}}{b{E@`}}}C`}{{{b{E@b}}{b{E@b}}}C`}{{{b{E@d}}{b{E@d}}}C`}{{{b{E@f}}{b{E@f}}}C`}{{{b{E@h}}{b{E@h}}}C`}{{{b{E@j}}{b{E@j}}}C`}{{{b{E@l}}{b{E@l}}}C`}{{{b{E@n}}{b{E@n}}}C`}{{{b{EA`}}{b{EA`}}}C`}{{{b{EAb}}{b{EAb}}}C`}{{{b{EAd}}{b{EAd}}}C`}{{{b{EAf}}{b{EAf}}}C`}{{{b{EAh}}{b{EAh}}}C`}{{{b{EAj}}{b{EAj}}}C`}{{{b{EAl}}{b{EAl}}}C`}{{{b{EAn}}{b{EAn}}}C`}{{{b{EB`}}{b{EB`}}}C`}{{{b{EBb}}{b{EBb}}}C`}{{{b{EBd}}{b{EBd}}}C`}{{{b{EBf}}{b{EBf}}}C`}{{{b{EBh}}{b{EBh}}}C`}{{{b{EBj}}{b{EBj}}}C`}{{{b{EBl}}{b{EBl}}}C`}{{{b{EBn}}{b{EBn}}}C`}{{{b{EC`}}{b{EC`}}}C`}{{{b{ECb}}{b{ECb}}}C`}{{{b{ECd}}{b{ECd}}}C`}{{{b{ECf}}{b{ECf}}}C`}{{{b{ECh}}{b{ECh}}}C`}{{{b{ECj}}{b{ECj}}}C`}{{{b{ECl}}{b{ECl}}}C`}{{{b{ECn}}{b{ECn}}}C`}{{{b{ED`}}{b{ED`}}}C`}{{{b{EDb}}{b{EDb}}}C`}{{{b{EDd}}{b{EDd}}}C`}{{{b{EDf}}{b{EDf}}}C`}{{{b{EDh}}{b{EDh}}}C`}{{{b{EDj}}{b{EDj}}}C`}{{{b{EDl}}{b{EDl}}}C`}{{{b{EDn}}{b{EDn}}}C`}{{{b{EE`}}{b{EE`}}}C`}{{{b{EEb}}{b{EEb}}}C`}{{{b{EEd}}{b{EEd}}}C`}{{{b{EEf}}{b{EEf}}}C`}{{{b{EEh}}{b{EEh}}}C`}{{{b{EEj}}{b{EEj}}}C`}{{{b{EEl}}{b{EEl}}}C`}{{{b{EEn}}{b{EEn}}}C`}{{{b{EF`}}{b{EF`}}}C`}{{{b{EFb}}{b{EFb}}}C`}{{{b{EFd}}{b{EFd}}}C`}{{{b{EFf}}{b{EFf}}}C`}{{{b{EFh}}{b{EFh}}}C`}{{{b{EFj}}{b{EFj}}}C`}{{{b{EFl}}{b{EFl}}}C`}{{{b{EFn}}{b{EFn}}}C`}{{{b{EG`}}{b{EG`}}}C`}{{{b{EGb}}{b{EGb}}}C`}{{{b{EGd}}{b{EGd}}}C`}{{{b{EGf}}{b{EGf}}}C`}{{{b{EGh}}{b{EGh}}}C`}{{{b{EGj}}{b{EGj}}}C`}{{{b{EGl}}{b{EGl}}}C`}{{{b{EGn}}{b{EGn}}}C`}{{{b{EH`}}{b{EH`}}}C`}{{{b{EHb}}{b{EHb}}}C`}{{{b{EHd}}{b{EHd}}}C`}{{{b{EHf}}{b{EHf}}}C`}{{{b{EHh}}{b{EHh}}}C`}{{{b{EHj}}{b{EHj}}}C`}{{{b{EHl}}{b{EHl}}}C`}{{{b{EHn}}{b{EHn}}}C`}{{{b{EI`}}{b{EI`}}}C`}{{{b{EIb}}{b{EIb}}}C`}{{{b{EId}}{b{EId}}}C`}{{{b{EIf}}{b{EIf}}}C`}{{{b{EIh}}{b{EIh}}}C`}{{{b{EIj}}{b{EIj}}}C`}{{{b{EIl}}{b{EIl}}}C`}{{{b{EIn}}{b{EIn}}}C`}{{{b{EJ`}}{b{EJ`}}}C`}{{{b{EJb}}{b{EJb}}}C`}{{{b{EJd}}{b{EJd}}}C`}{{{b{EJf}}{b{EJf}}}C`}{{{b{EJh}}{b{EJh}}}C`}{{{b{EJj}}{b{EJj}}}C`}{{{b{EJl}}{b{EJl}}}C`}{{{b{EJn}}{b{EJn}}}C`}{{{b{EK`}}{b{EK`}}}C`}{{{b{EKb}}{b{EKb}}}C`}{{{b{EKd}}{b{EKd}}}C`}{{{b{EKf}}{b{EKf}}}C`}{{{b{EKh}}{b{EKh}}}C`}{{{b{EKj}}{b{EKj}}}C`}{{{b{EKl}}{b{EKl}}}C`}{{{b{EKn}}{b{EKn}}}C`}{{{b{EL`}}{b{EL`}}}C`}{{{b{ELb}}{b{ELb}}}C`}{{{b{ELd}}{b{ELd}}}C`}{{{b{ELf}}{b{ELf}}}C`}{{{b{ELh}}{b{ELh}}}C`}{{{b{ELj}}{b{ELj}}}C`}{{{b{ELl}}{b{ELl}}}C`}{{{b{ELn}}{b{ELn}}}C`}{{{b{EM`}}{b{EM`}}}C`}{{{b{EMb}}{b{EMb}}}C`}{{{b{EMd}}{b{EMd}}}C`}{{{b{EMf}}{b{EMf}}}C`}{{{b{EMh}}{b{EMh}}}C`}{{{b{EMj}}{b{EMj}}}C`}{{{b{EMl}}{b{EMl}}}C`}{{{b{EMn}}{b{EMn}}}C`}{{{b{EN`}}{b{EN`}}}C`}{{{b{ENb}}{b{ENb}}}C`}{{{b{ENd}}{b{ENd}}}C`}{{{b{ENf}}{b{ENf}}}C`}{{{b{ENh}}{b{ENh}}}C`}{{{b{ENj}}{b{ENj}}}C`}{{{b{ENl}}{b{ENl}}}C`}{{{b{ENn}}{b{ENn}}}C`}{{{b{EO`}}{b{EO`}}}C`}{{{b{EOb}}{b{EOb}}}C`}{{{b{EOd}}{b{EOd}}}C`}{{{b{EOf}}{b{EOf}}}C`}{{{b{EOh}}{b{EOh}}}C`}{{{b{EOj}}{b{EOj}}}C`}{{{b{EOl}}{b{EOl}}}C`}{{{b{EOn}}{b{EOn}}}C`}{{{b{F@`}}{b{F@`}}}C`}{{{b{F@b}}{b{F@b}}}C`}{{{b{F@d}}{b{F@d}}}C`}{{{b{F@f}}{b{F@f}}}C`}{{{b{F@h}}{b{F@h}}}C`}{{{b{F@j}}{b{F@j}}}C`}{{{b{F@l}}{b{F@l}}}C`}{{{b{F@n}}{b{F@n}}}C`}{{{b{FA`}}{b{FA`}}}C`}{{{b{FAb}}{b{FAb}}}C`}{{{b{FAd}}{b{FAd}}}C`}{{{b{FAf}}{b{FAf}}}C`}{{{b{FAh}}{b{FAh}}}C`}{{{b{FAj}}{b{FAj}}}C`}{{{b{FAl}}{b{FAl}}}C`}{{{b{FAn}}{b{FAn}}}C`}{{{b{FB`}}{b{FB`}}}C`}{{{b{FBb}}{b{FBb}}}C`}{{{b{FBd}}{b{FBd}}}C`}{{{b{FBf}}{b{FBf}}}C`}{{{b{FBh}}{b{FBh}}}C`}{{{b{FBj}}{b{FBj}}}C`}{{{b{FBl}}{b{FBl}}}C`}{{{b{FBn}}{b{FBn}}}C`}{{{b{FC`}}{b{FC`}}}C`}{{{b{DD`}}{b{DD`}}}C`}{{{b{FCb}}{b{FCb}}}C`}{{{b{FCd}}{b{FCd}}}C`}{{{b{FCf}}{b{FCf}}}C`}{{{b{FCh}}{b{FCh}}}C`}{{{b{FCj}}{b{FCj}}}C`}{{{b{FCl}}{b{FCl}}}C`}{{{b{FCn}}{b{FCn}}}C`}{{{b{FD`}}{b{FD`}}}C`}{{{b{FDb}}{b{FDb}}}C`}{{{b{FDd}}{b{FDd}}}C`}{{{b{FDf}}{b{FDf}}}C`}{{{b{FDh}}{b{FDh}}}C`}{{{b{FDj}}{b{FDj}}}C`}{{{b{FDl}}{b{FDl}}}C`}{{{b{FDn}}{b{FDn}}}C`}{{{b{DDb}}{b{DDb}}}C`}{{{b{FE`}}{b{FE`}}}C`}{{{b{DDd}}{b{DDd}}}C`}{{{b{FEb}}{b{FEb}}}C`}{{{b{FEd}}{b{FEd}}}C`}{{{b{FEf}}{b{FEf}}}C`}{{{b{DDf}}{b{DDf}}}C`}{{{b{FEh}}{b{FEh}}}C`}{{{b{FEj}}{b{FEj}}}C`}{{{b{FEl}}{b{FEl}}}C`}{{{b{DDh}}{b{DDh}}}C`}{{{b{FEn}}{b{FEn}}}C`}{{{b{FF`}}{b{FF`}}}C`}{{{b{FFb}}{b{FFb}}}C`}{{{b{FFd}}{b{FFd}}}C`}{{{b{FFf}}{b{FFf}}}C`}{{{b{DDj}}{b{DDj}}}C`}{{{b{FFh}}{b{FFh}}}C`}{{{b{DDl}}{b{DDl}}}C`}{{{b{DDn}}{b{DDn}}}C`}{{{b{FFj}}{b{FFj}}}C`}{{{b{FFl}}{b{FFl}}}C`}{{{b{DE`}}{b{DE`}}}C`}{{{b{FFn}}{b{FFn}}}C`}{{{b{FG`}}{b{FG`}}}C`}{{{b{FGb}}{b{FGb}}}C`}{{{b{FGd}}{b{FGd}}}C`}{{{b{FGf}}{b{FGf}}}C`}{{{b{DEb}}{b{DEb}}}C`}{{{b{FGh}}{b{FGh}}}C`}{{{b{DEd}}{b{DEd}}}C`}{{{b{FGj}}{b{FGj}}}C`}{{{b{FGl}}{b{FGl}}}C`}{{{b{FGn}}{b{FGn}}}C`}{{{b{FH`}}{b{FH`}}}C`}{{{b{FHb}}{b{FHb}}}C`}{{{b{FHd}}{b{FHd}}}C`}{{{b{FHf}}{b{FHf}}}C`}{{{b{FHh}}{b{FHh}}}C`}{{{b{FHj}}{b{FHj}}}C`}{{{b{FHl}}{b{FHl}}}C`}{{{b{FHn}}{b{FHn}}}C`}{{{b{FI`}}{b{FI`}}}C`}{{{b{FIb}}{b{FIb}}}C`}{{{b{FId}}{b{FId}}}C`}{{{b{FIf}}{b{FIf}}}C`}{{{b{FIh}}{b{FIh}}}C`}{{{b{FIj}}{b{FIj}}}C`}{{{b{DEf}}{b{DEf}}}C`}{{{b{FIl}}{b{FIl}}}C`}{{{b{FIn}}{b{FIn}}}C`}{{{b{FJ`}}{b{FJ`}}}C`}{{{b{FJb}}{b{FJb}}}C`}{{{b{FJd}}{b{FJd}}}C`}{{{b{FJf}}{b{FJf}}}C`}{{{b{FJh}}{b{FJh}}}C`}{{{b{DEh}}{b{DEh}}}C`}{{{b{FJj}}{b{FJj}}}C`}{{{b{FJl}}{b{FJl}}}C`}{{{b{FJn}}{b{FJn}}}C`}{{{b{FK`}}{b{FK`}}}C`}{{{b{FKb}}{b{FKb}}}C`}{{{b{FKd}}{b{FKd}}}C`}{{{b{FKf}}{b{FKf}}}C`}{{{b{FKh}}{b{FKh}}}C`}{{{b{DEj}}{b{DEj}}}C`}{{{b{FKj}}{b{FKj}}}C`}{{{b{FKl}}{b{FKl}}}C`}{{{b{FKn}}{b{FKn}}}C`}{{{b{DEl}}{b{DEl}}}C`}{{{b{DEn}}{b{DEn}}}C`}{{{b{FL`}}{b{FL`}}}C`}{{{b{FLb}}{b{FLb}}}C`}{{{b{FLd}}{b{FLd}}}C`}{{{b{FLf}}{b{FLf}}}C`}{{{b{FLh}}{b{FLh}}}C`}{{{b{DF`}}{b{DF`}}}C`}{{{b{FLj}}{b{FLj}}}C`}{{{b{DFb}}{b{DFb}}}C`}{{{b{FLl}}{b{FLl}}}C`}{{{b{FLn}}{b{FLn}}}C`}{{{b{FM`}}{b{FM`}}}C`}{{{b{FMb}}{b{FMb}}}C`}{{{b{FMd}}{b{FMd}}}C`}{{{b{DFd}}{b{DFd}}}C`}{{{b{FMf}}{b{FMf}}}C`}{{{b{FMh}}{b{FMh}}}C`}{{{b{FMj}}{b{FMj}}}C`}{{{b{FMl}}{b{FMl}}}C`}{{{b{FMn}}{b{FMn}}}C`}{{{b{FN`}}{b{FN`}}}C`}{{{b{FNb}}{b{FNb}}}C`}{{{b{FNd}}{b{FNd}}}C`}{{{b{FNf}}{b{FNf}}}C`}{{{b{DFf}}{b{DFf}}}C`}{{{b{FNh}}{b{FNh}}}C`}{{{b{FNj}}{b{FNj}}}C`}{{{b{DFh}}{b{DFh}}}C`}{{{b{DFj}}{b{DFj}}}C`}{{{b{FNl}}{b{FNl}}}C`}{{{b{DFl}}{b{DFl}}}C`}{{{b{FNn}}{b{FNn}}}C`}{{{b{FO`}}{b{FO`}}}C`}{{{b{FOb}}{b{FOb}}}C`}{{{b{FOd}}{b{FOd}}}C`}{{{b{FOf}}{b{FOf}}}C`}{{{b{FOh}}{b{FOh}}}C`}{{{b{FOj}}{b{FOj}}}C`}{{{b{FOl}}{b{FOl}}}C`}{{{b{FOn}}{b{FOn}}}C`}{{{b{DFn}}{b{DFn}}}C`}{{{b{G@`}}{b{G@`}}}C`}{{{b{DG`}}{b{DG`}}}C`}{{{b{G@b}}{b{G@b}}}C`}{{{b{G@d}}{b{G@d}}}C`}{{{b{G@f}}{b{G@f}}}C`}{{{b{G@h}}{b{G@h}}}C`}{{{b{G@j}}{b{G@j}}}C`}{{{b{G@l}}{b{G@l}}}C`}`````````````{{{b{dDD`}}c}Aj{{DBf{}{{DBd{DD`}}}}}}{{{b{dDDb}}c}Aj{{DBf{}{{DBd{DDb}}}}}}{{{b{dDDd}}c}Aj{{DBf{}{{DBd{DDd}}}}}}{{{b{dDDf}}c}Aj{{DBf{}{{DBd{DDf}}}}}}{{{b{dDDh}}c}Aj{{DBf{}{{DBd{DDh}}}}}}{{{b{dDDj}}c}Aj{{DBf{}{{DBd{DDj}}}}}}{{{b{dDDl}}c}Aj{{DBf{}{{DBd{DDl}}}}}}{{{b{dDDn}}c}Aj{{DBf{}{{DBd{DDn}}}}}}{{{b{dDE`}}c}Aj{{DBf{}{{DBd{DE`}}}}}}{{{b{dDEb}}c}Aj{{DBf{}{{DBd{DEb}}}}}}{{{b{dDEd}}c}Aj{{DBf{}{{DBd{DEd}}}}}}{{{b{dDEf}}c}Aj{{DBf{}{{DBd{DEf}}}}}}{{{b{dDEh}}c}Aj{{DBf{}{{DBd{DEh}}}}}}{{{b{dDEj}}c}Aj{{DBf{}{{DBd{DEj}}}}}}{{{b{dDEl}}c}Aj{{DBf{}{{DBd{DEl}}}}}}{{{b{dDEn}}c}Aj{{DBf{}{{DBd{DEn}}}}}}{{{b{dDF`}}c}Aj{{DBf{}{{DBd{DF`}}}}}}{{{b{dDFb}}c}Aj{{DBf{}{{DBd{DFb}}}}}}{{{b{dDFd}}c}Aj{{DBf{}{{DBd{DFd}}}}}}{{{b{dDFf}}c}Aj{{DBf{}{{DBd{DFf}}}}}}{{{b{dDFh}}c}Aj{{DBf{}{{DBd{DFh}}}}}}{{{b{dDFj}}c}Aj{{DBf{}{{DBd{DFj}}}}}}{{{b{dDFl}}c}Aj{{DBf{}{{DBd{DFl}}}}}}{{{b{dDFn}}c}Aj{{DBf{}{{DBd{DFn}}}}}}{{{b{dDG`}}c}Aj{{DBf{}{{DBd{DG`}}}}}}{Bff}`````````````````````````````````````````````````{{{b{DGb}}{b{dCb}}}DBh}{{{b{DGd}}{b{dCb}}}DBh}{{{b{DGf}}{b{dCb}}}DBh}{{{b{DGh}}{b{dCb}}}DBh}{{{b{DGj}}{b{dCb}}}DBh}{{{b{DGl}}{b{dCb}}}DBh}{{{b{DGn}}{b{dCb}}}DBh}{{{b{DH`}}{b{dCb}}}DBh}{{{b{DHb}}{b{dCb}}}DBh}{{{b{DHd}}{b{dCb}}}DBh}{{{b{DHf}}{b{dCb}}}DBh}{{{b{DHh}}{b{dCb}}}DBh}{{{b{DHj}}{b{dCb}}}DBh}{{{b{DHl}}{b{dCb}}}DBh}{{{b{DHn}}{b{dCb}}}DBh}{{{b{DI`}}{b{dCb}}}DBh}{{{b{DIb}}{b{dCb}}}DBh}{{{b{DId}}{b{dCb}}}DBh}{{{b{DIf}}{b{dCb}}}DBh}{{{b{DIh}}{b{dCb}}}DBh}{{{b{DIj}}{b{dCb}}}DBh}{{{b{DIl}}{b{dCb}}}DBh}{{{b{DIn}}{b{dCb}}}DBh}{{{b{DJ`}}{b{dCb}}}DBh}{{{b{DJb}}{b{dCb}}}DBh}{{{b{DJd}}{b{dCb}}}DBh}{{{b{DJf}}{b{dCb}}}DBh}{{{b{DJh}}{b{dCb}}}DBh}{{{b{DJj}}{b{dCb}}}DBh}{{{b{DJl}}{b{dCb}}}DBh}{{{b{DJn}}{b{dCb}}}DBh}{{{b{DK`}}{b{dCb}}}DBh}{{{b{DKb}}{b{dCb}}}DBh}{{{b{DKd}}{b{dCb}}}DBh}{{{b{DKf}}{b{dCb}}}DBh}{{{b{DKh}}{b{dCb}}}DBh}{{{b{DKj}}{b{dCb}}}DBh}{{{b{DKl}}{b{dCb}}}DBh}{{{b{DKn}}{b{dCb}}}DBh}{{{b{DL`}}{b{dCb}}}DBh}{{{b{DLb}}{b{dCb}}}DBh}{{{b{DLd}}{b{dCb}}}DBh}{{{b{DLf}}{b{dCb}}}DBh}{{{b{DLh}}{b{dCb}}}DBh}{{{b{DLj}}{b{dCb}}}DBh}{{{b{DLl}}{b{dCb}}}DBh}{{{b{DLn}}{b{dCb}}}DBh}{{{b{DM`}}{b{dCb}}}DBh}{{{b{DMb}}{b{dCb}}}DBh}{{{b{DMd}}{b{dCb}}}DBh}{{{b{DMf}}{b{dCb}}}DBh}{{{b{DMh}}{b{dCb}}}DBh}{{{b{DMj}}{b{dCb}}}DBh}{{{b{DMl}}{b{dCb}}}DBh}{{{b{DMn}}{b{dCb}}}DBh}{{{b{DN`}}{b{dCb}}}DBh}{{{b{DNb}}{b{dCb}}}DBh}{{{b{DNd}}{b{dCb}}}DBh}{{{b{DNf}}{b{dCb}}}DBh}{{{b{DNh}}{b{dCb}}}DBh}{{{b{DNj}}{b{dCb}}}DBh}{{{b{DNl}}{b{dCb}}}DBh}{{{b{DNn}}{b{dCb}}}DBh}{{{b{DO`}}{b{dCb}}}DBh}{{{b{DOb}}{b{dCb}}}DBh}{{{b{DOd}}{b{dCb}}}DBh}{{{b{DOf}}{b{dCb}}}DBh}{{{b{DOh}}{b{dCb}}}DBh}{{{b{DOj}}{b{dCb}}}DBh}{{{b{DOl}}{b{dCb}}}DBh}{{{b{DOn}}{b{dCb}}}DBh}{{{b{E@`}}{b{dCb}}}DBh}{{{b{E@b}}{b{dCb}}}DBh}{{{b{E@d}}{b{dCb}}}DBh}{{{b{E@f}}{b{dCb}}}DBh}{{{b{E@h}}{b{dCb}}}DBh}{{{b{E@j}}{b{dCb}}}DBh}{{{b{E@l}}{b{dCb}}}DBh}{{{b{E@n}}{b{dCb}}}DBh}{{{b{EA`}}{b{dCb}}}DBh}{{{b{EAb}}{b{dCb}}}DBh}{{{b{EAd}}{b{dCb}}}DBh}{{{b{EAf}}{b{dCb}}}DBh}{{{b{EAh}}{b{dCb}}}DBh}{{{b{EAj}}{b{dCb}}}DBh}{{{b{EAl}}{b{dCb}}}DBh}{{{b{EAn}}{b{dCb}}}DBh}{{{b{EB`}}{b{dCb}}}DBh}{{{b{EBb}}{b{dCb}}}DBh}{{{b{EBd}}{b{dCb}}}DBh}{{{b{EBf}}{b{dCb}}}DBh}{{{b{EBh}}{b{dCb}}}DBh}{{{b{EBj}}{b{dCb}}}DBh}{{{b{EBl}}{b{dCb}}}DBh}{{{b{EBn}}{b{dCb}}}DBh}{{{b{EC`}}{b{dCb}}}DBh}{{{b{ECb}}{b{dCb}}}DBh}{{{b{ECd}}{b{dCb}}}DBh}{{{b{ECf}}{b{dCb}}}DBh}{{{b{ECh}}{b{dCb}}}DBh}{{{b{ECj}}{b{dCb}}}DBh}{{{b{ECl}}{b{dCb}}}DBh}{{{b{ECn}}{b{dCb}}}DBh}{{{b{ED`}}{b{dCb}}}DBh}{{{b{EDb}}{b{dCb}}}DBh}{{{b{EDd}}{b{dCb}}}DBh}{{{b{EDf}}{b{dCb}}}DBh}{{{b{EDh}}{b{dCb}}}DBh}{{{b{EDj}}{b{dCb}}}DBh}{{{b{EDl}}{b{dCb}}}DBh}{{{b{EDn}}{b{dCb}}}DBh}{{{b{EE`}}{b{dCb}}}DBh}{{{b{EEb}}{b{dCb}}}DBh}{{{b{EEd}}{b{dCb}}}DBh}{{{b{EEf}}{b{dCb}}}DBh}{{{b{EEh}}{b{dCb}}}DBh}{{{b{EEj}}{b{dCb}}}DBh}{{{b{EEl}}{b{dCb}}}DBh}{{{b{EEn}}{b{dCb}}}DBh}{{{b{EF`}}{b{dCb}}}DBh}{{{b{EFb}}{b{dCb}}}DBh}{{{b{EFd}}{b{dCb}}}DBh}{{{b{EFf}}{b{dCb}}}DBh}{{{b{EFh}}{b{dCb}}}DBh}{{{b{EFj}}{b{dCb}}}DBh}{{{b{EFl}}{b{dCb}}}DBh}{{{b{EFn}}{b{dCb}}}DBh}{{{b{EG`}}{b{dCb}}}DBh}{{{b{EGb}}{b{dCb}}}DBh}{{{b{EGd}}{b{dCb}}}DBh}{{{b{EGf}}{b{dCb}}}DBh}{{{b{EGh}}{b{dCb}}}DBh}{{{b{EGj}}{b{dCb}}}DBh}{{{b{EGl}}{b{dCb}}}DBh}{{{b{EGn}}{b{dCb}}}DBh}{{{b{EH`}}{b{dCb}}}DBh}{{{b{EHb}}{b{dCb}}}DBh}{{{b{EHd}}{b{dCb}}}DBh}{{{b{EHf}}{b{dCb}}}DBh}{{{b{EHh}}{b{dCb}}}DBh}{{{b{EHj}}{b{dCb}}}DBh}{{{b{EHl}}{b{dCb}}}DBh}{{{b{EHn}}{b{dCb}}}DBh}{{{b{EI`}}{b{dCb}}}DBh}{{{b{EIb}}{b{dCb}}}DBh}{{{b{EId}}{b{dCb}}}DBh}{{{b{EIf}}{b{dCb}}}DBh}{{{b{EIh}}{b{dCb}}}DBh}{{{b{EIj}}{b{dCb}}}DBh}{{{b{EIl}}{b{dCb}}}DBh}{{{b{EIn}}{b{dCb}}}DBh}{{{b{EJ`}}{b{dCb}}}DBh}{{{b{EJb}}{b{dCb}}}DBh}{{{b{EJd}}{b{dCb}}}DBh}{{{b{EJf}}{b{dCb}}}DBh}{{{b{EJh}}{b{dCb}}}DBh}{{{b{EJj}}{b{dCb}}}DBh}{{{b{EJl}}{b{dCb}}}DBh}{{{b{EJn}}{b{dCb}}}DBh}{{{b{EK`}}{b{dCb}}}DBh}{{{b{EKb}}{b{dCb}}}DBh}{{{b{EKd}}{b{dCb}}}DBh}{{{b{EKf}}{b{dCb}}}DBh}{{{b{EKh}}{b{dCb}}}DBh}{{{b{EKj}}{b{dCb}}}DBh}{{{b{EKl}}{b{dCb}}}DBh}{{{b{EKn}}{b{dCb}}}DBh}{{{b{EL`}}{b{dCb}}}DBh}{{{b{ELb}}{b{dCb}}}DBh}{{{b{ELd}}{b{dCb}}}DBh}{{{b{ELf}}{b{dCb}}}DBh}{{{b{ELh}}{b{dCb}}}DBh}{{{b{ELj}}{b{dCb}}}DBh}{{{b{ELl}}{b{dCb}}}DBh}{{{b{ELn}}{b{dCb}}}DBh}{{{b{EM`}}{b{dCb}}}DBh}{{{b{EMb}}{b{dCb}}}DBh}{{{b{EMd}}{b{dCb}}}DBh}{{{b{EMf}}{b{dCb}}}DBh}{{{b{EMh}}{b{dCb}}}DBh}{{{b{EMj}}{b{dCb}}}DBh}{{{b{EMl}}{b{dCb}}}DBh}{{{b{EMn}}{b{dCb}}}DBh}{{{b{EN`}}{b{dCb}}}DBh}{{{b{ENb}}{b{dCb}}}DBh}{{{b{ENd}}{b{dCb}}}DBh}{{{b{ENf}}{b{dCb}}}DBh}{{{b{ENh}}{b{dCb}}}DBh}{{{b{ENj}}{b{dCb}}}DBh}{{{b{ENl}}{b{dCb}}}DBh}{{{b{ENn}}{b{dCb}}}DBh}{{{b{EO`}}{b{dCb}}}DBh}{{{b{EOb}}{b{dCb}}}DBh}{{{b{EOd}}{b{dCb}}}DBh}{{{b{EOf}}{b{dCb}}}DBh}{{{b{EOh}}{b{dCb}}}DBh}{{{b{EOj}}{b{dCb}}}DBh}{{{b{EOl}}{b{dCb}}}DBh}{{{b{EOn}}{b{dCb}}}DBh}{{{b{F@`}}{b{dCb}}}DBh}{{{b{F@b}}{b{dCb}}}DBh}{{{b{F@d}}{b{dCb}}}DBh}{{{b{F@f}}{b{dCb}}}DBh}{{{b{F@h}}{b{dCb}}}DBh}{{{b{F@j}}{b{dCb}}}DBh}{{{b{F@l}}{b{dCb}}}DBh}{{{b{F@n}}{b{dCb}}}DBh}{{{b{FA`}}{b{dCb}}}DBh}{{{b{FAb}}{b{dCb}}}DBh}{{{b{FAd}}{b{dCb}}}DBh}{{{b{FAf}}{b{dCb}}}DBh}{{{b{FAh}}{b{dCb}}}DBh}{{{b{FAj}}{b{dCb}}}DBh}{{{b{FAl}}{b{dCb}}}DBh}{{{b{FAn}}{b{dCb}}}DBh}{{{b{FB`}}{b{dCb}}}DBh}{{{b{FBb}}{b{dCb}}}DBh}{{{b{FBd}}{b{dCb}}}DBh}{{{b{FBf}}{b{dCb}}}DBh}{{{b{FBh}}{b{dCb}}}DBh}{{{b{FBj}}{b{dCb}}}DBh}{{{b{FBl}}{b{dCb}}}DBh}{{{b{FBn}}{b{dCb}}}DBh}{{{b{FC`}}{b{dCb}}}DBh}{{{b{DD`}}{b{dCb}}}DBh}0000{{{b{FCb}}{b{dCb}}}DBh}{{{b{FCd}}{b{dCb}}}DBh}{{{b{FCf}}{b{dCb}}}DBh}{{{b{FCh}}{b{dCb}}}DBh}{{{b{FCj}}{b{dCb}}}DBh}{{{b{FCl}}{b{dCb}}}DBh}{{{b{FCn}}{b{dCb}}}DBh}{{{b{FD`}}{b{dCb}}}DBh}{{{b{FDb}}{b{dCb}}}DBh}{{{b{FDd}}{b{dCb}}}DBh}{{{b{FDf}}{b{dCb}}}DBh}{{{b{FDh}}{b{dCb}}}DBh}{{{b{FDj}}{b{dCb}}}DBh}{{{b{FDl}}{b{dCb}}}DBh}{{{b{FDn}}{b{dCb}}}DBh}{{{b{DDb}}{b{dCb}}}DBh}0000{{{b{FE`}}{b{dCb}}}DBh}{{{b{DDd}}{b{dCb}}}DBh}0000{{{b{FEb}}{b{dCb}}}DBh}{{{b{FEd}}{b{dCb}}}DBh}{{{b{FEf}}{b{dCb}}}DBh}{{{b{DDf}}{b{dCb}}}DBh}0000{{{b{FEh}}{b{dCb}}}DBh}{{{b{FEj}}{b{dCb}}}DBh}{{{b{FEl}}{b{dCb}}}DBh}{{{b{DDh}}{b{dCb}}}DBh}0000{{{b{FEn}}{b{dCb}}}DBh}{{{b{FF`}}{b{dCb}}}DBh}{{{b{FFb}}{b{dCb}}}DBh}{{{b{FFd}}{b{dCb}}}DBh}{{{b{FFf}}{b{dCb}}}DBh}{{{b{DDj}}{b{dCb}}}DBh}0000{{{b{FFh}}{b{dCb}}}DBh}{{{b{DDl}}{b{dCb}}}DBh}0000{{{b{DDn}}{b{dCb}}}DBh}0000{{{b{FFj}}{b{dCb}}}DBh}{{{b{FFl}}{b{dCb}}}DBh}{{{b{DE`}}{b{dCb}}}DBh}0000{{{b{FFn}}{b{dCb}}}DBh}{{{b{FG`}}{b{dCb}}}DBh}{{{b{FGb}}{b{dCb}}}DBh}{{{b{FGd}}{b{dCb}}}DBh}{{{b{FGf}}{b{dCb}}}DBh}{{{b{DEb}}{b{dCb}}}DBh}0000{{{b{FGh}}{b{dCb}}}DBh}{{{b{DEd}}{b{dCb}}}DBh}0000{{{b{FGj}}{b{dCb}}}DBh}{{{b{FGl}}{b{dCb}}}DBh}{{{b{FGn}}{b{dCb}}}DBh}{{{b{FH`}}{b{dCb}}}DBh}{{{b{FHb}}{b{dCb}}}DBh}{{{b{FHd}}{b{dCb}}}DBh}{{{b{FHf}}{b{dCb}}}DBh}{{{b{FHh}}{b{dCb}}}DBh}{{{b{FHj}}{b{dCb}}}DBh}{{{b{FHl}}{b{dCb}}}DBh}{{{b{FHn}}{b{dCb}}}DBh}{{{b{FI`}}{b{dCb}}}DBh}{{{b{FIb}}{b{dCb}}}DBh}{{{b{FId}}{b{dCb}}}DBh}{{{b{FIf}}{b{dCb}}}DBh}{{{b{FIh}}{b{dCb}}}DBh}{{{b{FIj}}{b{dCb}}}DBh}{{{b{DEf}}{b{dCb}}}DBh}0000{{{b{FIl}}{b{dCb}}}DBh}{{{b{FIn}}{b{dCb}}}DBh}{{{b{FJ`}}{b{dCb}}}DBh}{{{b{FJb}}{b{dCb}}}DBh}{{{b{FJd}}{b{dCb}}}DBh}{{{b{FJf}}{b{dCb}}}DBh}{{{b{FJh}}{b{dCb}}}DBh}{{{b{DEh}}{b{dCb}}}DBh}0000{{{b{FJj}}{b{dCb}}}DBh}{{{b{FJl}}{b{dCb}}}DBh}{{{b{FJn}}{b{dCb}}}DBh}{{{b{FK`}}{b{dCb}}}DBh}{{{b{FKb}}{b{dCb}}}DBh}{{{b{FKd}}{b{dCb}}}DBh}{{{b{FKf}}{b{dCb}}}DBh}{{{b{FKh}}{b{dCb}}}DBh}{{{b{DEj}}{b{dCb}}}DBh}0000{{{b{FKj}}{b{dCb}}}DBh}{{{b{FKl}}{b{dCb}}}DBh}{{{b{FKn}}{b{dCb}}}DBh}{{{b{DEl}}{b{dCb}}}DBh}0000{{{b{DEn}}{b{dCb}}}DBh}0000{{{b{FL`}}{b{dCb}}}DBh}{{{b{FLb}}{b{dCb}}}DBh}{{{b{FLd}}{b{dCb}}}DBh}{{{b{FLf}}{b{dCb}}}DBh}{{{b{FLh}}{b{dCb}}}DBh}{{{b{DF`}}{b{dCb}}}DBh}0000{{{b{FLj}}{b{dCb}}}DBh}{{{b{DFb}}{b{dCb}}}DBh}0000{{{b{FLl}}{b{dCb}}}DBh}{{{b{FLn}}{b{dCb}}}DBh}{{{b{FM`}}{b{dCb}}}DBh}{{{b{FMb}}{b{dCb}}}DBh}{{{b{FMd}}{b{dCb}}}DBh}{{{b{DFd}}{b{dCb}}}DBh}0000{{{b{FMf}}{b{dCb}}}DBh}{{{b{FMh}}{b{dCb}}}DBh}{{{b{FMj}}{b{dCb}}}DBh}{{{b{FMl}}{b{dCb}}}DBh}{{{b{FMn}}{b{dCb}}}DBh}{{{b{FN`}}{b{dCb}}}DBh}{{{b{FNb}}{b{dCb}}}DBh}{{{b{FNd}}{b{dCb}}}DBh}{{{b{FNf}}{b{dCb}}}DBh}{{{b{DFf}}{b{dCb}}}DBh}0000{{{b{FNh}}{b{dCb}}}DBh}{{{b{FNj}}{b{dCb}}}DBh}{{{b{DFh}}{b{dCb}}}DBh}0000{{{b{DFj}}{b{dCb}}}DBh}0000{{{b{FNl}}{b{dCb}}}DBh}{{{b{DFl}}{b{dCb}}}DBh}0000{{{b{FNn}}{b{dCb}}}DBh}{{{b{FO`}}{b{dCb}}}DBh}{{{b{FOb}}{b{dCb}}}DBh}{{{b{FOd}}{b{dCb}}}DBh}{{{b{FOf}}{b{dCb}}}DBh}{{{b{FOh}}{b{dCb}}}DBh}{{{b{FOj}}{b{dCb}}}DBh}{{{b{FOl}}{b{dCb}}}DBh}{{{b{FOn}}{b{dCb}}}DBh}{{{b{DFn}}{b{dCb}}}DBh}0000{{{b{G@`}}{b{dCb}}}DBh}{{{b{DG`}}{b{dCb}}}DBh}0000{{{b{G@b}}{b{dCb}}}DBh}{{{b{G@d}}{b{dCb}}}DBh}{{{b{G@f}}{b{dCb}}}DBh}{{{b{G@h}}{b{dCb}}}DBh}{{{b{G@j}}{b{dCb}}}DBh}{{{b{G@l}}{b{dCb}}}DBh}``````````````{cc{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{Bf{{DBj{DD`}}}}{Bf{{DBj{DDb}}}}{f{{DBj{DDd}}}}{j{{DBj{DDf}}}}{j{{DBj{DDh}}}}{f{{DBj{DDj}}}}{Hl{{DBj{DDl}}}}{j{{DBj{DDn}}}}{j{{DBj{DE`}}}}{j{{DBj{DEb}}}}{f{{DBj{DEd}}}}{Bf{{DBj{DEf}}}}{j{{DBj{DEh}}}}{Bf{{DBj{DEj}}}}{Bf{{DBj{DEl}}}}{j{{DBj{DEn}}}}{j{{DBj{DF`}}}}{f{{DBj{DFb}}}}{j{{DBj{DFd}}}}{Hl{{DBj{DFf}}}}{j{{DBj{DFh}}}}{Bf{{DBj{DFj}}}}{f{{DBj{DFl}}}}{j{{DBj{DFn}}}}{Bf{{DBj{DG`}}}}{BfDD`}{BfDDb}{fDDd}{jDDf}{jDDh}{fDDj}{HlDDl}{jDDn}{jDE`}{jDEb}{fDEd}{BfDEf}{jDEh}{BfDEj}{BfDEl}{jDEn}{jDF`}{fDFb}{jDFd}{HlDFf}{jDFh}{BfDFj}{fDFl}{jDFn}{BfDG`}{BfDD`}{BfDDb}{fDDd}{jDDf}{jDDh}{fDDj}{HlDDl}{jDDn}{jDE`}{jDEb}{fDEd}{BfDEf}{jDEh}{BfDEj}{BfDEl}{jDEn}{jDF`}{fDFb}{jDFd}{HlDFf}{jDFh}{BfDFj}{fDFl}{jDFn}{BfDG`}{DBl{{DBj{FBn}}}}{DBl{{DBj{FC`}}}}{DBl{{DBj{FCb}}}}{DBl{{DBj{FCd}}}}{DBl{{DBj{FCf}}}}{DBl{{DBj{FCh}}}}{DBl{{DBj{FCj}}}}{DBl{{DBj{FCl}}}}{DBl{{DBj{FCn}}}}{DBl{{DBj{FD`}}}}{DBl{{DBj{FDb}}}}{DBl{{DBj{FDd}}}}{DBl{{DBj{FDf}}}}{DBl{{DBj{FDh}}}}{DBl{{DBj{FDj}}}}{DBl{{DBj{FDl}}}}{DBl{{DBj{FDn}}}}{DBl{{DBj{FE`}}}}{DBl{{DBj{FEb}}}}{DBl{{DBj{FEd}}}}{DBl{{DBj{FEf}}}}{DBl{{DBj{FEh}}}}{DBl{{DBj{FEj}}}}{DBl{{DBj{FEl}}}}{DBl{{DBj{FEn}}}}{DBl{{DBj{FF`}}}}{DBl{{DBj{FFb}}}}{DBl{{DBj{FFd}}}}{DBl{{DBj{FFf}}}}{DBl{{DBj{FFh}}}}{DBl{{DBj{FFj}}}}{DBl{{DBj{FFl}}}}{DBl{{DBj{FFn}}}}{DBl{{DBj{FG`}}}}{DBl{{DBj{FGb}}}}{DBl{{DBj{FGd}}}}{DBl{{DBj{FGf}}}}{DBl{{DBj{FGh}}}}{DBl{{DBj{FGj}}}}{DBl{{DBj{FGl}}}}{DBl{{DBj{FGn}}}}{DBl{{DBj{FH`}}}}{DBl{{DBj{FHb}}}}{DBl{{DBj{FHd}}}}{DBl{{DBj{FHf}}}}{DBl{{DBj{FHh}}}}{DBl{{DBj{FHj}}}}{DBl{{DBj{FHl}}}}{DBl{{DBj{FHn}}}}{DBl{{DBj{FI`}}}}{DBl{{DBj{FIb}}}}{DBl{{DBj{FId}}}}{DBl{{DBj{FIf}}}}{DBl{{DBj{FIh}}}}{DBl{{DBj{FIj}}}}{DBl{{DBj{FIl}}}}{DBl{{DBj{FIn}}}}{DBl{{DBj{FJ`}}}}{DBl{{DBj{FJb}}}}{DBl{{DBj{FJd}}}}{DBl{{DBj{FJf}}}}{DBl{{DBj{FJh}}}}{DBl{{DBj{FJj}}}}{DBl{{DBj{FJl}}}}{DBl{{DBj{FJn}}}}{DBl{{DBj{FK`}}}}{DBl{{DBj{FKb}}}}{DBl{{DBj{FKd}}}}{DBl{{DBj{FKf}}}}{DBl{{DBj{FKh}}}}{DBl{{DBj{FKj}}}}{DBl{{DBj{FKl}}}}{DBl{{DBj{FKn}}}}{DBl{{DBj{FL`}}}}{DBl{{DBj{FLb}}}}{DBl{{DBj{FLd}}}}{DBl{{DBj{FLf}}}}{DBl{{DBj{FLh}}}}{DBl{{DBj{FLj}}}}{DBl{{DBj{FLl}}}}{DBl{{DBj{FLn}}}}{DBl{{DBj{FM`}}}}{DBl{{DBj{FMb}}}}{DBl{{DBj{FMd}}}}{DBl{{DBj{FMf}}}}{DBl{{DBj{FMh}}}}{DBl{{DBj{FMj}}}}{DBl{{DBj{FMl}}}}{DBl{{DBj{FMn}}}}{DBl{{DBj{FN`}}}}{DBl{{DBj{FNb}}}}{DBl{{DBj{FNd}}}}{DBl{{DBj{FNf}}}}{DBl{{DBj{FNh}}}}{DBl{{DBj{FNj}}}}{DBl{{DBj{FNl}}}}{DBl{{DBj{FNn}}}}{DBl{{DBj{FO`}}}}{DBl{{DBj{FOb}}}}{DBl{{DBj{FOd}}}}{DBl{{DBj{FOf}}}}{DBl{{DBj{FOh}}}}{DBl{{DBj{FOj}}}}{DBl{{DBj{FOl}}}}{DBl{{DBj{FOn}}}}{DBl{{DBj{G@`}}}}{DBl{{DBj{G@b}}}}{DBl{{DBj{G@d}}}}{DBl{{DBj{G@f}}}}{DBl{{DBj{G@h}}}}{DBl{{DBj{G@j}}}}{DBl{{DBj{G@l}}}}{cDD`{{DBf{}{{DBd{DD`}}}}}}{cDDb{{DBf{}{{DBd{DDb}}}}}}{cDDd{{DBf{}{{DBd{DDd}}}}}}{cDDf{{DBf{}{{DBd{DDf}}}}}}{cDDh{{DBf{}{{DBd{DDh}}}}}}{cDDj{{DBf{}{{DBd{DDj}}}}}}{cDDl{{DBf{}{{DBd{DDl}}}}}}{cDDn{{DBf{}{{DBd{DDn}}}}}}{cDE`{{DBf{}{{DBd{DE`}}}}}}{cDEb{{DBf{}{{DBd{DEb}}}}}}{cDEd{{DBf{}{{DBd{DEd}}}}}}{cDEf{{DBf{}{{DBd{DEf}}}}}}{cDEh{{DBf{}{{DBd{DEh}}}}}}{cDEj{{DBf{}{{DBd{DEj}}}}}}{cDEl{{DBf{}{{DBd{DEl}}}}}}{cDEn{{DBf{}{{DBd{DEn}}}}}}{cDF`{{DBf{}{{DBd{DF`}}}}}}{cDFb{{DBf{}{{DBd{DFb}}}}}}{cDFd{{DBf{}{{DBd{DFd}}}}}}{cDFf{{DBf{}{{DBd{DFf}}}}}}{cDFh{{DBf{}{{DBd{DFh}}}}}}{cDFj{{DBf{}{{DBd{DFj}}}}}}{cDFl{{DBf{}{{DBd{DFl}}}}}}{cDFn{{DBf{}{{DBd{DFn}}}}}}{cDG`{{DBf{}{{DBd{DG`}}}}}}{Hl{{DBj{FBn}}}}{Hl{{DBj{FC`}}}}{Hl{{DBj{FCb}}}}{Hl{{DBj{FCd}}}}{Hl{{DBj{FCf}}}}{Hl{{DBj{FCh}}}}{Hl{{DBj{FCj}}}}{Hl{{DBj{FCl}}}}{Hl{{DBj{FCn}}}}{Hl{{DBj{FD`}}}}{Hl{{DBj{FDb}}}}{Hl{{DBj{FDd}}}}{Hl{{DBj{FDf}}}}{Hl{{DBj{FDh}}}}{Hl{{DBj{FDj}}}}{Hl{{DBj{FDl}}}}{Hl{{DBj{FDn}}}}{Hl{{DBj{FE`}}}}{Hl{{DBj{FEb}}}}{Hl{{DBj{FEd}}}}{Hl{{DBj{FEf}}}}{Hl{{DBj{FEh}}}}{Hl{{DBj{FEj}}}}{Hl{{DBj{FEl}}}}{Hl{{DBj{FEn}}}}{Hl{{DBj{FF`}}}}{Hl{{DBj{FFb}}}}{Hl{{DBj{FFd}}}}{Hl{{DBj{FFf}}}}{Hl{{DBj{FFh}}}}{Hl{{DBj{FFj}}}}{Hl{{DBj{FFl}}}}{Hl{{DBj{FFn}}}}{Hl{{DBj{FG`}}}}{Hl{{DBj{FGb}}}}{Hl{{DBj{FGd}}}}{Hl{{DBj{FGf}}}}{Hl{{DBj{FGh}}}}{Hl{{DBj{FGj}}}}{Hl{{DBj{FGl}}}}{Hl{{DBj{FGn}}}}{Hl{{DBj{FH`}}}}{Hl{{DBj{FHb}}}}{Hl{{DBj{FHd}}}}{Hl{{DBj{FHf}}}}{Hl{{DBj{FHh}}}}{Hl{{DBj{FHj}}}}{Hl{{DBj{FHl}}}}{Hl{{DBj{FHn}}}}{Hl{{DBj{FI`}}}}{Hl{{DBj{FIb}}}}{Hl{{DBj{FId}}}}{Hl{{DBj{FIf}}}}{Hl{{DBj{FIh}}}}{Hl{{DBj{FIj}}}}{Hl{{DBj{FIl}}}}{Hl{{DBj{FIn}}}}{Hl{{DBj{FJ`}}}}{Hl{{DBj{FJb}}}}{Hl{{DBj{FJd}}}}{Hl{{DBj{FJf}}}}{Hl{{DBj{FJh}}}}{Hl{{DBj{FJj}}}}{Hl{{DBj{FJl}}}}{Hl{{DBj{FJn}}}}{Hl{{DBj{FK`}}}}{Hl{{DBj{FKb}}}}{Hl{{DBj{FKd}}}}{Hl{{DBj{FKf}}}}{Hl{{DBj{FKh}}}}{Hl{{DBj{FKj}}}}{Hl{{DBj{FKl}}}}{Hl{{DBj{FKn}}}}{Hl{{DBj{FL`}}}}{Hl{{DBj{FLb}}}}{Hl{{DBj{FLd}}}}{Hl{{DBj{FLf}}}}{Hl{{DBj{FLh}}}}{Hl{{DBj{FLj}}}}{Hl{{DBj{FLl}}}}{Hl{{DBj{FLn}}}}{Hl{{DBj{FM`}}}}{Hl{{DBj{FMb}}}}{Hl{{DBj{FMd}}}}{Hl{{DBj{FMf}}}}{Hl{{DBj{FMh}}}}{Hl{{DBj{FMj}}}}{Hl{{DBj{FMl}}}}{Hl{{DBj{FMn}}}}{Hl{{DBj{FN`}}}}{Hl{{DBj{FNb}}}}{Hl{{DBj{FNd}}}}{Hl{{DBj{FNf}}}}{Hl{{DBj{FNh}}}}{Hl{{DBj{FNj}}}}{Hl{{DBj{FNl}}}}{Hl{{DBj{FNn}}}}{Hl{{DBj{FO`}}}}{Hl{{DBj{FOb}}}}{Hl{{DBj{FOd}}}}{Hl{{DBj{FOf}}}}{Hl{{DBj{FOh}}}}{Hl{{DBj{FOj}}}}{Hl{{DBj{FOl}}}}{Hl{{DBj{FOn}}}}{Hl{{DBj{G@`}}}}{Hl{{DBj{G@b}}}}{Hl{{DBj{G@d}}}}{Hl{{DBj{G@f}}}}{Hl{{DBj{G@h}}}}{Hl{{DBj{G@j}}}}{Hl{{DBj{G@l}}}}``````````````````````````````{{{b{DD`}}{b{dc}}}AjDBn}{{{b{DDb}}{b{dc}}}AjDBn}{{{b{DDd}}{b{dc}}}AjDBn}{{{b{DDf}}{b{dc}}}AjDBn}{{{b{DDh}}{b{dc}}}AjDBn}{{{b{DDj}}{b{dc}}}AjDBn}{{{b{DDl}}{b{dc}}}AjDBn}{{{b{DDn}}{b{dc}}}AjDBn}{{{b{DE`}}{b{dc}}}AjDBn}{{{b{DEb}}{b{dc}}}AjDBn}{{{b{DEd}}{b{dc}}}AjDBn}{{{b{DEf}}{b{dc}}}AjDBn}{{{b{DEh}}{b{dc}}}AjDBn}{{{b{DEj}}{b{dc}}}AjDBn}{{{b{DEl}}{b{dc}}}AjDBn}{{{b{DEn}}{b{dc}}}AjDBn}{{{b{DF`}}{b{dc}}}AjDBn}{{{b{DFb}}{b{dc}}}AjDBn}{{{b{DFd}}{b{dc}}}AjDBn}{{{b{DFf}}{b{dc}}}AjDBn}{{{b{DFh}}{b{dc}}}AjDBn}{{{b{DFj}}{b{dc}}}AjDBn}{{{b{DFl}}{b{dc}}}AjDBn}{{{b{DFn}}{b{dc}}}AjDBn}{{{b{DG`}}{b{dc}}}AjDBn}```````````````````````````````````````````````````````````````{{{b{dDD`}}DD`}Aj}{{{b{dDDb}}DDb}Aj}{{{b{dDDd}}DDd}Aj}{{{b{dDDf}}DDf}Aj}{{{b{dDDh}}DDh}Aj}{{{b{dDDj}}DDj}Aj}{{{b{dDDl}}DDl}Aj}{{{b{dDDn}}DDn}Aj}{{{b{dDE`}}DE`}Aj}{{{b{dDEb}}DEb}Aj}{{{b{dDEd}}DEd}Aj}{{{b{dDEf}}DEf}Aj}{{{b{dDEh}}DEh}Aj}{{{b{dDEj}}DEj}Aj}{{{b{dDEl}}DEl}Aj}{{{b{dDEn}}DEn}Aj}{{{b{dDF`}}DF`}Aj}{{{b{dDFb}}DFb}Aj}{{{b{dDFd}}DFd}Aj}{{{b{dDFf}}DFf}Aj}{{{b{dDFh}}DFh}Aj}{{{b{dDFj}}DFj}Aj}{{{b{dDFl}}DFl}Aj}{{{b{dDFn}}DFn}Aj}{{{b{dDG`}}DG`}Aj}``````````````{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}{{{b{DD`}}DD`}C`}{{{b{DDb}}DDb}C`}{{{b{DDd}}DDd}C`}{{{b{DDf}}DDf}C`}{{{b{DDh}}DDh}C`}{{{b{DDj}}DDj}C`}{{{b{DDl}}DDl}C`}{{{b{DDn}}DDn}C`}{{{b{DE`}}DE`}C`}{{{b{DEb}}DEb}C`}{{{b{DEd}}DEd}C`}{{{b{DEf}}DEf}C`}{{{b{DEh}}DEh}C`}{{{b{DEj}}DEj}C`}{{{b{DEl}}DEl}C`}{{{b{DEn}}DEn}C`}{{{b{DF`}}DF`}C`}{{{b{DFb}}DFb}C`}{{{b{DFd}}DFd}C`}{{{b{DFf}}DFf}C`}{{{b{DFh}}DFh}C`}{{{b{DFj}}DFj}C`}{{{b{DFl}}DFl}C`}{{{b{DFn}}DFn}C`}{{{b{DG`}}DG`}C`}`{ce{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{DD`}}}C`}{{{b{DDb}}}C`}{{{b{DDd}}}C`}{{{b{DDf}}}C`}{{{b{DDh}}}C`}{{{b{DDj}}}C`}{{{b{DDl}}}C`}{{{b{DDn}}}C`}{{{b{DE`}}}C`}{{{b{DEb}}}C`}{{{b{DEd}}}C`}{{{b{DEf}}}C`}{{{b{DEh}}}C`}{{{b{DEj}}}C`}{{{b{DEl}}}C`}{{{b{DEn}}}C`}{{{b{DF`}}}C`}{{{b{DFb}}}C`}{{{b{DFd}}}C`}{{{b{DFf}}}C`}{{{b{DFh}}}C`}{{{b{DFj}}}C`}{{{b{DFl}}}C`}{{{b{DFn}}}C`}{{{b{DG`}}}C`}{{{b{DD`}}}C`}{{{b{DDb}}}C`}{{{b{DDd}}}C`}{{{b{DDf}}}C`}{{{b{DDh}}}C`}{{{b{DDj}}}C`}{{{b{DDl}}}C`}{{{b{DDn}}}C`}{{{b{DE`}}}C`}{{{b{DEb}}}C`}{{{b{DEd}}}C`}{{{b{DEf}}}C`}{{{b{DEh}}}C`}{{{b{DEj}}}C`}{{{b{DEl}}}C`}{{{b{DEn}}}C`}{{{b{DF`}}}C`}{{{b{DFb}}}C`}{{{b{DFd}}}C`}{{{b{DFf}}}C`}{{{b{DFh}}}C`}{{{b{DFj}}}C`}{{{b{DFl}}}C`}{{{b{DFn}}}C`}{{{b{DG`}}}C`}```````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{DGb}}}Bf}`{{{b{Al}}}{{Bd{Bf{b{Al}}}}}}{{{b{DGb}}}{{b{Al}}}}```````````````````````````````````````{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}{DFnDFn}{DG`DG`}```````````````````````````````````````````````````````````````````````````````````````````{{AbBf{b{{h{f}}}}}{{Bd{DGbBl}}}}{{{b{DD`}}{b{DD`}}}{{DBj{DBb}}}}{{{b{DDb}}{b{DDb}}}{{DBj{DBb}}}}{{{b{DDd}}{b{DDd}}}{{DBj{DBb}}}}{{{b{DDf}}{b{DDf}}}{{DBj{DBb}}}}{{{b{DDh}}{b{DDh}}}{{DBj{DBb}}}}{{{b{DDj}}{b{DDj}}}{{DBj{DBb}}}}{{{b{DDl}}{b{DDl}}}{{DBj{DBb}}}}{{{b{DDn}}{b{DDn}}}{{DBj{DBb}}}}{{{b{DE`}}{b{DE`}}}{{DBj{DBb}}}}{{{b{DEb}}{b{DEb}}}{{DBj{DBb}}}}{{{b{DEd}}{b{DEd}}}{{DBj{DBb}}}}{{{b{DEf}}{b{DEf}}}{{DBj{DBb}}}}{{{b{DEh}}{b{DEh}}}{{DBj{DBb}}}}{{{b{DEj}}{b{DEj}}}{{DBj{DBb}}}}{{{b{DEl}}{b{DEl}}}{{DBj{DBb}}}}{{{b{DEn}}{b{DEn}}}{{DBj{DBb}}}}{{{b{DF`}}{b{DF`}}}{{DBj{DBb}}}}{{{b{DFb}}{b{DFb}}}{{DBj{DBb}}}}{{{b{DFd}}{b{DFd}}}{{DBj{DBb}}}}{{{b{DFf}}{b{DFf}}}{{DBj{DBb}}}}{{{b{DFh}}{b{DFh}}}{{DBj{DBb}}}}{{{b{DFj}}{b{DFj}}}{{DBj{DBb}}}}{{{b{DFl}}{b{DFl}}}{{DBj{DBb}}}}{{{b{DFn}}{b{DFn}}}{{DBj{DBb}}}}{{{b{DG`}}{b{DG`}}}{{DBj{DBb}}}}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{dDD`}}DD`}Aj}{{{b{dDDb}}DDb}Aj}{{{b{dDDd}}DDd}Aj}{{{b{dDDf}}DDf}Aj}{{{b{dDDh}}DDh}Aj}{{{b{dDDj}}DDj}Aj}{{{b{dDDl}}DDl}Aj}{{{b{dDDn}}DDn}Aj}{{{b{dDE`}}DE`}Aj}{{{b{dDEb}}DEb}Aj}{{{b{dDEd}}DEd}Aj}{{{b{dDEf}}DEf}Aj}{{{b{dDEh}}DEh}Aj}{{{b{dDEj}}DEj}Aj}{{{b{dDEl}}DEl}Aj}{{{b{dDEn}}DEn}Aj}{{{b{dDF`}}DF`}Aj}{{{b{dDFb}}DFb}Aj}{{{b{dDFd}}DFd}Aj}{{{b{dDFf}}DFf}Aj}{{{b{dDFh}}DFh}Aj}{{{b{dDFj}}DFj}Aj}{{{b{dDFl}}DFl}Aj}{{{b{dDFn}}DFn}Aj}{{{b{dDG`}}DG`}Aj}`````````````````````````````````````````````````````````````````````````````````````````````````{{{b{DGb}}Ab{b{d{h{f}}}}}D`}{{{b{DGd}}Ab{b{d{h{f}}}}}D`}{{{b{DGf}}Ab{b{d{h{f}}}}}D`}{{{b{DGh}}Ab{b{d{h{f}}}}}D`}{{{b{DGj}}Ab{b{d{h{f}}}}}D`}{{{b{DGl}}Ab{b{d{h{f}}}}}D`}{{{b{DGn}}Ab{b{d{h{f}}}}}D`}{{{b{DH`}}Ab{b{d{h{f}}}}}D`}{{{b{DHb}}Ab{b{d{h{f}}}}}D`}{{{b{DHd}}Ab{b{d{h{f}}}}}D`}{{{b{DHf}}Ab{b{d{h{f}}}}}D`}{{{b{DHh}}Ab{b{d{h{f}}}}}D`}{{{b{DHj}}Ab{b{d{h{f}}}}}D`}{{{b{DHl}}Ab{b{d{h{f}}}}}D`}{{{b{DHn}}Ab{b{d{h{f}}}}}D`}{{{b{DI`}}Ab{b{d{h{f}}}}}D`}{{{b{DIb}}Ab{b{d{h{f}}}}}D`}{{{b{DId}}Ab{b{d{h{f}}}}}D`}{{{b{DIf}}Ab{b{d{h{f}}}}}D`}{{{b{DIh}}Ab{b{d{h{f}}}}}D`}{{{b{DIj}}Ab{b{d{h{f}}}}}D`}{{{b{DIl}}Ab{b{d{h{f}}}}}D`}{{{b{DIn}}Ab{b{d{h{f}}}}}D`}{{{b{DJ`}}Ab{b{d{h{f}}}}}D`}{{{b{DJb}}Ab{b{d{h{f}}}}}D`}{{{b{DJd}}Ab{b{d{h{f}}}}}D`}{{{b{DJf}}Ab{b{d{h{f}}}}}D`}{{{b{DJh}}Ab{b{d{h{f}}}}}D`}{{{b{DJj}}Ab{b{d{h{f}}}}}D`}{{{b{DJl}}Ab{b{d{h{f}}}}}D`}{{{b{DJn}}Ab{b{d{h{f}}}}}D`}{{{b{DK`}}Ab{b{d{h{f}}}}}D`}{{{b{DKb}}Ab{b{d{h{f}}}}}D`}{{{b{DKd}}Ab{b{d{h{f}}}}}D`}{{{b{DKf}}Ab{b{d{h{f}}}}}D`}{{{b{DKh}}Ab{b{d{h{f}}}}}D`}{{{b{DKj}}Ab{b{d{h{f}}}}}D`}{{{b{DKl}}Ab{b{d{h{f}}}}}D`}{{{b{DKn}}Ab{b{d{h{f}}}}}D`}{{{b{DL`}}Ab{b{d{h{f}}}}}D`}{{{b{DLb}}Ab{b{d{h{f}}}}}D`}{{{b{DLd}}Ab{b{d{h{f}}}}}D`}{{{b{DLf}}Ab{b{d{h{f}}}}}D`}{{{b{DLh}}Ab{b{d{h{f}}}}}D`}{{{b{DLj}}Ab{b{d{h{f}}}}}D`}{{{b{DLl}}Ab{b{d{h{f}}}}}D`}{{{b{DLn}}Ab{b{d{h{f}}}}}D`}{{{b{DM`}}Ab{b{d{h{f}}}}}D`}{{{b{DMb}}Ab{b{d{h{f}}}}}D`}{{{b{DMd}}Ab{b{d{h{f}}}}}D`}{{{b{DMf}}Ab{b{d{h{f}}}}}D`}{{{b{DMh}}Ab{b{d{h{f}}}}}D`}{{{b{DMj}}Ab{b{d{h{f}}}}}D`}{{{b{DMl}}Ab{b{d{h{f}}}}}D`}{{{b{DMn}}Ab{b{d{h{f}}}}}D`}{{{b{DN`}}Ab{b{d{h{f}}}}}D`}{{{b{DNb}}Ab{b{d{h{f}}}}}D`}{{{b{DNd}}Ab{b{d{h{f}}}}}D`}{{{b{DNf}}Ab{b{d{h{f}}}}}D`}{{{b{DNh}}Ab{b{d{h{f}}}}}D`}{{{b{DNj}}Ab{b{d{h{f}}}}}D`}{{{b{DNl}}Ab{b{d{h{f}}}}}D`}{{{b{DNn}}Ab{b{d{h{f}}}}}D`}{{{b{DO`}}Ab{b{d{h{f}}}}}D`}{{{b{DOb}}Ab{b{d{h{f}}}}}D`}{{{b{DOd}}Ab{b{d{h{f}}}}}D`}{{{b{DOf}}Ab{b{d{h{f}}}}}D`}{{{b{DOh}}Ab{b{d{h{f}}}}}D`}{{{b{DOj}}Ab{b{d{h{f}}}}}D`}{{{b{DOl}}Ab{b{d{h{f}}}}}D`}{{{b{DOn}}Ab{b{d{h{f}}}}}D`}{{{b{E@`}}Ab{b{d{h{f}}}}}D`}{{{b{E@b}}Ab{b{d{h{f}}}}}D`}{{{b{E@d}}Ab{b{d{h{f}}}}}D`}{{{b{E@f}}Ab{b{d{h{f}}}}}D`}{{{b{E@h}}Ab{b{d{h{f}}}}}D`}{{{b{E@j}}Ab{b{d{h{f}}}}}D`}{{{b{E@l}}Ab{b{d{h{f}}}}}D`}{{{b{E@n}}Ab{b{d{h{f}}}}}D`}{{{b{EA`}}Ab{b{d{h{f}}}}}D`}{{{b{EAb}}Ab{b{d{h{f}}}}}D`}{{{b{EAd}}Ab{b{d{h{f}}}}}D`}{{{b{EAf}}Ab{b{d{h{f}}}}}D`}{{{b{EAh}}Ab{b{d{h{f}}}}}D`}{{{b{EAj}}Ab{b{d{h{f}}}}}D`}{{{b{EAl}}Ab{b{d{h{f}}}}}D`}{{{b{EAn}}Ab{b{d{h{f}}}}}D`}{{{b{EB`}}Ab{b{d{h{f}}}}}D`}{{{b{EBb}}Ab{b{d{h{f}}}}}D`}{{{b{EBd}}Ab{b{d{h{f}}}}}D`}{{{b{EBf}}Ab{b{d{h{f}}}}}D`}{{{b{EBh}}Ab{b{d{h{f}}}}}D`}{{{b{EBj}}Ab{b{d{h{f}}}}}D`}{{{b{EBl}}Ab{b{d{h{f}}}}}D`}{{{b{EBn}}Ab{b{d{h{f}}}}}D`}{{{b{EC`}}Ab{b{d{h{f}}}}}D`}{{{b{ECb}}Ab{b{d{h{f}}}}}D`}{{{b{ECd}}Ab{b{d{h{f}}}}}D`}{{{b{ECf}}Ab{b{d{h{f}}}}}D`}{{{b{ECh}}Ab{b{d{h{f}}}}}D`}{{{b{ECj}}Ab{b{d{h{f}}}}}D`}{{{b{ECl}}Ab{b{d{h{f}}}}}D`}{{{b{ECn}}Ab{b{d{h{f}}}}}D`}{{{b{ED`}}Ab{b{d{h{f}}}}}D`}{{{b{EDb}}Ab{b{d{h{f}}}}}D`}{{{b{EDd}}Ab{b{d{h{f}}}}}D`}{{{b{EDf}}Ab{b{d{h{f}}}}}D`}{{{b{EDh}}Ab{b{d{h{f}}}}}D`}{{{b{EDj}}Ab{b{d{h{f}}}}}D`}{{{b{EDl}}Ab{b{d{h{f}}}}}D`}{{{b{EDn}}Ab{b{d{h{f}}}}}D`}{{{b{EE`}}Ab{b{d{h{f}}}}}D`}{{{b{EEb}}Ab{b{d{h{f}}}}}D`}{{{b{EEd}}Ab{b{d{h{f}}}}}D`}{{{b{EEf}}Ab{b{d{h{f}}}}}D`}{{{b{EEh}}Ab{b{d{h{f}}}}}D`}{{{b{EEj}}Ab{b{d{h{f}}}}}D`}{{{b{EEl}}Ab{b{d{h{f}}}}}D`}{{{b{EEn}}Ab{b{d{h{f}}}}}D`}{{{b{EF`}}Ab{b{d{h{f}}}}}D`}{{{b{EFb}}Ab{b{d{h{f}}}}}D`}{{{b{EFd}}Ab{b{d{h{f}}}}}D`}{{{b{EFf}}Ab{b{d{h{f}}}}}D`}{{{b{EFh}}Ab{b{d{h{f}}}}}D`}{{{b{EFj}}Ab{b{d{h{f}}}}}D`}{{{b{EFl}}Ab{b{d{h{f}}}}}D`}{{{b{EFn}}Ab{b{d{h{f}}}}}D`}{{{b{EG`}}Ab{b{d{h{f}}}}}D`}{{{b{EGb}}Ab{b{d{h{f}}}}}D`}{{{b{EGd}}Ab{b{d{h{f}}}}}D`}{{{b{EGf}}Ab{b{d{h{f}}}}}D`}{{{b{EGh}}Ab{b{d{h{f}}}}}D`}{{{b{EGj}}Ab{b{d{h{f}}}}}D`}{{{b{EGl}}Ab{b{d{h{f}}}}}D`}{{{b{EGn}}Ab{b{d{h{f}}}}}D`}{{{b{EH`}}Ab{b{d{h{f}}}}}D`}{{{b{EHb}}Ab{b{d{h{f}}}}}D`}{{{b{EHd}}Ab{b{d{h{f}}}}}D`}{{{b{EHf}}Ab{b{d{h{f}}}}}D`}{{{b{EHh}}Ab{b{d{h{f}}}}}D`}{{{b{EHj}}Ab{b{d{h{f}}}}}D`}{{{b{EHl}}Ab{b{d{h{f}}}}}D`}{{{b{EHn}}Ab{b{d{h{f}}}}}D`}{{{b{EI`}}Ab{b{d{h{f}}}}}D`}{{{b{EIb}}Ab{b{d{h{f}}}}}D`}{{{b{EId}}Ab{b{d{h{f}}}}}D`}{{{b{EIf}}Ab{b{d{h{f}}}}}D`}{{{b{EIh}}Ab{b{d{h{f}}}}}D`}{{{b{EIj}}Ab{b{d{h{f}}}}}D`}{{{b{EIl}}Ab{b{d{h{f}}}}}D`}{{{b{EIn}}Ab{b{d{h{f}}}}}D`}{{{b{EJ`}}Ab{b{d{h{f}}}}}D`}{{{b{EJb}}Ab{b{d{h{f}}}}}D`}{{{b{EJd}}Ab{b{d{h{f}}}}}D`}{{{b{EJf}}Ab{b{d{h{f}}}}}D`}{{{b{EJh}}Ab{b{d{h{f}}}}}D`}{{{b{EJj}}Ab{b{d{h{f}}}}}D`}{{{b{EJl}}Ab{b{d{h{f}}}}}D`}{{{b{EJn}}Ab{b{d{h{f}}}}}D`}{{{b{EK`}}Ab{b{d{h{f}}}}}D`}{{{b{EKb}}Ab{b{d{h{f}}}}}D`}{{{b{EKd}}Ab{b{d{h{f}}}}}D`}{{{b{EKf}}Ab{b{d{h{f}}}}}D`}{{{b{EKh}}Ab{b{d{h{f}}}}}D`}{{{b{EKj}}Ab{b{d{h{f}}}}}D`}{{{b{EKl}}Ab{b{d{h{f}}}}}D`}{{{b{EKn}}Ab{b{d{h{f}}}}}D`}{{{b{EL`}}Ab{b{d{h{f}}}}}D`}{{{b{ELb}}Ab{b{d{h{f}}}}}D`}{{{b{ELd}}Ab{b{d{h{f}}}}}D`}{{{b{ELf}}Ab{b{d{h{f}}}}}D`}{{{b{ELh}}Ab{b{d{h{f}}}}}D`}{{{b{ELj}}Ab{b{d{h{f}}}}}D`}{{{b{ELl}}Ab{b{d{h{f}}}}}D`}{{{b{ELn}}Ab{b{d{h{f}}}}}D`}{{{b{EM`}}Ab{b{d{h{f}}}}}D`}{{{b{EMb}}Ab{b{d{h{f}}}}}D`}{{{b{EMd}}Ab{b{d{h{f}}}}}D`}{{{b{EMf}}Ab{b{d{h{f}}}}}D`}{{{b{EMh}}Ab{b{d{h{f}}}}}D`}{{{b{EMj}}Ab{b{d{h{f}}}}}D`}{{{b{EMl}}Ab{b{d{h{f}}}}}D`}{{{b{EMn}}Ab{b{d{h{f}}}}}D`}{{{b{EN`}}Ab{b{d{h{f}}}}}D`}{{{b{ENb}}Ab{b{d{h{f}}}}}D`}{{{b{ENd}}Ab{b{d{h{f}}}}}D`}{{{b{ENf}}Ab{b{d{h{f}}}}}D`}{{{b{ENh}}Ab{b{d{h{f}}}}}D`}{{{b{ENj}}Ab{b{d{h{f}}}}}D`}{{{b{ENl}}Ab{b{d{h{f}}}}}D`}{{{b{ENn}}Ab{b{d{h{f}}}}}D`}{{{b{EO`}}Ab{b{d{h{f}}}}}D`}{{{b{EOb}}Ab{b{d{h{f}}}}}D`}{{{b{EOd}}Ab{b{d{h{f}}}}}D`}{{{b{EOf}}Ab{b{d{h{f}}}}}D`}{{{b{EOh}}Ab{b{d{h{f}}}}}D`}{{{b{EOj}}Ab{b{d{h{f}}}}}D`}{{{b{EOl}}Ab{b{d{h{f}}}}}D`}{{{b{EOn}}Ab{b{d{h{f}}}}}D`}{{{b{F@`}}Ab{b{d{h{f}}}}}D`}{{{b{F@b}}Ab{b{d{h{f}}}}}D`}{{{b{F@d}}Ab{b{d{h{f}}}}}D`}{{{b{F@f}}Ab{b{d{h{f}}}}}D`}{{{b{F@h}}Ab{b{d{h{f}}}}}D`}{{{b{F@j}}Ab{b{d{h{f}}}}}D`}{{{b{F@l}}Ab{b{d{h{f}}}}}D`}{{{b{F@n}}Ab{b{d{h{f}}}}}D`}{{{b{FA`}}Ab{b{d{h{f}}}}}D`}{{{b{FAb}}Ab{b{d{h{f}}}}}D`}{{{b{FAd}}Ab{b{d{h{f}}}}}D`}{{{b{FAf}}Ab{b{d{h{f}}}}}D`}{{{b{FAh}}Ab{b{d{h{f}}}}}D`}{{{b{FAj}}Ab{b{d{h{f}}}}}D`}{{{b{FAl}}Ab{b{d{h{f}}}}}D`}{{{b{FAn}}Ab{b{d{h{f}}}}}D`}{{{b{FB`}}Ab{b{d{h{f}}}}}D`}{{{b{FBb}}Ab{b{d{h{f}}}}}D`}{{{b{FBd}}Ab{b{d{h{f}}}}}D`}{{{b{FBf}}Ab{b{d{h{f}}}}}D`}{{{b{FBh}}Ab{b{d{h{f}}}}}D`}{{{b{FBj}}Ab{b{d{h{f}}}}}D`}{{{b{FBl}}Ab{b{d{h{f}}}}}D`}`{{{b{DGb}}c}BdDd}{{{b{DGd}}c}BdDd}{{{b{DGf}}c}BdDd}{{{b{DGh}}c}BdDd}{{{b{DGj}}c}BdDd}{{{b{DGl}}c}BdDd}{{{b{DGn}}c}BdDd}{{{b{DH`}}c}BdDd}{{{b{DHb}}c}BdDd}{{{b{DHd}}c}BdDd}{{{b{DHf}}c}BdDd}{{{b{DHh}}c}BdDd}{{{b{DHj}}c}BdDd}{{{b{DHl}}c}BdDd}{{{b{DHn}}c}BdDd}{{{b{DI`}}c}BdDd}{{{b{DIb}}c}BdDd}{{{b{DId}}c}BdDd}{{{b{DIf}}c}BdDd}{{{b{DIh}}c}BdDd}{{{b{DIj}}c}BdDd}{{{b{DIl}}c}BdDd}{{{b{DIn}}c}BdDd}{{{b{DJ`}}c}BdDd}{{{b{DJb}}c}BdDd}{{{b{DJd}}c}BdDd}{{{b{DJf}}c}BdDd}{{{b{DJh}}c}BdDd}{{{b{DJj}}c}BdDd}{{{b{DJl}}c}BdDd}{{{b{DJn}}c}BdDd}{{{b{DK`}}c}BdDd}{{{b{DKb}}c}BdDd}{{{b{DKd}}c}BdDd}{{{b{DKf}}c}BdDd}{{{b{DKh}}c}BdDd}{{{b{DKj}}c}BdDd}{{{b{DKl}}c}BdDd}{{{b{DKn}}c}BdDd}{{{b{DL`}}c}BdDd}{{{b{DLb}}c}BdDd}{{{b{DLd}}c}BdDd}{{{b{DLf}}c}BdDd}{{{b{DLh}}c}BdDd}{{{b{DLj}}c}BdDd}{{{b{DLl}}c}BdDd}{{{b{DLn}}c}BdDd}{{{b{DM`}}c}BdDd}{{{b{DMb}}c}BdDd}{{{b{DMd}}c}BdDd}{{{b{DMf}}c}BdDd}{{{b{DMh}}c}BdDd}{{{b{DMj}}c}BdDd}{{{b{DMl}}c}BdDd}{{{b{DMn}}c}BdDd}{{{b{DN`}}c}BdDd}{{{b{DNb}}c}BdDd}{{{b{DNd}}c}BdDd}{{{b{DNf}}c}BdDd}{{{b{DNh}}c}BdDd}{{{b{DNj}}c}BdDd}{{{b{DNl}}c}BdDd}{{{b{DNn}}c}BdDd}{{{b{DO`}}c}BdDd}{{{b{DOb}}c}BdDd}{{{b{DOd}}c}BdDd}{{{b{DOf}}c}BdDd}{{{b{DOh}}c}BdDd}{{{b{DOj}}c}BdDd}{{{b{DOl}}c}BdDd}{{{b{DOn}}c}BdDd}{{{b{E@`}}c}BdDd}{{{b{E@b}}c}BdDd}{{{b{E@d}}c}BdDd}{{{b{E@f}}c}BdDd}{{{b{E@h}}c}BdDd}{{{b{E@j}}c}BdDd}{{{b{E@l}}c}BdDd}{{{b{E@n}}c}BdDd}{{{b{EA`}}c}BdDd}{{{b{EAb}}c}BdDd}{{{b{EAd}}c}BdDd}{{{b{EAf}}c}BdDd}{{{b{EAh}}c}BdDd}{{{b{EAj}}c}BdDd}{{{b{EAl}}c}BdDd}{{{b{EAn}}c}BdDd}{{{b{EB`}}c}BdDd}{{{b{EBb}}c}BdDd}{{{b{EBd}}c}BdDd}{{{b{EBf}}c}BdDd}{{{b{EBh}}c}BdDd}{{{b{EBj}}c}BdDd}{{{b{EBl}}c}BdDd}{{{b{EBn}}c}BdDd}{{{b{EC`}}c}BdDd}{{{b{ECb}}c}BdDd}{{{b{ECd}}c}BdDd}{{{b{ECf}}c}BdDd}{{{b{ECh}}c}BdDd}{{{b{ECj}}c}BdDd}{{{b{ECl}}c}BdDd}{{{b{ECn}}c}BdDd}{{{b{ED`}}c}BdDd}{{{b{EDb}}c}BdDd}{{{b{EDd}}c}BdDd}{{{b{EDf}}c}BdDd}{{{b{EDh}}c}BdDd}{{{b{EDj}}c}BdDd}{{{b{EDl}}c}BdDd}{{{b{EDn}}c}BdDd}{{{b{EE`}}c}BdDd}{{{b{EEb}}c}BdDd}{{{b{EEd}}c}BdDd}{{{b{EEf}}c}BdDd}{{{b{EEh}}c}BdDd}{{{b{EEj}}c}BdDd}{{{b{EEl}}c}BdDd}{{{b{EEn}}c}BdDd}{{{b{EF`}}c}BdDd}{{{b{EFb}}c}BdDd}{{{b{EFd}}c}BdDd}{{{b{EFf}}c}BdDd}{{{b{EFh}}c}BdDd}{{{b{EFj}}c}BdDd}{{{b{EFl}}c}BdDd}{{{b{EFn}}c}BdDd}{{{b{EG`}}c}BdDd}{{{b{EGb}}c}BdDd}{{{b{EGd}}c}BdDd}{{{b{EGf}}c}BdDd}{{{b{EGh}}c}BdDd}{{{b{EGj}}c}BdDd}{{{b{EGl}}c}BdDd}{{{b{EGn}}c}BdDd}{{{b{EH`}}c}BdDd}{{{b{EHb}}c}BdDd}{{{b{EHd}}c}BdDd}{{{b{EHf}}c}BdDd}{{{b{EHh}}c}BdDd}{{{b{EHj}}c}BdDd}{{{b{EHl}}c}BdDd}{{{b{EHn}}c}BdDd}{{{b{EI`}}c}BdDd}{{{b{EIb}}c}BdDd}{{{b{EId}}c}BdDd}{{{b{EIf}}c}BdDd}{{{b{EIh}}c}BdDd}{{{b{EIj}}c}BdDd}{{{b{EIl}}c}BdDd}{{{b{EIn}}c}BdDd}{{{b{EJ`}}c}BdDd}{{{b{EJb}}c}BdDd}{{{b{EJd}}c}BdDd}{{{b{EJf}}c}BdDd}{{{b{EJh}}c}BdDd}{{{b{EJj}}c}BdDd}{{{b{EJl}}c}BdDd}{{{b{EJn}}c}BdDd}{{{b{EK`}}c}BdDd}{{{b{EKb}}c}BdDd}{{{b{EKd}}c}BdDd}{{{b{EKf}}c}BdDd}{{{b{EKh}}c}BdDd}{{{b{EKj}}c}BdDd}{{{b{EKl}}c}BdDd}{{{b{EKn}}c}BdDd}{{{b{EL`}}c}BdDd}{{{b{ELb}}c}BdDd}{{{b{ELd}}c}BdDd}{{{b{ELf}}c}BdDd}{{{b{ELh}}c}BdDd}{{{b{ELj}}c}BdDd}{{{b{ELl}}c}BdDd}{{{b{ELn}}c}BdDd}{{{b{EM`}}c}BdDd}{{{b{EMb}}c}BdDd}{{{b{EMd}}c}BdDd}{{{b{EMf}}c}BdDd}{{{b{EMh}}c}BdDd}{{{b{EMj}}c}BdDd}{{{b{EMl}}c}BdDd}{{{b{EMn}}c}BdDd}{{{b{EN`}}c}BdDd}{{{b{ENb}}c}BdDd}{{{b{ENd}}c}BdDd}{{{b{ENf}}c}BdDd}{{{b{ENh}}c}BdDd}{{{b{ENj}}c}BdDd}{{{b{ENl}}c}BdDd}{{{b{ENn}}c}BdDd}{{{b{EO`}}c}BdDd}{{{b{EOb}}c}BdDd}{{{b{EOd}}c}BdDd}{{{b{EOf}}c}BdDd}{{{b{EOh}}c}BdDd}{{{b{EOj}}c}BdDd}{{{b{EOl}}c}BdDd}{{{b{EOn}}c}BdDd}{{{b{F@`}}c}BdDd}{{{b{F@b}}c}BdDd}{{{b{F@d}}c}BdDd}{{{b{F@f}}c}BdDd}{{{b{F@h}}c}BdDd}{{{b{F@j}}c}BdDd}{{{b{F@l}}c}BdDd}{{{b{F@n}}c}BdDd}{{{b{FA`}}c}BdDd}{{{b{FAb}}c}BdDd}{{{b{FAd}}c}BdDd}{{{b{FAf}}c}BdDd}{{{b{FAh}}c}BdDd}{{{b{FAj}}c}BdDd}{{{b{FAl}}c}BdDd}{{{b{FAn}}c}BdDd}{{{b{FB`}}c}BdDd}{{{b{FBb}}c}BdDd}{{{b{FBd}}c}BdDd}{{{b{FBf}}c}BdDd}{{{b{FBh}}c}BdDd}{{{b{FBj}}c}BdDd}{{{b{FBl}}c}BdDd}{{{b{FBn}}c}BdDd}{{{b{FC`}}c}BdDd}{{{b{DD`}}c}BdDd}{{{b{FCb}}c}BdDd}{{{b{FCd}}c}BdDd}{{{b{FCf}}c}BdDd}{{{b{FCh}}c}BdDd}{{{b{FCj}}c}BdDd}{{{b{FCl}}c}BdDd}{{{b{FCn}}c}BdDd}{{{b{FD`}}c}BdDd}{{{b{FDb}}c}BdDd}{{{b{FDd}}c}BdDd}{{{b{FDf}}c}BdDd}{{{b{FDh}}c}BdDd}{{{b{FDj}}c}BdDd}{{{b{FDl}}c}BdDd}{{{b{FDn}}c}BdDd}{{{b{DDb}}c}BdDd}{{{b{FE`}}c}BdDd}{{{b{DDd}}c}BdDd}{{{b{FEb}}c}BdDd}{{{b{FEd}}c}BdDd}{{{b{FEf}}c}BdDd}{{{b{DDf}}c}BdDd}{{{b{FEh}}c}BdDd}{{{b{FEj}}c}BdDd}{{{b{FEl}}c}BdDd}{{{b{DDh}}c}BdDd}{{{b{FEn}}c}BdDd}{{{b{FF`}}c}BdDd}{{{b{FFb}}c}BdDd}{{{b{FFd}}c}BdDd}{{{b{FFf}}c}BdDd}{{{b{DDj}}c}BdDd}{{{b{FFh}}c}BdDd}{{{b{DDl}}c}BdDd}{{{b{DDn}}c}BdDd}{{{b{FFj}}c}BdDd}{{{b{FFl}}c}BdDd}{{{b{DE`}}c}BdDd}{{{b{FFn}}c}BdDd}{{{b{FG`}}c}BdDd}{{{b{FGb}}c}BdDd}{{{b{FGd}}c}BdDd}{{{b{FGf}}c}BdDd}{{{b{DEb}}c}BdDd}{{{b{FGh}}c}BdDd}{{{b{DEd}}c}BdDd}{{{b{FGj}}c}BdDd}{{{b{FGl}}c}BdDd}{{{b{FGn}}c}BdDd}{{{b{FH`}}c}BdDd}{{{b{FHb}}c}BdDd}{{{b{FHd}}c}BdDd}{{{b{FHf}}c}BdDd}{{{b{FHh}}c}BdDd}{{{b{FHj}}c}BdDd}{{{b{FHl}}c}BdDd}{{{b{FHn}}c}BdDd}{{{b{FI`}}c}BdDd}{{{b{FIb}}c}BdDd}{{{b{FId}}c}BdDd}{{{b{FIf}}c}BdDd}{{{b{FIh}}c}BdDd}{{{b{FIj}}c}BdDd}{{{b{DEf}}c}BdDd}{{{b{FIl}}c}BdDd}{{{b{FIn}}c}BdDd}{{{b{FJ`}}c}BdDd}{{{b{FJb}}c}BdDd}{{{b{FJd}}c}BdDd}{{{b{FJf}}c}BdDd}{{{b{FJh}}c}BdDd}{{{b{DEh}}c}BdDd}{{{b{FJj}}c}BdDd}{{{b{FJl}}c}BdDd}{{{b{FJn}}c}BdDd}{{{b{FK`}}c}BdDd}{{{b{FKb}}c}BdDd}{{{b{FKd}}c}BdDd}{{{b{FKf}}c}BdDd}{{{b{FKh}}c}BdDd}{{{b{DEj}}c}BdDd}{{{b{FKj}}c}BdDd}{{{b{FKl}}c}BdDd}{{{b{FKn}}c}BdDd}{{{b{DEl}}c}BdDd}{{{b{DEn}}c}BdDd}{{{b{FL`}}c}BdDd}{{{b{FLb}}c}BdDd}{{{b{FLd}}c}BdDd}{{{b{FLf}}c}BdDd}{{{b{FLh}}c}BdDd}{{{b{DF`}}c}BdDd}{{{b{FLj}}c}BdDd}{{{b{DFb}}c}BdDd}{{{b{FLl}}c}BdDd}{{{b{FLn}}c}BdDd}{{{b{FM`}}c}BdDd}{{{b{FMb}}c}BdDd}{{{b{FMd}}c}BdDd}{{{b{DFd}}c}BdDd}{{{b{FMf}}c}BdDd}{{{b{FMh}}c}BdDd}{{{b{FMj}}c}BdDd}{{{b{FMl}}c}BdDd}{{{b{FMn}}c}BdDd}{{{b{FN`}}c}BdDd}{{{b{FNb}}c}BdDd}{{{b{FNd}}c}BdDd}{{{b{FNf}}c}BdDd}{{{b{DFf}}c}BdDd}{{{b{FNh}}c}BdDd}{{{b{FNj}}c}BdDd}{{{b{DFh}}c}BdDd}{{{b{DFj}}c}BdDd}{{{b{FNl}}c}BdDd}{{{b{DFl}}c}BdDd}{{{b{FNn}}c}BdDd}{{{b{FO`}}c}BdDd}{{{b{FOb}}c}BdDd}{{{b{FOd}}c}BdDd}{{{b{FOf}}c}BdDd}{{{b{FOh}}c}BdDd}{{{b{FOj}}c}BdDd}{{{b{FOl}}c}BdDd}{{{b{FOn}}c}BdDd}{{{b{DFn}}c}BdDd}{{{b{G@`}}c}BdDd}{{{b{DG`}}c}BdDd}{{{b{G@b}}c}BdDd}{{{b{G@d}}c}BdDd}{{{b{G@f}}c}BdDd}{{{b{G@h}}c}BdDd}{{{b{G@j}}c}BdDd}{{{b{G@l}}c}BdDd}````````{{{b{dDD`}}DD`C`}Aj}{{{b{dDDb}}DDbC`}Aj}{{{b{dDDd}}DDdC`}Aj}{{{b{dDDf}}DDfC`}Aj}{{{b{dDDh}}DDhC`}Aj}{{{b{dDDj}}DDjC`}Aj}{{{b{dDDl}}DDlC`}Aj}{{{b{dDDn}}DDnC`}Aj}{{{b{dDE`}}DE`C`}Aj}{{{b{dDEb}}DEbC`}Aj}{{{b{dDEd}}DEdC`}Aj}{{{b{dDEf}}DEfC`}Aj}{{{b{dDEh}}DEhC`}Aj}{{{b{dDEj}}DEjC`}Aj}{{{b{dDEl}}DElC`}Aj}{{{b{dDEn}}DEnC`}Aj}{{{b{dDF`}}DF`C`}Aj}{{{b{dDFb}}DFbC`}Aj}{{{b{dDFd}}DFdC`}Aj}{{{b{dDFf}}DFfC`}Aj}{{{b{dDFh}}DFhC`}Aj}{{{b{dDFj}}DFjC`}Aj}{{{b{dDFl}}DFlC`}Aj}{{{b{dDFn}}DFnC`}Aj}{{{b{dDG`}}DG`C`}Aj}````````````````````````````````````````{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}{{{b{dDD`}}DD`}Aj}{{{b{dDDb}}DDb}Aj}{{{b{dDDd}}DDd}Aj}{{{b{dDDf}}DDf}Aj}{{{b{dDDh}}DDh}Aj}{{{b{dDDj}}DDj}Aj}{{{b{dDDl}}DDl}Aj}{{{b{dDDn}}DDn}Aj}{{{b{dDE`}}DE`}Aj}{{{b{dDEb}}DEb}Aj}{{{b{dDEd}}DEd}Aj}{{{b{dDEf}}DEf}Aj}{{{b{dDEh}}DEh}Aj}{{{b{dDEj}}DEj}Aj}{{{b{dDEl}}DEl}Aj}{{{b{dDEn}}DEn}Aj}{{{b{dDF`}}DF`}Aj}{{{b{dDFb}}DFb}Aj}{{{b{dDFd}}DFd}Aj}{{{b{dDFf}}DFf}Aj}{{{b{dDFh}}DFh}Aj}{{{b{dDFj}}DFj}Aj}{{{b{dDFl}}DFl}Aj}{{{b{dDFn}}DFn}Aj}{{{b{dDG`}}DG`}Aj}`````{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{FBn}}}{{DBj{DBl}}}}{{{b{FC`}}}{{DBj{DBl}}}}{{{b{FCb}}}{{DBj{DBl}}}}{{{b{FCd}}}{{DBj{DBl}}}}{{{b{FCf}}}{{DBj{DBl}}}}{{{b{FCh}}}{{DBj{DBl}}}}{{{b{FCj}}}{{DBj{DBl}}}}{{{b{FCl}}}{{DBj{DBl}}}}{{{b{FCn}}}{{DBj{DBl}}}}{{{b{FD`}}}{{DBj{DBl}}}}{{{b{FDb}}}{{DBj{DBl}}}}{{{b{FDd}}}{{DBj{DBl}}}}{{{b{FDf}}}{{DBj{DBl}}}}{{{b{FDh}}}{{DBj{DBl}}}}{{{b{FDj}}}{{DBj{DBl}}}}{{{b{FDl}}}{{DBj{DBl}}}}{{{b{FDn}}}{{DBj{DBl}}}}{{{b{FE`}}}{{DBj{DBl}}}}{{{b{FEb}}}{{DBj{DBl}}}}{{{b{FEd}}}{{DBj{DBl}}}}{{{b{FEf}}}{{DBj{DBl}}}}{{{b{FEh}}}{{DBj{DBl}}}}{{{b{FEj}}}{{DBj{DBl}}}}{{{b{FEl}}}{{DBj{DBl}}}}{{{b{FEn}}}{{DBj{DBl}}}}{{{b{FF`}}}{{DBj{DBl}}}}{{{b{FFb}}}{{DBj{DBl}}}}{{{b{FFd}}}{{DBj{DBl}}}}{{{b{FFf}}}{{DBj{DBl}}}}{{{b{FFh}}}{{DBj{DBl}}}}{{{b{FFj}}}{{DBj{DBl}}}}{{{b{FFl}}}{{DBj{DBl}}}}{{{b{FFn}}}{{DBj{DBl}}}}{{{b{FG`}}}{{DBj{DBl}}}}{{{b{FGb}}}{{DBj{DBl}}}}{{{b{FGd}}}{{DBj{DBl}}}}{{{b{FGf}}}{{DBj{DBl}}}}{{{b{FGh}}}{{DBj{DBl}}}}{{{b{FGj}}}{{DBj{DBl}}}}{{{b{FGl}}}{{DBj{DBl}}}}{{{b{FGn}}}{{DBj{DBl}}}}{{{b{FH`}}}{{DBj{DBl}}}}{{{b{FHb}}}{{DBj{DBl}}}}{{{b{FHd}}}{{DBj{DBl}}}}{{{b{FHf}}}{{DBj{DBl}}}}{{{b{FHh}}}{{DBj{DBl}}}}{{{b{FHj}}}{{DBj{DBl}}}}{{{b{FHl}}}{{DBj{DBl}}}}{{{b{FHn}}}{{DBj{DBl}}}}{{{b{FI`}}}{{DBj{DBl}}}}{{{b{FIb}}}{{DBj{DBl}}}}{{{b{FId}}}{{DBj{DBl}}}}{{{b{FIf}}}{{DBj{DBl}}}}{{{b{FIh}}}{{DBj{DBl}}}}{{{b{FIj}}}{{DBj{DBl}}}}{{{b{FIl}}}{{DBj{DBl}}}}{{{b{FIn}}}{{DBj{DBl}}}}{{{b{FJ`}}}{{DBj{DBl}}}}{{{b{FJb}}}{{DBj{DBl}}}}{{{b{FJd}}}{{DBj{DBl}}}}{{{b{FJf}}}{{DBj{DBl}}}}{{{b{FJh}}}{{DBj{DBl}}}}{{{b{FJj}}}{{DBj{DBl}}}}{{{b{FJl}}}{{DBj{DBl}}}}{{{b{FJn}}}{{DBj{DBl}}}}{{{b{FK`}}}{{DBj{DBl}}}}{{{b{FKb}}}{{DBj{DBl}}}}{{{b{FKd}}}{{DBj{DBl}}}}{{{b{FKf}}}{{DBj{DBl}}}}{{{b{FKh}}}{{DBj{DBl}}}}{{{b{FKj}}}{{DBj{DBl}}}}{{{b{FKl}}}{{DBj{DBl}}}}{{{b{FKn}}}{{DBj{DBl}}}}{{{b{FL`}}}{{DBj{DBl}}}}{{{b{FLb}}}{{DBj{DBl}}}}{{{b{FLd}}}{{DBj{DBl}}}}{{{b{FLf}}}{{DBj{DBl}}}}{{{b{FLh}}}{{DBj{DBl}}}}{{{b{FLj}}}{{DBj{DBl}}}}{{{b{FLl}}}{{DBj{DBl}}}}{{{b{FLn}}}{{DBj{DBl}}}}{{{b{FM`}}}{{DBj{DBl}}}}{{{b{FMb}}}{{DBj{DBl}}}}{{{b{FMd}}}{{DBj{DBl}}}}{{{b{FMf}}}{{DBj{DBl}}}}{{{b{FMh}}}{{DBj{DBl}}}}{{{b{FMj}}}{{DBj{DBl}}}}{{{b{FMl}}}{{DBj{DBl}}}}{{{b{FMn}}}{{DBj{DBl}}}}{{{b{FN`}}}{{DBj{DBl}}}}{{{b{FNb}}}{{DBj{DBl}}}}{{{b{FNd}}}{{DBj{DBl}}}}{{{b{FNf}}}{{DBj{DBl}}}}{{{b{FNh}}}{{DBj{DBl}}}}{{{b{FNj}}}{{DBj{DBl}}}}{{{b{FNl}}}{{DBj{DBl}}}}{{{b{FNn}}}{{DBj{DBl}}}}{{{b{FO`}}}{{DBj{DBl}}}}{{{b{FOb}}}{{DBj{DBl}}}}{{{b{FOd}}}{{DBj{DBl}}}}{{{b{FOf}}}{{DBj{DBl}}}}{{{b{FOh}}}{{DBj{DBl}}}}{{{b{FOj}}}{{DBj{DBl}}}}{{{b{FOl}}}{{DBj{DBl}}}}{{{b{FOn}}}{{DBj{DBl}}}}{{{b{G@`}}}{{DBj{DBl}}}}{{{b{G@b}}}{{DBj{DBl}}}}{{{b{G@d}}}{{DBj{DBl}}}}{{{b{G@f}}}{{DBj{DBl}}}}{{{b{G@h}}}{{DBj{DBl}}}}{{{b{G@j}}}{{DBj{DBl}}}}{{{b{G@l}}}{{DBj{DBl}}}}{{{b{c}}}e{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{FBn}}}{{DBj{Hl}}}}{{{b{FC`}}}{{DBj{Hl}}}}{{{b{FCb}}}{{DBj{Hl}}}}{{{b{FCd}}}{{DBj{Hl}}}}{{{b{FCf}}}{{DBj{Hl}}}}{{{b{FCh}}}{{DBj{Hl}}}}{{{b{FCj}}}{{DBj{Hl}}}}{{{b{FCl}}}{{DBj{Hl}}}}{{{b{FCn}}}{{DBj{Hl}}}}{{{b{FD`}}}{{DBj{Hl}}}}{{{b{FDb}}}{{DBj{Hl}}}}{{{b{FDd}}}{{DBj{Hl}}}}{{{b{FDf}}}{{DBj{Hl}}}}{{{b{FDh}}}{{DBj{Hl}}}}{{{b{FDj}}}{{DBj{Hl}}}}{{{b{FDl}}}{{DBj{Hl}}}}{{{b{FDn}}}{{DBj{Hl}}}}{{{b{FE`}}}{{DBj{Hl}}}}{{{b{FEb}}}{{DBj{Hl}}}}{{{b{FEd}}}{{DBj{Hl}}}}{{{b{FEf}}}{{DBj{Hl}}}}{{{b{FEh}}}{{DBj{Hl}}}}{{{b{FEj}}}{{DBj{Hl}}}}{{{b{FEl}}}{{DBj{Hl}}}}{{{b{FEn}}}{{DBj{Hl}}}}{{{b{FF`}}}{{DBj{Hl}}}}{{{b{FFb}}}{{DBj{Hl}}}}{{{b{FFd}}}{{DBj{Hl}}}}{{{b{FFf}}}{{DBj{Hl}}}}{{{b{FFh}}}{{DBj{Hl}}}}{{{b{FFj}}}{{DBj{Hl}}}}{{{b{FFl}}}{{DBj{Hl}}}}{{{b{FFn}}}{{DBj{Hl}}}}{{{b{FG`}}}{{DBj{Hl}}}}{{{b{FGb}}}{{DBj{Hl}}}}{{{b{FGd}}}{{DBj{Hl}}}}{{{b{FGf}}}{{DBj{Hl}}}}{{{b{FGh}}}{{DBj{Hl}}}}{{{b{FGj}}}{{DBj{Hl}}}}{{{b{FGl}}}{{DBj{Hl}}}}{{{b{FGn}}}{{DBj{Hl}}}}{{{b{FH`}}}{{DBj{Hl}}}}{{{b{FHb}}}{{DBj{Hl}}}}{{{b{FHd}}}{{DBj{Hl}}}}{{{b{FHf}}}{{DBj{Hl}}}}{{{b{FHh}}}{{DBj{Hl}}}}{{{b{FHj}}}{{DBj{Hl}}}}{{{b{FHl}}}{{DBj{Hl}}}}{{{b{FHn}}}{{DBj{Hl}}}}{{{b{FI`}}}{{DBj{Hl}}}}{{{b{FIb}}}{{DBj{Hl}}}}{{{b{FId}}}{{DBj{Hl}}}}{{{b{FIf}}}{{DBj{Hl}}}}{{{b{FIh}}}{{DBj{Hl}}}}{{{b{FIj}}}{{DBj{Hl}}}}{{{b{FIl}}}{{DBj{Hl}}}}{{{b{FIn}}}{{DBj{Hl}}}}{{{b{FJ`}}}{{DBj{Hl}}}}{{{b{FJb}}}{{DBj{Hl}}}}{{{b{FJd}}}{{DBj{Hl}}}}{{{b{FJf}}}{{DBj{Hl}}}}{{{b{FJh}}}{{DBj{Hl}}}}{{{b{FJj}}}{{DBj{Hl}}}}{{{b{FJl}}}{{DBj{Hl}}}}{{{b{FJn}}}{{DBj{Hl}}}}{{{b{FK`}}}{{DBj{Hl}}}}{{{b{FKb}}}{{DBj{Hl}}}}{{{b{FKd}}}{{DBj{Hl}}}}{{{b{FKf}}}{{DBj{Hl}}}}{{{b{FKh}}}{{DBj{Hl}}}}{{{b{FKj}}}{{DBj{Hl}}}}{{{b{FKl}}}{{DBj{Hl}}}}{{{b{FKn}}}{{DBj{Hl}}}}{{{b{FL`}}}{{DBj{Hl}}}}{{{b{FLb}}}{{DBj{Hl}}}}{{{b{FLd}}}{{DBj{Hl}}}}{{{b{FLf}}}{{DBj{Hl}}}}{{{b{FLh}}}{{DBj{Hl}}}}{{{b{FLj}}}{{DBj{Hl}}}}{{{b{FLl}}}{{DBj{Hl}}}}{{{b{FLn}}}{{DBj{Hl}}}}{{{b{FM`}}}{{DBj{Hl}}}}{{{b{FMb}}}{{DBj{Hl}}}}{{{b{FMd}}}{{DBj{Hl}}}}{{{b{FMf}}}{{DBj{Hl}}}}{{{b{FMh}}}{{DBj{Hl}}}}{{{b{FMj}}}{{DBj{Hl}}}}{{{b{FMl}}}{{DBj{Hl}}}}{{{b{FMn}}}{{DBj{Hl}}}}{{{b{FN`}}}{{DBj{Hl}}}}{{{b{FNb}}}{{DBj{Hl}}}}{{{b{FNd}}}{{DBj{Hl}}}}{{{b{FNf}}}{{DBj{Hl}}}}{{{b{FNh}}}{{DBj{Hl}}}}{{{b{FNj}}}{{DBj{Hl}}}}{{{b{FNl}}}{{DBj{Hl}}}}{{{b{FNn}}}{{DBj{Hl}}}}{{{b{FO`}}}{{DBj{Hl}}}}{{{b{FOb}}}{{DBj{Hl}}}}{{{b{FOd}}}{{DBj{Hl}}}}{{{b{FOf}}}{{DBj{Hl}}}}{{{b{FOh}}}{{DBj{Hl}}}}{{{b{FOj}}}{{DBj{Hl}}}}{{{b{FOl}}}{{DBj{Hl}}}}{{{b{FOn}}}{{DBj{Hl}}}}{{{b{G@`}}}{{DBj{Hl}}}}{{{b{G@b}}}{{DBj{Hl}}}}{{{b{G@d}}}{{DBj{Hl}}}}{{{b{G@f}}}{{DBj{Hl}}}}{{{b{G@h}}}{{DBj{Hl}}}}{{{b{G@j}}}{{DBj{Hl}}}}{{{b{G@l}}}{{DBj{Hl}}}}{{{b{dDD`}}DD`}Aj}{{{b{dDDb}}DDb}Aj}{{{b{dDDd}}DDd}Aj}{{{b{dDDf}}DDf}Aj}{{{b{dDDh}}DDh}Aj}{{{b{dDDj}}DDj}Aj}{{{b{dDDl}}DDl}Aj}{{{b{dDDn}}DDn}Aj}{{{b{dDE`}}DE`}Aj}{{{b{dDEb}}DEb}Aj}{{{b{dDEd}}DEd}Aj}{{{b{dDEf}}DEf}Aj}{{{b{dDEh}}DEh}Aj}{{{b{dDEj}}DEj}Aj}{{{b{dDEl}}DEl}Aj}{{{b{dDEn}}DEn}Aj}{{{b{dDF`}}DF`}Aj}{{{b{dDFb}}DFb}Aj}{{{b{dDFd}}DFd}Aj}{{{b{dDFf}}DFf}Aj}{{{b{dDFh}}DFh}Aj}{{{b{dDFj}}DFj}Aj}{{{b{dDFl}}DFl}Aj}{{{b{dDFn}}DFn}Aj}{{{b{dDG`}}DG`}Aj}````````{c{{Bd{e}}}{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{{{b{c}}}Dh{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{{b{Bl}}{b{dCb}}}{{Bd{AjCd}}}}0{{{b{Cl}}{b{dCb}}}{{Bd{AjCd}}}}0{{{b{Db}}{b{dCb}}}{{Bd{AjCd}}}}0{cc{}}{BlCl}{BbCl}22{BbDb}{ce{}{}}00{{{b{c}}}G@n{}}00{c{{Bd{e}}}{}{}}00000{{{b{c}}}Dh{}}00```````````````````````````<<<<<;;;;;{{{b{GA`}}}GA`}{{{b{GAb}}}GAb}{{{b{GAd}}}GAd}{{{b{GAf}}}GAf}{{{b{GAh}}}GAh}{{{b{c}}{b{de}}}Aj{}{}}0000{{}GAb}{{}GAd}{{}GAf}{{}GAh}{Bf{{Bd{GA`{b{Al}}}}}}{{Ab{b{{h{f}}}}}{{Bd{GAbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GAdBl}}}}{c{{Bd{GA`}}}Bn}{c{{Bd{GAb}}}Bn}{c{{Bd{GAd}}}Bn}{c{{Bd{GAf}}}Bn}{c{{Bd{GAh}}}Bn}{{{b{GA`}}{b{GA`}}}C`}{{{b{GAb}}{b{GAb}}}C`}{{{b{GAd}}{b{GAd}}}C`}{{{b{GAf}}{b{GAf}}}C`}{{{b{GAh}}{b{GAh}}}C`}{Bff}{{{b{GA`}}{b{dCb}}}DBh}{{{b{GAb}}{b{dCb}}}DBh}{{{b{GAd}}{b{dCb}}}DBh}{{{b{GAf}}{b{dCb}}}DBh}{{{b{GAh}}{b{dCb}}}DBh}{cc{}}0000{DBl{{DBj{GAf}}}}{DBl{{DBj{GAh}}}}{Hl{{DBj{GAf}}}}{Hl{{DBj{GAh}}}}{ce{}{}}0000`````{{{b{GA`}}}Bf}{{{b{Al}}}{{Bd{Bf{b{Al}}}}}}{{{b{GA`}}}{{b{Al}}}}``````{{AbBf{b{{h{f}}}}}{{Bd{GA`Bl}}}}{{{b{GA`}}Ab{b{d{h{f}}}}}D`}{{{b{GAb}}Ab{b{d{h{f}}}}}D`}{{{b{GAd}}Ab{b{d{h{f}}}}}D`}{{{b{GA`}}c}BdDd}{{{b{GAb}}c}BdDd}{{{b{GAd}}c}BdDd}{{{b{GAf}}c}BdDd}{{{b{GAh}}c}BdDd}`{{{b{GAf}}}{{DBj{DBl}}}}{{{b{GAh}}}{{DBj{DBl}}}}{{{b{c}}}e{}{}}0000{{{b{GAf}}}{{DBj{Hl}}}}{{{b{GAh}}}{{DBj{Hl}}}}{c{{Bd{e}}}{}{}}000000000`````{{{b{c}}}Dh{}}0000`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{d{Ch{c}}}}D`}D`Cn}{cc{}}{ce{}{}}{c{{Ch{c}}}Cn}{{{b{d{Ch{c}}}}D`}{{Bd{{b{{h{f}}}}Cl}}}Cn}0{{{b{d{Ch{c}}}}}{{Bd{fCl}}}Cn}{{{b{d{Ch{c}}}}}{{b{dc}}}Cn}{{{b{d{Ch{c}}}}}{{b{c}}}Cn};;:```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{}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}{{}GDn}{{}GE`}````````````````````````````````````````````````````````````````````````````````````````````````````````{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}{{{b{dGAj}}GAj}Aj}{{{b{dGAl}}GAl}Aj}{{{b{dGAn}}GAn}Aj}{{{b{dGB`}}GB`}Aj}{{{b{dGBb}}GBb}Aj}{{{b{dGBd}}GBd}Aj}{{{b{dGBf}}GBf}Aj}{{{b{dGBh}}GBh}Aj}{{{b{dGBj}}GBj}Aj}{{{b{dGBl}}GBl}Aj}{{{b{dGBn}}GBn}Aj}{{{b{dGC`}}GC`}Aj}{{{b{dGCb}}GCb}Aj}{{{b{dGCd}}GCd}Aj}{{{b{dGCf}}GCf}Aj}{{{b{dGCh}}GCh}Aj}{{{b{dGCj}}GCj}Aj}{{{b{dGCl}}GCl}Aj}{{{b{dGCn}}GCn}Aj}{{{b{dGD`}}GD`}Aj}{{{b{dGDb}}GDb}Aj}{{{b{dGDd}}GDd}Aj}{{{b{dGDf}}GDf}Aj}{{{b{dGDh}}GDh}Aj}{{{b{dGDj}}GDj}Aj}{{{b{dGDl}}GDl}Aj}{{{b{dGDn}}GDn}Aj}{{{b{dGE`}}GE`}Aj}{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}{{{b{dGAj}}GAj}Aj}{{{b{dGAl}}GAl}Aj}{{{b{dGAn}}GAn}Aj}{{{b{dGB`}}GB`}Aj}{{{b{dGBb}}GBb}Aj}{{{b{dGBd}}GBd}Aj}{{{b{dGBf}}GBf}Aj}{{{b{dGBh}}GBh}Aj}{{{b{dGBj}}GBj}Aj}{{{b{dGBl}}GBl}Aj}{{{b{dGBn}}GBn}Aj}{{{b{dGC`}}GC`}Aj}{{{b{dGCb}}GCb}Aj}{{{b{dGCd}}GCd}Aj}{{{b{dGCf}}GCf}Aj}{{{b{dGCh}}GCh}Aj}{{{b{dGCj}}GCj}Aj}{{{b{dGCl}}GCl}Aj}{{{b{dGCn}}GCn}Aj}{{{b{dGD`}}GD`}Aj}{{{b{dGDb}}GDb}Aj}{{{b{dGDd}}GDd}Aj}{{{b{dGDf}}GDf}Aj}{{{b{dGDh}}GDh}Aj}{{{b{dGDj}}GDj}Aj}{{{b{dGDl}}GDl}Aj}{{{b{dGDn}}GDn}Aj}{{{b{dGE`}}GE`}Aj}``{{{b{GAj}}}j}{{{b{GAl}}}Bf}{{{b{GAn}}}Hl}{{{b{GB`}}}j}{{{b{GBb}}}f}{{{b{GBd}}}Bf}{{{b{GBf}}}j}{{{b{GBh}}}j}{{{b{GBj}}}f}{{{b{GBl}}}j}{{{b{GBn}}}j}{{{b{GC`}}}Bf}{{{b{GCb}}}j}{{{b{GCd}}}Bf}{{{b{GCf}}}j}{{{b{GCh}}}Bf}{{{b{GCj}}}f}{{{b{GCl}}}j}{{{b{GCn}}}j}{{{b{GD`}}}f}{{{b{GDb}}}Bf}{{{b{GDd}}}f}{{{b{GDf}}}j}{{{b{GDh}}}Hl}{{{b{GDj}}}Bf}{{{b{GDl}}}f}{{{b{GDn}}}j}{{{b{GE`}}}f}{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}{{{b{dGAj}}GAj}Aj}{{{b{dGAl}}GAl}Aj}{{{b{dGAn}}GAn}Aj}{{{b{dGB`}}GB`}Aj}{{{b{dGBb}}GBb}Aj}{{{b{dGBd}}GBd}Aj}{{{b{dGBf}}GBf}Aj}{{{b{dGBh}}GBh}Aj}{{{b{dGBj}}GBj}Aj}{{{b{dGBl}}GBl}Aj}{{{b{dGBn}}GBn}Aj}{{{b{dGC`}}GC`}Aj}{{{b{dGCb}}GCb}Aj}{{{b{dGCd}}GCd}Aj}{{{b{dGCf}}GCf}Aj}{{{b{dGCh}}GCh}Aj}{{{b{dGCj}}GCj}Aj}{{{b{dGCl}}GCl}Aj}{{{b{dGCn}}GCn}Aj}{{{b{dGD`}}GD`}Aj}{{{b{dGDb}}GDb}Aj}{{{b{dGDd}}GDd}Aj}{{{b{dGDf}}GDf}Aj}{{{b{dGDh}}GDh}Aj}{{{b{dGDj}}GDj}Aj}{{{b{dGDl}}GDl}Aj}{{{b{dGDn}}GDn}Aj}{{{b{dGE`}}GE`}Aj}```````{{{b{c}}}{{b{e}}}{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{dc}}}{{b{de}}}{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000``````````````````````````````````````````````````````````````````````````````````````````{{{b{GEb}}}GEb}{{{b{GEd}}}GEd}{{{b{GEf}}}GEf}{{{b{GEh}}}GEh}{{{b{GEj}}}GEj}{{{b{GEl}}}GEl}{{{b{GEn}}}GEn}{{{b{GF`}}}GF`}{{{b{GFb}}}GFb}{{{b{GFd}}}GFd}{{{b{GFf}}}GFf}{{{b{GFh}}}GFh}{{{b{GFj}}}GFj}{{{b{GFl}}}GFl}{{{b{GFn}}}GFn}{{{b{GG`}}}GG`}{{{b{GGb}}}GGb}{{{b{GGd}}}GGd}{{{b{GGf}}}GGf}{{{b{GGh}}}GGh}{{{b{GGj}}}GGj}{{{b{GGl}}}GGl}{{{b{GGn}}}GGn}{{{b{GH`}}}GH`}{{{b{GHb}}}GHb}{{{b{GHd}}}GHd}{{{b{GHf}}}GHf}{{{b{GHh}}}GHh}{{{b{GHj}}}GHj}{{{b{GHl}}}GHl}{{{b{GHn}}}GHn}{{{b{GI`}}}GI`}{{{b{GIb}}}GIb}{{{b{GId}}}GId}{{{b{GIf}}}GIf}{{{b{GIh}}}GIh}{{{b{GIj}}}GIj}{{{b{GIl}}}GIl}{{{b{GIn}}}GIn}{{{b{GJ`}}}GJ`}{{{b{GJb}}}GJb}{{{b{GJd}}}GJd}{{{b{GJf}}}GJf}{{{b{GJh}}}GJh}{{{b{GJj}}}GJj}{{{b{GJl}}}GJl}{{{b{GJn}}}GJn}{{{b{GK`}}}GK`}{{{b{GKb}}}GKb}{{{b{GKd}}}GKd}{{{b{GKf}}}GKf}{{{b{GKh}}}GKh}{{{b{GKj}}}GKj}{{{b{GKl}}}GKl}{{{b{GKn}}}GKn}{{{b{GL`}}}GL`}{{{b{GLb}}}GLb}{{{b{GLd}}}GLd}{{{b{GLf}}}GLf}{{{b{GLh}}}GLh}{{{b{GLj}}}GLj}{{{b{GLl}}}GLl}{{{b{GLn}}}GLn}{{{b{GM`}}}GM`}{{{b{GMb}}}GMb}{{{b{GMd}}}GMd}{{{b{GMf}}}GMf}{{{b{GMh}}}GMh}{{{b{GMj}}}GMj}{{{b{GMl}}}GMl}{{{b{GMn}}}GMn}{{{b{GN`}}}GN`}{{{b{GNb}}}GNb}{{{b{GNd}}}GNd}{{{b{GNf}}}GNf}{{{b{GNh}}}GNh}{{{b{GNj}}}GNj}{{{b{GNl}}}GNl}{{{b{GNn}}}GNn}{{{b{GO`}}}GO`}{{{b{GOb}}}GOb}{{{b{GOd}}}GOd}{{{b{GOf}}}GOf}{{{b{GOh}}}GOh}{{{b{GOj}}}GOj}{{{b{GOl}}}GOl}{{{b{GOn}}}GOn}{{{b{H@`}}}H@`}{{{b{H@b}}}H@b}{{{b{H@d}}}H@d}{{{b{H@f}}}H@f}{{{b{H@h}}}H@h}{{{b{H@j}}}H@j}{{{b{H@l}}}H@l}{{{b{H@n}}}H@n}{{{b{HA`}}}HA`}{{{b{HAb}}}HAb}{{{b{HAd}}}HAd}{{{b{HAf}}}HAf}{{{b{HAh}}}HAh}{{{b{HAj}}}HAj}{{{b{HAl}}}HAl}{{{b{HAn}}}HAn}{{{b{HB`}}}HB`}{{{b{HBb}}}HBb}{{{b{HBd}}}HBd}{{{b{HBf}}}HBf}{{{b{HBh}}}HBh}{{{b{HBj}}}HBj}{{{b{HBl}}}HBl}{{{b{HBn}}}HBn}{{{b{HC`}}}HC`}{{{b{HCb}}}HCb}{{{b{HCd}}}HCd}{{{b{HCf}}}HCf}{{{b{HCh}}}HCh}{{{b{HCj}}}HCj}{{{b{HCl}}}HCl}{{{b{HCn}}}HCn}{{{b{HD`}}}HD`}{{{b{HDb}}}HDb}{{{b{HDd}}}HDd}{{{b{HDf}}}HDf}{{{b{HDh}}}HDh}{{{b{HDj}}}HDj}{{{b{HDl}}}HDl}{{{b{HDn}}}HDn}{{{b{HE`}}}HE`}{{{b{HEb}}}HEb}{{{b{HEd}}}HEd}{{{b{HEf}}}HEf}{{{b{HEh}}}HEh}{{{b{HEj}}}HEj}{{{b{HEl}}}HEl}{{{b{HEn}}}HEn}{{{b{HF`}}}HF`}{{{b{HFb}}}HFb}{{{b{HFd}}}HFd}{{{b{HFf}}}HFf}{{{b{HFh}}}HFh}{{{b{HFj}}}HFj}{{{b{HFl}}}HFl}{{{b{HFn}}}HFn}{{{b{HG`}}}HG`}{{{b{HGb}}}HGb}{{{b{HGd}}}HGd}{{{b{HGf}}}HGf}{{{b{HGh}}}HGh}{{{b{HGj}}}HGj}{{{b{HGl}}}HGl}{{{b{HGn}}}HGn}{{{b{HH`}}}HH`}{{{b{HHb}}}HHb}{{{b{HHd}}}HHd}{{{b{HHf}}}HHf}{{{b{HHh}}}HHh}{{{b{HHj}}}HHj}{{{b{HHl}}}HHl}{{{b{HHn}}}HHn}{{{b{HI`}}}HI`}{{{b{HIb}}}HIb}{{{b{HId}}}HId}{{{b{HIf}}}HIf}{{{b{HIh}}}HIh}{{{b{HIj}}}HIj}{{{b{HIl}}}HIl}{{{b{HIn}}}HIn}{{{b{HJ`}}}HJ`}{{{b{HJb}}}HJb}{{{b{HJd}}}HJd}{{{b{HJf}}}HJf}{{{b{HJh}}}HJh}{{{b{HJj}}}HJj}{{{b{HJl}}}HJl}{{{b{HJn}}}HJn}{{{b{HK`}}}HK`}{{{b{HKb}}}HKb}{{{b{HKd}}}HKd}{{{b{HKf}}}HKf}{{{b{HKh}}}HKh}{{{b{HKj}}}HKj}{{{b{HKl}}}HKl}{{{b{HKn}}}HKn}{{{b{HL`}}}HL`}{{{b{HLb}}}HLb}{{{b{HLd}}}HLd}{{{b{HLf}}}HLf}{{{b{HLh}}}HLh}{{{b{HLj}}}HLj}{{{b{HLl}}}HLl}{{{b{HLn}}}HLn}{{{b{HM`}}}HM`}{{{b{HMb}}}HMb}{{{b{HMd}}}HMd}{{{b{HMf}}}HMf}{{{b{HMh}}}HMh}{{{b{HMj}}}HMj}{{{b{HMl}}}HMl}{{{b{HMn}}}HMn}{{{b{HN`}}}HN`}{{{b{HNb}}}HNb}{{{b{HNd}}}HNd}{{{b{HNf}}}HNf}{{{b{HNh}}}HNh}{{{b{HNj}}}HNj}{{{b{HNl}}}HNl}{{{b{HNn}}}HNn}{{{b{HO`}}}HO`}{{{b{HOb}}}HOb}{{{b{HOd}}}HOd}{{{b{HOf}}}HOf}{{{b{HOh}}}HOh}{{{b{HOj}}}HOj}{{{b{HOl}}}HOl}{{{b{HOn}}}HOn}{{{b{I@`}}}I@`}{{{b{I@b}}}I@b}{{{b{I@d}}}I@d}{{{b{I@f}}}I@f}{{{b{I@h}}}I@h}{{{b{I@j}}}I@j}{{{b{I@l}}}I@l}{{{b{I@n}}}I@n}{{{b{IA`}}}IA`}{{{b{IAb}}}IAb}{{{b{IAd}}}IAd}{{{b{GAj}}}GAj}{{{b{GAl}}}GAl}{{{b{IAf}}}IAf}{{{b{GAn}}}GAn}{{{b{GB`}}}GB`}{{{b{IAh}}}IAh}{{{b{IAj}}}IAj}{{{b{IAl}}}IAl}{{{b{IAn}}}IAn}{{{b{IB`}}}IB`}{{{b{IBb}}}IBb}{{{b{IBd}}}IBd}{{{b{GBb}}}GBb}{{{b{IBf}}}IBf}{{{b{IBh}}}IBh}{{{b{IBj}}}IBj}{{{b{GBd}}}GBd}{{{b{GBf}}}GBf}{{{b{IBl}}}IBl}{{{b{IBn}}}IBn}{{{b{IC`}}}IC`}{{{b{ICb}}}ICb}{{{b{ICd}}}ICd}{{{b{GBh}}}GBh}{{{b{ICf}}}ICf}{{{b{ICh}}}ICh}{{{b{ICj}}}ICj}{{{b{ICl}}}ICl}{{{b{ICn}}}ICn}{{{b{ID`}}}ID`}{{{b{IDb}}}IDb}{{{b{IDd}}}IDd}{{{b{IDf}}}IDf}{{{b{IDh}}}IDh}{{{b{IDj}}}IDj}{{{b{IDl}}}IDl}{{{b{GBj}}}GBj}{{{b{IDn}}}IDn}{{{b{IE`}}}IE`}{{{b{IEb}}}IEb}{{{b{GBl}}}GBl}{{{b{IEd}}}IEd}{{{b{GBn}}}GBn}{{{b{IEf}}}IEf}{{{b{IEh}}}IEh}{{{b{IEj}}}IEj}{{{b{IEl}}}IEl}{{{b{GC`}}}GC`}{{{b{IEn}}}IEn}{{{b{IF`}}}IF`}{{{b{IFb}}}IFb}{{{b{IFd}}}IFd}{{{b{IFf}}}IFf}{{{b{IFh}}}IFh}{{{b{IFj}}}IFj}{{{b{IFl}}}IFl}{{{b{IFn}}}IFn}{{{b{IG`}}}IG`}{{{b{GCb}}}GCb}{{{b{IGb}}}IGb}{{{b{IGd}}}IGd}{{{b{IGf}}}IGf}{{{b{GCd}}}GCd}{{{b{IGh}}}IGh}{{{b{GCf}}}GCf}{{{b{IGj}}}IGj}{{{b{IGl}}}IGl}{{{b{IGn}}}IGn}{{{b{IH`}}}IH`}{{{b{IHb}}}IHb}{{{b{IHd}}}IHd}{{{b{IHf}}}IHf}{{{b{IHh}}}IHh}{{{b{GCh}}}GCh}{{{b{GCj}}}GCj}{{{b{IHj}}}IHj}{{{b{IHl}}}IHl}{{{b{IHn}}}IHn}{{{b{GCl}}}GCl}{{{b{II`}}}II`}{{{b{IIb}}}IIb}{{{b{GCn}}}GCn}{{{b{IId}}}IId}{{{b{IIf}}}IIf}{{{b{GD`}}}GD`}{{{b{IIh}}}IIh}{{{b{IIj}}}IIj}{{{b{IIl}}}IIl}{{{b{IIn}}}IIn}{{{b{GDb}}}GDb}{{{b{IJ`}}}IJ`}{{{b{IJb}}}IJb}{{{b{IJd}}}IJd}{{{b{IJf}}}IJf}{{{b{IJh}}}IJh}{{{b{IJj}}}IJj}{{{b{IJl}}}IJl}{{{b{IJn}}}IJn}{{{b{IK`}}}IK`}{{{b{IKb}}}IKb}{{{b{GDd}}}GDd}{{{b{GDf}}}GDf}{{{b{IKd}}}IKd}{{{b{IKf}}}IKf}{{{b{IKh}}}IKh}{{{b{GDh}}}GDh}{{{b{GDj}}}GDj}{{{b{IKj}}}IKj}{{{b{IKl}}}IKl}{{{b{IKn}}}IKn}{{{b{IL`}}}IL`}{{{b{ILb}}}ILb}{{{b{GDl}}}GDl}{{{b{ILd}}}ILd}{{{b{ILf}}}ILf}{{{b{ILh}}}ILh}{{{b{ILj}}}ILj}{{{b{ILl}}}ILl}{{{b{GDn}}}GDn}{{{b{ILn}}}ILn}{{{b{IM`}}}IM`}{{{b{IMb}}}IMb}{{{b{IMd}}}IMd}{{{b{IMf}}}IMf}{{{b{IMh}}}IMh}{{{b{IMj}}}IMj}{{{b{IMl}}}IMl}{{{b{IMn}}}IMn}{{{b{IN`}}}IN`}{{{b{INb}}}INb}{{{b{GE`}}}GE`}{{{b{INd}}}INd}{{{b{INf}}}INf}{{{b{INh}}}INh}{{{b{INj}}}INj}{{{b{INl}}}INl}{{{b{INn}}}INn}{{{b{IO`}}}IO`}{{{b{IOb}}}IOb}{{{b{IOd}}}IOd}{{{b{IOf}}}IOf}{{{b{IOh}}}IOh}{{{b{IOj}}}IOj}{{{b{IOl}}}IOl}{{{b{c}}{b{de}}}Aj{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{GAj}}{b{GAj}}}DBb}{{{b{GAl}}{b{GAl}}}DBb}{{{b{GAn}}{b{GAn}}}DBb}{{{b{GB`}}{b{GB`}}}DBb}{{{b{GBb}}{b{GBb}}}DBb}{{{b{GBd}}{b{GBd}}}DBb}{{{b{GBf}}{b{GBf}}}DBb}{{{b{GBh}}{b{GBh}}}DBb}{{{b{GBj}}{b{GBj}}}DBb}{{{b{GBl}}{b{GBl}}}DBb}{{{b{GBn}}{b{GBn}}}DBb}{{{b{GC`}}{b{GC`}}}DBb}{{{b{GCb}}{b{GCb}}}DBb}{{{b{GCd}}{b{GCd}}}DBb}{{{b{GCf}}{b{GCf}}}DBb}{{{b{GCh}}{b{GCh}}}DBb}{{{b{GCj}}{b{GCj}}}DBb}{{{b{GCl}}{b{GCl}}}DBb}{{{b{GCn}}{b{GCn}}}DBb}{{{b{GD`}}{b{GD`}}}DBb}{{{b{GDb}}{b{GDb}}}DBb}{{{b{GDd}}{b{GDd}}}DBb}{{{b{GDf}}{b{GDf}}}DBb}{{{b{GDh}}{b{GDh}}}DBb}{{{b{GDj}}{b{GDj}}}DBb}{{{b{GDl}}{b{GDl}}}DBb}{{{b{GDn}}{b{GDn}}}DBb}{{{b{GE`}}{b{GE`}}}DBb}````````````{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}{GDnGDn}{GE`GE`}``{{{b{GAj}}GAj}C`}{{{b{GAl}}GAl}C`}{{{b{GAn}}GAn}C`}{{{b{GB`}}GB`}C`}{{{b{GBb}}GBb}C`}{{{b{GBd}}GBd}C`}{{{b{GBf}}GBf}C`}{{{b{GBh}}GBh}C`}{{{b{GBj}}GBj}C`}{{{b{GBl}}GBl}C`}{{{b{GBn}}GBn}C`}{{{b{GC`}}GC`}C`}{{{b{GCb}}GCb}C`}{{{b{GCd}}GCd}C`}{{{b{GCf}}GCf}C`}{{{b{GCh}}GCh}C`}{{{b{GCj}}GCj}C`}{{{b{GCl}}GCl}C`}{{{b{GCn}}GCn}C`}{{{b{GD`}}GD`}C`}{{{b{GDb}}GDb}C`}{{{b{GDd}}GDd}C`}{{{b{GDf}}GDf}C`}{{{b{GDh}}GDh}C`}{{{b{GDj}}GDj}C`}{{{b{GDl}}GDl}C`}{{{b{GDn}}GDn}C`}{{{b{GE`}}GE`}C`}````````````````````````````````````````````````````````{{}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}{{}GAj}{{}GAl}{{}IAf}{{}GAn}{{}GB`}{{}IAh}{{}IAj}{{}IAl}{{}IAn}{{}IB`}{{}IBb}{{}IBd}{{}GBb}{{}IBf}{{}IBh}{{}IBj}{{}GBd}{{}GBf}{{}IBl}{{}IBn}{{}IC`}{{}ICb}{{}ICd}{{}GBh}{{}ICf}{{}ICh}{{}ICj}{{}ICl}{{}ICn}{{}ID`}{{}IDb}{{}IDd}{{}IDf}{{}IDh}{{}IDj}{{}IDl}{{}GBj}{{}IDn}{{}IE`}{{}IEb}{{}GBl}{{}IEd}{{}GBn}{{}IEf}{{}IEh}{{}IEj}{{}IEl}{{}GC`}{{}IEn}{{}IF`}{{}IFb}{{}IFd}{{}IFf}{{}IFh}{{}IFj}{{}IFl}{{}IFn}{{}IG`}{{}GCb}{{}IGb}{{}IGd}{{}IGf}{{}GCd}{{}IGh}{{}GCf}{{}IGj}{{}IGl}{{}IGn}{{}IH`}{{}IHb}{{}IHd}{{}IHf}{{}IHh}{{}GCh}{{}GCj}{{}IHj}{{}IHl}{{}IHn}{{}GCl}{{}II`}{{}IIb}{{}GCn}{{}IId}{{}IIf}{{}GD`}{{}IIh}{{}IIj}{{}IIl}{{}IIn}{{}GDb}{{}IJ`}{{}IJb}{{}IJd}{{}IJf}{{}IJh}{{}IJj}{{}IJl}{{}IJn}{{}IK`}{{}IKb}{{}GDd}{{}GDf}{{}IKd}{{}IKf}{{}IKh}{{}GDh}{{}GDj}{{}IKj}{{}IKl}{{}IKn}{{}IL`}{{}ILb}{{}GDl}{{}ILd}{{}ILf}{{}ILh}{{}ILj}{{}ILl}{{}GDn}{{}ILn}{{}IM`}{{}IMb}{{}IMd}{{}IMf}{{}IMh}{{}IMj}{{}IMl}{{}IMn}{{}IN`}{{}INb}{{}GE`}{{}INd}{{}INf}{{}INh}{{}INj}{{}INl}{{}INn}{{}IO`}{{}IOb}{{}IOd}{{}IOf}{{}IOh}{{}IOj}{{}IOl}{Bf{{Bd{GEb{b{Al}}}}}}```{{Ab{b{{h{f}}}}}{{Bd{GEdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GEfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GEhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GEjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GElBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GEnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GF`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GFbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GFdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GFfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GFhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GFjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GFlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GFnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GG`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GGbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GGdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GGfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GGhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GGjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GGlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GGnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GH`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GHbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GHdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GHfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GHhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GHjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GHlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GHnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GI`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GIbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GIdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GIfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GIhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GIjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GIlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GInBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJ`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GK`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GKbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GKdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GKfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GKhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GKjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GKlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GKnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GL`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GLbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GLdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GLfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GLhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GLjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GLlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GLnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GM`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GMbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GMdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GMfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GMhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GMjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GMlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GMnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GN`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GNbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GNdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GNfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GNhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GNjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GNlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GNnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GO`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GObBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GOdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GOfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GOhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GOjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GOlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GOnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@bBl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@dBl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@fBl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@hBl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@jBl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@lBl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@nBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HA`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HAbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HAdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HAfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HAhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HAjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HAlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HAnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HB`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HBbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HBdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HBfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HBhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HBjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HBlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HBnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HC`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HCbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HCdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HCfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HChBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HCjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HClBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HCnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HD`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HDbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HDdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HDfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HDhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HDjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HDlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HDnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HE`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HEbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HEdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HEfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HEhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HEjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HElBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HEnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HF`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HFbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HFdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HFfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HFhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HFjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HFlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HFnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HG`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HGbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HGdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HGfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HGhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HGjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HGlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HGnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HH`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HHbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HHdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HHfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HHhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HHjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HHlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HHnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HI`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HIbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HIdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HIfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HIhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HIjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HIlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HInBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJ`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HK`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HKbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HKdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HKfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HKhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HKjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HKlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HKnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HL`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HLbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HLdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HLfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HLhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HLjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HLlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HLnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HM`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HMbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HMdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HMfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HMhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HMjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HMlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HMnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HN`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HNbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HNdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HNfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HNhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HNjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HNlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HNnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HO`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HObBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HOdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HOfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HOhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HOjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HOlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HOnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@bBl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@dBl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@fBl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@hBl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@jBl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@lBl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@nBl}}}}{{Ab{b{{h{f}}}}}{{Bd{IA`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{IAbBl}}}}{c{{Bd{GEb}}}Bn}{c{{Bd{GEd}}}Bn}{c{{Bd{GEf}}}Bn}{c{{Bd{GEh}}}Bn}{c{{Bd{GEj}}}Bn}{c{{Bd{GEl}}}Bn}{c{{Bd{GEn}}}Bn}{c{{Bd{GF`}}}Bn}{c{{Bd{GFb}}}Bn}{c{{Bd{GFd}}}Bn}{c{{Bd{GFf}}}Bn}{c{{Bd{GFh}}}Bn}{c{{Bd{GFj}}}Bn}{c{{Bd{GFl}}}Bn}{c{{Bd{GFn}}}Bn}{c{{Bd{GG`}}}Bn}{c{{Bd{GGb}}}Bn}{c{{Bd{GGd}}}Bn}{c{{Bd{GGf}}}Bn}{c{{Bd{GGh}}}Bn}{c{{Bd{GGj}}}Bn}{c{{Bd{GGl}}}Bn}{c{{Bd{GGn}}}Bn}{c{{Bd{GH`}}}Bn}{c{{Bd{GHb}}}Bn}{c{{Bd{GHd}}}Bn}{c{{Bd{GHf}}}Bn}{c{{Bd{GHh}}}Bn}{c{{Bd{GHj}}}Bn}{c{{Bd{GHl}}}Bn}{c{{Bd{GHn}}}Bn}{c{{Bd{GI`}}}Bn}{c{{Bd{GIb}}}Bn}{c{{Bd{GId}}}Bn}{c{{Bd{GIf}}}Bn}{c{{Bd{GIh}}}Bn}{c{{Bd{GIj}}}Bn}{c{{Bd{GIl}}}Bn}{c{{Bd{GIn}}}Bn}{c{{Bd{GJ`}}}Bn}{c{{Bd{GJb}}}Bn}{c{{Bd{GJd}}}Bn}{c{{Bd{GJf}}}Bn}{c{{Bd{GJh}}}Bn}{c{{Bd{GJj}}}Bn}{c{{Bd{GJl}}}Bn}{c{{Bd{GJn}}}Bn}{c{{Bd{GK`}}}Bn}{c{{Bd{GKb}}}Bn}{c{{Bd{GKd}}}Bn}{c{{Bd{GKf}}}Bn}{c{{Bd{GKh}}}Bn}{c{{Bd{GKj}}}Bn}{c{{Bd{GKl}}}Bn}{c{{Bd{GKn}}}Bn}{c{{Bd{GL`}}}Bn}{c{{Bd{GLb}}}Bn}{c{{Bd{GLd}}}Bn}{c{{Bd{GLf}}}Bn}{c{{Bd{GLh}}}Bn}{c{{Bd{GLj}}}Bn}{c{{Bd{GLl}}}Bn}{c{{Bd{GLn}}}Bn}{c{{Bd{GM`}}}Bn}{c{{Bd{GMb}}}Bn}{c{{Bd{GMd}}}Bn}{c{{Bd{GMf}}}Bn}{c{{Bd{GMh}}}Bn}{c{{Bd{GMj}}}Bn}{c{{Bd{GMl}}}Bn}{c{{Bd{GMn}}}Bn}{c{{Bd{GN`}}}Bn}{c{{Bd{GNb}}}Bn}{c{{Bd{GNd}}}Bn}{c{{Bd{GNf}}}Bn}{c{{Bd{GNh}}}Bn}{c{{Bd{GNj}}}Bn}{c{{Bd{GNl}}}Bn}{c{{Bd{GNn}}}Bn}{c{{Bd{GO`}}}Bn}{c{{Bd{GOb}}}Bn}{c{{Bd{GOd}}}Bn}{c{{Bd{GOf}}}Bn}{c{{Bd{GOh}}}Bn}{c{{Bd{GOj}}}Bn}{c{{Bd{GOl}}}Bn}{c{{Bd{GOn}}}Bn}{c{{Bd{H@`}}}Bn}{c{{Bd{H@b}}}Bn}{c{{Bd{H@d}}}Bn}{c{{Bd{H@f}}}Bn}{c{{Bd{H@h}}}Bn}{c{{Bd{H@j}}}Bn}{c{{Bd{H@l}}}Bn}{c{{Bd{H@n}}}Bn}{c{{Bd{HA`}}}Bn}{c{{Bd{HAb}}}Bn}{c{{Bd{HAd}}}Bn}{c{{Bd{HAf}}}Bn}{c{{Bd{HAh}}}Bn}{c{{Bd{HAj}}}Bn}{c{{Bd{HAl}}}Bn}{c{{Bd{HAn}}}Bn}{c{{Bd{HB`}}}Bn}{c{{Bd{HBb}}}Bn}{c{{Bd{HBd}}}Bn}{c{{Bd{HBf}}}Bn}{c{{Bd{HBh}}}Bn}{c{{Bd{HBj}}}Bn}{c{{Bd{HBl}}}Bn}{c{{Bd{HBn}}}Bn}{c{{Bd{HC`}}}Bn}{c{{Bd{HCb}}}Bn}{c{{Bd{HCd}}}Bn}{c{{Bd{HCf}}}Bn}{c{{Bd{HCh}}}Bn}{c{{Bd{HCj}}}Bn}{c{{Bd{HCl}}}Bn}{c{{Bd{HCn}}}Bn}{c{{Bd{HD`}}}Bn}{c{{Bd{HDb}}}Bn}{c{{Bd{HDd}}}Bn}{c{{Bd{HDf}}}Bn}{c{{Bd{HDh}}}Bn}{c{{Bd{HDj}}}Bn}{c{{Bd{HDl}}}Bn}{c{{Bd{HDn}}}Bn}{c{{Bd{HE`}}}Bn}{c{{Bd{HEb}}}Bn}{c{{Bd{HEd}}}Bn}{c{{Bd{HEf}}}Bn}{c{{Bd{HEh}}}Bn}{c{{Bd{HEj}}}Bn}{c{{Bd{HEl}}}Bn}{c{{Bd{HEn}}}Bn}{c{{Bd{HF`}}}Bn}{c{{Bd{HFb}}}Bn}{c{{Bd{HFd}}}Bn}{c{{Bd{HFf}}}Bn}{c{{Bd{HFh}}}Bn}{c{{Bd{HFj}}}Bn}{c{{Bd{HFl}}}Bn}{c{{Bd{HFn}}}Bn}{c{{Bd{HG`}}}Bn}{c{{Bd{HGb}}}Bn}{c{{Bd{HGd}}}Bn}{c{{Bd{HGf}}}Bn}{c{{Bd{HGh}}}Bn}{c{{Bd{HGj}}}Bn}{c{{Bd{HGl}}}Bn}{c{{Bd{HGn}}}Bn}{c{{Bd{HH`}}}Bn}{c{{Bd{HHb}}}Bn}{c{{Bd{HHd}}}Bn}{c{{Bd{HHf}}}Bn}{c{{Bd{HHh}}}Bn}{c{{Bd{HHj}}}Bn}{c{{Bd{HHl}}}Bn}{c{{Bd{HHn}}}Bn}{c{{Bd{HI`}}}Bn}{c{{Bd{HIb}}}Bn}{c{{Bd{HId}}}Bn}{c{{Bd{HIf}}}Bn}{c{{Bd{HIh}}}Bn}{c{{Bd{HIj}}}Bn}{c{{Bd{HIl}}}Bn}{c{{Bd{HIn}}}Bn}{c{{Bd{HJ`}}}Bn}{c{{Bd{HJb}}}Bn}{c{{Bd{HJd}}}Bn}{c{{Bd{HJf}}}Bn}{c{{Bd{HJh}}}Bn}{c{{Bd{HJj}}}Bn}{c{{Bd{HJl}}}Bn}{c{{Bd{HJn}}}Bn}{c{{Bd{HK`}}}Bn}{c{{Bd{HKb}}}Bn}{c{{Bd{HKd}}}Bn}{c{{Bd{HKf}}}Bn}{c{{Bd{HKh}}}Bn}{c{{Bd{HKj}}}Bn}{c{{Bd{HKl}}}Bn}{c{{Bd{HKn}}}Bn}{c{{Bd{HL`}}}Bn}{c{{Bd{HLb}}}Bn}{c{{Bd{HLd}}}Bn}{c{{Bd{HLf}}}Bn}{c{{Bd{HLh}}}Bn}{c{{Bd{HLj}}}Bn}{c{{Bd{HLl}}}Bn}{c{{Bd{HLn}}}Bn}{c{{Bd{HM`}}}Bn}{c{{Bd{HMb}}}Bn}{c{{Bd{HMd}}}Bn}{c{{Bd{HMf}}}Bn}{c{{Bd{HMh}}}Bn}{c{{Bd{HMj}}}Bn}{c{{Bd{HMl}}}Bn}{c{{Bd{HMn}}}Bn}{c{{Bd{HN`}}}Bn}{c{{Bd{HNb}}}Bn}{c{{Bd{HNd}}}Bn}{c{{Bd{HNf}}}Bn}{c{{Bd{HNh}}}Bn}{c{{Bd{HNj}}}Bn}{c{{Bd{HNl}}}Bn}{c{{Bd{HNn}}}Bn}{c{{Bd{HO`}}}Bn}{c{{Bd{HOb}}}Bn}{c{{Bd{HOd}}}Bn}{c{{Bd{HOf}}}Bn}{c{{Bd{HOh}}}Bn}{c{{Bd{HOj}}}Bn}{c{{Bd{HOl}}}Bn}{c{{Bd{HOn}}}Bn}{c{{Bd{I@`}}}Bn}{c{{Bd{I@b}}}Bn}{c{{Bd{I@d}}}Bn}{c{{Bd{I@f}}}Bn}{c{{Bd{I@h}}}Bn}{c{{Bd{I@j}}}Bn}{c{{Bd{I@l}}}Bn}{c{{Bd{I@n}}}Bn}{c{{Bd{IA`}}}Bn}{c{{Bd{IAb}}}Bn}{c{{Bd{IAd}}}Bn}{c{{Bd{GAj}}}Bn}{c{{Bd{GAl}}}Bn}{c{{Bd{IAf}}}Bn}{c{{Bd{GAn}}}Bn}{c{{Bd{GB`}}}Bn}{c{{Bd{IAh}}}Bn}{c{{Bd{IAj}}}Bn}{c{{Bd{IAl}}}Bn}{c{{Bd{IAn}}}Bn}{c{{Bd{IB`}}}Bn}{c{{Bd{IBb}}}Bn}{c{{Bd{IBd}}}Bn}{c{{Bd{GBb}}}Bn}{c{{Bd{IBf}}}Bn}{c{{Bd{IBh}}}Bn}{c{{Bd{IBj}}}Bn}{c{{Bd{GBd}}}Bn}{c{{Bd{GBf}}}Bn}{c{{Bd{IBl}}}Bn}{c{{Bd{IBn}}}Bn}{c{{Bd{IC`}}}Bn}{c{{Bd{ICb}}}Bn}{c{{Bd{ICd}}}Bn}{c{{Bd{GBh}}}Bn}{c{{Bd{ICf}}}Bn}{c{{Bd{ICh}}}Bn}{c{{Bd{ICj}}}Bn}{c{{Bd{ICl}}}Bn}{c{{Bd{ICn}}}Bn}{c{{Bd{ID`}}}Bn}{c{{Bd{IDb}}}Bn}{c{{Bd{IDd}}}Bn}{c{{Bd{IDf}}}Bn}{c{{Bd{IDh}}}Bn}{c{{Bd{IDj}}}Bn}{c{{Bd{IDl}}}Bn}{c{{Bd{GBj}}}Bn}{c{{Bd{IDn}}}Bn}{c{{Bd{IE`}}}Bn}{c{{Bd{IEb}}}Bn}{c{{Bd{GBl}}}Bn}{c{{Bd{IEd}}}Bn}{c{{Bd{GBn}}}Bn}{c{{Bd{IEf}}}Bn}{c{{Bd{IEh}}}Bn}{c{{Bd{IEj}}}Bn}{c{{Bd{IEl}}}Bn}{c{{Bd{GC`}}}Bn}{c{{Bd{IEn}}}Bn}{c{{Bd{IF`}}}Bn}{c{{Bd{IFb}}}Bn}{c{{Bd{IFd}}}Bn}{c{{Bd{IFf}}}Bn}{c{{Bd{IFh}}}Bn}{c{{Bd{IFj}}}Bn}{c{{Bd{IFl}}}Bn}{c{{Bd{IFn}}}Bn}{c{{Bd{IG`}}}Bn}{c{{Bd{GCb}}}Bn}{c{{Bd{IGb}}}Bn}{c{{Bd{IGd}}}Bn}{c{{Bd{IGf}}}Bn}{c{{Bd{GCd}}}Bn}{c{{Bd{IGh}}}Bn}{c{{Bd{GCf}}}Bn}{c{{Bd{IGj}}}Bn}{c{{Bd{IGl}}}Bn}{c{{Bd{IGn}}}Bn}{c{{Bd{IH`}}}Bn}{c{{Bd{IHb}}}Bn}{c{{Bd{IHd}}}Bn}{c{{Bd{IHf}}}Bn}{c{{Bd{IHh}}}Bn}{c{{Bd{GCh}}}Bn}{c{{Bd{GCj}}}Bn}{c{{Bd{IHj}}}Bn}{c{{Bd{IHl}}}Bn}{c{{Bd{IHn}}}Bn}{c{{Bd{GCl}}}Bn}{c{{Bd{II`}}}Bn}{c{{Bd{IIb}}}Bn}{c{{Bd{GCn}}}Bn}{c{{Bd{IId}}}Bn}{c{{Bd{IIf}}}Bn}{c{{Bd{GD`}}}Bn}{c{{Bd{IIh}}}Bn}{c{{Bd{IIj}}}Bn}{c{{Bd{IIl}}}Bn}{c{{Bd{IIn}}}Bn}{c{{Bd{GDb}}}Bn}{c{{Bd{IJ`}}}Bn}{c{{Bd{IJb}}}Bn}{c{{Bd{IJd}}}Bn}{c{{Bd{IJf}}}Bn}{c{{Bd{IJh}}}Bn}{c{{Bd{IJj}}}Bn}{c{{Bd{IJl}}}Bn}{c{{Bd{IJn}}}Bn}{c{{Bd{IK`}}}Bn}{c{{Bd{IKb}}}Bn}{c{{Bd{GDd}}}Bn}{c{{Bd{GDf}}}Bn}{c{{Bd{IKd}}}Bn}{c{{Bd{IKf}}}Bn}{c{{Bd{IKh}}}Bn}{c{{Bd{GDh}}}Bn}{c{{Bd{GDj}}}Bn}{c{{Bd{IKj}}}Bn}{c{{Bd{IKl}}}Bn}{c{{Bd{IKn}}}Bn}{c{{Bd{IL`}}}Bn}{c{{Bd{ILb}}}Bn}{c{{Bd{GDl}}}Bn}{c{{Bd{ILd}}}Bn}{c{{Bd{ILf}}}Bn}{c{{Bd{ILh}}}Bn}{c{{Bd{ILj}}}Bn}{c{{Bd{ILl}}}Bn}{c{{Bd{GDn}}}Bn}{c{{Bd{ILn}}}Bn}{c{{Bd{IM`}}}Bn}{c{{Bd{IMb}}}Bn}{c{{Bd{IMd}}}Bn}{c{{Bd{IMf}}}Bn}{c{{Bd{IMh}}}Bn}{c{{Bd{IMj}}}Bn}{c{{Bd{IMl}}}Bn}{c{{Bd{IMn}}}Bn}{c{{Bd{IN`}}}Bn}{c{{Bd{INb}}}Bn}{c{{Bd{GE`}}}Bn}{c{{Bd{INd}}}Bn}{c{{Bd{INf}}}Bn}{c{{Bd{INh}}}Bn}{c{{Bd{INj}}}Bn}{c{{Bd{INl}}}Bn}{c{{Bd{INn}}}Bn}{c{{Bd{IO`}}}Bn}{c{{Bd{IOb}}}Bn}{c{{Bd{IOd}}}Bn}{c{{Bd{IOf}}}Bn}{c{{Bd{IOh}}}Bn}{c{{Bd{IOj}}}Bn}{c{{Bd{IOl}}}Bn}```````````{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}`````````````````{{}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}{{}GDn}{{}GE`}```````````````{{{b{GEb}}{b{GEb}}}C`}{{{b{GEd}}{b{GEd}}}C`}{{{b{GEf}}{b{GEf}}}C`}{{{b{GEh}}{b{GEh}}}C`}{{{b{GEj}}{b{GEj}}}C`}{{{b{GEl}}{b{GEl}}}C`}{{{b{GEn}}{b{GEn}}}C`}{{{b{GF`}}{b{GF`}}}C`}{{{b{GFb}}{b{GFb}}}C`}{{{b{GFd}}{b{GFd}}}C`}{{{b{GFf}}{b{GFf}}}C`}{{{b{GFh}}{b{GFh}}}C`}{{{b{GFj}}{b{GFj}}}C`}{{{b{GFl}}{b{GFl}}}C`}{{{b{GFn}}{b{GFn}}}C`}{{{b{GG`}}{b{GG`}}}C`}{{{b{GGb}}{b{GGb}}}C`}{{{b{GGd}}{b{GGd}}}C`}{{{b{GGf}}{b{GGf}}}C`}{{{b{GGh}}{b{GGh}}}C`}{{{b{GGj}}{b{GGj}}}C`}{{{b{GGl}}{b{GGl}}}C`}{{{b{GGn}}{b{GGn}}}C`}{{{b{GH`}}{b{GH`}}}C`}{{{b{GHb}}{b{GHb}}}C`}{{{b{GHd}}{b{GHd}}}C`}{{{b{GHf}}{b{GHf}}}C`}{{{b{GHh}}{b{GHh}}}C`}{{{b{GHj}}{b{GHj}}}C`}{{{b{GHl}}{b{GHl}}}C`}{{{b{GHn}}{b{GHn}}}C`}{{{b{GI`}}{b{GI`}}}C`}{{{b{GIb}}{b{GIb}}}C`}{{{b{GId}}{b{GId}}}C`}{{{b{GIf}}{b{GIf}}}C`}{{{b{GIh}}{b{GIh}}}C`}{{{b{GIj}}{b{GIj}}}C`}{{{b{GIl}}{b{GIl}}}C`}{{{b{GIn}}{b{GIn}}}C`}{{{b{GJ`}}{b{GJ`}}}C`}{{{b{GJb}}{b{GJb}}}C`}{{{b{GJd}}{b{GJd}}}C`}{{{b{GJf}}{b{GJf}}}C`}{{{b{GJh}}{b{GJh}}}C`}{{{b{GJj}}{b{GJj}}}C`}{{{b{GJl}}{b{GJl}}}C`}{{{b{GJn}}{b{GJn}}}C`}{{{b{GK`}}{b{GK`}}}C`}{{{b{GKb}}{b{GKb}}}C`}{{{b{GKd}}{b{GKd}}}C`}{{{b{GKf}}{b{GKf}}}C`}{{{b{GKh}}{b{GKh}}}C`}{{{b{GKj}}{b{GKj}}}C`}{{{b{GKl}}{b{GKl}}}C`}{{{b{GKn}}{b{GKn}}}C`}{{{b{GL`}}{b{GL`}}}C`}{{{b{GLb}}{b{GLb}}}C`}{{{b{GLd}}{b{GLd}}}C`}{{{b{GLf}}{b{GLf}}}C`}{{{b{GLh}}{b{GLh}}}C`}{{{b{GLj}}{b{GLj}}}C`}{{{b{GLl}}{b{GLl}}}C`}{{{b{GLn}}{b{GLn}}}C`}{{{b{GM`}}{b{GM`}}}C`}{{{b{GMb}}{b{GMb}}}C`}{{{b{GMd}}{b{GMd}}}C`}{{{b{GMf}}{b{GMf}}}C`}{{{b{GMh}}{b{GMh}}}C`}{{{b{GMj}}{b{GMj}}}C`}{{{b{GMl}}{b{GMl}}}C`}{{{b{GMn}}{b{GMn}}}C`}{{{b{GN`}}{b{GN`}}}C`}{{{b{GNb}}{b{GNb}}}C`}{{{b{GNd}}{b{GNd}}}C`}{{{b{GNf}}{b{GNf}}}C`}{{{b{GNh}}{b{GNh}}}C`}{{{b{GNj}}{b{GNj}}}C`}{{{b{GNl}}{b{GNl}}}C`}{{{b{GNn}}{b{GNn}}}C`}{{{b{GO`}}{b{GO`}}}C`}{{{b{GOb}}{b{GOb}}}C`}{{{b{GOd}}{b{GOd}}}C`}{{{b{GOf}}{b{GOf}}}C`}{{{b{GOh}}{b{GOh}}}C`}{{{b{GOj}}{b{GOj}}}C`}{{{b{GOl}}{b{GOl}}}C`}{{{b{GOn}}{b{GOn}}}C`}{{{b{H@`}}{b{H@`}}}C`}{{{b{H@b}}{b{H@b}}}C`}{{{b{H@d}}{b{H@d}}}C`}{{{b{H@f}}{b{H@f}}}C`}{{{b{H@h}}{b{H@h}}}C`}{{{b{H@j}}{b{H@j}}}C`}{{{b{H@l}}{b{H@l}}}C`}{{{b{H@n}}{b{H@n}}}C`}{{{b{HA`}}{b{HA`}}}C`}{{{b{HAb}}{b{HAb}}}C`}{{{b{HAd}}{b{HAd}}}C`}{{{b{HAf}}{b{HAf}}}C`}{{{b{HAh}}{b{HAh}}}C`}{{{b{HAj}}{b{HAj}}}C`}{{{b{HAl}}{b{HAl}}}C`}{{{b{HAn}}{b{HAn}}}C`}{{{b{HB`}}{b{HB`}}}C`}{{{b{HBb}}{b{HBb}}}C`}{{{b{HBd}}{b{HBd}}}C`}{{{b{HBf}}{b{HBf}}}C`}{{{b{HBh}}{b{HBh}}}C`}{{{b{HBj}}{b{HBj}}}C`}{{{b{HBl}}{b{HBl}}}C`}{{{b{HBn}}{b{HBn}}}C`}{{{b{HC`}}{b{HC`}}}C`}{{{b{HCb}}{b{HCb}}}C`}{{{b{HCd}}{b{HCd}}}C`}{{{b{HCf}}{b{HCf}}}C`}{{{b{HCh}}{b{HCh}}}C`}{{{b{HCj}}{b{HCj}}}C`}{{{b{HCl}}{b{HCl}}}C`}{{{b{HCn}}{b{HCn}}}C`}{{{b{HD`}}{b{HD`}}}C`}{{{b{HDb}}{b{HDb}}}C`}{{{b{HDd}}{b{HDd}}}C`}{{{b{HDf}}{b{HDf}}}C`}{{{b{HDh}}{b{HDh}}}C`}{{{b{HDj}}{b{HDj}}}C`}{{{b{HDl}}{b{HDl}}}C`}{{{b{HDn}}{b{HDn}}}C`}{{{b{HE`}}{b{HE`}}}C`}{{{b{HEb}}{b{HEb}}}C`}{{{b{HEd}}{b{HEd}}}C`}{{{b{HEf}}{b{HEf}}}C`}{{{b{HEh}}{b{HEh}}}C`}{{{b{HEj}}{b{HEj}}}C`}{{{b{HEl}}{b{HEl}}}C`}{{{b{HEn}}{b{HEn}}}C`}{{{b{HF`}}{b{HF`}}}C`}{{{b{HFb}}{b{HFb}}}C`}{{{b{HFd}}{b{HFd}}}C`}{{{b{HFf}}{b{HFf}}}C`}{{{b{HFh}}{b{HFh}}}C`}{{{b{HFj}}{b{HFj}}}C`}{{{b{HFl}}{b{HFl}}}C`}{{{b{HFn}}{b{HFn}}}C`}{{{b{HG`}}{b{HG`}}}C`}{{{b{HGb}}{b{HGb}}}C`}{{{b{HGd}}{b{HGd}}}C`}{{{b{HGf}}{b{HGf}}}C`}{{{b{HGh}}{b{HGh}}}C`}{{{b{HGj}}{b{HGj}}}C`}{{{b{HGl}}{b{HGl}}}C`}{{{b{HGn}}{b{HGn}}}C`}{{{b{HH`}}{b{HH`}}}C`}{{{b{HHb}}{b{HHb}}}C`}{{{b{HHd}}{b{HHd}}}C`}{{{b{HHf}}{b{HHf}}}C`}{{{b{HHh}}{b{HHh}}}C`}{{{b{HHj}}{b{HHj}}}C`}{{{b{HHl}}{b{HHl}}}C`}{{{b{HHn}}{b{HHn}}}C`}{{{b{HI`}}{b{HI`}}}C`}{{{b{HIb}}{b{HIb}}}C`}{{{b{HId}}{b{HId}}}C`}{{{b{HIf}}{b{HIf}}}C`}{{{b{HIh}}{b{HIh}}}C`}{{{b{HIj}}{b{HIj}}}C`}{{{b{HIl}}{b{HIl}}}C`}{{{b{HIn}}{b{HIn}}}C`}{{{b{HJ`}}{b{HJ`}}}C`}{{{b{HJb}}{b{HJb}}}C`}{{{b{HJd}}{b{HJd}}}C`}{{{b{HJf}}{b{HJf}}}C`}{{{b{HJh}}{b{HJh}}}C`}{{{b{HJj}}{b{HJj}}}C`}{{{b{HJl}}{b{HJl}}}C`}{{{b{HJn}}{b{HJn}}}C`}{{{b{HK`}}{b{HK`}}}C`}{{{b{HKb}}{b{HKb}}}C`}{{{b{HKd}}{b{HKd}}}C`}{{{b{HKf}}{b{HKf}}}C`}{{{b{HKh}}{b{HKh}}}C`}{{{b{HKj}}{b{HKj}}}C`}{{{b{HKl}}{b{HKl}}}C`}{{{b{HKn}}{b{HKn}}}C`}{{{b{HL`}}{b{HL`}}}C`}{{{b{HLb}}{b{HLb}}}C`}{{{b{HLd}}{b{HLd}}}C`}{{{b{HLf}}{b{HLf}}}C`}{{{b{HLh}}{b{HLh}}}C`}{{{b{HLj}}{b{HLj}}}C`}{{{b{HLl}}{b{HLl}}}C`}{{{b{HLn}}{b{HLn}}}C`}{{{b{HM`}}{b{HM`}}}C`}{{{b{HMb}}{b{HMb}}}C`}{{{b{HMd}}{b{HMd}}}C`}{{{b{HMf}}{b{HMf}}}C`}{{{b{HMh}}{b{HMh}}}C`}{{{b{HMj}}{b{HMj}}}C`}{{{b{HMl}}{b{HMl}}}C`}{{{b{HMn}}{b{HMn}}}C`}{{{b{HN`}}{b{HN`}}}C`}{{{b{HNb}}{b{HNb}}}C`}{{{b{HNd}}{b{HNd}}}C`}{{{b{HNf}}{b{HNf}}}C`}{{{b{HNh}}{b{HNh}}}C`}{{{b{HNj}}{b{HNj}}}C`}{{{b{HNl}}{b{HNl}}}C`}{{{b{HNn}}{b{HNn}}}C`}{{{b{HO`}}{b{HO`}}}C`}{{{b{HOb}}{b{HOb}}}C`}{{{b{HOd}}{b{HOd}}}C`}{{{b{HOf}}{b{HOf}}}C`}{{{b{HOh}}{b{HOh}}}C`}{{{b{HOj}}{b{HOj}}}C`}{{{b{HOl}}{b{HOl}}}C`}{{{b{HOn}}{b{HOn}}}C`}{{{b{I@`}}{b{I@`}}}C`}{{{b{I@b}}{b{I@b}}}C`}{{{b{I@d}}{b{I@d}}}C`}{{{b{I@f}}{b{I@f}}}C`}{{{b{I@h}}{b{I@h}}}C`}{{{b{I@j}}{b{I@j}}}C`}{{{b{I@l}}{b{I@l}}}C`}{{{b{I@n}}{b{I@n}}}C`}{{{b{IA`}}{b{IA`}}}C`}{{{b{IAb}}{b{IAb}}}C`}{{{b{IAd}}{b{IAd}}}C`}{{{b{GAj}}{b{GAj}}}C`}{{{b{GAl}}{b{GAl}}}C`}{{{b{IAf}}{b{IAf}}}C`}{{{b{GAn}}{b{GAn}}}C`}{{{b{GB`}}{b{GB`}}}C`}{{{b{IAh}}{b{IAh}}}C`}{{{b{IAj}}{b{IAj}}}C`}{{{b{IAl}}{b{IAl}}}C`}{{{b{IAn}}{b{IAn}}}C`}{{{b{IB`}}{b{IB`}}}C`}{{{b{IBb}}{b{IBb}}}C`}{{{b{IBd}}{b{IBd}}}C`}{{{b{GBb}}{b{GBb}}}C`}{{{b{IBf}}{b{IBf}}}C`}{{{b{IBh}}{b{IBh}}}C`}{{{b{IBj}}{b{IBj}}}C`}{{{b{GBd}}{b{GBd}}}C`}{{{b{GBf}}{b{GBf}}}C`}{{{b{IBl}}{b{IBl}}}C`}{{{b{IBn}}{b{IBn}}}C`}{{{b{IC`}}{b{IC`}}}C`}{{{b{ICb}}{b{ICb}}}C`}{{{b{ICd}}{b{ICd}}}C`}{{{b{GBh}}{b{GBh}}}C`}{{{b{ICf}}{b{ICf}}}C`}{{{b{ICh}}{b{ICh}}}C`}{{{b{ICj}}{b{ICj}}}C`}{{{b{ICl}}{b{ICl}}}C`}{{{b{ICn}}{b{ICn}}}C`}{{{b{ID`}}{b{ID`}}}C`}{{{b{IDb}}{b{IDb}}}C`}{{{b{IDd}}{b{IDd}}}C`}{{{b{IDf}}{b{IDf}}}C`}{{{b{IDh}}{b{IDh}}}C`}{{{b{IDj}}{b{IDj}}}C`}{{{b{IDl}}{b{IDl}}}C`}{{{b{GBj}}{b{GBj}}}C`}{{{b{IDn}}{b{IDn}}}C`}{{{b{IE`}}{b{IE`}}}C`}{{{b{IEb}}{b{IEb}}}C`}{{{b{GBl}}{b{GBl}}}C`}{{{b{IEd}}{b{IEd}}}C`}{{{b{GBn}}{b{GBn}}}C`}{{{b{IEf}}{b{IEf}}}C`}{{{b{IEh}}{b{IEh}}}C`}{{{b{IEj}}{b{IEj}}}C`}{{{b{IEl}}{b{IEl}}}C`}{{{b{GC`}}{b{GC`}}}C`}{{{b{IEn}}{b{IEn}}}C`}{{{b{IF`}}{b{IF`}}}C`}{{{b{IFb}}{b{IFb}}}C`}{{{b{IFd}}{b{IFd}}}C`}{{{b{IFf}}{b{IFf}}}C`}{{{b{IFh}}{b{IFh}}}C`}{{{b{IFj}}{b{IFj}}}C`}{{{b{IFl}}{b{IFl}}}C`}{{{b{IFn}}{b{IFn}}}C`}{{{b{IG`}}{b{IG`}}}C`}{{{b{GCb}}{b{GCb}}}C`}{{{b{IGb}}{b{IGb}}}C`}{{{b{IGd}}{b{IGd}}}C`}{{{b{IGf}}{b{IGf}}}C`}{{{b{GCd}}{b{GCd}}}C`}{{{b{IGh}}{b{IGh}}}C`}{{{b{GCf}}{b{GCf}}}C`}{{{b{IGj}}{b{IGj}}}C`}{{{b{IGl}}{b{IGl}}}C`}{{{b{IGn}}{b{IGn}}}C`}{{{b{IH`}}{b{IH`}}}C`}{{{b{IHb}}{b{IHb}}}C`}{{{b{IHd}}{b{IHd}}}C`}{{{b{IHf}}{b{IHf}}}C`}{{{b{IHh}}{b{IHh}}}C`}{{{b{GCh}}{b{GCh}}}C`}{{{b{GCj}}{b{GCj}}}C`}{{{b{IHj}}{b{IHj}}}C`}{{{b{IHl}}{b{IHl}}}C`}{{{b{IHn}}{b{IHn}}}C`}{{{b{GCl}}{b{GCl}}}C`}{{{b{II`}}{b{II`}}}C`}{{{b{IIb}}{b{IIb}}}C`}{{{b{GCn}}{b{GCn}}}C`}{{{b{IId}}{b{IId}}}C`}{{{b{IIf}}{b{IIf}}}C`}{{{b{GD`}}{b{GD`}}}C`}{{{b{IIh}}{b{IIh}}}C`}{{{b{IIj}}{b{IIj}}}C`}{{{b{IIl}}{b{IIl}}}C`}{{{b{IIn}}{b{IIn}}}C`}{{{b{GDb}}{b{GDb}}}C`}{{{b{IJ`}}{b{IJ`}}}C`}{{{b{IJb}}{b{IJb}}}C`}{{{b{IJd}}{b{IJd}}}C`}{{{b{IJf}}{b{IJf}}}C`}{{{b{IJh}}{b{IJh}}}C`}{{{b{IJj}}{b{IJj}}}C`}{{{b{IJl}}{b{IJl}}}C`}{{{b{IJn}}{b{IJn}}}C`}{{{b{IK`}}{b{IK`}}}C`}{{{b{IKb}}{b{IKb}}}C`}{{{b{GDd}}{b{GDd}}}C`}{{{b{GDf}}{b{GDf}}}C`}{{{b{IKd}}{b{IKd}}}C`}{{{b{IKf}}{b{IKf}}}C`}{{{b{IKh}}{b{IKh}}}C`}{{{b{GDh}}{b{GDh}}}C`}{{{b{GDj}}{b{GDj}}}C`}{{{b{IKj}}{b{IKj}}}C`}{{{b{IKl}}{b{IKl}}}C`}{{{b{IKn}}{b{IKn}}}C`}{{{b{IL`}}{b{IL`}}}C`}{{{b{ILb}}{b{ILb}}}C`}{{{b{GDl}}{b{GDl}}}C`}{{{b{ILd}}{b{ILd}}}C`}{{{b{ILf}}{b{ILf}}}C`}{{{b{ILh}}{b{ILh}}}C`}{{{b{ILj}}{b{ILj}}}C`}{{{b{ILl}}{b{ILl}}}C`}{{{b{GDn}}{b{GDn}}}C`}{{{b{ILn}}{b{ILn}}}C`}{{{b{IM`}}{b{IM`}}}C`}{{{b{IMb}}{b{IMb}}}C`}{{{b{IMd}}{b{IMd}}}C`}{{{b{IMf}}{b{IMf}}}C`}{{{b{IMh}}{b{IMh}}}C`}{{{b{IMj}}{b{IMj}}}C`}{{{b{IMl}}{b{IMl}}}C`}{{{b{IMn}}{b{IMn}}}C`}{{{b{IN`}}{b{IN`}}}C`}{{{b{INb}}{b{INb}}}C`}{{{b{GE`}}{b{GE`}}}C`}{{{b{INd}}{b{INd}}}C`}{{{b{INf}}{b{INf}}}C`}{{{b{INh}}{b{INh}}}C`}{{{b{INj}}{b{INj}}}C`}{{{b{INl}}{b{INl}}}C`}{{{b{INn}}{b{INn}}}C`}{{{b{IO`}}{b{IO`}}}C`}{{{b{IOb}}{b{IOb}}}C`}{{{b{IOd}}{b{IOd}}}C`}{{{b{IOf}}{b{IOf}}}C`}{{{b{IOh}}{b{IOh}}}C`}{{{b{IOj}}{b{IOj}}}C`}{{{b{IOl}}{b{IOl}}}C`}`````````````{{{b{dGAj}}c}Aj{{DBf{}{{DBd{GAj}}}}}}{{{b{dGAl}}c}Aj{{DBf{}{{DBd{GAl}}}}}}{{{b{dGAn}}c}Aj{{DBf{}{{DBd{GAn}}}}}}{{{b{dGB`}}c}Aj{{DBf{}{{DBd{GB`}}}}}}{{{b{dGBb}}c}Aj{{DBf{}{{DBd{GBb}}}}}}{{{b{dGBd}}c}Aj{{DBf{}{{DBd{GBd}}}}}}{{{b{dGBf}}c}Aj{{DBf{}{{DBd{GBf}}}}}}{{{b{dGBh}}c}Aj{{DBf{}{{DBd{GBh}}}}}}{{{b{dGBj}}c}Aj{{DBf{}{{DBd{GBj}}}}}}{{{b{dGBl}}c}Aj{{DBf{}{{DBd{GBl}}}}}}{{{b{dGBn}}c}Aj{{DBf{}{{DBd{GBn}}}}}}{{{b{dGC`}}c}Aj{{DBf{}{{DBd{GC`}}}}}}{{{b{dGCb}}c}Aj{{DBf{}{{DBd{GCb}}}}}}{{{b{dGCd}}c}Aj{{DBf{}{{DBd{GCd}}}}}}{{{b{dGCf}}c}Aj{{DBf{}{{DBd{GCf}}}}}}{{{b{dGCh}}c}Aj{{DBf{}{{DBd{GCh}}}}}}{{{b{dGCj}}c}Aj{{DBf{}{{DBd{GCj}}}}}}{{{b{dGCl}}c}Aj{{DBf{}{{DBd{GCl}}}}}}{{{b{dGCn}}c}Aj{{DBf{}{{DBd{GCn}}}}}}{{{b{dGD`}}c}Aj{{DBf{}{{DBd{GD`}}}}}}{{{b{dGDb}}c}Aj{{DBf{}{{DBd{GDb}}}}}}{{{b{dGDd}}c}Aj{{DBf{}{{DBd{GDd}}}}}}{{{b{dGDf}}c}Aj{{DBf{}{{DBd{GDf}}}}}}{{{b{dGDh}}c}Aj{{DBf{}{{DBd{GDh}}}}}}{{{b{dGDj}}c}Aj{{DBf{}{{DBd{GDj}}}}}}{{{b{dGDl}}c}Aj{{DBf{}{{DBd{GDl}}}}}}{{{b{dGDn}}c}Aj{{DBf{}{{DBd{GDn}}}}}}{{{b{dGE`}}c}Aj{{DBf{}{{DBd{GE`}}}}}}{Bff}`````````````````````````````````````````````````{{{b{GEb}}{b{dCb}}}DBh}{{{b{GEd}}{b{dCb}}}DBh}{{{b{GEf}}{b{dCb}}}DBh}{{{b{GEh}}{b{dCb}}}DBh}{{{b{GEj}}{b{dCb}}}DBh}{{{b{GEl}}{b{dCb}}}DBh}{{{b{GEn}}{b{dCb}}}DBh}{{{b{GF`}}{b{dCb}}}DBh}{{{b{GFb}}{b{dCb}}}DBh}{{{b{GFd}}{b{dCb}}}DBh}{{{b{GFf}}{b{dCb}}}DBh}{{{b{GFh}}{b{dCb}}}DBh}{{{b{GFj}}{b{dCb}}}DBh}{{{b{GFl}}{b{dCb}}}DBh}{{{b{GFn}}{b{dCb}}}DBh}{{{b{GG`}}{b{dCb}}}DBh}{{{b{GGb}}{b{dCb}}}DBh}{{{b{GGd}}{b{dCb}}}DBh}{{{b{GGf}}{b{dCb}}}DBh}{{{b{GGh}}{b{dCb}}}DBh}{{{b{GGj}}{b{dCb}}}DBh}{{{b{GGl}}{b{dCb}}}DBh}{{{b{GGn}}{b{dCb}}}DBh}{{{b{GH`}}{b{dCb}}}DBh}{{{b{GHb}}{b{dCb}}}DBh}{{{b{GHd}}{b{dCb}}}DBh}{{{b{GHf}}{b{dCb}}}DBh}{{{b{GHh}}{b{dCb}}}DBh}{{{b{GHj}}{b{dCb}}}DBh}{{{b{GHl}}{b{dCb}}}DBh}{{{b{GHn}}{b{dCb}}}DBh}{{{b{GI`}}{b{dCb}}}DBh}{{{b{GIb}}{b{dCb}}}DBh}{{{b{GId}}{b{dCb}}}DBh}{{{b{GIf}}{b{dCb}}}DBh}{{{b{GIh}}{b{dCb}}}DBh}{{{b{GIj}}{b{dCb}}}DBh}{{{b{GIl}}{b{dCb}}}DBh}{{{b{GIn}}{b{dCb}}}DBh}{{{b{GJ`}}{b{dCb}}}DBh}{{{b{GJb}}{b{dCb}}}DBh}{{{b{GJd}}{b{dCb}}}DBh}{{{b{GJf}}{b{dCb}}}DBh}{{{b{GJh}}{b{dCb}}}DBh}{{{b{GJj}}{b{dCb}}}DBh}{{{b{GJl}}{b{dCb}}}DBh}{{{b{GJn}}{b{dCb}}}DBh}{{{b{GK`}}{b{dCb}}}DBh}{{{b{GKb}}{b{dCb}}}DBh}{{{b{GKd}}{b{dCb}}}DBh}{{{b{GKf}}{b{dCb}}}DBh}{{{b{GKh}}{b{dCb}}}DBh}{{{b{GKj}}{b{dCb}}}DBh}{{{b{GKl}}{b{dCb}}}DBh}{{{b{GKn}}{b{dCb}}}DBh}{{{b{GL`}}{b{dCb}}}DBh}{{{b{GLb}}{b{dCb}}}DBh}{{{b{GLd}}{b{dCb}}}DBh}{{{b{GLf}}{b{dCb}}}DBh}{{{b{GLh}}{b{dCb}}}DBh}{{{b{GLj}}{b{dCb}}}DBh}{{{b{GLl}}{b{dCb}}}DBh}{{{b{GLn}}{b{dCb}}}DBh}{{{b{GM`}}{b{dCb}}}DBh}{{{b{GMb}}{b{dCb}}}DBh}{{{b{GMd}}{b{dCb}}}DBh}{{{b{GMf}}{b{dCb}}}DBh}{{{b{GMh}}{b{dCb}}}DBh}{{{b{GMj}}{b{dCb}}}DBh}{{{b{GMl}}{b{dCb}}}DBh}{{{b{GMn}}{b{dCb}}}DBh}{{{b{GN`}}{b{dCb}}}DBh}{{{b{GNb}}{b{dCb}}}DBh}{{{b{GNd}}{b{dCb}}}DBh}{{{b{GNf}}{b{dCb}}}DBh}{{{b{GNh}}{b{dCb}}}DBh}{{{b{GNj}}{b{dCb}}}DBh}{{{b{GNl}}{b{dCb}}}DBh}{{{b{GNn}}{b{dCb}}}DBh}{{{b{GO`}}{b{dCb}}}DBh}{{{b{GOb}}{b{dCb}}}DBh}{{{b{GOd}}{b{dCb}}}DBh}{{{b{GOf}}{b{dCb}}}DBh}{{{b{GOh}}{b{dCb}}}DBh}{{{b{GOj}}{b{dCb}}}DBh}{{{b{GOl}}{b{dCb}}}DBh}{{{b{GOn}}{b{dCb}}}DBh}{{{b{H@`}}{b{dCb}}}DBh}{{{b{H@b}}{b{dCb}}}DBh}{{{b{H@d}}{b{dCb}}}DBh}{{{b{H@f}}{b{dCb}}}DBh}{{{b{H@h}}{b{dCb}}}DBh}{{{b{H@j}}{b{dCb}}}DBh}{{{b{H@l}}{b{dCb}}}DBh}{{{b{H@n}}{b{dCb}}}DBh}{{{b{HA`}}{b{dCb}}}DBh}{{{b{HAb}}{b{dCb}}}DBh}{{{b{HAd}}{b{dCb}}}DBh}{{{b{HAf}}{b{dCb}}}DBh}{{{b{HAh}}{b{dCb}}}DBh}{{{b{HAj}}{b{dCb}}}DBh}{{{b{HAl}}{b{dCb}}}DBh}{{{b{HAn}}{b{dCb}}}DBh}{{{b{HB`}}{b{dCb}}}DBh}{{{b{HBb}}{b{dCb}}}DBh}{{{b{HBd}}{b{dCb}}}DBh}{{{b{HBf}}{b{dCb}}}DBh}{{{b{HBh}}{b{dCb}}}DBh}{{{b{HBj}}{b{dCb}}}DBh}{{{b{HBl}}{b{dCb}}}DBh}{{{b{HBn}}{b{dCb}}}DBh}{{{b{HC`}}{b{dCb}}}DBh}{{{b{HCb}}{b{dCb}}}DBh}{{{b{HCd}}{b{dCb}}}DBh}{{{b{HCf}}{b{dCb}}}DBh}{{{b{HCh}}{b{dCb}}}DBh}{{{b{HCj}}{b{dCb}}}DBh}{{{b{HCl}}{b{dCb}}}DBh}{{{b{HCn}}{b{dCb}}}DBh}{{{b{HD`}}{b{dCb}}}DBh}{{{b{HDb}}{b{dCb}}}DBh}{{{b{HDd}}{b{dCb}}}DBh}{{{b{HDf}}{b{dCb}}}DBh}{{{b{HDh}}{b{dCb}}}DBh}{{{b{HDj}}{b{dCb}}}DBh}{{{b{HDl}}{b{dCb}}}DBh}{{{b{HDn}}{b{dCb}}}DBh}{{{b{HE`}}{b{dCb}}}DBh}{{{b{HEb}}{b{dCb}}}DBh}{{{b{HEd}}{b{dCb}}}DBh}{{{b{HEf}}{b{dCb}}}DBh}{{{b{HEh}}{b{dCb}}}DBh}{{{b{HEj}}{b{dCb}}}DBh}{{{b{HEl}}{b{dCb}}}DBh}{{{b{HEn}}{b{dCb}}}DBh}{{{b{HF`}}{b{dCb}}}DBh}{{{b{HFb}}{b{dCb}}}DBh}{{{b{HFd}}{b{dCb}}}DBh}{{{b{HFf}}{b{dCb}}}DBh}{{{b{HFh}}{b{dCb}}}DBh}{{{b{HFj}}{b{dCb}}}DBh}{{{b{HFl}}{b{dCb}}}DBh}{{{b{HFn}}{b{dCb}}}DBh}{{{b{HG`}}{b{dCb}}}DBh}{{{b{HGb}}{b{dCb}}}DBh}{{{b{HGd}}{b{dCb}}}DBh}{{{b{HGf}}{b{dCb}}}DBh}{{{b{HGh}}{b{dCb}}}DBh}{{{b{HGj}}{b{dCb}}}DBh}{{{b{HGl}}{b{dCb}}}DBh}{{{b{HGn}}{b{dCb}}}DBh}{{{b{HH`}}{b{dCb}}}DBh}{{{b{HHb}}{b{dCb}}}DBh}{{{b{HHd}}{b{dCb}}}DBh}{{{b{HHf}}{b{dCb}}}DBh}{{{b{HHh}}{b{dCb}}}DBh}{{{b{HHj}}{b{dCb}}}DBh}{{{b{HHl}}{b{dCb}}}DBh}{{{b{HHn}}{b{dCb}}}DBh}{{{b{HI`}}{b{dCb}}}DBh}{{{b{HIb}}{b{dCb}}}DBh}{{{b{HId}}{b{dCb}}}DBh}{{{b{HIf}}{b{dCb}}}DBh}{{{b{HIh}}{b{dCb}}}DBh}{{{b{HIj}}{b{dCb}}}DBh}{{{b{HIl}}{b{dCb}}}DBh}{{{b{HIn}}{b{dCb}}}DBh}{{{b{HJ`}}{b{dCb}}}DBh}{{{b{HJb}}{b{dCb}}}DBh}{{{b{HJd}}{b{dCb}}}DBh}{{{b{HJf}}{b{dCb}}}DBh}{{{b{HJh}}{b{dCb}}}DBh}{{{b{HJj}}{b{dCb}}}DBh}{{{b{HJl}}{b{dCb}}}DBh}{{{b{HJn}}{b{dCb}}}DBh}{{{b{HK`}}{b{dCb}}}DBh}{{{b{HKb}}{b{dCb}}}DBh}{{{b{HKd}}{b{dCb}}}DBh}{{{b{HKf}}{b{dCb}}}DBh}{{{b{HKh}}{b{dCb}}}DBh}{{{b{HKj}}{b{dCb}}}DBh}{{{b{HKl}}{b{dCb}}}DBh}{{{b{HKn}}{b{dCb}}}DBh}{{{b{HL`}}{b{dCb}}}DBh}{{{b{HLb}}{b{dCb}}}DBh}{{{b{HLd}}{b{dCb}}}DBh}{{{b{HLf}}{b{dCb}}}DBh}{{{b{HLh}}{b{dCb}}}DBh}{{{b{HLj}}{b{dCb}}}DBh}{{{b{HLl}}{b{dCb}}}DBh}{{{b{HLn}}{b{dCb}}}DBh}{{{b{HM`}}{b{dCb}}}DBh}{{{b{HMb}}{b{dCb}}}DBh}{{{b{HMd}}{b{dCb}}}DBh}{{{b{HMf}}{b{dCb}}}DBh}{{{b{HMh}}{b{dCb}}}DBh}{{{b{HMj}}{b{dCb}}}DBh}{{{b{HMl}}{b{dCb}}}DBh}{{{b{HMn}}{b{dCb}}}DBh}{{{b{HN`}}{b{dCb}}}DBh}{{{b{HNb}}{b{dCb}}}DBh}{{{b{HNd}}{b{dCb}}}DBh}{{{b{HNf}}{b{dCb}}}DBh}{{{b{HNh}}{b{dCb}}}DBh}{{{b{HNj}}{b{dCb}}}DBh}{{{b{HNl}}{b{dCb}}}DBh}{{{b{HNn}}{b{dCb}}}DBh}{{{b{HO`}}{b{dCb}}}DBh}{{{b{HOb}}{b{dCb}}}DBh}{{{b{HOd}}{b{dCb}}}DBh}{{{b{HOf}}{b{dCb}}}DBh}{{{b{HOh}}{b{dCb}}}DBh}{{{b{HOj}}{b{dCb}}}DBh}{{{b{HOl}}{b{dCb}}}DBh}{{{b{HOn}}{b{dCb}}}DBh}{{{b{I@`}}{b{dCb}}}DBh}{{{b{I@b}}{b{dCb}}}DBh}{{{b{I@d}}{b{dCb}}}DBh}{{{b{I@f}}{b{dCb}}}DBh}{{{b{I@h}}{b{dCb}}}DBh}{{{b{I@j}}{b{dCb}}}DBh}{{{b{I@l}}{b{dCb}}}DBh}{{{b{I@n}}{b{dCb}}}DBh}{{{b{IA`}}{b{dCb}}}DBh}{{{b{IAb}}{b{dCb}}}DBh}{{{b{IAd}}{b{dCb}}}DBh}{{{b{GAj}}{b{dCb}}}DBh}0000{{{b{GAl}}{b{dCb}}}DBh}0000{{{b{IAf}}{b{dCb}}}DBh}{{{b{GAn}}{b{dCb}}}DBh}0000{{{b{GB`}}{b{dCb}}}DBh}0000{{{b{IAh}}{b{dCb}}}DBh}{{{b{IAj}}{b{dCb}}}DBh}{{{b{IAl}}{b{dCb}}}DBh}{{{b{IAn}}{b{dCb}}}DBh}{{{b{IB`}}{b{dCb}}}DBh}{{{b{IBb}}{b{dCb}}}DBh}{{{b{IBd}}{b{dCb}}}DBh}{{{b{GBb}}{b{dCb}}}DBh}0000{{{b{IBf}}{b{dCb}}}DBh}{{{b{IBh}}{b{dCb}}}DBh}{{{b{IBj}}{b{dCb}}}DBh}{{{b{GBd}}{b{dCb}}}DBh}0000{{{b{GBf}}{b{dCb}}}DBh}0000{{{b{IBl}}{b{dCb}}}DBh}{{{b{IBn}}{b{dCb}}}DBh}{{{b{IC`}}{b{dCb}}}DBh}{{{b{ICb}}{b{dCb}}}DBh}{{{b{ICd}}{b{dCb}}}DBh}{{{b{GBh}}{b{dCb}}}DBh}0000{{{b{ICf}}{b{dCb}}}DBh}{{{b{ICh}}{b{dCb}}}DBh}{{{b{ICj}}{b{dCb}}}DBh}{{{b{ICl}}{b{dCb}}}DBh}{{{b{ICn}}{b{dCb}}}DBh}{{{b{ID`}}{b{dCb}}}DBh}{{{b{IDb}}{b{dCb}}}DBh}{{{b{IDd}}{b{dCb}}}DBh}{{{b{IDf}}{b{dCb}}}DBh}{{{b{IDh}}{b{dCb}}}DBh}{{{b{IDj}}{b{dCb}}}DBh}{{{b{IDl}}{b{dCb}}}DBh}{{{b{GBj}}{b{dCb}}}DBh}0000{{{b{IDn}}{b{dCb}}}DBh}{{{b{IE`}}{b{dCb}}}DBh}{{{b{IEb}}{b{dCb}}}DBh}{{{b{GBl}}{b{dCb}}}DBh}0000{{{b{IEd}}{b{dCb}}}DBh}{{{b{GBn}}{b{dCb}}}DBh}0000{{{b{IEf}}{b{dCb}}}DBh}{{{b{IEh}}{b{dCb}}}DBh}{{{b{IEj}}{b{dCb}}}DBh}{{{b{IEl}}{b{dCb}}}DBh}{{{b{GC`}}{b{dCb}}}DBh}0000{{{b{IEn}}{b{dCb}}}DBh}{{{b{IF`}}{b{dCb}}}DBh}{{{b{IFb}}{b{dCb}}}DBh}{{{b{IFd}}{b{dCb}}}DBh}{{{b{IFf}}{b{dCb}}}DBh}{{{b{IFh}}{b{dCb}}}DBh}{{{b{IFj}}{b{dCb}}}DBh}{{{b{IFl}}{b{dCb}}}DBh}{{{b{IFn}}{b{dCb}}}DBh}{{{b{IG`}}{b{dCb}}}DBh}{{{b{GCb}}{b{dCb}}}DBh}0000{{{b{IGb}}{b{dCb}}}DBh}{{{b{IGd}}{b{dCb}}}DBh}{{{b{IGf}}{b{dCb}}}DBh}{{{b{GCd}}{b{dCb}}}DBh}0000{{{b{IGh}}{b{dCb}}}DBh}{{{b{GCf}}{b{dCb}}}DBh}0000{{{b{IGj}}{b{dCb}}}DBh}{{{b{IGl}}{b{dCb}}}DBh}{{{b{IGn}}{b{dCb}}}DBh}{{{b{IH`}}{b{dCb}}}DBh}{{{b{IHb}}{b{dCb}}}DBh}{{{b{IHd}}{b{dCb}}}DBh}{{{b{IHf}}{b{dCb}}}DBh}{{{b{IHh}}{b{dCb}}}DBh}{{{b{GCh}}{b{dCb}}}DBh}0000{{{b{GCj}}{b{dCb}}}DBh}0000{{{b{IHj}}{b{dCb}}}DBh}{{{b{IHl}}{b{dCb}}}DBh}{{{b{IHn}}{b{dCb}}}DBh}{{{b{GCl}}{b{dCb}}}DBh}0000{{{b{II`}}{b{dCb}}}DBh}{{{b{IIb}}{b{dCb}}}DBh}{{{b{GCn}}{b{dCb}}}DBh}0000{{{b{IId}}{b{dCb}}}DBh}{{{b{IIf}}{b{dCb}}}DBh}{{{b{GD`}}{b{dCb}}}DBh}0000{{{b{IIh}}{b{dCb}}}DBh}{{{b{IIj}}{b{dCb}}}DBh}{{{b{IIl}}{b{dCb}}}DBh}{{{b{IIn}}{b{dCb}}}DBh}{{{b{GDb}}{b{dCb}}}DBh}0000{{{b{IJ`}}{b{dCb}}}DBh}{{{b{IJb}}{b{dCb}}}DBh}{{{b{IJd}}{b{dCb}}}DBh}{{{b{IJf}}{b{dCb}}}DBh}{{{b{IJh}}{b{dCb}}}DBh}{{{b{IJj}}{b{dCb}}}DBh}{{{b{IJl}}{b{dCb}}}DBh}{{{b{IJn}}{b{dCb}}}DBh}{{{b{IK`}}{b{dCb}}}DBh}{{{b{IKb}}{b{dCb}}}DBh}{{{b{GDd}}{b{dCb}}}DBh}0000{{{b{GDf}}{b{dCb}}}DBh}0000{{{b{IKd}}{b{dCb}}}DBh}{{{b{IKf}}{b{dCb}}}DBh}{{{b{IKh}}{b{dCb}}}DBh}{{{b{GDh}}{b{dCb}}}DBh}0000{{{b{GDj}}{b{dCb}}}DBh}0000{{{b{IKj}}{b{dCb}}}DBh}{{{b{IKl}}{b{dCb}}}DBh}{{{b{IKn}}{b{dCb}}}DBh}{{{b{IL`}}{b{dCb}}}DBh}{{{b{ILb}}{b{dCb}}}DBh}{{{b{GDl}}{b{dCb}}}DBh}0000{{{b{ILd}}{b{dCb}}}DBh}{{{b{ILf}}{b{dCb}}}DBh}{{{b{ILh}}{b{dCb}}}DBh}{{{b{ILj}}{b{dCb}}}DBh}{{{b{ILl}}{b{dCb}}}DBh}{{{b{GDn}}{b{dCb}}}DBh}0000{{{b{ILn}}{b{dCb}}}DBh}{{{b{IM`}}{b{dCb}}}DBh}{{{b{IMb}}{b{dCb}}}DBh}{{{b{IMd}}{b{dCb}}}DBh}{{{b{IMf}}{b{dCb}}}DBh}{{{b{IMh}}{b{dCb}}}DBh}{{{b{IMj}}{b{dCb}}}DBh}{{{b{IMl}}{b{dCb}}}DBh}{{{b{IMn}}{b{dCb}}}DBh}{{{b{IN`}}{b{dCb}}}DBh}{{{b{INb}}{b{dCb}}}DBh}{{{b{GE`}}{b{dCb}}}DBh}0000{{{b{INd}}{b{dCb}}}DBh}{{{b{INf}}{b{dCb}}}DBh}{{{b{INh}}{b{dCb}}}DBh}{{{b{INj}}{b{dCb}}}DBh}{{{b{INl}}{b{dCb}}}DBh}{{{b{INn}}{b{dCb}}}DBh}{{{b{IO`}}{b{dCb}}}DBh}{{{b{IOb}}{b{dCb}}}DBh}{{{b{IOd}}{b{dCb}}}DBh}{{{b{IOf}}{b{dCb}}}DBh}{{{b{IOh}}{b{dCb}}}DBh}{{{b{IOj}}{b{dCb}}}DBh}{{{b{IOl}}{b{dCb}}}DBh}``````````````{cc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{j{{DBj{GAj}}}}{Bf{{DBj{GAl}}}}{Hl{{DBj{GAn}}}}{j{{DBj{GB`}}}}{f{{DBj{GBb}}}}{Bf{{DBj{GBd}}}}{j{{DBj{GBf}}}}{j{{DBj{GBh}}}}{f{{DBj{GBj}}}}{j{{DBj{GBl}}}}{j{{DBj{GBn}}}}{Bf{{DBj{GC`}}}}{j{{DBj{GCb}}}}{Bf{{DBj{GCd}}}}{j{{DBj{GCf}}}}{Bf{{DBj{GCh}}}}{f{{DBj{GCj}}}}{j{{DBj{GCl}}}}{j{{DBj{GCn}}}}{f{{DBj{GD`}}}}{Bf{{DBj{GDb}}}}{f{{DBj{GDd}}}}{j{{DBj{GDf}}}}{Hl{{DBj{GDh}}}}{Bf{{DBj{GDj}}}}{f{{DBj{GDl}}}}{j{{DBj{GDn}}}}{f{{DBj{GE`}}}}{jGAj}{BfGAl}{HlGAn}{jGB`}{fGBb}{BfGBd}{jGBf}{jGBh}{fGBj}{jGBl}{jGBn}{BfGC`}{jGCb}{BfGCd}{jGCf}{BfGCh}{fGCj}{jGCl}{jGCn}{fGD`}{BfGDb}{fGDd}{jGDf}{HlGDh}{BfGDj}{fGDl}{jGDn}{fGE`}{jGAj}{BfGAl}{HlGAn}{jGB`}{fGBb}{BfGBd}{jGBf}{jGBh}{fGBj}{jGBl}{jGBn}{BfGC`}{jGCb}{BfGCd}{jGCf}{BfGCh}{fGCj}{jGCl}{jGCn}{fGD`}{BfGDb}{fGDd}{jGDf}{HlGDh}{BfGDj}{fGDl}{jGDn}{fGE`}{DBl{{DBj{IAd}}}}{DBl{{DBj{IAf}}}}{DBl{{DBj{IAh}}}}{DBl{{DBj{IAj}}}}{DBl{{DBj{IAl}}}}{DBl{{DBj{IAn}}}}{DBl{{DBj{IB`}}}}{DBl{{DBj{IBb}}}}{DBl{{DBj{IBd}}}}{DBl{{DBj{IBf}}}}{DBl{{DBj{IBh}}}}{DBl{{DBj{IBj}}}}{DBl{{DBj{IBl}}}}{DBl{{DBj{IBn}}}}{DBl{{DBj{IC`}}}}{DBl{{DBj{ICb}}}}{DBl{{DBj{ICd}}}}{DBl{{DBj{ICf}}}}{DBl{{DBj{ICh}}}}{DBl{{DBj{ICj}}}}{DBl{{DBj{ICl}}}}{DBl{{DBj{ICn}}}}{DBl{{DBj{ID`}}}}{DBl{{DBj{IDb}}}}{DBl{{DBj{IDd}}}}{DBl{{DBj{IDf}}}}{DBl{{DBj{IDh}}}}{DBl{{DBj{IDj}}}}{DBl{{DBj{IDl}}}}{DBl{{DBj{IDn}}}}{DBl{{DBj{IE`}}}}{DBl{{DBj{IEb}}}}{DBl{{DBj{IEd}}}}{DBl{{DBj{IEf}}}}{DBl{{DBj{IEh}}}}{DBl{{DBj{IEj}}}}{DBl{{DBj{IEl}}}}{DBl{{DBj{IEn}}}}{DBl{{DBj{IF`}}}}{DBl{{DBj{IFb}}}}{DBl{{DBj{IFd}}}}{DBl{{DBj{IFf}}}}{DBl{{DBj{IFh}}}}{DBl{{DBj{IFj}}}}{DBl{{DBj{IFl}}}}{DBl{{DBj{IFn}}}}{DBl{{DBj{IG`}}}}{DBl{{DBj{IGb}}}}{DBl{{DBj{IGd}}}}{DBl{{DBj{IGf}}}}{DBl{{DBj{IGh}}}}{DBl{{DBj{IGj}}}}{DBl{{DBj{IGl}}}}{DBl{{DBj{IGn}}}}{DBl{{DBj{IH`}}}}{DBl{{DBj{IHb}}}}{DBl{{DBj{IHd}}}}{DBl{{DBj{IHf}}}}{DBl{{DBj{IHh}}}}{DBl{{DBj{IHj}}}}{DBl{{DBj{IHl}}}}{DBl{{DBj{IHn}}}}{DBl{{DBj{II`}}}}{DBl{{DBj{IIb}}}}{DBl{{DBj{IId}}}}{DBl{{DBj{IIf}}}}{DBl{{DBj{IIh}}}}{DBl{{DBj{IIj}}}}{DBl{{DBj{IIl}}}}{DBl{{DBj{IIn}}}}{DBl{{DBj{IJ`}}}}{DBl{{DBj{IJb}}}}{DBl{{DBj{IJd}}}}{DBl{{DBj{IJf}}}}{DBl{{DBj{IJh}}}}{DBl{{DBj{IJj}}}}{DBl{{DBj{IJl}}}}{DBl{{DBj{IJn}}}}{DBl{{DBj{IK`}}}}{DBl{{DBj{IKb}}}}{DBl{{DBj{IKd}}}}{DBl{{DBj{IKf}}}}{DBl{{DBj{IKh}}}}{DBl{{DBj{IKj}}}}{DBl{{DBj{IKl}}}}{DBl{{DBj{IKn}}}}{DBl{{DBj{IL`}}}}{DBl{{DBj{ILb}}}}{DBl{{DBj{ILd}}}}{DBl{{DBj{ILf}}}}{DBl{{DBj{ILh}}}}{DBl{{DBj{ILj}}}}{DBl{{DBj{ILl}}}}{DBl{{DBj{ILn}}}}{DBl{{DBj{IM`}}}}{DBl{{DBj{IMb}}}}{DBl{{DBj{IMd}}}}{DBl{{DBj{IMf}}}}{DBl{{DBj{IMh}}}}{DBl{{DBj{IMj}}}}{DBl{{DBj{IMl}}}}{DBl{{DBj{IMn}}}}{DBl{{DBj{IN`}}}}{DBl{{DBj{INb}}}}{DBl{{DBj{INd}}}}{DBl{{DBj{INf}}}}{DBl{{DBj{INh}}}}{DBl{{DBj{INj}}}}{DBl{{DBj{INl}}}}{DBl{{DBj{INn}}}}{DBl{{DBj{IO`}}}}{DBl{{DBj{IOb}}}}{DBl{{DBj{IOd}}}}{DBl{{DBj{IOf}}}}{DBl{{DBj{IOh}}}}{DBl{{DBj{IOj}}}}{DBl{{DBj{IOl}}}}{cGAj{{DBf{}{{DBd{GAj}}}}}}{cGAl{{DBf{}{{DBd{GAl}}}}}}{cGAn{{DBf{}{{DBd{GAn}}}}}}{cGB`{{DBf{}{{DBd{GB`}}}}}}{cGBb{{DBf{}{{DBd{GBb}}}}}}{cGBd{{DBf{}{{DBd{GBd}}}}}}{cGBf{{DBf{}{{DBd{GBf}}}}}}{cGBh{{DBf{}{{DBd{GBh}}}}}}{cGBj{{DBf{}{{DBd{GBj}}}}}}{cGBl{{DBf{}{{DBd{GBl}}}}}}{cGBn{{DBf{}{{DBd{GBn}}}}}}{cGC`{{DBf{}{{DBd{GC`}}}}}}{cGCb{{DBf{}{{DBd{GCb}}}}}}{cGCd{{DBf{}{{DBd{GCd}}}}}}{cGCf{{DBf{}{{DBd{GCf}}}}}}{cGCh{{DBf{}{{DBd{GCh}}}}}}{cGCj{{DBf{}{{DBd{GCj}}}}}}{cGCl{{DBf{}{{DBd{GCl}}}}}}{cGCn{{DBf{}{{DBd{GCn}}}}}}{cGD`{{DBf{}{{DBd{GD`}}}}}}{cGDb{{DBf{}{{DBd{GDb}}}}}}{cGDd{{DBf{}{{DBd{GDd}}}}}}{cGDf{{DBf{}{{DBd{GDf}}}}}}{cGDh{{DBf{}{{DBd{GDh}}}}}}{cGDj{{DBf{}{{DBd{GDj}}}}}}{cGDl{{DBf{}{{DBd{GDl}}}}}}{cGDn{{DBf{}{{DBd{GDn}}}}}}{cGE`{{DBf{}{{DBd{GE`}}}}}}{Hl{{DBj{IAd}}}}{Hl{{DBj{IAf}}}}{Hl{{DBj{IAh}}}}{Hl{{DBj{IAj}}}}{Hl{{DBj{IAl}}}}{Hl{{DBj{IAn}}}}{Hl{{DBj{IB`}}}}{Hl{{DBj{IBb}}}}{Hl{{DBj{IBd}}}}{Hl{{DBj{IBf}}}}{Hl{{DBj{IBh}}}}{Hl{{DBj{IBj}}}}{Hl{{DBj{IBl}}}}{Hl{{DBj{IBn}}}}{Hl{{DBj{IC`}}}}{Hl{{DBj{ICb}}}}{Hl{{DBj{ICd}}}}{Hl{{DBj{ICf}}}}{Hl{{DBj{ICh}}}}{Hl{{DBj{ICj}}}}{Hl{{DBj{ICl}}}}{Hl{{DBj{ICn}}}}{Hl{{DBj{ID`}}}}{Hl{{DBj{IDb}}}}{Hl{{DBj{IDd}}}}{Hl{{DBj{IDf}}}}{Hl{{DBj{IDh}}}}{Hl{{DBj{IDj}}}}{Hl{{DBj{IDl}}}}{Hl{{DBj{IDn}}}}{Hl{{DBj{IE`}}}}{Hl{{DBj{IEb}}}}{Hl{{DBj{IEd}}}}{Hl{{DBj{IEf}}}}{Hl{{DBj{IEh}}}}{Hl{{DBj{IEj}}}}{Hl{{DBj{IEl}}}}{Hl{{DBj{IEn}}}}{Hl{{DBj{IF`}}}}{Hl{{DBj{IFb}}}}{Hl{{DBj{IFd}}}}{Hl{{DBj{IFf}}}}{Hl{{DBj{IFh}}}}{Hl{{DBj{IFj}}}}{Hl{{DBj{IFl}}}}{Hl{{DBj{IFn}}}}{Hl{{DBj{IG`}}}}{Hl{{DBj{IGb}}}}{Hl{{DBj{IGd}}}}{Hl{{DBj{IGf}}}}{Hl{{DBj{IGh}}}}{Hl{{DBj{IGj}}}}{Hl{{DBj{IGl}}}}{Hl{{DBj{IGn}}}}{Hl{{DBj{IH`}}}}{Hl{{DBj{IHb}}}}{Hl{{DBj{IHd}}}}{Hl{{DBj{IHf}}}}{Hl{{DBj{IHh}}}}{Hl{{DBj{IHj}}}}{Hl{{DBj{IHl}}}}{Hl{{DBj{IHn}}}}{Hl{{DBj{II`}}}}{Hl{{DBj{IIb}}}}{Hl{{DBj{IId}}}}{Hl{{DBj{IIf}}}}{Hl{{DBj{IIh}}}}{Hl{{DBj{IIj}}}}{Hl{{DBj{IIl}}}}{Hl{{DBj{IIn}}}}{Hl{{DBj{IJ`}}}}{Hl{{DBj{IJb}}}}{Hl{{DBj{IJd}}}}{Hl{{DBj{IJf}}}}{Hl{{DBj{IJh}}}}{Hl{{DBj{IJj}}}}{Hl{{DBj{IJl}}}}{Hl{{DBj{IJn}}}}{Hl{{DBj{IK`}}}}{Hl{{DBj{IKb}}}}{Hl{{DBj{IKd}}}}{Hl{{DBj{IKf}}}}{Hl{{DBj{IKh}}}}{Hl{{DBj{IKj}}}}{Hl{{DBj{IKl}}}}{Hl{{DBj{IKn}}}}{Hl{{DBj{IL`}}}}{Hl{{DBj{ILb}}}}{Hl{{DBj{ILd}}}}{Hl{{DBj{ILf}}}}{Hl{{DBj{ILh}}}}{Hl{{DBj{ILj}}}}{Hl{{DBj{ILl}}}}{Hl{{DBj{ILn}}}}{Hl{{DBj{IM`}}}}{Hl{{DBj{IMb}}}}{Hl{{DBj{IMd}}}}{Hl{{DBj{IMf}}}}{Hl{{DBj{IMh}}}}{Hl{{DBj{IMj}}}}{Hl{{DBj{IMl}}}}{Hl{{DBj{IMn}}}}{Hl{{DBj{IN`}}}}{Hl{{DBj{INb}}}}{Hl{{DBj{INd}}}}{Hl{{DBj{INf}}}}{Hl{{DBj{INh}}}}{Hl{{DBj{INj}}}}{Hl{{DBj{INl}}}}{Hl{{DBj{INn}}}}{Hl{{DBj{IO`}}}}{Hl{{DBj{IOb}}}}{Hl{{DBj{IOd}}}}{Hl{{DBj{IOf}}}}{Hl{{DBj{IOh}}}}{Hl{{DBj{IOj}}}}{Hl{{DBj{IOl}}}}````````````````````````````````````{{{b{GAj}}{b{dc}}}AjDBn}{{{b{GAl}}{b{dc}}}AjDBn}{{{b{GAn}}{b{dc}}}AjDBn}{{{b{GB`}}{b{dc}}}AjDBn}{{{b{GBb}}{b{dc}}}AjDBn}{{{b{GBd}}{b{dc}}}AjDBn}{{{b{GBf}}{b{dc}}}AjDBn}{{{b{GBh}}{b{dc}}}AjDBn}{{{b{GBj}}{b{dc}}}AjDBn}{{{b{GBl}}{b{dc}}}AjDBn}{{{b{GBn}}{b{dc}}}AjDBn}{{{b{GC`}}{b{dc}}}AjDBn}{{{b{GCb}}{b{dc}}}AjDBn}{{{b{GCd}}{b{dc}}}AjDBn}{{{b{GCf}}{b{dc}}}AjDBn}{{{b{GCh}}{b{dc}}}AjDBn}{{{b{GCj}}{b{dc}}}AjDBn}{{{b{GCl}}{b{dc}}}AjDBn}{{{b{GCn}}{b{dc}}}AjDBn}{{{b{GD`}}{b{dc}}}AjDBn}{{{b{GDb}}{b{dc}}}AjDBn}{{{b{GDd}}{b{dc}}}AjDBn}{{{b{GDf}}{b{dc}}}AjDBn}{{{b{GDh}}{b{dc}}}AjDBn}{{{b{GDj}}{b{dc}}}AjDBn}{{{b{GDl}}{b{dc}}}AjDBn}{{{b{GDn}}{b{dc}}}AjDBn}{{{b{GE`}}{b{dc}}}AjDBn}```````````````````````````````````````````````````````````````{{{b{dGAj}}GAj}Aj}{{{b{dGAl}}GAl}Aj}{{{b{dGAn}}GAn}Aj}{{{b{dGB`}}GB`}Aj}{{{b{dGBb}}GBb}Aj}{{{b{dGBd}}GBd}Aj}{{{b{dGBf}}GBf}Aj}{{{b{dGBh}}GBh}Aj}{{{b{dGBj}}GBj}Aj}{{{b{dGBl}}GBl}Aj}{{{b{dGBn}}GBn}Aj}{{{b{dGC`}}GC`}Aj}{{{b{dGCb}}GCb}Aj}{{{b{dGCd}}GCd}Aj}{{{b{dGCf}}GCf}Aj}{{{b{dGCh}}GCh}Aj}{{{b{dGCj}}GCj}Aj}{{{b{dGCl}}GCl}Aj}{{{b{dGCn}}GCn}Aj}{{{b{dGD`}}GD`}Aj}{{{b{dGDb}}GDb}Aj}{{{b{dGDd}}GDd}Aj}{{{b{dGDf}}GDf}Aj}{{{b{dGDh}}GDh}Aj}{{{b{dGDj}}GDj}Aj}{{{b{dGDl}}GDl}Aj}{{{b{dGDn}}GDn}Aj}{{{b{dGE`}}GE`}Aj}``````````````{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}{{{b{GAj}}GAj}C`}{{{b{GAl}}GAl}C`}{{{b{GAn}}GAn}C`}{{{b{GB`}}GB`}C`}{{{b{GBb}}GBb}C`}{{{b{GBd}}GBd}C`}{{{b{GBf}}GBf}C`}{{{b{GBh}}GBh}C`}{{{b{GBj}}GBj}C`}{{{b{GBl}}GBl}C`}{{{b{GBn}}GBn}C`}{{{b{GC`}}GC`}C`}{{{b{GCb}}GCb}C`}{{{b{GCd}}GCd}C`}{{{b{GCf}}GCf}C`}{{{b{GCh}}GCh}C`}{{{b{GCj}}GCj}C`}{{{b{GCl}}GCl}C`}{{{b{GCn}}GCn}C`}{{{b{GD`}}GD`}C`}{{{b{GDb}}GDb}C`}{{{b{GDd}}GDd}C`}{{{b{GDf}}GDf}C`}{{{b{GDh}}GDh}C`}{{{b{GDj}}GDj}C`}{{{b{GDl}}GDl}C`}{{{b{GDn}}GDn}C`}{{{b{GE`}}GE`}C`}`{ce{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{GAj}}}C`}{{{b{GAl}}}C`}{{{b{GAn}}}C`}{{{b{GB`}}}C`}{{{b{GBb}}}C`}{{{b{GBd}}}C`}{{{b{GBf}}}C`}{{{b{GBh}}}C`}{{{b{GBj}}}C`}{{{b{GBl}}}C`}{{{b{GBn}}}C`}{{{b{GC`}}}C`}{{{b{GCb}}}C`}{{{b{GCd}}}C`}{{{b{GCf}}}C`}{{{b{GCh}}}C`}{{{b{GCj}}}C`}{{{b{GCl}}}C`}{{{b{GCn}}}C`}{{{b{GD`}}}C`}{{{b{GDb}}}C`}{{{b{GDd}}}C`}{{{b{GDf}}}C`}{{{b{GDh}}}C`}{{{b{GDj}}}C`}{{{b{GDl}}}C`}{{{b{GDn}}}C`}{{{b{GE`}}}C`}{{{b{GAj}}}C`}{{{b{GAl}}}C`}{{{b{GAn}}}C`}{{{b{GB`}}}C`}{{{b{GBb}}}C`}{{{b{GBd}}}C`}{{{b{GBf}}}C`}{{{b{GBh}}}C`}{{{b{GBj}}}C`}{{{b{GBl}}}C`}{{{b{GBn}}}C`}{{{b{GC`}}}C`}{{{b{GCb}}}C`}{{{b{GCd}}}C`}{{{b{GCf}}}C`}{{{b{GCh}}}C`}{{{b{GCj}}}C`}{{{b{GCl}}}C`}{{{b{GCn}}}C`}{{{b{GD`}}}C`}{{{b{GDb}}}C`}{{{b{GDd}}}C`}{{{b{GDf}}}C`}{{{b{GDh}}}C`}{{{b{GDj}}}C`}{{{b{GDl}}}C`}{{{b{GDn}}}C`}{{{b{GE`}}}C`}```````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{GEb}}}Bf}`{{{b{Al}}}{{Bd{Bf{b{Al}}}}}}{{{b{GEb}}}{{b{Al}}}}```````````````````````````````````````{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}{GDnGDn}{GE`GE`}````````````````````````````````````````````````````````````````````````````````````````````{{AbBf{b{{h{f}}}}}{{Bd{GEbBl}}}}{{{b{GAj}}{b{GAj}}}{{DBj{DBb}}}}{{{b{GAl}}{b{GAl}}}{{DBj{DBb}}}}{{{b{GAn}}{b{GAn}}}{{DBj{DBb}}}}{{{b{GB`}}{b{GB`}}}{{DBj{DBb}}}}{{{b{GBb}}{b{GBb}}}{{DBj{DBb}}}}{{{b{GBd}}{b{GBd}}}{{DBj{DBb}}}}{{{b{GBf}}{b{GBf}}}{{DBj{DBb}}}}{{{b{GBh}}{b{GBh}}}{{DBj{DBb}}}}{{{b{GBj}}{b{GBj}}}{{DBj{DBb}}}}{{{b{GBl}}{b{GBl}}}{{DBj{DBb}}}}{{{b{GBn}}{b{GBn}}}{{DBj{DBb}}}}{{{b{GC`}}{b{GC`}}}{{DBj{DBb}}}}{{{b{GCb}}{b{GCb}}}{{DBj{DBb}}}}{{{b{GCd}}{b{GCd}}}{{DBj{DBb}}}}{{{b{GCf}}{b{GCf}}}{{DBj{DBb}}}}{{{b{GCh}}{b{GCh}}}{{DBj{DBb}}}}{{{b{GCj}}{b{GCj}}}{{DBj{DBb}}}}{{{b{GCl}}{b{GCl}}}{{DBj{DBb}}}}{{{b{GCn}}{b{GCn}}}{{DBj{DBb}}}}{{{b{GD`}}{b{GD`}}}{{DBj{DBb}}}}{{{b{GDb}}{b{GDb}}}{{DBj{DBb}}}}{{{b{GDd}}{b{GDd}}}{{DBj{DBb}}}}{{{b{GDf}}{b{GDf}}}{{DBj{DBb}}}}{{{b{GDh}}{b{GDh}}}{{DBj{DBb}}}}{{{b{GDj}}{b{GDj}}}{{DBj{DBb}}}}{{{b{GDl}}{b{GDl}}}{{DBj{DBb}}}}{{{b{GDn}}{b{GDn}}}{{DBj{DBb}}}}{{{b{GE`}}{b{GE`}}}{{DBj{DBb}}}}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{dGAj}}GAj}Aj}{{{b{dGAl}}GAl}Aj}{{{b{dGAn}}GAn}Aj}{{{b{dGB`}}GB`}Aj}{{{b{dGBb}}GBb}Aj}{{{b{dGBd}}GBd}Aj}{{{b{dGBf}}GBf}Aj}{{{b{dGBh}}GBh}Aj}{{{b{dGBj}}GBj}Aj}{{{b{dGBl}}GBl}Aj}{{{b{dGBn}}GBn}Aj}{{{b{dGC`}}GC`}Aj}{{{b{dGCb}}GCb}Aj}{{{b{dGCd}}GCd}Aj}{{{b{dGCf}}GCf}Aj}{{{b{dGCh}}GCh}Aj}{{{b{dGCj}}GCj}Aj}{{{b{dGCl}}GCl}Aj}{{{b{dGCn}}GCn}Aj}{{{b{dGD`}}GD`}Aj}{{{b{dGDb}}GDb}Aj}{{{b{dGDd}}GDd}Aj}{{{b{dGDf}}GDf}Aj}{{{b{dGDh}}GDh}Aj}{{{b{dGDj}}GDj}Aj}{{{b{dGDl}}GDl}Aj}{{{b{dGDn}}GDn}Aj}{{{b{dGE`}}GE`}Aj}```````````````````````````````````````````````````````````````````````````````````````````````````{{{b{GEb}}Ab{b{d{h{f}}}}}D`}{{{b{GEd}}Ab{b{d{h{f}}}}}D`}{{{b{GEf}}Ab{b{d{h{f}}}}}D`}{{{b{GEh}}Ab{b{d{h{f}}}}}D`}{{{b{GEj}}Ab{b{d{h{f}}}}}D`}{{{b{GEl}}Ab{b{d{h{f}}}}}D`}{{{b{GEn}}Ab{b{d{h{f}}}}}D`}{{{b{GF`}}Ab{b{d{h{f}}}}}D`}{{{b{GFb}}Ab{b{d{h{f}}}}}D`}{{{b{GFd}}Ab{b{d{h{f}}}}}D`}{{{b{GFf}}Ab{b{d{h{f}}}}}D`}{{{b{GFh}}Ab{b{d{h{f}}}}}D`}{{{b{GFj}}Ab{b{d{h{f}}}}}D`}{{{b{GFl}}Ab{b{d{h{f}}}}}D`}{{{b{GFn}}Ab{b{d{h{f}}}}}D`}{{{b{GG`}}Ab{b{d{h{f}}}}}D`}{{{b{GGb}}Ab{b{d{h{f}}}}}D`}{{{b{GGd}}Ab{b{d{h{f}}}}}D`}{{{b{GGf}}Ab{b{d{h{f}}}}}D`}{{{b{GGh}}Ab{b{d{h{f}}}}}D`}{{{b{GGj}}Ab{b{d{h{f}}}}}D`}{{{b{GGl}}Ab{b{d{h{f}}}}}D`}{{{b{GGn}}Ab{b{d{h{f}}}}}D`}{{{b{GH`}}Ab{b{d{h{f}}}}}D`}{{{b{GHb}}Ab{b{d{h{f}}}}}D`}{{{b{GHd}}Ab{b{d{h{f}}}}}D`}{{{b{GHf}}Ab{b{d{h{f}}}}}D`}{{{b{GHh}}Ab{b{d{h{f}}}}}D`}{{{b{GHj}}Ab{b{d{h{f}}}}}D`}{{{b{GHl}}Ab{b{d{h{f}}}}}D`}{{{b{GHn}}Ab{b{d{h{f}}}}}D`}{{{b{GI`}}Ab{b{d{h{f}}}}}D`}{{{b{GIb}}Ab{b{d{h{f}}}}}D`}{{{b{GId}}Ab{b{d{h{f}}}}}D`}{{{b{GIf}}Ab{b{d{h{f}}}}}D`}{{{b{GIh}}Ab{b{d{h{f}}}}}D`}{{{b{GIj}}Ab{b{d{h{f}}}}}D`}{{{b{GIl}}Ab{b{d{h{f}}}}}D`}{{{b{GIn}}Ab{b{d{h{f}}}}}D`}{{{b{GJ`}}Ab{b{d{h{f}}}}}D`}{{{b{GJb}}Ab{b{d{h{f}}}}}D`}{{{b{GJd}}Ab{b{d{h{f}}}}}D`}{{{b{GJf}}Ab{b{d{h{f}}}}}D`}{{{b{GJh}}Ab{b{d{h{f}}}}}D`}{{{b{GJj}}Ab{b{d{h{f}}}}}D`}{{{b{GJl}}Ab{b{d{h{f}}}}}D`}{{{b{GJn}}Ab{b{d{h{f}}}}}D`}{{{b{GK`}}Ab{b{d{h{f}}}}}D`}{{{b{GKb}}Ab{b{d{h{f}}}}}D`}{{{b{GKd}}Ab{b{d{h{f}}}}}D`}{{{b{GKf}}Ab{b{d{h{f}}}}}D`}{{{b{GKh}}Ab{b{d{h{f}}}}}D`}{{{b{GKj}}Ab{b{d{h{f}}}}}D`}{{{b{GKl}}Ab{b{d{h{f}}}}}D`}{{{b{GKn}}Ab{b{d{h{f}}}}}D`}{{{b{GL`}}Ab{b{d{h{f}}}}}D`}{{{b{GLb}}Ab{b{d{h{f}}}}}D`}{{{b{GLd}}Ab{b{d{h{f}}}}}D`}{{{b{GLf}}Ab{b{d{h{f}}}}}D`}{{{b{GLh}}Ab{b{d{h{f}}}}}D`}{{{b{GLj}}Ab{b{d{h{f}}}}}D`}{{{b{GLl}}Ab{b{d{h{f}}}}}D`}{{{b{GLn}}Ab{b{d{h{f}}}}}D`}{{{b{GM`}}Ab{b{d{h{f}}}}}D`}{{{b{GMb}}Ab{b{d{h{f}}}}}D`}{{{b{GMd}}Ab{b{d{h{f}}}}}D`}{{{b{GMf}}Ab{b{d{h{f}}}}}D`}{{{b{GMh}}Ab{b{d{h{f}}}}}D`}{{{b{GMj}}Ab{b{d{h{f}}}}}D`}{{{b{GMl}}Ab{b{d{h{f}}}}}D`}{{{b{GMn}}Ab{b{d{h{f}}}}}D`}{{{b{GN`}}Ab{b{d{h{f}}}}}D`}{{{b{GNb}}Ab{b{d{h{f}}}}}D`}{{{b{GNd}}Ab{b{d{h{f}}}}}D`}{{{b{GNf}}Ab{b{d{h{f}}}}}D`}{{{b{GNh}}Ab{b{d{h{f}}}}}D`}{{{b{GNj}}Ab{b{d{h{f}}}}}D`}{{{b{GNl}}Ab{b{d{h{f}}}}}D`}{{{b{GNn}}Ab{b{d{h{f}}}}}D`}{{{b{GO`}}Ab{b{d{h{f}}}}}D`}{{{b{GOb}}Ab{b{d{h{f}}}}}D`}{{{b{GOd}}Ab{b{d{h{f}}}}}D`}{{{b{GOf}}Ab{b{d{h{f}}}}}D`}{{{b{GOh}}Ab{b{d{h{f}}}}}D`}{{{b{GOj}}Ab{b{d{h{f}}}}}D`}{{{b{GOl}}Ab{b{d{h{f}}}}}D`}{{{b{GOn}}Ab{b{d{h{f}}}}}D`}{{{b{H@`}}Ab{b{d{h{f}}}}}D`}{{{b{H@b}}Ab{b{d{h{f}}}}}D`}{{{b{H@d}}Ab{b{d{h{f}}}}}D`}{{{b{H@f}}Ab{b{d{h{f}}}}}D`}{{{b{H@h}}Ab{b{d{h{f}}}}}D`}{{{b{H@j}}Ab{b{d{h{f}}}}}D`}{{{b{H@l}}Ab{b{d{h{f}}}}}D`}{{{b{H@n}}Ab{b{d{h{f}}}}}D`}{{{b{HA`}}Ab{b{d{h{f}}}}}D`}{{{b{HAb}}Ab{b{d{h{f}}}}}D`}{{{b{HAd}}Ab{b{d{h{f}}}}}D`}{{{b{HAf}}Ab{b{d{h{f}}}}}D`}{{{b{HAh}}Ab{b{d{h{f}}}}}D`}{{{b{HAj}}Ab{b{d{h{f}}}}}D`}{{{b{HAl}}Ab{b{d{h{f}}}}}D`}{{{b{HAn}}Ab{b{d{h{f}}}}}D`}{{{b{HB`}}Ab{b{d{h{f}}}}}D`}{{{b{HBb}}Ab{b{d{h{f}}}}}D`}{{{b{HBd}}Ab{b{d{h{f}}}}}D`}{{{b{HBf}}Ab{b{d{h{f}}}}}D`}{{{b{HBh}}Ab{b{d{h{f}}}}}D`}{{{b{HBj}}Ab{b{d{h{f}}}}}D`}{{{b{HBl}}Ab{b{d{h{f}}}}}D`}{{{b{HBn}}Ab{b{d{h{f}}}}}D`}{{{b{HC`}}Ab{b{d{h{f}}}}}D`}{{{b{HCb}}Ab{b{d{h{f}}}}}D`}{{{b{HCd}}Ab{b{d{h{f}}}}}D`}{{{b{HCf}}Ab{b{d{h{f}}}}}D`}{{{b{HCh}}Ab{b{d{h{f}}}}}D`}{{{b{HCj}}Ab{b{d{h{f}}}}}D`}{{{b{HCl}}Ab{b{d{h{f}}}}}D`}{{{b{HCn}}Ab{b{d{h{f}}}}}D`}{{{b{HD`}}Ab{b{d{h{f}}}}}D`}{{{b{HDb}}Ab{b{d{h{f}}}}}D`}{{{b{HDd}}Ab{b{d{h{f}}}}}D`}{{{b{HDf}}Ab{b{d{h{f}}}}}D`}{{{b{HDh}}Ab{b{d{h{f}}}}}D`}{{{b{HDj}}Ab{b{d{h{f}}}}}D`}{{{b{HDl}}Ab{b{d{h{f}}}}}D`}{{{b{HDn}}Ab{b{d{h{f}}}}}D`}{{{b{HE`}}Ab{b{d{h{f}}}}}D`}{{{b{HEb}}Ab{b{d{h{f}}}}}D`}{{{b{HEd}}Ab{b{d{h{f}}}}}D`}{{{b{HEf}}Ab{b{d{h{f}}}}}D`}{{{b{HEh}}Ab{b{d{h{f}}}}}D`}{{{b{HEj}}Ab{b{d{h{f}}}}}D`}{{{b{HEl}}Ab{b{d{h{f}}}}}D`}{{{b{HEn}}Ab{b{d{h{f}}}}}D`}{{{b{HF`}}Ab{b{d{h{f}}}}}D`}{{{b{HFb}}Ab{b{d{h{f}}}}}D`}{{{b{HFd}}Ab{b{d{h{f}}}}}D`}{{{b{HFf}}Ab{b{d{h{f}}}}}D`}{{{b{HFh}}Ab{b{d{h{f}}}}}D`}{{{b{HFj}}Ab{b{d{h{f}}}}}D`}{{{b{HFl}}Ab{b{d{h{f}}}}}D`}{{{b{HFn}}Ab{b{d{h{f}}}}}D`}{{{b{HG`}}Ab{b{d{h{f}}}}}D`}{{{b{HGb}}Ab{b{d{h{f}}}}}D`}{{{b{HGd}}Ab{b{d{h{f}}}}}D`}{{{b{HGf}}Ab{b{d{h{f}}}}}D`}{{{b{HGh}}Ab{b{d{h{f}}}}}D`}{{{b{HGj}}Ab{b{d{h{f}}}}}D`}{{{b{HGl}}Ab{b{d{h{f}}}}}D`}{{{b{HGn}}Ab{b{d{h{f}}}}}D`}{{{b{HH`}}Ab{b{d{h{f}}}}}D`}{{{b{HHb}}Ab{b{d{h{f}}}}}D`}{{{b{HHd}}Ab{b{d{h{f}}}}}D`}{{{b{HHf}}Ab{b{d{h{f}}}}}D`}{{{b{HHh}}Ab{b{d{h{f}}}}}D`}{{{b{HHj}}Ab{b{d{h{f}}}}}D`}{{{b{HHl}}Ab{b{d{h{f}}}}}D`}{{{b{HHn}}Ab{b{d{h{f}}}}}D`}{{{b{HI`}}Ab{b{d{h{f}}}}}D`}{{{b{HIb}}Ab{b{d{h{f}}}}}D`}{{{b{HId}}Ab{b{d{h{f}}}}}D`}{{{b{HIf}}Ab{b{d{h{f}}}}}D`}{{{b{HIh}}Ab{b{d{h{f}}}}}D`}{{{b{HIj}}Ab{b{d{h{f}}}}}D`}{{{b{HIl}}Ab{b{d{h{f}}}}}D`}{{{b{HIn}}Ab{b{d{h{f}}}}}D`}{{{b{HJ`}}Ab{b{d{h{f}}}}}D`}{{{b{HJb}}Ab{b{d{h{f}}}}}D`}{{{b{HJd}}Ab{b{d{h{f}}}}}D`}{{{b{HJf}}Ab{b{d{h{f}}}}}D`}{{{b{HJh}}Ab{b{d{h{f}}}}}D`}{{{b{HJj}}Ab{b{d{h{f}}}}}D`}{{{b{HJl}}Ab{b{d{h{f}}}}}D`}{{{b{HJn}}Ab{b{d{h{f}}}}}D`}{{{b{HK`}}Ab{b{d{h{f}}}}}D`}{{{b{HKb}}Ab{b{d{h{f}}}}}D`}{{{b{HKd}}Ab{b{d{h{f}}}}}D`}{{{b{HKf}}Ab{b{d{h{f}}}}}D`}{{{b{HKh}}Ab{b{d{h{f}}}}}D`}{{{b{HKj}}Ab{b{d{h{f}}}}}D`}{{{b{HKl}}Ab{b{d{h{f}}}}}D`}{{{b{HKn}}Ab{b{d{h{f}}}}}D`}{{{b{HL`}}Ab{b{d{h{f}}}}}D`}{{{b{HLb}}Ab{b{d{h{f}}}}}D`}{{{b{HLd}}Ab{b{d{h{f}}}}}D`}{{{b{HLf}}Ab{b{d{h{f}}}}}D`}{{{b{HLh}}Ab{b{d{h{f}}}}}D`}{{{b{HLj}}Ab{b{d{h{f}}}}}D`}{{{b{HLl}}Ab{b{d{h{f}}}}}D`}{{{b{HLn}}Ab{b{d{h{f}}}}}D`}{{{b{HM`}}Ab{b{d{h{f}}}}}D`}{{{b{HMb}}Ab{b{d{h{f}}}}}D`}{{{b{HMd}}Ab{b{d{h{f}}}}}D`}{{{b{HMf}}Ab{b{d{h{f}}}}}D`}{{{b{HMh}}Ab{b{d{h{f}}}}}D`}{{{b{HMj}}Ab{b{d{h{f}}}}}D`}{{{b{HMl}}Ab{b{d{h{f}}}}}D`}{{{b{HMn}}Ab{b{d{h{f}}}}}D`}{{{b{HN`}}Ab{b{d{h{f}}}}}D`}{{{b{HNb}}Ab{b{d{h{f}}}}}D`}{{{b{HNd}}Ab{b{d{h{f}}}}}D`}{{{b{HNf}}Ab{b{d{h{f}}}}}D`}{{{b{HNh}}Ab{b{d{h{f}}}}}D`}{{{b{HNj}}Ab{b{d{h{f}}}}}D`}{{{b{HNl}}Ab{b{d{h{f}}}}}D`}{{{b{HNn}}Ab{b{d{h{f}}}}}D`}{{{b{HO`}}Ab{b{d{h{f}}}}}D`}{{{b{HOb}}Ab{b{d{h{f}}}}}D`}{{{b{HOd}}Ab{b{d{h{f}}}}}D`}{{{b{HOf}}Ab{b{d{h{f}}}}}D`}{{{b{HOh}}Ab{b{d{h{f}}}}}D`}{{{b{HOj}}Ab{b{d{h{f}}}}}D`}{{{b{HOl}}Ab{b{d{h{f}}}}}D`}{{{b{HOn}}Ab{b{d{h{f}}}}}D`}{{{b{I@`}}Ab{b{d{h{f}}}}}D`}{{{b{I@b}}Ab{b{d{h{f}}}}}D`}{{{b{I@d}}Ab{b{d{h{f}}}}}D`}{{{b{I@f}}Ab{b{d{h{f}}}}}D`}{{{b{I@h}}Ab{b{d{h{f}}}}}D`}{{{b{I@j}}Ab{b{d{h{f}}}}}D`}{{{b{I@l}}Ab{b{d{h{f}}}}}D`}{{{b{I@n}}Ab{b{d{h{f}}}}}D`}{{{b{IA`}}Ab{b{d{h{f}}}}}D`}{{{b{IAb}}Ab{b{d{h{f}}}}}D`}`{{{b{GEb}}c}BdDd}{{{b{GEd}}c}BdDd}{{{b{GEf}}c}BdDd}{{{b{GEh}}c}BdDd}{{{b{GEj}}c}BdDd}{{{b{GEl}}c}BdDd}{{{b{GEn}}c}BdDd}{{{b{GF`}}c}BdDd}{{{b{GFb}}c}BdDd}{{{b{GFd}}c}BdDd}{{{b{GFf}}c}BdDd}{{{b{GFh}}c}BdDd}{{{b{GFj}}c}BdDd}{{{b{GFl}}c}BdDd}{{{b{GFn}}c}BdDd}{{{b{GG`}}c}BdDd}{{{b{GGb}}c}BdDd}{{{b{GGd}}c}BdDd}{{{b{GGf}}c}BdDd}{{{b{GGh}}c}BdDd}{{{b{GGj}}c}BdDd}{{{b{GGl}}c}BdDd}{{{b{GGn}}c}BdDd}{{{b{GH`}}c}BdDd}{{{b{GHb}}c}BdDd}{{{b{GHd}}c}BdDd}{{{b{GHf}}c}BdDd}{{{b{GHh}}c}BdDd}{{{b{GHj}}c}BdDd}{{{b{GHl}}c}BdDd}{{{b{GHn}}c}BdDd}{{{b{GI`}}c}BdDd}{{{b{GIb}}c}BdDd}{{{b{GId}}c}BdDd}{{{b{GIf}}c}BdDd}{{{b{GIh}}c}BdDd}{{{b{GIj}}c}BdDd}{{{b{GIl}}c}BdDd}{{{b{GIn}}c}BdDd}{{{b{GJ`}}c}BdDd}{{{b{GJb}}c}BdDd}{{{b{GJd}}c}BdDd}{{{b{GJf}}c}BdDd}{{{b{GJh}}c}BdDd}{{{b{GJj}}c}BdDd}{{{b{GJl}}c}BdDd}{{{b{GJn}}c}BdDd}{{{b{GK`}}c}BdDd}{{{b{GKb}}c}BdDd}{{{b{GKd}}c}BdDd}{{{b{GKf}}c}BdDd}{{{b{GKh}}c}BdDd}{{{b{GKj}}c}BdDd}{{{b{GKl}}c}BdDd}{{{b{GKn}}c}BdDd}{{{b{GL`}}c}BdDd}{{{b{GLb}}c}BdDd}{{{b{GLd}}c}BdDd}{{{b{GLf}}c}BdDd}{{{b{GLh}}c}BdDd}{{{b{GLj}}c}BdDd}{{{b{GLl}}c}BdDd}{{{b{GLn}}c}BdDd}{{{b{GM`}}c}BdDd}{{{b{GMb}}c}BdDd}{{{b{GMd}}c}BdDd}{{{b{GMf}}c}BdDd}{{{b{GMh}}c}BdDd}{{{b{GMj}}c}BdDd}{{{b{GMl}}c}BdDd}{{{b{GMn}}c}BdDd}{{{b{GN`}}c}BdDd}{{{b{GNb}}c}BdDd}{{{b{GNd}}c}BdDd}{{{b{GNf}}c}BdDd}{{{b{GNh}}c}BdDd}{{{b{GNj}}c}BdDd}{{{b{GNl}}c}BdDd}{{{b{GNn}}c}BdDd}{{{b{GO`}}c}BdDd}{{{b{GOb}}c}BdDd}{{{b{GOd}}c}BdDd}{{{b{GOf}}c}BdDd}{{{b{GOh}}c}BdDd}{{{b{GOj}}c}BdDd}{{{b{GOl}}c}BdDd}{{{b{GOn}}c}BdDd}{{{b{H@`}}c}BdDd}{{{b{H@b}}c}BdDd}{{{b{H@d}}c}BdDd}{{{b{H@f}}c}BdDd}{{{b{H@h}}c}BdDd}{{{b{H@j}}c}BdDd}{{{b{H@l}}c}BdDd}{{{b{H@n}}c}BdDd}{{{b{HA`}}c}BdDd}{{{b{HAb}}c}BdDd}{{{b{HAd}}c}BdDd}{{{b{HAf}}c}BdDd}{{{b{HAh}}c}BdDd}{{{b{HAj}}c}BdDd}{{{b{HAl}}c}BdDd}{{{b{HAn}}c}BdDd}{{{b{HB`}}c}BdDd}{{{b{HBb}}c}BdDd}{{{b{HBd}}c}BdDd}{{{b{HBf}}c}BdDd}{{{b{HBh}}c}BdDd}{{{b{HBj}}c}BdDd}{{{b{HBl}}c}BdDd}{{{b{HBn}}c}BdDd}{{{b{HC`}}c}BdDd}{{{b{HCb}}c}BdDd}{{{b{HCd}}c}BdDd}{{{b{HCf}}c}BdDd}{{{b{HCh}}c}BdDd}{{{b{HCj}}c}BdDd}{{{b{HCl}}c}BdDd}{{{b{HCn}}c}BdDd}{{{b{HD`}}c}BdDd}{{{b{HDb}}c}BdDd}{{{b{HDd}}c}BdDd}{{{b{HDf}}c}BdDd}{{{b{HDh}}c}BdDd}{{{b{HDj}}c}BdDd}{{{b{HDl}}c}BdDd}{{{b{HDn}}c}BdDd}{{{b{HE`}}c}BdDd}{{{b{HEb}}c}BdDd}{{{b{HEd}}c}BdDd}{{{b{HEf}}c}BdDd}{{{b{HEh}}c}BdDd}{{{b{HEj}}c}BdDd}{{{b{HEl}}c}BdDd}{{{b{HEn}}c}BdDd}{{{b{HF`}}c}BdDd}{{{b{HFb}}c}BdDd}{{{b{HFd}}c}BdDd}{{{b{HFf}}c}BdDd}{{{b{HFh}}c}BdDd}{{{b{HFj}}c}BdDd}{{{b{HFl}}c}BdDd}{{{b{HFn}}c}BdDd}{{{b{HG`}}c}BdDd}{{{b{HGb}}c}BdDd}{{{b{HGd}}c}BdDd}{{{b{HGf}}c}BdDd}{{{b{HGh}}c}BdDd}{{{b{HGj}}c}BdDd}{{{b{HGl}}c}BdDd}{{{b{HGn}}c}BdDd}{{{b{HH`}}c}BdDd}{{{b{HHb}}c}BdDd}{{{b{HHd}}c}BdDd}{{{b{HHf}}c}BdDd}{{{b{HHh}}c}BdDd}{{{b{HHj}}c}BdDd}{{{b{HHl}}c}BdDd}{{{b{HHn}}c}BdDd}{{{b{HI`}}c}BdDd}{{{b{HIb}}c}BdDd}{{{b{HId}}c}BdDd}{{{b{HIf}}c}BdDd}{{{b{HIh}}c}BdDd}{{{b{HIj}}c}BdDd}{{{b{HIl}}c}BdDd}{{{b{HIn}}c}BdDd}{{{b{HJ`}}c}BdDd}{{{b{HJb}}c}BdDd}{{{b{HJd}}c}BdDd}{{{b{HJf}}c}BdDd}{{{b{HJh}}c}BdDd}{{{b{HJj}}c}BdDd}{{{b{HJl}}c}BdDd}{{{b{HJn}}c}BdDd}{{{b{HK`}}c}BdDd}{{{b{HKb}}c}BdDd}{{{b{HKd}}c}BdDd}{{{b{HKf}}c}BdDd}{{{b{HKh}}c}BdDd}{{{b{HKj}}c}BdDd}{{{b{HKl}}c}BdDd}{{{b{HKn}}c}BdDd}{{{b{HL`}}c}BdDd}{{{b{HLb}}c}BdDd}{{{b{HLd}}c}BdDd}{{{b{HLf}}c}BdDd}{{{b{HLh}}c}BdDd}{{{b{HLj}}c}BdDd}{{{b{HLl}}c}BdDd}{{{b{HLn}}c}BdDd}{{{b{HM`}}c}BdDd}{{{b{HMb}}c}BdDd}{{{b{HMd}}c}BdDd}{{{b{HMf}}c}BdDd}{{{b{HMh}}c}BdDd}{{{b{HMj}}c}BdDd}{{{b{HMl}}c}BdDd}{{{b{HMn}}c}BdDd}{{{b{HN`}}c}BdDd}{{{b{HNb}}c}BdDd}{{{b{HNd}}c}BdDd}{{{b{HNf}}c}BdDd}{{{b{HNh}}c}BdDd}{{{b{HNj}}c}BdDd}{{{b{HNl}}c}BdDd}{{{b{HNn}}c}BdDd}{{{b{HO`}}c}BdDd}{{{b{HOb}}c}BdDd}{{{b{HOd}}c}BdDd}{{{b{HOf}}c}BdDd}{{{b{HOh}}c}BdDd}{{{b{HOj}}c}BdDd}{{{b{HOl}}c}BdDd}{{{b{HOn}}c}BdDd}{{{b{I@`}}c}BdDd}{{{b{I@b}}c}BdDd}{{{b{I@d}}c}BdDd}{{{b{I@f}}c}BdDd}{{{b{I@h}}c}BdDd}{{{b{I@j}}c}BdDd}{{{b{I@l}}c}BdDd}{{{b{I@n}}c}BdDd}{{{b{IA`}}c}BdDd}{{{b{IAb}}c}BdDd}{{{b{IAd}}c}BdDd}{{{b{GAj}}c}BdDd}{{{b{GAl}}c}BdDd}{{{b{IAf}}c}BdDd}{{{b{GAn}}c}BdDd}{{{b{GB`}}c}BdDd}{{{b{IAh}}c}BdDd}{{{b{IAj}}c}BdDd}{{{b{IAl}}c}BdDd}{{{b{IAn}}c}BdDd}{{{b{IB`}}c}BdDd}{{{b{IBb}}c}BdDd}{{{b{IBd}}c}BdDd}{{{b{GBb}}c}BdDd}{{{b{IBf}}c}BdDd}{{{b{IBh}}c}BdDd}{{{b{IBj}}c}BdDd}{{{b{GBd}}c}BdDd}{{{b{GBf}}c}BdDd}{{{b{IBl}}c}BdDd}{{{b{IBn}}c}BdDd}{{{b{IC`}}c}BdDd}{{{b{ICb}}c}BdDd}{{{b{ICd}}c}BdDd}{{{b{GBh}}c}BdDd}{{{b{ICf}}c}BdDd}{{{b{ICh}}c}BdDd}{{{b{ICj}}c}BdDd}{{{b{ICl}}c}BdDd}{{{b{ICn}}c}BdDd}{{{b{ID`}}c}BdDd}{{{b{IDb}}c}BdDd}{{{b{IDd}}c}BdDd}{{{b{IDf}}c}BdDd}{{{b{IDh}}c}BdDd}{{{b{IDj}}c}BdDd}{{{b{IDl}}c}BdDd}{{{b{GBj}}c}BdDd}{{{b{IDn}}c}BdDd}{{{b{IE`}}c}BdDd}{{{b{IEb}}c}BdDd}{{{b{GBl}}c}BdDd}{{{b{IEd}}c}BdDd}{{{b{GBn}}c}BdDd}{{{b{IEf}}c}BdDd}{{{b{IEh}}c}BdDd}{{{b{IEj}}c}BdDd}{{{b{IEl}}c}BdDd}{{{b{GC`}}c}BdDd}{{{b{IEn}}c}BdDd}{{{b{IF`}}c}BdDd}{{{b{IFb}}c}BdDd}{{{b{IFd}}c}BdDd}{{{b{IFf}}c}BdDd}{{{b{IFh}}c}BdDd}{{{b{IFj}}c}BdDd}{{{b{IFl}}c}BdDd}{{{b{IFn}}c}BdDd}{{{b{IG`}}c}BdDd}{{{b{GCb}}c}BdDd}{{{b{IGb}}c}BdDd}{{{b{IGd}}c}BdDd}{{{b{IGf}}c}BdDd}{{{b{GCd}}c}BdDd}{{{b{IGh}}c}BdDd}{{{b{GCf}}c}BdDd}{{{b{IGj}}c}BdDd}{{{b{IGl}}c}BdDd}{{{b{IGn}}c}BdDd}{{{b{IH`}}c}BdDd}{{{b{IHb}}c}BdDd}{{{b{IHd}}c}BdDd}{{{b{IHf}}c}BdDd}{{{b{IHh}}c}BdDd}{{{b{GCh}}c}BdDd}{{{b{GCj}}c}BdDd}{{{b{IHj}}c}BdDd}{{{b{IHl}}c}BdDd}{{{b{IHn}}c}BdDd}{{{b{GCl}}c}BdDd}{{{b{II`}}c}BdDd}{{{b{IIb}}c}BdDd}{{{b{GCn}}c}BdDd}{{{b{IId}}c}BdDd}{{{b{IIf}}c}BdDd}{{{b{GD`}}c}BdDd}{{{b{IIh}}c}BdDd}{{{b{IIj}}c}BdDd}{{{b{IIl}}c}BdDd}{{{b{IIn}}c}BdDd}{{{b{GDb}}c}BdDd}{{{b{IJ`}}c}BdDd}{{{b{IJb}}c}BdDd}{{{b{IJd}}c}BdDd}{{{b{IJf}}c}BdDd}{{{b{IJh}}c}BdDd}{{{b{IJj}}c}BdDd}{{{b{IJl}}c}BdDd}{{{b{IJn}}c}BdDd}{{{b{IK`}}c}BdDd}{{{b{IKb}}c}BdDd}{{{b{GDd}}c}BdDd}{{{b{GDf}}c}BdDd}{{{b{IKd}}c}BdDd}{{{b{IKf}}c}BdDd}{{{b{IKh}}c}BdDd}{{{b{GDh}}c}BdDd}{{{b{GDj}}c}BdDd}{{{b{IKj}}c}BdDd}{{{b{IKl}}c}BdDd}{{{b{IKn}}c}BdDd}{{{b{IL`}}c}BdDd}{{{b{ILb}}c}BdDd}{{{b{GDl}}c}BdDd}{{{b{ILd}}c}BdDd}{{{b{ILf}}c}BdDd}{{{b{ILh}}c}BdDd}{{{b{ILj}}c}BdDd}{{{b{ILl}}c}BdDd}{{{b{GDn}}c}BdDd}{{{b{ILn}}c}BdDd}{{{b{IM`}}c}BdDd}{{{b{IMb}}c}BdDd}{{{b{IMd}}c}BdDd}{{{b{IMf}}c}BdDd}{{{b{IMh}}c}BdDd}{{{b{IMj}}c}BdDd}{{{b{IMl}}c}BdDd}{{{b{IMn}}c}BdDd}{{{b{IN`}}c}BdDd}{{{b{INb}}c}BdDd}{{{b{GE`}}c}BdDd}{{{b{INd}}c}BdDd}{{{b{INf}}c}BdDd}{{{b{INh}}c}BdDd}{{{b{INj}}c}BdDd}{{{b{INl}}c}BdDd}{{{b{INn}}c}BdDd}{{{b{IO`}}c}BdDd}{{{b{IOb}}c}BdDd}{{{b{IOd}}c}BdDd}{{{b{IOf}}c}BdDd}{{{b{IOh}}c}BdDd}{{{b{IOj}}c}BdDd}{{{b{IOl}}c}BdDd}````````{{{b{dGAj}}GAjC`}Aj}{{{b{dGAl}}GAlC`}Aj}{{{b{dGAn}}GAnC`}Aj}{{{b{dGB`}}GB`C`}Aj}{{{b{dGBb}}GBbC`}Aj}{{{b{dGBd}}GBdC`}Aj}{{{b{dGBf}}GBfC`}Aj}{{{b{dGBh}}GBhC`}Aj}{{{b{dGBj}}GBjC`}Aj}{{{b{dGBl}}GBlC`}Aj}{{{b{dGBn}}GBnC`}Aj}{{{b{dGC`}}GC`C`}Aj}{{{b{dGCb}}GCbC`}Aj}{{{b{dGCd}}GCdC`}Aj}{{{b{dGCf}}GCfC`}Aj}{{{b{dGCh}}GChC`}Aj}{{{b{dGCj}}GCjC`}Aj}{{{b{dGCl}}GClC`}Aj}{{{b{dGCn}}GCnC`}Aj}{{{b{dGD`}}GD`C`}Aj}{{{b{dGDb}}GDbC`}Aj}{{{b{dGDd}}GDdC`}Aj}{{{b{dGDf}}GDfC`}Aj}{{{b{dGDh}}GDhC`}Aj}{{{b{dGDj}}GDjC`}Aj}{{{b{dGDl}}GDlC`}Aj}{{{b{dGDn}}GDnC`}Aj}{{{b{dGE`}}GE`C`}Aj}```````````````````````````````````````````{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}{{{b{dGAj}}GAj}Aj}{{{b{dGAl}}GAl}Aj}{{{b{dGAn}}GAn}Aj}{{{b{dGB`}}GB`}Aj}{{{b{dGBb}}GBb}Aj}{{{b{dGBd}}GBd}Aj}{{{b{dGBf}}GBf}Aj}{{{b{dGBh}}GBh}Aj}{{{b{dGBj}}GBj}Aj}{{{b{dGBl}}GBl}Aj}{{{b{dGBn}}GBn}Aj}{{{b{dGC`}}GC`}Aj}{{{b{dGCb}}GCb}Aj}{{{b{dGCd}}GCd}Aj}{{{b{dGCf}}GCf}Aj}{{{b{dGCh}}GCh}Aj}{{{b{dGCj}}GCj}Aj}{{{b{dGCl}}GCl}Aj}{{{b{dGCn}}GCn}Aj}{{{b{dGD`}}GD`}Aj}{{{b{dGDb}}GDb}Aj}{{{b{dGDd}}GDd}Aj}{{{b{dGDf}}GDf}Aj}{{{b{dGDh}}GDh}Aj}{{{b{dGDj}}GDj}Aj}{{{b{dGDl}}GDl}Aj}{{{b{dGDn}}GDn}Aj}{{{b{dGE`}}GE`}Aj}`````{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{IAd}}}{{DBj{DBl}}}}{{{b{IAf}}}{{DBj{DBl}}}}{{{b{IAh}}}{{DBj{DBl}}}}{{{b{IAj}}}{{DBj{DBl}}}}{{{b{IAl}}}{{DBj{DBl}}}}{{{b{IAn}}}{{DBj{DBl}}}}{{{b{IB`}}}{{DBj{DBl}}}}{{{b{IBb}}}{{DBj{DBl}}}}{{{b{IBd}}}{{DBj{DBl}}}}{{{b{IBf}}}{{DBj{DBl}}}}{{{b{IBh}}}{{DBj{DBl}}}}{{{b{IBj}}}{{DBj{DBl}}}}{{{b{IBl}}}{{DBj{DBl}}}}{{{b{IBn}}}{{DBj{DBl}}}}{{{b{IC`}}}{{DBj{DBl}}}}{{{b{ICb}}}{{DBj{DBl}}}}{{{b{ICd}}}{{DBj{DBl}}}}{{{b{ICf}}}{{DBj{DBl}}}}{{{b{ICh}}}{{DBj{DBl}}}}{{{b{ICj}}}{{DBj{DBl}}}}{{{b{ICl}}}{{DBj{DBl}}}}{{{b{ICn}}}{{DBj{DBl}}}}{{{b{ID`}}}{{DBj{DBl}}}}{{{b{IDb}}}{{DBj{DBl}}}}{{{b{IDd}}}{{DBj{DBl}}}}{{{b{IDf}}}{{DBj{DBl}}}}{{{b{IDh}}}{{DBj{DBl}}}}{{{b{IDj}}}{{DBj{DBl}}}}{{{b{IDl}}}{{DBj{DBl}}}}{{{b{IDn}}}{{DBj{DBl}}}}{{{b{IE`}}}{{DBj{DBl}}}}{{{b{IEb}}}{{DBj{DBl}}}}{{{b{IEd}}}{{DBj{DBl}}}}{{{b{IEf}}}{{DBj{DBl}}}}{{{b{IEh}}}{{DBj{DBl}}}}{{{b{IEj}}}{{DBj{DBl}}}}{{{b{IEl}}}{{DBj{DBl}}}}{{{b{IEn}}}{{DBj{DBl}}}}{{{b{IF`}}}{{DBj{DBl}}}}{{{b{IFb}}}{{DBj{DBl}}}}{{{b{IFd}}}{{DBj{DBl}}}}{{{b{IFf}}}{{DBj{DBl}}}}{{{b{IFh}}}{{DBj{DBl}}}}{{{b{IFj}}}{{DBj{DBl}}}}{{{b{IFl}}}{{DBj{DBl}}}}{{{b{IFn}}}{{DBj{DBl}}}}{{{b{IG`}}}{{DBj{DBl}}}}{{{b{IGb}}}{{DBj{DBl}}}}{{{b{IGd}}}{{DBj{DBl}}}}{{{b{IGf}}}{{DBj{DBl}}}}{{{b{IGh}}}{{DBj{DBl}}}}{{{b{IGj}}}{{DBj{DBl}}}}{{{b{IGl}}}{{DBj{DBl}}}}{{{b{IGn}}}{{DBj{DBl}}}}{{{b{IH`}}}{{DBj{DBl}}}}{{{b{IHb}}}{{DBj{DBl}}}}{{{b{IHd}}}{{DBj{DBl}}}}{{{b{IHf}}}{{DBj{DBl}}}}{{{b{IHh}}}{{DBj{DBl}}}}{{{b{IHj}}}{{DBj{DBl}}}}{{{b{IHl}}}{{DBj{DBl}}}}{{{b{IHn}}}{{DBj{DBl}}}}{{{b{II`}}}{{DBj{DBl}}}}{{{b{IIb}}}{{DBj{DBl}}}}{{{b{IId}}}{{DBj{DBl}}}}{{{b{IIf}}}{{DBj{DBl}}}}{{{b{IIh}}}{{DBj{DBl}}}}{{{b{IIj}}}{{DBj{DBl}}}}{{{b{IIl}}}{{DBj{DBl}}}}{{{b{IIn}}}{{DBj{DBl}}}}{{{b{IJ`}}}{{DBj{DBl}}}}{{{b{IJb}}}{{DBj{DBl}}}}{{{b{IJd}}}{{DBj{DBl}}}}{{{b{IJf}}}{{DBj{DBl}}}}{{{b{IJh}}}{{DBj{DBl}}}}{{{b{IJj}}}{{DBj{DBl}}}}{{{b{IJl}}}{{DBj{DBl}}}}{{{b{IJn}}}{{DBj{DBl}}}}{{{b{IK`}}}{{DBj{DBl}}}}{{{b{IKb}}}{{DBj{DBl}}}}{{{b{IKd}}}{{DBj{DBl}}}}{{{b{IKf}}}{{DBj{DBl}}}}{{{b{IKh}}}{{DBj{DBl}}}}{{{b{IKj}}}{{DBj{DBl}}}}{{{b{IKl}}}{{DBj{DBl}}}}{{{b{IKn}}}{{DBj{DBl}}}}{{{b{IL`}}}{{DBj{DBl}}}}{{{b{ILb}}}{{DBj{DBl}}}}{{{b{ILd}}}{{DBj{DBl}}}}{{{b{ILf}}}{{DBj{DBl}}}}{{{b{ILh}}}{{DBj{DBl}}}}{{{b{ILj}}}{{DBj{DBl}}}}{{{b{ILl}}}{{DBj{DBl}}}}{{{b{ILn}}}{{DBj{DBl}}}}{{{b{IM`}}}{{DBj{DBl}}}}{{{b{IMb}}}{{DBj{DBl}}}}{{{b{IMd}}}{{DBj{DBl}}}}{{{b{IMf}}}{{DBj{DBl}}}}{{{b{IMh}}}{{DBj{DBl}}}}{{{b{IMj}}}{{DBj{DBl}}}}{{{b{IMl}}}{{DBj{DBl}}}}{{{b{IMn}}}{{DBj{DBl}}}}{{{b{IN`}}}{{DBj{DBl}}}}{{{b{INb}}}{{DBj{DBl}}}}{{{b{INd}}}{{DBj{DBl}}}}{{{b{INf}}}{{DBj{DBl}}}}{{{b{INh}}}{{DBj{DBl}}}}{{{b{INj}}}{{DBj{DBl}}}}{{{b{INl}}}{{DBj{DBl}}}}{{{b{INn}}}{{DBj{DBl}}}}{{{b{IO`}}}{{DBj{DBl}}}}{{{b{IOb}}}{{DBj{DBl}}}}{{{b{IOd}}}{{DBj{DBl}}}}{{{b{IOf}}}{{DBj{DBl}}}}{{{b{IOh}}}{{DBj{DBl}}}}{{{b{IOj}}}{{DBj{DBl}}}}{{{b{IOl}}}{{DBj{DBl}}}}{{{b{c}}}e{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{IAd}}}{{DBj{Hl}}}}{{{b{IAf}}}{{DBj{Hl}}}}{{{b{IAh}}}{{DBj{Hl}}}}{{{b{IAj}}}{{DBj{Hl}}}}{{{b{IAl}}}{{DBj{Hl}}}}{{{b{IAn}}}{{DBj{Hl}}}}{{{b{IB`}}}{{DBj{Hl}}}}{{{b{IBb}}}{{DBj{Hl}}}}{{{b{IBd}}}{{DBj{Hl}}}}{{{b{IBf}}}{{DBj{Hl}}}}{{{b{IBh}}}{{DBj{Hl}}}}{{{b{IBj}}}{{DBj{Hl}}}}{{{b{IBl}}}{{DBj{Hl}}}}{{{b{IBn}}}{{DBj{Hl}}}}{{{b{IC`}}}{{DBj{Hl}}}}{{{b{ICb}}}{{DBj{Hl}}}}{{{b{ICd}}}{{DBj{Hl}}}}{{{b{ICf}}}{{DBj{Hl}}}}{{{b{ICh}}}{{DBj{Hl}}}}{{{b{ICj}}}{{DBj{Hl}}}}{{{b{ICl}}}{{DBj{Hl}}}}{{{b{ICn}}}{{DBj{Hl}}}}{{{b{ID`}}}{{DBj{Hl}}}}{{{b{IDb}}}{{DBj{Hl}}}}{{{b{IDd}}}{{DBj{Hl}}}}{{{b{IDf}}}{{DBj{Hl}}}}{{{b{IDh}}}{{DBj{Hl}}}}{{{b{IDj}}}{{DBj{Hl}}}}{{{b{IDl}}}{{DBj{Hl}}}}{{{b{IDn}}}{{DBj{Hl}}}}{{{b{IE`}}}{{DBj{Hl}}}}{{{b{IEb}}}{{DBj{Hl}}}}{{{b{IEd}}}{{DBj{Hl}}}}{{{b{IEf}}}{{DBj{Hl}}}}{{{b{IEh}}}{{DBj{Hl}}}}{{{b{IEj}}}{{DBj{Hl}}}}{{{b{IEl}}}{{DBj{Hl}}}}{{{b{IEn}}}{{DBj{Hl}}}}{{{b{IF`}}}{{DBj{Hl}}}}{{{b{IFb}}}{{DBj{Hl}}}}{{{b{IFd}}}{{DBj{Hl}}}}{{{b{IFf}}}{{DBj{Hl}}}}{{{b{IFh}}}{{DBj{Hl}}}}{{{b{IFj}}}{{DBj{Hl}}}}{{{b{IFl}}}{{DBj{Hl}}}}{{{b{IFn}}}{{DBj{Hl}}}}{{{b{IG`}}}{{DBj{Hl}}}}{{{b{IGb}}}{{DBj{Hl}}}}{{{b{IGd}}}{{DBj{Hl}}}}{{{b{IGf}}}{{DBj{Hl}}}}{{{b{IGh}}}{{DBj{Hl}}}}{{{b{IGj}}}{{DBj{Hl}}}}{{{b{IGl}}}{{DBj{Hl}}}}{{{b{IGn}}}{{DBj{Hl}}}}{{{b{IH`}}}{{DBj{Hl}}}}{{{b{IHb}}}{{DBj{Hl}}}}{{{b{IHd}}}{{DBj{Hl}}}}{{{b{IHf}}}{{DBj{Hl}}}}{{{b{IHh}}}{{DBj{Hl}}}}{{{b{IHj}}}{{DBj{Hl}}}}{{{b{IHl}}}{{DBj{Hl}}}}{{{b{IHn}}}{{DBj{Hl}}}}{{{b{II`}}}{{DBj{Hl}}}}{{{b{IIb}}}{{DBj{Hl}}}}{{{b{IId}}}{{DBj{Hl}}}}{{{b{IIf}}}{{DBj{Hl}}}}{{{b{IIh}}}{{DBj{Hl}}}}{{{b{IIj}}}{{DBj{Hl}}}}{{{b{IIl}}}{{DBj{Hl}}}}{{{b{IIn}}}{{DBj{Hl}}}}{{{b{IJ`}}}{{DBj{Hl}}}}{{{b{IJb}}}{{DBj{Hl}}}}{{{b{IJd}}}{{DBj{Hl}}}}{{{b{IJf}}}{{DBj{Hl}}}}{{{b{IJh}}}{{DBj{Hl}}}}{{{b{IJj}}}{{DBj{Hl}}}}{{{b{IJl}}}{{DBj{Hl}}}}{{{b{IJn}}}{{DBj{Hl}}}}{{{b{IK`}}}{{DBj{Hl}}}}{{{b{IKb}}}{{DBj{Hl}}}}{{{b{IKd}}}{{DBj{Hl}}}}{{{b{IKf}}}{{DBj{Hl}}}}{{{b{IKh}}}{{DBj{Hl}}}}{{{b{IKj}}}{{DBj{Hl}}}}{{{b{IKl}}}{{DBj{Hl}}}}{{{b{IKn}}}{{DBj{Hl}}}}{{{b{IL`}}}{{DBj{Hl}}}}{{{b{ILb}}}{{DBj{Hl}}}}{{{b{ILd}}}{{DBj{Hl}}}}{{{b{ILf}}}{{DBj{Hl}}}}{{{b{ILh}}}{{DBj{Hl}}}}{{{b{ILj}}}{{DBj{Hl}}}}{{{b{ILl}}}{{DBj{Hl}}}}{{{b{ILn}}}{{DBj{Hl}}}}{{{b{IM`}}}{{DBj{Hl}}}}{{{b{IMb}}}{{DBj{Hl}}}}{{{b{IMd}}}{{DBj{Hl}}}}{{{b{IMf}}}{{DBj{Hl}}}}{{{b{IMh}}}{{DBj{Hl}}}}{{{b{IMj}}}{{DBj{Hl}}}}{{{b{IMl}}}{{DBj{Hl}}}}{{{b{IMn}}}{{DBj{Hl}}}}{{{b{IN`}}}{{DBj{Hl}}}}{{{b{INb}}}{{DBj{Hl}}}}{{{b{INd}}}{{DBj{Hl}}}}{{{b{INf}}}{{DBj{Hl}}}}{{{b{INh}}}{{DBj{Hl}}}}{{{b{INj}}}{{DBj{Hl}}}}{{{b{INl}}}{{DBj{Hl}}}}{{{b{INn}}}{{DBj{Hl}}}}{{{b{IO`}}}{{DBj{Hl}}}}{{{b{IOb}}}{{DBj{Hl}}}}{{{b{IOd}}}{{DBj{Hl}}}}{{{b{IOf}}}{{DBj{Hl}}}}{{{b{IOh}}}{{DBj{Hl}}}}{{{b{IOj}}}{{DBj{Hl}}}}{{{b{IOl}}}{{DBj{Hl}}}}{{{b{dGAj}}GAj}Aj}{{{b{dGAl}}GAl}Aj}{{{b{dGAn}}GAn}Aj}{{{b{dGB`}}GB`}Aj}{{{b{dGBb}}GBb}Aj}{{{b{dGBd}}GBd}Aj}{{{b{dGBf}}GBf}Aj}{{{b{dGBh}}GBh}Aj}{{{b{dGBj}}GBj}Aj}{{{b{dGBl}}GBl}Aj}{{{b{dGBn}}GBn}Aj}{{{b{dGC`}}GC`}Aj}{{{b{dGCb}}GCb}Aj}{{{b{dGCd}}GCd}Aj}{{{b{dGCf}}GCf}Aj}{{{b{dGCh}}GCh}Aj}{{{b{dGCj}}GCj}Aj}{{{b{dGCl}}GCl}Aj}{{{b{dGCn}}GCn}Aj}{{{b{dGD`}}GD`}Aj}{{{b{dGDb}}GDb}Aj}{{{b{dGDd}}GDd}Aj}{{{b{dGDf}}GDf}Aj}{{{b{dGDh}}GDh}Aj}{{{b{dGDj}}GDj}Aj}{{{b{dGDl}}GDl}Aj}{{{b{dGDn}}GDn}Aj}{{{b{dGE`}}GE`}Aj}````````{c{{Bd{e}}}{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{{{b{c}}}Dh{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{{h{f}}}}}D`}{{}IOn}","D":"AHCfMOj","p":[[1,"reference"],[0,"mut"],[1,"u8"],[1,"slice"],[1,"u16"],[5,"MAVLinkV1MessageRaw",0,39179],[5,"MAVLinkV2MessageRaw",0,39179],[5,"MavHeader",0,39179],[6,"MavlinkVersion",0,39179],[5,"MavFrame",0,39179],[10,"Clone",39180],[10,"Message",0,39179],[1,"unit"],[1,"str"],[10,"MavConnection",0,39181],[5,"Box",39182],[5,"Error",39183],[6,"Result",39184],[1,"u32"],[17,"Message"],[10,"MessageData",0,39179],[6,"ParserError",27062,39185],[10,"Deserializer",39186],[1,"bool"],[5,"Formatter",39187],[5,"Error",39187],[10,"Debug",39187],[5,"PeekReader",27241,39188],[1,"tuple"],[6,"MessageReadError",27062,39185],[10,"Read",39189],[1,"usize"],[6,"MessageWriteError",27062,39185],[10,"Serializer",39190],[10,"Serialize",39190],[5,"TypeId",39191],[10,"Write",39189],[5,"AttitudeTargetTypemask",158],[5,"UavionixAdsbOutRfSelect",158],[5,"PositionTargetTypemask",158],[5,"UtmDataAvailFlags",158],[5,"UavionixAdsbOutDynamicState",158],[5,"MavModeFlag",158],[5,"UavionixAdsbRfHealth",158],[5,"MavGeneratorStatusFlag",158],[5,"HilSensorUpdatedFlags",158],[5,"MavSysStatusSensor",158],[5,"GimbalDeviceCapFlags",158],[5,"EkfStatusFlags",158],[5,"AdsbFlags",158],[5,"MavEventCurrentSequenceFlags",158],[5,"GimbalManagerCapFlags",158],[5,"TuneFormat",158],[5,"GoproHeartbeatFlags",158],[5,"LimitModule",158],[5,"CameraCapFlags",158],[5,"EscFailureFlags",158],[5,"GimbalDeviceFlags",158],[5,"HighresImuUpdatedFlags",158],[5,"MavPowerStatus",158],[5,"AisFlags",158],[5,"RallyFlags",158],[5,"SerialControlFlag",158],[5,"HlFailureFlag",158],[5,"MavProtocolCapability",158],[5,"GimbalDeviceErrorFlags",158],[5,"GpsInputIgnoreFlags",158],[5,"MavWinchStatusFlag",158],[5,"EstimatorStatusFlags",158],[1,"u64"],[6,"MavMessage",158],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",158],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",158],[5,"FENCE_FETCH_POINT_DATA",158],[5,"HERELINK_TELEM_DATA",158],[5,"PARAM_EXT_VALUE_DATA",158],[5,"ADSB_VEHICLE_DATA",158],[5,"PARAM_REQUEST_READ_DATA",158],[5,"ESTIMATOR_STATUS_DATA",158],[5,"GIMBAL_MANAGER_INFORMATION_DATA",158],[5,"FENCE_STATUS_DATA",158],[5,"MANUAL_CONTROL_DATA",158],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",158],[5,"DATA16_DATA",158],[5,"GIMBAL_DEVICE_INFORMATION_DATA",158],[5,"CUBEPILOT_FIRMWARE_UPDATE_START_DATA",158],[5,"CAMERA_FEEDBACK_DATA",158],[5,"TERRAIN_REPORT_DATA",158],[5,"RALLY_POINT_DATA",158],[5,"DATA32_DATA",158],[5,"POSITION_TARGET_GLOBAL_INT_DATA",158],[5,"PARAM_EXT_REQUEST_LIST_DATA",158],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",158],[5,"CAMERA_INFORMATION_DATA",158],[5,"PID_TUNING_DATA",158],[5,"HIL_SENSOR_DATA",158],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",158],[5,"BATTERY2_DATA",158],[5,"PLAY_TUNE_V2_DATA",158],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",158],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",158],[5,"COLLISION_DATA",158],[5,"VICON_POSITION_ESTIMATE_DATA",158],[5,"OBSTACLE_DISTANCE_DATA",158],[5,"UAVCAN_NODE_STATUS_DATA",158],[5,"UAVCAN_NODE_INFO_DATA",158],[5,"LOCAL_POSITION_NED_COV_DATA",158],[5,"POWER_STATUS_DATA",158],[5,"PARAM_VALUE_DATA",158],[5,"GENERATOR_STATUS_DATA",158],[5,"ISBD_LINK_STATUS_DATA",158],[5,"LOGGING_ACK_DATA",158],[5,"GOPRO_SET_REQUEST_DATA",158],[5,"HERELINK_VIDEO_STREAM_INFORMATION_DATA",158],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",158],[5,"LOG_ENTRY_DATA",158],[5,"GPS2_RAW_DATA",158],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",158],[5,"HIL_GPS_DATA",158],[5,"ESC_INFO_DATA",158],[5,"ADAP_TUNING_DATA",158],[5,"VISION_POSITION_ESTIMATE_DATA",158],[5,"VFR_HUD_DATA",158],[5,"MISSION_ITEM_REACHED_DATA",158],[5,"RADIO_STATUS_DATA",158],[5,"MISSION_COUNT_DATA",158],[5,"HIGHRES_IMU_DATA",158],[5,"COMMAND_INT_DATA",158],[5,"DEBUG_DATA",158],[5,"WHEEL_DISTANCE_DATA",158],[5,"FLIGHT_INFORMATION_DATA",158],[5,"CONTROL_SYSTEM_STATE_DATA",158],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",158],[5,"MOUNT_STATUS_DATA",158],[5,"MAG_CAL_PROGRESS_DATA",158],[5,"OPEN_DRONE_ID_SYSTEM_DATA",158],[5,"LOG_ERASE_DATA",158],[5,"SYS_STATUS_DATA",158],[5,"EFI_STATUS_DATA",158],[5,"RAW_IMU_DATA",158],[5,"SCALED_PRESSURE3_DATA",158],[5,"COMPONENT_METADATA_DATA",158],[5,"BATTERY_STATUS_DATA",158],[5,"OSD_PARAM_SHOW_CONFIG_DATA",158],[5,"REMOTE_LOG_BLOCK_STATUS_DATA",158],[5,"GPS2_RTK_DATA",158],[5,"DEVICE_OP_READ_DATA",158],[5,"COMPASSMOT_STATUS_DATA",158],[5,"PING_DATA",158],[5,"COMMAND_ACK_DATA",158],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",158],[5,"GOPRO_HEARTBEAT_DATA",158],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",158],[5,"OPEN_DRONE_ID_SELF_ID_DATA",158],[5,"LOG_REQUEST_END_DATA",158],[5,"MOUNT_ORIENTATION_DATA",158],[5,"GPS_RTK_DATA",158],[5,"RC_CHANNELS_SCALED_DATA",158],[5,"SCALED_IMU2_DATA",158],[5,"UAVIONIX_ADSB_OUT_DYNAMIC_DATA",158],[5,"SUPPORTED_TUNES_DATA",158],[5,"MISSION_ITEM_INT_DATA",158],[5,"PLAY_TUNE_DATA",158],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",158],[5,"MEMORY_VECT_DATA",158],[5,"DATA64_DATA",158],[5,"ATTITUDE_QUATERNION_DATA",158],[5,"SYSTEM_TIME_DATA",158],[5,"MISSION_ITEM_DATA",158],[5,"MOUNT_CONTROL_DATA",158],[5,"AUTH_KEY_DATA",158],[5,"AIS_VESSEL_DATA",158],[5,"RAW_RPM_DATA",158],[5,"SMART_BATTERY_INFO_DATA",158],[5,"ATTITUDE_DATA",158],[5,"REMOTE_LOG_DATA_BLOCK_DATA",158],[5,"SERIAL_CONTROL_DATA",158],[5,"V2_EXTENSION_DATA",158],[5,"SAFETY_ALLOWED_AREA_DATA",158],[5,"HWSTATUS_DATA",158],[5,"CAN_FILTER_MODIFY_DATA",158],[5,"OSD_PARAM_CONFIG_REPLY_DATA",158],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",158],[5,"WATER_DEPTH_DATA",158],[5,"LIMITS_STATUS_DATA",158],[5,"ACTUATOR_CONTROL_TARGET_DATA",158],[5,"FOLLOW_TARGET_DATA",158],[5,"RALLY_FETCH_POINT_DATA",158],[5,"AUTOPILOT_VERSION_DATA",158],[5,"LOG_REQUEST_LIST_DATA",158],[5,"STATUSTEXT_DATA",158],[5,"LOGGING_DATA_ACKED_DATA",158],[5,"CURRENT_EVENT_SEQUENCE_DATA",158],[5,"OSD_PARAM_CONFIG_DATA",158],[5,"SETUP_SIGNING_DATA",158],[5,"VISION_POSITION_DELTA_DATA",158],[5,"SET_MODE_DATA",158],[5,"DATA96_DATA",158],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",158],[5,"HOME_POSITION_DATA",158],[5,"HIGH_LATENCY2_DATA",158],[5,"SET_HOME_POSITION_DATA",158],[5,"ESC_STATUS_DATA",158],[5,"DEBUG_VECT_DATA",158],[5,"RC_CHANNELS_RAW_DATA",158],[5,"SET_ATTITUDE_TARGET_DATA",158],[5,"AHRS_DATA",158],[5,"CUBEPILOT_RAW_RC_DATA",158],[5,"CANFD_FRAME_DATA",158],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",158],[5,"PARAM_EXT_REQUEST_READ_DATA",158],[5,"LOG_DATA_DATA",158],[5,"CAN_FRAME_DATA",158],[5,"TERRAIN_DATA_DATA",158],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",158],[5,"PARAM_SET_DATA",158],[5,"DISTANCE_SENSOR_DATA",158],[5,"VISION_SPEED_ESTIMATE_DATA",158],[5,"CELLULAR_STATUS_DATA",158],[5,"OSD_PARAM_SHOW_CONFIG_REPLY_DATA",158],[5,"ESC_TELEMETRY_5_TO_8_DATA",158],[5,"UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA",158],[5,"DEEPSTALL_DATA",158],[5,"OPTICAL_FLOW_RAD_DATA",158],[5,"REQUEST_DATA_STREAM_DATA",158],[5,"LINK_NODE_STATUS_DATA",158],[5,"MISSION_REQUEST_DATA",158],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",158],[5,"FILE_TRANSFER_PROTOCOL_DATA",158],[5,"SCALED_IMU3_DATA",158],[5,"CHANGE_OPERATOR_CONTROL_DATA",158],[5,"GIMBAL_MANAGER_STATUS_DATA",158],[5,"TIMESYNC_DATA",158],[5,"EXTENDED_SYS_STATE_DATA",158],[5,"TERRAIN_REQUEST_DATA",158],[5,"REQUEST_EVENT_DATA",158],[5,"LOGGING_DATA_DATA",158],[5,"GOPRO_GET_REQUEST_DATA",158],[5,"SET_MAG_OFFSETS_DATA",158],[5,"PROTOCOL_VERSION_DATA",158],[5,"STORAGE_INFORMATION_DATA",158],[5,"GOPRO_SET_RESPONSE_DATA",158],[5,"AP_ADC_DATA",158],[5,"MAG_CAL_REPORT_DATA",158],[5,"ICAROUS_HEARTBEAT_DATA",158],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",158],[5,"PARAM_EXT_SET_DATA",158],[5,"BUTTON_CHANGE_DATA",158],[5,"WIND_DATA",158],[5,"RESOURCE_REQUEST_DATA",158],[5,"AUTOPILOT_VERSION_REQUEST_DATA",158],[5,"HIL_OPTICAL_FLOW_DATA",158],[5,"ESC_TELEMETRY_1_TO_4_DATA",158],[5,"SCALED_PRESSURE_DATA",158],[5,"RAW_PRESSURE_DATA",158],[5,"OPTICAL_FLOW_DATA",158],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",158],[5,"HIL_RC_INPUTS_RAW_DATA",158],[5,"VIDEO_STREAM_INFORMATION_DATA",158],[5,"MCU_STATUS_DATA",158],[5,"WINCH_STATUS_DATA",158],[5,"MANUAL_SETPOINT_DATA",158],[5,"AIRSPEED_AUTOCAL_DATA",158],[5,"SENSOR_OFFSETS_DATA",158],[5,"HIL_STATE_QUATERNION_DATA",158],[5,"EVENT_DATA",158],[5,"GLOBAL_POSITION_INT_COV_DATA",158],[5,"TERRAIN_CHECK_DATA",158],[5,"DEVICE_OP_WRITE_DATA",158],[5,"LOG_REQUEST_DATA_DATA",158],[5,"GLOBAL_POSITION_INT_DATA",158],[5,"GIMBAL_TORQUE_CMD_REPORT_DATA",158],[5,"WIFI_CONFIG_AP_DATA",158],[5,"CAMERA_SETTINGS_DATA",158],[5,"COMMAND_CANCEL_DATA",158],[5,"PARAM_REQUEST_LIST_DATA",158],[5,"PARAM_MAP_RC_DATA",158],[5,"SIMSTATE_DATA",158],[5,"TIME_ESTIMATE_TO_TARGET_DATA",158],[5,"WIND_COV_DATA",158],[5,"TUNNEL_DATA",158],[5,"GPS_INJECT_DATA_DATA",158],[5,"AHRS2_DATA",158],[5,"UAVIONIX_ADSB_OUT_CFG_DATA",158],[5,"HIL_CONTROLS_DATA",158],[5,"MISSION_ACK_DATA",158],[5,"DATA_STREAM_DATA",158],[5,"OPEN_DRONE_ID_LOCATION_DATA",158],[5,"SAFETY_SET_ALLOWED_AREA_DATA",158],[5,"DIGICAM_CONTROL_DATA",158],[5,"GIMBAL_REPORT_DATA",158],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",158],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",158],[5,"ATTITUDE_TARGET_DATA",158],[5,"NAMED_VALUE_FLOAT_DATA",158],[5,"ATTITUDE_QUATERNION_COV_DATA",158],[5,"NAMED_VALUE_INT_DATA",158],[5,"ENCAPSULATED_DATA_DATA",158],[5,"HIL_STATE_DATA",158],[5,"MEMINFO_DATA",158],[5,"RESPONSE_EVENT_ERROR_DATA",158],[5,"CAMERA_FOV_STATUS_DATA",158],[5,"ALTITUDE_DATA",158],[5,"GPS_RAW_INT_DATA",158],[5,"OBSTACLE_DISTANCE_3D_DATA",158],[5,"CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA",158],[5,"SCALED_PRESSURE2_DATA",158],[5,"SIM_STATE_DATA",158],[5,"VIBRATION_DATA",158],[5,"COMPONENT_INFORMATION_DATA",158],[5,"CAMERA_TRIGGER_DATA",158],[5,"VIDEO_STREAM_STATUS_DATA",158],[5,"ONBOARD_COMPUTER_STATUS_DATA",158],[5,"CAMERA_CAPTURE_STATUS_DATA",158],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",158],[5,"MOUNT_CONFIGURE_DATA",158],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",158],[5,"PARAM_EXT_ACK_DATA",158],[5,"MESSAGE_INTERVAL_DATA",158],[5,"DEBUG_FLOAT_ARRAY_DATA",158],[5,"DIGICAM_CONFIGURE_DATA",158],[5,"HIGH_LATENCY_DATA",158],[5,"CAMERA_IMAGE_CAPTURED_DATA",158],[5,"EKF_STATUS_REPORT_DATA",158],[5,"SCALED_IMU_DATA",158],[5,"GPS_STATUS_DATA",158],[5,"POSITION_TARGET_LOCAL_NED_DATA",158],[5,"HYGROMETER_SENSOR_DATA",158],[5,"NAV_CONTROLLER_OUTPUT_DATA",158],[5,"MISSION_CURRENT_DATA",158],[5,"MISSION_CLEAR_ALL_DATA",158],[5,"GPS_INPUT_DATA",158],[5,"CAMERA_STATUS_DATA",158],[5,"DEVICE_OP_READ_REPLY_DATA",158],[5,"LED_CONTROL_DATA",158],[5,"RANGEFINDER_DATA",158],[5,"UTM_GLOBAL_POSITION_DATA",158],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",158],[5,"RC_CHANNELS_OVERRIDE_DATA",158],[5,"ORBIT_EXECUTION_STATUS_DATA",158],[5,"HIL_ACTUATOR_CONTROLS_DATA",158],[5,"GPS_GLOBAL_ORIGIN_DATA",158],[5,"ICAROUS_KINEMATIC_BANDS_DATA",158],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",158],[5,"ATT_POS_MOCAP_DATA",158],[5,"FENCE_POINT_DATA",158],[5,"LANDING_TARGET_DATA",158],[5,"ESC_TELEMETRY_9_TO_12_DATA",158],[5,"MISSION_REQUEST_LIST_DATA",158],[5,"MISSION_REQUEST_INT_DATA",158],[5,"DEVICE_OP_WRITE_REPLY_DATA",158],[5,"RPM_DATA",158],[5,"ACTUATOR_OUTPUT_STATUS_DATA",158],[5,"AHRS3_DATA",158],[5,"RADIO_DATA",158],[5,"GOPRO_GET_RESPONSE_DATA",158],[5,"GIMBAL_CONTROL_DATA",158],[5,"LOCAL_POSITION_NED_DATA",158],[5,"CELLULAR_CONFIG_DATA",158],[5,"RC_CHANNELS_DATA",158],[5,"AOA_SSA_DATA",158],[5,"HEARTBEAT_DATA",158],[5,"SERVO_OUTPUT_RAW_DATA",158],[5,"ODOMETRY_DATA",158],[5,"MISSION_SET_CURRENT_DATA",158],[5,"GPS_RTCM_DATA_DATA",158],[5,"COMMAND_LONG_DATA",158],[6,"GoproProtuneWhiteBalance",158],[6,"MavBatteryFunction",158],[6,"MavMissionType",158],[6,"LandingTargetType",158],[6,"OrbitYawBehaviour",158],[6,"MavDistanceSensor",158],[6,"CellularConfigResponse",158],[6,"MavParamType",158],[6,"CellularStatusFlag",158],[6,"MavTunnelPayloadType",158],[6,"MavModeFlagDecodePosition",158],[6,"MavOdidHeightRef",158],[6,"MavCmdAck",158],[6,"MavCollisionThreatLevel",158],[6,"MavCollisionAction",158],[6,"UtmFlightState",158],[6,"OsdParamConfigError",158],[6,"PrecisionLandMode",158],[6,"GpsFixType",158],[6,"PidTuningAxis",158],[6,"LedControlPattern",158],[6,"GoproProtuneGain",158],[6,"NavVtolLandOptions",158],[6,"MavCmdDoAuxFunctionSwitchLevel",158],[6,"GoproFrameRate",158],[6,"GimbalAxis",158],[6,"AccelcalVehiclePos",158],[6,"MavOdidStatus",158],[6,"MavEstimatorType",158],[6,"VideoStreamStatusFlags",158],[6,"MavBatteryMode",158],[6,"GoproCaptureMode",158],[6,"MavBatteryChargeState",158],[6,"MavOdidHorAcc",158],[6,"OsdParamConfigType",158],[6,"ParamAck",158],[6,"AisNavStatus",158],[6,"MavFtpOpcode",158],[6,"EscConnectionType",158],[6,"CanFilterOp",158],[6,"GimbalManagerFlags",158],[6,"FailureType",158],[6,"GoproHeartbeatStatus",158],[6,"MavFtpErr",158],[6,"MavOdidDescType",158],[6,"MavSeverity",158],[6,"ParachuteAction",158],[6,"GoproPhotoResolution",158],[6,"VtolTransitionHeading",158],[6,"CameraMode",158],[6,"PreflightStorageMissionAction",158],[6,"DeepstallStage",158],[6,"SerialControlDev",158],[6,"MotorTestOrder",158],[6,"AisType",158],[6,"MavDataStream",158],[6,"IcarousTrackBandTypes",158],[6,"MavSensorOrientation",158],[6,"CameraTrackingTargetData",158],[6,"MotorTestThrottleType",158],[6,"SpeedType",158],[6,"MavCmd",158],[6,"CopterMode",158],[6,"MavlinkDataStreamType",158],[6,"CameraZoomType",158],[6,"UavionixAdsbOutDynamicGpsFix",158],[6,"WifiConfigApResponse",158],[6,"TrackerMode",158],[6,"RoverMode",158],[6,"GoproCharging",158],[6,"GimbalAxisCalibrationRequired",158],[6,"MavOdidIdType",158],[6,"UavcanNodeMode",158],[6,"CameraTrackingStatusFlags",158],[6,"GripperActions",158],[6,"MavAutopilot",158],[6,"GoproResolution",158],[6,"GoproProtuneColour",158],[6,"MavMissionResult",158],[6,"VideoStreamType",158],[6,"MavState",158],[6,"MavOdidClassificationType",158],[6,"HeadingType",158],[6,"SetFocusType",158],[6,"FenceBreach",158],[6,"MavOdidSpeedAcc",158],[6,"MissionState",158],[6,"GimbalAxisCalibrationStatus",158],[6,"UavionixAdsbOutCfgGpsOffsetLon",158],[6,"StorageUsageFlag",158],[6,"MavOdidVerAcc",158],[6,"MavComponent",158],[6,"MavMountMode",158],[6,"PlaneMode",158],[6,"MavOdidTimeAcc",158],[6,"MavEventErrorReason",158],[6,"ActuatorOutputFunction",158],[6,"MavRemoteLogDataBlockStatuses",158],[6,"UavionixAdsbOutCfgGpsOffsetLat",158],[6,"GoproModel",158],[6,"StorageStatus",158],[6,"FenceAction",158],[6,"GoproProtuneSharpness",158],[6,"CellularNetworkFailedReason",158],[6,"MavType",158],[6,"MavRoi",158],[6,"MavVtolState",158],[6,"ScriptingCmd",158],[6,"AdsbEmitterType",158],[6,"DeviceOpBustype",158],[6,"MavBatteryFault",158],[6,"CompMetadataType",158],[6,"MagCalStatus",158],[6,"MavRemoteLogDataBlockCommands",158],[6,"GoproVideoSettingsFlags",158],[6,"GoproFieldOfView",158],[6,"MavModeGimbal",158],[6,"UavcanNodeHealth",158],[6,"WinchActions",158],[6,"RcType",158],[6,"PreflightStorageParameterAction",158],[6,"MavOdidArmStatus",158],[6,"MavGoto",158],[6,"IcarousFmsState",158],[6,"CameraFeedbackFlags",158],[6,"UavionixAdsbOutCfgAircraftSize",158],[6,"RtkBaselineCoordinateSystem",158],[6,"UavionixAdsbEmergencyStatus",158],[6,"MavDoRepositionFlags",158],[6,"FailureUnit",158],[6,"AdsbAltitudeType",158],[6,"AutotuneAxis",158],[6,"MavMode",158],[6,"SubMode",158],[6,"MavCollisionSrc",158],[6,"CameraTrackingMode",158],[6,"GoproBurstRate",158],[6,"CameraStatusTypes",158],[6,"MavArmAuthDeniedReason",158],[6,"MavFrame",158],[6,"MavOdidOperatorIdType",158],[6,"MavResult",158],[6,"MavSysStatusSensorExtended",158],[6,"MavOdidCategoryEu",158],[6,"WifiConfigApMode",158],[6,"MavLandedState",158],[6,"GoproCommand",158],[6,"MavOdidUaType",158],[6,"MavParamExtType",158],[6,"ActuatorConfiguration",158],[6,"GoproProtuneExposure",158],[6,"GoproRequestStatus",158],[6,"LimitsState",158],[6,"FirmwareVersionType",158],[6,"MavOdidAuthType",158],[6,"FenceMitigate",158],[6,"StorageType",158],[6,"MavOdidOperatorLocationType",158],[6,"MavOdidClassEu",158],[6,"CellularNetworkRadioType",158],[6,"MavBatteryType",158],[6,"Ordering",39192],[17,"Item"],[10,"IntoIterator",39193],[8,"Result",39187],[6,"Option",39194],[1,"i64"],[10,"Hasher",39195],[5,"Bytes",15500,39196],[1,"array"],[1,"f32"],[1,"f64"],[1,"i16"],[1,"i32"],[1,"i8"],[5,"BytesMut",15524,39197],[5,"HilSensorUpdatedFlags",15549],[5,"GimbalManagerCapFlags",15549],[5,"MavEventCurrentSequenceFlags",15549],[5,"MavPowerStatus",15549],[5,"AdsbFlags",15549],[5,"UtmDataAvailFlags",15549],[5,"MavProtocolCapability",15549],[5,"GimbalDeviceCapFlags",15549],[5,"PositionTargetTypemask",15549],[5,"GpsInputIgnoreFlags",15549],[5,"MavModeFlag",15549],[5,"MavWinchStatusFlag",15549],[5,"EstimatorStatusFlags",15549],[5,"GimbalDeviceErrorFlags",15549],[5,"TuneFormat",15549],[5,"HlFailureFlag",15549],[5,"EscFailureFlags",15549],[5,"SerialControlFlag",15549],[5,"AisFlags",15549],[5,"MavGeneratorStatusFlag",15549],[5,"GimbalDeviceFlags",15549],[5,"MavSysStatusSensor",15549],[5,"AttitudeTargetTypemask",15549],[5,"HighresImuUpdatedFlags",15549],[5,"CameraCapFlags",15549],[6,"MavMessage",15549],[5,"UAVCAN_NODE_STATUS_DATA",15549],[5,"VFR_HUD_DATA",15549],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",15549],[5,"RAW_PRESSURE_DATA",15549],[5,"HIL_OPTICAL_FLOW_DATA",15549],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",15549],[5,"TERRAIN_DATA_DATA",15549],[5,"LOGGING_DATA_DATA",15549],[5,"EVENT_DATA",15549],[5,"LOG_DATA_DATA",15549],[5,"FOLLOW_TARGET_DATA",15549],[5,"CANFD_FRAME_DATA",15549],[5,"CAN_FRAME_DATA",15549],[5,"SMART_BATTERY_INFO_DATA",15549],[5,"PARAM_EXT_SET_DATA",15549],[5,"WIND_COV_DATA",15549],[5,"HIL_GPS_DATA",15549],[5,"PARAM_EXT_REQUEST_READ_DATA",15549],[5,"SET_HOME_POSITION_DATA",15549],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",15549],[5,"GPS2_RTK_DATA",15549],[5,"STATUSTEXT_DATA",15549],[5,"ENCAPSULATED_DATA_DATA",15549],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",15549],[5,"VIDEO_STREAM_INFORMATION_DATA",15549],[5,"LANDING_TARGET_DATA",15549],[5,"CHANGE_OPERATOR_CONTROL_DATA",15549],[5,"SIM_STATE_DATA",15549],[5,"COMMAND_INT_DATA",15549],[5,"POSITION_TARGET_LOCAL_NED_DATA",15549],[5,"MANUAL_CONTROL_DATA",15549],[5,"EXTENDED_SYS_STATE_DATA",15549],[5,"MANUAL_SETPOINT_DATA",15549],[5,"LOG_REQUEST_LIST_DATA",15549],[5,"FENCE_STATUS_DATA",15549],[5,"REQUEST_DATA_STREAM_DATA",15549],[5,"ALTITUDE_DATA",15549],[5,"LOG_ENTRY_DATA",15549],[5,"LOCAL_POSITION_NED_COV_DATA",15549],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",15549],[5,"VICON_POSITION_ESTIMATE_DATA",15549],[5,"GPS_RTCM_DATA_DATA",15549],[5,"ACTUATOR_OUTPUT_STATUS_DATA",15549],[5,"CURRENT_EVENT_SEQUENCE_DATA",15549],[5,"GLOBAL_POSITION_INT_COV_DATA",15549],[5,"PARAM_MAP_RC_DATA",15549],[5,"GENERATOR_STATUS_DATA",15549],[5,"LOGGING_ACK_DATA",15549],[5,"HIL_STATE_QUATERNION_DATA",15549],[5,"V2_EXTENSION_DATA",15549],[5,"MOUNT_ORIENTATION_DATA",15549],[5,"SAFETY_ALLOWED_AREA_DATA",15549],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",15549],[5,"SCALED_PRESSURE3_DATA",15549],[5,"HIL_ACTUATOR_CONTROLS_DATA",15549],[5,"RESOURCE_REQUEST_DATA",15549],[5,"DISTANCE_SENSOR_DATA",15549],[5,"WHEEL_DISTANCE_DATA",15549],[5,"SERIAL_CONTROL_DATA",15549],[5,"TUNNEL_DATA",15549],[5,"CAMERA_TRIGGER_DATA",15549],[5,"RAW_RPM_DATA",15549],[5,"GPS_RAW_INT_DATA",15549],[5,"MAG_CAL_REPORT_DATA",15549],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",15549],[5,"NAMED_VALUE_FLOAT_DATA",15549],[5,"COLLISION_DATA",15549],[5,"SAFETY_SET_ALLOWED_AREA_DATA",15549],[5,"STORAGE_INFORMATION_DATA",15549],[5,"RC_CHANNELS_OVERRIDE_DATA",15549],[5,"SUPPORTED_TUNES_DATA",15549],[5,"SCALED_PRESSURE2_DATA",15549],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",15549],[5,"SCALED_IMU2_DATA",15549],[5,"RC_CHANNELS_RAW_DATA",15549],[5,"AIS_VESSEL_DATA",15549],[5,"COMMAND_LONG_DATA",15549],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",15549],[5,"DEBUG_DATA",15549],[5,"CAMERA_INFORMATION_DATA",15549],[5,"GIMBAL_MANAGER_INFORMATION_DATA",15549],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",15549],[5,"NAV_CONTROLLER_OUTPUT_DATA",15549],[5,"ORBIT_EXECUTION_STATUS_DATA",15549],[5,"ISBD_LINK_STATUS_DATA",15549],[5,"LOG_REQUEST_DATA_DATA",15549],[5,"MISSION_ACK_DATA",15549],[5,"OBSTACLE_DISTANCE_DATA",15549],[5,"WIFI_CONFIG_AP_DATA",15549],[5,"ATTITUDE_DATA",15549],[5,"CAMERA_SETTINGS_DATA",15549],[5,"SETUP_SIGNING_DATA",15549],[5,"VISION_SPEED_ESTIMATE_DATA",15549],[5,"SET_ATTITUDE_TARGET_DATA",15549],[5,"RC_CHANNELS_SCALED_DATA",15549],[5,"HIL_CONTROLS_DATA",15549],[5,"MISSION_CLEAR_ALL_DATA",15549],[5,"GIMBAL_MANAGER_STATUS_DATA",15549],[5,"ATTITUDE_QUATERNION_DATA",15549],[5,"CAMERA_CAPTURE_STATUS_DATA",15549],[5,"AUTH_KEY_DATA",15549],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",15549],[5,"SET_MODE_DATA",15549],[5,"PARAM_EXT_VALUE_DATA",15549],[5,"HOME_POSITION_DATA",15549],[5,"GPS_GLOBAL_ORIGIN_DATA",15549],[5,"ESC_STATUS_DATA",15549],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",15549],[5,"HEARTBEAT_DATA",15549],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",15549],[5,"GPS2_RAW_DATA",15549],[5,"SYSTEM_TIME_DATA",15549],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",15549],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",15549],[5,"FILE_TRANSFER_PROTOCOL_DATA",15549],[5,"LOCAL_POSITION_NED_DATA",15549],[5,"OPTICAL_FLOW_DATA",15549],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",15549],[5,"MISSION_CURRENT_DATA",15549],[5,"RESPONSE_EVENT_ERROR_DATA",15549],[5,"RC_CHANNELS_DATA",15549],[5,"ONBOARD_COMPUTER_STATUS_DATA",15549],[5,"ODOMETRY_DATA",15549],[5,"COMMAND_CANCEL_DATA",15549],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",15549],[5,"FLIGHT_INFORMATION_DATA",15549],[5,"BUTTON_CHANGE_DATA",15549],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",15549],[5,"TIME_ESTIMATE_TO_TARGET_DATA",15549],[5,"CONTROL_SYSTEM_STATE_DATA",15549],[5,"TIMESYNC_DATA",15549],[5,"WINCH_STATUS_DATA",15549],[5,"GPS_INPUT_DATA",15549],[5,"MISSION_REQUEST_LIST_DATA",15549],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",15549],[5,"OPEN_DRONE_ID_SYSTEM_DATA",15549],[5,"OPEN_DRONE_ID_SELF_ID_DATA",15549],[5,"GPS_INJECT_DATA_DATA",15549],[5,"COMPONENT_METADATA_DATA",15549],[5,"GLOBAL_POSITION_INT_DATA",15549],[5,"COMPONENT_INFORMATION_DATA",15549],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",15549],[5,"POSITION_TARGET_GLOBAL_INT_DATA",15549],[5,"UTM_GLOBAL_POSITION_DATA",15549],[5,"CELLULAR_CONFIG_DATA",15549],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",15549],[5,"GIMBAL_DEVICE_INFORMATION_DATA",15549],[5,"CAMERA_FOV_STATUS_DATA",15549],[5,"VIDEO_STREAM_STATUS_DATA",15549],[5,"TERRAIN_REQUEST_DATA",15549],[5,"HIL_STATE_DATA",15549],[5,"MISSION_REQUEST_INT_DATA",15549],[5,"ATTITUDE_TARGET_DATA",15549],[5,"POWER_STATUS_DATA",15549],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",15549],[5,"PLAY_TUNE_DATA",15549],[5,"RADIO_STATUS_DATA",15549],[5,"MESSAGE_INTERVAL_DATA",15549],[5,"LOG_ERASE_DATA",15549],[5,"HIGHRES_IMU_DATA",15549],[5,"PROTOCOL_VERSION_DATA",15549],[5,"HIL_RC_INPUTS_RAW_DATA",15549],[5,"SERVO_OUTPUT_RAW_DATA",15549],[5,"DATA_STREAM_DATA",15549],[5,"COMMAND_ACK_DATA",15549],[5,"MISSION_COUNT_DATA",15549],[5,"ACTUATOR_CONTROL_TARGET_DATA",15549],[5,"MISSION_ITEM_DATA",15549],[5,"PARAM_VALUE_DATA",15549],[5,"TERRAIN_REPORT_DATA",15549],[5,"SCALED_IMU3_DATA",15549],[5,"PARAM_EXT_REQUEST_LIST_DATA",15549],[5,"VIBRATION_DATA",15549],[5,"ESTIMATOR_STATUS_DATA",15549],[5,"OPTICAL_FLOW_RAD_DATA",15549],[5,"VISION_POSITION_ESTIMATE_DATA",15549],[5,"SYS_STATUS_DATA",15549],[5,"SCALED_PRESSURE_DATA",15549],[5,"RAW_IMU_DATA",15549],[5,"PLAY_TUNE_V2_DATA",15549],[5,"TERRAIN_CHECK_DATA",15549],[5,"EFI_STATUS_DATA",15549],[5,"GPS_RTK_DATA",15549],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",15549],[5,"MISSION_ITEM_REACHED_DATA",15549],[5,"ATTITUDE_QUATERNION_COV_DATA",15549],[5,"UAVCAN_NODE_INFO_DATA",15549],[5,"DEBUG_FLOAT_ARRAY_DATA",15549],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",15549],[5,"PARAM_EXT_ACK_DATA",15549],[5,"CAMERA_IMAGE_CAPTURED_DATA",15549],[5,"GPS_STATUS_DATA",15549],[5,"MISSION_REQUEST_DATA",15549],[5,"ESC_INFO_DATA",15549],[5,"HIL_SENSOR_DATA",15549],[5,"REQUEST_EVENT_DATA",15549],[5,"ATT_POS_MOCAP_DATA",15549],[5,"CAN_FILTER_MODIFY_DATA",15549],[5,"LOG_REQUEST_END_DATA",15549],[5,"LOGGING_DATA_ACKED_DATA",15549],[5,"PARAM_REQUEST_LIST_DATA",15549],[5,"PING_DATA",15549],[5,"HIGH_LATENCY_DATA",15549],[5,"AUTOPILOT_VERSION_DATA",15549],[5,"BATTERY_STATUS_DATA",15549],[5,"ADSB_VEHICLE_DATA",15549],[5,"MEMORY_VECT_DATA",15549],[5,"CELLULAR_STATUS_DATA",15549],[5,"SCALED_IMU_DATA",15549],[5,"PARAM_REQUEST_READ_DATA",15549],[5,"PARAM_SET_DATA",15549],[5,"HYGROMETER_SENSOR_DATA",15549],[5,"MISSION_ITEM_INT_DATA",15549],[5,"LINK_NODE_STATUS_DATA",15549],[5,"NAMED_VALUE_INT_DATA",15549],[5,"DEBUG_VECT_DATA",15549],[5,"HIGH_LATENCY2_DATA",15549],[5,"OPEN_DRONE_ID_LOCATION_DATA",15549],[5,"MISSION_SET_CURRENT_DATA",15549],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",15549],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",15549],[6,"VideoStreamStatusFlags",15549],[6,"MavSysStatusSensorExtended",15549],[6,"ParachuteAction",15549],[6,"MavOdidOperatorIdType",15549],[6,"VtolTransitionHeading",15549],[6,"MavOdidDescType",15549],[6,"CameraZoomType",15549],[6,"PrecisionLandMode",15549],[6,"MavBatteryChargeState",15549],[6,"LandingTargetType",15549],[6,"FailureUnit",15549],[6,"MavParamExtType",15549],[6,"RtkBaselineCoordinateSystem",15549],[6,"PreflightStorageParameterAction",15549],[6,"MavMode",15549],[6,"CameraTrackingTargetData",15549],[6,"PreflightStorageMissionAction",15549],[6,"OrbitYawBehaviour",15549],[6,"MavOdidAuthType",15549],[6,"MavOdidArmStatus",15549],[6,"MavEstimatorType",15549],[6,"CameraTrackingStatusFlags",15549],[6,"RcType",15549],[6,"MavSensorOrientation",15549],[6,"AdsbEmitterType",15549],[6,"StorageStatus",15549],[6,"GimbalManagerFlags",15549],[6,"MavArmAuthDeniedReason",15549],[6,"FenceAction",15549],[6,"MavMissionType",15549],[6,"MavSeverity",15549],[6,"UavcanNodeMode",15549],[6,"MavMissionResult",15549],[6,"CameraMode",15549],[6,"MavCollisionAction",15549],[6,"MavOdidSpeedAcc",15549],[6,"CellularStatusFlag",15549],[6,"CellularConfigResponse",15549],[6,"MavModeFlagDecodePosition",15549],[6,"MavFrame",15549],[6,"MavBatteryType",15549],[6,"MavState",15549],[6,"MavFtpOpcode",15549],[6,"MavOdidClassEu",15549],[6,"MavCollisionSrc",15549],[6,"MavMountMode",15549],[6,"MavCmdAck",15549],[6,"MavOdidOperatorLocationType",15549],[6,"MavCmd",15549],[6,"ActuatorOutputFunction",15549],[6,"MavRoi",15549],[6,"VideoStreamType",15549],[6,"MavOdidCategoryEu",15549],[6,"FenceBreach",15549],[6,"MavParamType",15549],[6,"CellularNetworkFailedReason",15549],[6,"FailureType",15549],[6,"MavResult",15549],[6,"WinchActions",15549],[6,"UtmFlightState",15549],[6,"NavVtolLandOptions",15549],[6,"AisType",15549],[6,"MavOdidHorAcc",15549],[6,"AutotuneAxis",15549],[6,"SerialControlDev",15549],[6,"MavLandedState",15549],[6,"AisNavStatus",15549],[6,"MavBatteryFault",15549],[6,"MavFtpErr",15549],[6,"CellularNetworkRadioType",15549],[6,"UavcanNodeHealth",15549],[6,"CompMetadataType",15549],[6,"MavDataStream",15549],[6,"FirmwareVersionType",15549],[6,"MavDistanceSensor",15549],[6,"MavTunnelPayloadType",15549],[6,"MotorTestOrder",15549],[6,"StorageUsageFlag",15549],[6,"GripperActions",15549],[6,"WifiConfigApMode",15549],[6,"MavGoto",15549],[6,"MavType",15549],[6,"MavOdidClassificationType",15549],[6,"ActuatorConfiguration",15549],[6,"MavBatteryMode",15549],[6,"MavOdidHeightRef",15549],[6,"CanFilterOp",15549],[6,"MavBatteryFunction",15549],[6,"MavComponent",15549],[6,"MavOdidUaType",15549],[6,"MavOdidIdType",15549],[6,"MotorTestThrottleType",15549],[6,"MavAutopilot",15549],[6,"MavlinkDataStreamType",15549],[6,"MavOdidVerAcc",15549],[6,"MavOdidTimeAcc",15549],[6,"ParamAck",15549],[6,"MavOdidStatus",15549],[6,"MavDoRepositionFlags",15549],[6,"EscConnectionType",15549],[6,"MavEventErrorReason",15549],[6,"AdsbAltitudeType",15549],[6,"GpsFixType",15549],[6,"MavVtolState",15549],[6,"MissionState",15549],[6,"SetFocusType",15549],[6,"MavCollisionThreatLevel",15549],[6,"WifiConfigApResponse",15549],[6,"FenceMitigate",15549],[6,"StorageType",15549],[6,"MagCalStatus",15549],[6,"CameraTrackingMode",15549],[5,"String",39198],[6,"MavMessage",27109],[5,"ICAROUS_HEARTBEAT_DATA",27109],[5,"ICAROUS_KINEMATIC_BANDS_DATA",27109],[6,"IcarousFmsState",27109],[6,"IcarousTrackBandTypes",27109],[5,"MavPowerStatus",27256],[5,"GimbalDeviceErrorFlags",27256],[5,"MavProtocolCapability",27256],[5,"PositionTargetTypemask",27256],[5,"UavionixAdsbOutRfSelect",27256],[5,"GimbalManagerCapFlags",27256],[5,"AisFlags",27256],[5,"HlFailureFlag",27256],[5,"UavionixAdsbRfHealth",27256],[5,"EscFailureFlags",27256],[5,"GimbalDeviceFlags",27256],[5,"CameraCapFlags",27256],[5,"GpsInputIgnoreFlags",27256],[5,"MavSysStatusSensor",27256],[5,"UavionixAdsbOutDynamicState",27256],[5,"HilSensorUpdatedFlags",27256],[5,"AttitudeTargetTypemask",27256],[5,"EstimatorStatusFlags",27256],[5,"HighresImuUpdatedFlags",27256],[5,"UtmDataAvailFlags",27256],[5,"MavWinchStatusFlag",27256],[5,"SerialControlFlag",27256],[5,"GimbalDeviceCapFlags",27256],[5,"MavGeneratorStatusFlag",27256],[5,"TuneFormat",27256],[5,"MavEventCurrentSequenceFlags",27256],[5,"AdsbFlags",27256],[5,"MavModeFlag",27256],[6,"MavMessage",27256],[5,"HIGHRES_IMU_DATA",27256],[5,"RESPONSE_EVENT_ERROR_DATA",27256],[5,"MISSION_CLEAR_ALL_DATA",27256],[5,"TERRAIN_DATA_DATA",27256],[5,"SAFETY_ALLOWED_AREA_DATA",27256],[5,"CELLULAR_CONFIG_DATA",27256],[5,"GPS_RTK_DATA",27256],[5,"TERRAIN_REQUEST_DATA",27256],[5,"EFI_STATUS_DATA",27256],[5,"FILE_TRANSFER_PROTOCOL_DATA",27256],[5,"COLLISION_DATA",27256],[5,"PARAM_EXT_ACK_DATA",27256],[5,"OPEN_DRONE_ID_SELF_ID_DATA",27256],[5,"LOG_ENTRY_DATA",27256],[5,"COMMAND_INT_DATA",27256],[5,"LOG_REQUEST_LIST_DATA",27256],[5,"LOGGING_ACK_DATA",27256],[5,"WIFI_CONFIG_AP_DATA",27256],[5,"GPS_INJECT_DATA_DATA",27256],[5,"SCALED_PRESSURE3_DATA",27256],[5,"COMMAND_CANCEL_DATA",27256],[5,"COMPONENT_INFORMATION_DATA",27256],[5,"CAN_FILTER_MODIFY_DATA",27256],[5,"SCALED_PRESSURE_DATA",27256],[5,"SCALED_IMU3_DATA",27256],[5,"CAMERA_IMAGE_CAPTURED_DATA",27256],[5,"PARAM_EXT_REQUEST_LIST_DATA",27256],[5,"MISSION_REQUEST_LIST_DATA",27256],[5,"UAVCAN_NODE_INFO_DATA",27256],[5,"GIMBAL_DEVICE_INFORMATION_DATA",27256],[5,"BATTERY_STATUS_DATA",27256],[5,"LOG_REQUEST_END_DATA",27256],[5,"PARAM_MAP_RC_DATA",27256],[5,"HIL_CONTROLS_DATA",27256],[5,"MEMORY_VECT_DATA",27256],[5,"CELLULAR_STATUS_DATA",27256],[5,"GENERATOR_STATUS_DATA",27256],[5,"CHANGE_OPERATOR_CONTROL_DATA",27256],[5,"AIS_VESSEL_DATA",27256],[5,"PARAM_REQUEST_LIST_DATA",27256],[5,"DISTANCE_SENSOR_DATA",27256],[5,"SIM_STATE_DATA",27256],[5,"HIGH_LATENCY2_DATA",27256],[5,"CAMERA_FOV_STATUS_DATA",27256],[5,"TERRAIN_CHECK_DATA",27256],[5,"ACTUATOR_OUTPUT_STATUS_DATA",27256],[5,"AUTH_KEY_DATA",27256],[5,"HIGH_LATENCY_DATA",27256],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",27256],[5,"RESOURCE_REQUEST_DATA",27256],[5,"HIL_GPS_DATA",27256],[5,"COMPONENT_METADATA_DATA",27256],[5,"VISION_SPEED_ESTIMATE_DATA",27256],[5,"PARAM_EXT_SET_DATA",27256],[5,"OPTICAL_FLOW_DATA",27256],[5,"LOCAL_POSITION_NED_DATA",27256],[5,"NAMED_VALUE_INT_DATA",27256],[5,"AUTOPILOT_VERSION_DATA",27256],[5,"SCALED_IMU_DATA",27256],[5,"PARAM_EXT_REQUEST_READ_DATA",27256],[5,"HYGROMETER_SENSOR_DATA",27256],[5,"PARAM_SET_DATA",27256],[5,"MESSAGE_INTERVAL_DATA",27256],[5,"BUTTON_CHANGE_DATA",27256],[5,"PARAM_VALUE_DATA",27256],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",27256],[5,"DEBUG_VECT_DATA",27256],[5,"MISSION_ACK_DATA",27256],[5,"RAW_PRESSURE_DATA",27256],[5,"MISSION_ITEM_REACHED_DATA",27256],[5,"ADSB_VEHICLE_DATA",27256],[5,"ODOMETRY_DATA",27256],[5,"MISSION_COUNT_DATA",27256],[5,"LOG_REQUEST_DATA_DATA",27256],[5,"LOGGING_DATA_ACKED_DATA",27256],[5,"SETUP_SIGNING_DATA",27256],[5,"CURRENT_EVENT_SEQUENCE_DATA",27256],[5,"UTM_GLOBAL_POSITION_DATA",27256],[5,"WINCH_STATUS_DATA",27256],[5,"PING_DATA",27256],[5,"RC_CHANNELS_OVERRIDE_DATA",27256],[5,"CONTROL_SYSTEM_STATE_DATA",27256],[5,"VIDEO_STREAM_INFORMATION_DATA",27256],[5,"MANUAL_SETPOINT_DATA",27256],[5,"PROTOCOL_VERSION_DATA",27256],[5,"ATTITUDE_QUATERNION_COV_DATA",27256],[5,"MANUAL_CONTROL_DATA",27256],[5,"ACTUATOR_CONTROL_TARGET_DATA",27256],[5,"OPTICAL_FLOW_RAD_DATA",27256],[5,"SCALED_PRESSURE2_DATA",27256],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",27256],[5,"DEBUG_DATA",27256],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",27256],[5,"LOG_ERASE_DATA",27256],[5,"HIL_RC_INPUTS_RAW_DATA",27256],[5,"TUNNEL_DATA",27256],[5,"FLIGHT_INFORMATION_DATA",27256],[5,"SMART_BATTERY_INFO_DATA",27256],[5,"DEBUG_FLOAT_ARRAY_DATA",27256],[5,"GIMBAL_MANAGER_STATUS_DATA",27256],[5,"SCALED_IMU2_DATA",27256],[5,"GPS2_RAW_DATA",27256],[5,"SERVO_OUTPUT_RAW_DATA",27256],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",27256],[5,"V2_EXTENSION_DATA",27256],[5,"RAW_RPM_DATA",27256],[5,"MAG_CAL_REPORT_DATA",27256],[5,"RAW_IMU_DATA",27256],[5,"COMMAND_LONG_DATA",27256],[5,"RC_CHANNELS_RAW_DATA",27256],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",27256],[5,"SYS_STATUS_DATA",27256],[5,"HIL_STATE_DATA",27256],[5,"ORBIT_EXECUTION_STATUS_DATA",27256],[5,"ISBD_LINK_STATUS_DATA",27256],[5,"GPS_RTCM_DATA_DATA",27256],[5,"CAMERA_CAPTURE_STATUS_DATA",27256],[5,"CAMERA_TRIGGER_DATA",27256],[5,"SET_MODE_DATA",27256],[5,"GPS_GLOBAL_ORIGIN_DATA",27256],[5,"HIL_SENSOR_DATA",27256],[5,"UAVCAN_NODE_STATUS_DATA",27256],[5,"COMMAND_ACK_DATA",27256],[5,"LOG_DATA_DATA",27256],[5,"ONBOARD_COMPUTER_STATUS_DATA",27256],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",27256],[5,"OBSTACLE_DISTANCE_DATA",27256],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",27256],[5,"WHEEL_DISTANCE_DATA",27256],[5,"ESTIMATOR_STATUS_DATA",27256],[5,"MISSION_SET_CURRENT_DATA",27256],[5,"REQUEST_DATA_STREAM_DATA",27256],[5,"LOGGING_DATA_DATA",27256],[5,"SERIAL_CONTROL_DATA",27256],[5,"HOME_POSITION_DATA",27256],[5,"MISSION_CURRENT_DATA",27256],[5,"VISION_POSITION_ESTIMATE_DATA",27256],[5,"LOCAL_POSITION_NED_COV_DATA",27256],[5,"STORAGE_INFORMATION_DATA",27256],[5,"MISSION_REQUEST_INT_DATA",27256],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",27256],[5,"LANDING_TARGET_DATA",27256],[5,"UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA",27256],[5,"POSITION_TARGET_LOCAL_NED_DATA",27256],[5,"NAV_CONTROLLER_OUTPUT_DATA",27256],[5,"FENCE_STATUS_DATA",27256],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",27256],[5,"ALTITUDE_DATA",27256],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",27256],[5,"ATTITUDE_TARGET_DATA",27256],[5,"GPS_RAW_INT_DATA",27256],[5,"HIL_ACTUATOR_CONTROLS_DATA",27256],[5,"TIME_ESTIMATE_TO_TARGET_DATA",27256],[5,"OPEN_DRONE_ID_LOCATION_DATA",27256],[5,"ATTITUDE_DATA",27256],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",27256],[5,"ESC_INFO_DATA",27256],[5,"ATTITUDE_QUATERNION_DATA",27256],[5,"REQUEST_EVENT_DATA",27256],[5,"MISSION_REQUEST_DATA",27256],[5,"CANFD_FRAME_DATA",27256],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",27256],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",27256],[5,"TERRAIN_REPORT_DATA",27256],[5,"POWER_STATUS_DATA",27256],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",27256],[5,"VIDEO_STREAM_STATUS_DATA",27256],[5,"SYSTEM_TIME_DATA",27256],[5,"PLAY_TUNE_V2_DATA",27256],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",27256],[5,"MISSION_ITEM_DATA",27256],[5,"SUPPORTED_TUNES_DATA",27256],[5,"PLAY_TUNE_DATA",27256],[5,"POSITION_TARGET_GLOBAL_INT_DATA",27256],[5,"MOUNT_ORIENTATION_DATA",27256],[5,"EXTENDED_SYS_STATE_DATA",27256],[5,"VICON_POSITION_ESTIMATE_DATA",27256],[5,"TIMESYNC_DATA",27256],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",27256],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",27256],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",27256],[5,"NAMED_VALUE_FLOAT_DATA",27256],[5,"GIMBAL_MANAGER_INFORMATION_DATA",27256],[5,"ENCAPSULATED_DATA_DATA",27256],[5,"SET_HOME_POSITION_DATA",27256],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",27256],[5,"SAFETY_SET_ALLOWED_AREA_DATA",27256],[5,"HIL_OPTICAL_FLOW_DATA",27256],[5,"VFR_HUD_DATA",27256],[5,"RC_CHANNELS_DATA",27256],[5,"FOLLOW_TARGET_DATA",27256],[5,"RC_CHANNELS_SCALED_DATA",27256],[5,"ATT_POS_MOCAP_DATA",27256],[5,"STATUSTEXT_DATA",27256],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",27256],[5,"LINK_NODE_STATUS_DATA",27256],[5,"PARAM_REQUEST_READ_DATA",27256],[5,"OPEN_DRONE_ID_SYSTEM_DATA",27256],[5,"VIBRATION_DATA",27256],[5,"GLOBAL_POSITION_INT_DATA",27256],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",27256],[5,"WIND_COV_DATA",27256],[5,"CAMERA_SETTINGS_DATA",27256],[5,"CAMERA_INFORMATION_DATA",27256],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",27256],[5,"GLOBAL_POSITION_INT_COV_DATA",27256],[5,"CAN_FRAME_DATA",27256],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",27256],[5,"ESC_STATUS_DATA",27256],[5,"DATA_STREAM_DATA",27256],[5,"GPS_STATUS_DATA",27256],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",27256],[5,"HIL_STATE_QUATERNION_DATA",27256],[5,"GPS_INPUT_DATA",27256],[5,"MISSION_ITEM_INT_DATA",27256],[5,"PARAM_EXT_VALUE_DATA",27256],[5,"UAVIONIX_ADSB_OUT_DYNAMIC_DATA",27256],[5,"UAVIONIX_ADSB_OUT_CFG_DATA",27256],[5,"GPS2_RTK_DATA",27256],[5,"RADIO_STATUS_DATA",27256],[5,"HEARTBEAT_DATA",27256],[5,"SET_ATTITUDE_TARGET_DATA",27256],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",27256],[5,"EVENT_DATA",27256],[6,"PreflightStorageMissionAction",27256],[6,"MavOdidIdType",27256],[6,"FenceBreach",27256],[6,"VtolTransitionHeading",27256],[6,"PrecisionLandMode",27256],[6,"MavOdidClassificationType",27256],[6,"MavMissionType",27256],[6,"MavParamType",27256],[6,"FenceMitigate",27256],[6,"MavArmAuthDeniedReason",27256],[6,"UtmFlightState",27256],[6,"MavOdidDescType",27256],[6,"CameraTrackingStatusFlags",27256],[6,"LandingTargetType",27256],[6,"UavcanNodeHealth",27256],[6,"CellularNetworkFailedReason",27256],[6,"MavMode",27256],[6,"PreflightStorageParameterAction",27256],[6,"MavDoRepositionFlags",27256],[6,"GimbalManagerFlags",27256],[6,"CompMetadataType",27256],[6,"CameraZoomType",27256],[6,"MavOdidArmStatus",27256],[6,"VideoStreamType",27256],[6,"MissionState",27256],[6,"MavFrame",27256],[6,"CellularConfigResponse",27256],[6,"MavMissionResult",27256],[6,"MavOdidOperatorLocationType",27256],[6,"MavBatteryFunction",27256],[6,"UavionixAdsbOutCfgGpsOffsetLat",27256],[6,"MavLandedState",27256],[6,"MotorTestThrottleType",27256],[6,"AdsbAltitudeType",27256],[6,"MavBatteryChargeState",27256],[6,"FenceAction",27256],[6,"GpsFixType",27256],[6,"MavSysStatusSensorExtended",27256],[6,"MavlinkDataStreamType",27256],[6,"MavCollisionSrc",27256],[6,"MavCmdAck",27256],[6,"UavionixAdsbEmergencyStatus",27256],[6,"MavFtpOpcode",27256],[6,"MavOdidAuthType",27256],[6,"SetFocusType",27256],[6,"MavAutopilot",27256],[6,"MavMountMode",27256],[6,"MavOdidOperatorIdType",27256],[6,"MavOdidUaType",27256],[6,"VideoStreamStatusFlags",27256],[6,"CameraMode",27256],[6,"AutotuneAxis",27256],[6,"MavComponent",27256],[6,"StorageStatus",27256],[6,"MavSeverity",27256],[6,"MavBatteryMode",27256],[6,"AisNavStatus",27256],[6,"RcType",27256],[6,"RtkBaselineCoordinateSystem",27256],[6,"WifiConfigApMode",27256],[6,"MavTunnelPayloadType",27256],[6,"MavOdidVerAcc",27256],[6,"MavOdidHorAcc",27256],[6,"CanFilterOp",27256],[6,"MavDistanceSensor",27256],[6,"MavOdidCategoryEu",27256],[6,"StorageType",27256],[6,"AisType",27256],[6,"MavOdidClassEu",27256],[6,"UavionixAdsbOutCfgGpsOffsetLon",27256],[6,"MavOdidStatus",27256],[6,"UavionixAdsbOutDynamicGpsFix",27256],[6,"MavParamExtType",27256],[6,"CameraTrackingMode",27256],[6,"MavOdidTimeAcc",27256],[6,"WinchActions",27256],[6,"MavRoi",27256],[6,"MavCollisionAction",27256],[6,"CellularNetworkRadioType",27256],[6,"FirmwareVersionType",27256],[6,"UavcanNodeMode",27256],[6,"FailureType",27256],[6,"MavGoto",27256],[6,"EscConnectionType",27256],[6,"MavEstimatorType",27256],[6,"ActuatorConfiguration",27256],[6,"MavModeFlagDecodePosition",27256],[6,"NavVtolLandOptions",27256],[6,"MavType",27256],[6,"CellularStatusFlag",27256],[6,"OrbitYawBehaviour",27256],[6,"MavCmd",27256],[6,"StorageUsageFlag",27256],[6,"MavSensorOrientation",27256],[6,"MavResult",27256],[6,"MavVtolState",27256],[6,"MavEventErrorReason",27256],[6,"ActuatorOutputFunction",27256],[6,"MotorTestOrder",27256],[6,"MavDataStream",27256],[6,"FailureUnit",27256],[6,"MavBatteryType",27256],[6,"ParamAck",27256],[6,"MavOdidHeightRef",27256],[6,"MavFtpErr",27256],[6,"MavCollisionThreatLevel",27256],[6,"MavBatteryFault",27256],[6,"MavState",27256],[6,"ParachuteAction",27256],[6,"CameraTrackingTargetData",27256],[6,"UavionixAdsbOutCfgAircraftSize",27256],[6,"MavOdidSpeedAcc",27256],[6,"GripperActions",27256],[6,"AdsbEmitterType",27256],[6,"WifiConfigApResponse",27256],[6,"MagCalStatus",27256],[6,"SerialControlDev",27256],[10,"RustDefault",39176,39199],[15,"InvalidEnum",27104],[15,"InvalidFlag",27104],[15,"UnknownMessage",27104]],"r":[[3,39179],[4,39179],[5,39179],[6,39179],[7,39179],[8,39181],[9,39179],[10,39179],[11,39179],[12,39179],[14,39179],[29,39179],[30,39179],[31,39179],[49,39181],[61,39179],[100,39179],[105,39179],[106,39179],[107,39179],[108,39179],[109,39179],[154,39179],[155,39179],[156,39179],[157,39179],[15500,39196],[15524,39197],[27066,39185],[27067,39185],[27069,39185],[27241,39188],[39176,39199],[39177,39199]],"b":[[8652,"impl-Octal-for-AttitudeTargetTypemask"],[8653,"impl-Debug-for-AttitudeTargetTypemask"],[8654,"impl-UpperHex-for-AttitudeTargetTypemask"],[8655,"impl-Binary-for-AttitudeTargetTypemask"],[8656,"impl-LowerHex-for-AttitudeTargetTypemask"],[8657,"impl-Binary-for-UavionixAdsbOutRfSelect"],[8658,"impl-Debug-for-UavionixAdsbOutRfSelect"],[8659,"impl-UpperHex-for-UavionixAdsbOutRfSelect"],[8660,"impl-Octal-for-UavionixAdsbOutRfSelect"],[8661,"impl-LowerHex-for-UavionixAdsbOutRfSelect"],[8676,"impl-LowerHex-for-PositionTargetTypemask"],[8677,"impl-Binary-for-PositionTargetTypemask"],[8678,"impl-Debug-for-PositionTargetTypemask"],[8679,"impl-Octal-for-PositionTargetTypemask"],[8680,"impl-UpperHex-for-PositionTargetTypemask"],[8683,"impl-Octal-for-UtmDataAvailFlags"],[8684,"impl-Binary-for-UtmDataAvailFlags"],[8685,"impl-UpperHex-for-UtmDataAvailFlags"],[8686,"impl-LowerHex-for-UtmDataAvailFlags"],[8687,"impl-Debug-for-UtmDataAvailFlags"],[8698,"impl-LowerHex-for-UavionixAdsbOutDynamicState"],[8699,"impl-Octal-for-UavionixAdsbOutDynamicState"],[8700,"impl-Debug-for-UavionixAdsbOutDynamicState"],[8701,"impl-UpperHex-for-UavionixAdsbOutDynamicState"],[8702,"impl-Binary-for-UavionixAdsbOutDynamicState"],[8707,"impl-Octal-for-MavModeFlag"],[8708,"impl-Debug-for-MavModeFlag"],[8709,"impl-LowerHex-for-MavModeFlag"],[8710,"impl-UpperHex-for-MavModeFlag"],[8711,"impl-Binary-for-MavModeFlag"],[8716,"impl-UpperHex-for-UavionixAdsbRfHealth"],[8717,"impl-Octal-for-UavionixAdsbRfHealth"],[8718,"impl-LowerHex-for-UavionixAdsbRfHealth"],[8719,"impl-Debug-for-UavionixAdsbRfHealth"],[8720,"impl-Binary-for-UavionixAdsbRfHealth"],[8727,"impl-Octal-for-MavGeneratorStatusFlag"],[8728,"impl-Debug-for-MavGeneratorStatusFlag"],[8729,"impl-Binary-for-MavGeneratorStatusFlag"],[8730,"impl-UpperHex-for-MavGeneratorStatusFlag"],[8731,"impl-LowerHex-for-MavGeneratorStatusFlag"],[8743,"impl-Binary-for-HilSensorUpdatedFlags"],[8744,"impl-UpperHex-for-HilSensorUpdatedFlags"],[8745,"impl-Octal-for-HilSensorUpdatedFlags"],[8746,"impl-LowerHex-for-HilSensorUpdatedFlags"],[8747,"impl-Debug-for-HilSensorUpdatedFlags"],[8748,"impl-Binary-for-MavSysStatusSensor"],[8749,"impl-UpperHex-for-MavSysStatusSensor"],[8750,"impl-LowerHex-for-MavSysStatusSensor"],[8751,"impl-Debug-for-MavSysStatusSensor"],[8752,"impl-Octal-for-MavSysStatusSensor"],[8755,"impl-LowerHex-for-GimbalDeviceCapFlags"],[8756,"impl-Binary-for-GimbalDeviceCapFlags"],[8757,"impl-UpperHex-for-GimbalDeviceCapFlags"],[8758,"impl-Octal-for-GimbalDeviceCapFlags"],[8759,"impl-Debug-for-GimbalDeviceCapFlags"],[8762,"impl-Octal-for-EkfStatusFlags"],[8763,"impl-Binary-for-EkfStatusFlags"],[8764,"impl-UpperHex-for-EkfStatusFlags"],[8765,"impl-LowerHex-for-EkfStatusFlags"],[8766,"impl-Debug-for-EkfStatusFlags"],[8774,"impl-UpperHex-for-AdsbFlags"],[8775,"impl-Debug-for-AdsbFlags"],[8776,"impl-LowerHex-for-AdsbFlags"],[8777,"impl-Binary-for-AdsbFlags"],[8778,"impl-Octal-for-AdsbFlags"],[8782,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[8783,"impl-Octal-for-MavEventCurrentSequenceFlags"],[8784,"impl-Binary-for-MavEventCurrentSequenceFlags"],[8785,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[8786,"impl-Debug-for-MavEventCurrentSequenceFlags"],[8790,"impl-Debug-for-GimbalManagerCapFlags"],[8791,"impl-LowerHex-for-GimbalManagerCapFlags"],[8792,"impl-Binary-for-GimbalManagerCapFlags"],[8793,"impl-UpperHex-for-GimbalManagerCapFlags"],[8794,"impl-Octal-for-GimbalManagerCapFlags"],[8807,"impl-LowerHex-for-TuneFormat"],[8808,"impl-Debug-for-TuneFormat"],[8809,"impl-Octal-for-TuneFormat"],[8810,"impl-UpperHex-for-TuneFormat"],[8811,"impl-Binary-for-TuneFormat"],[8814,"impl-UpperHex-for-GoproHeartbeatFlags"],[8815,"impl-Binary-for-GoproHeartbeatFlags"],[8816,"impl-Debug-for-GoproHeartbeatFlags"],[8817,"impl-LowerHex-for-GoproHeartbeatFlags"],[8818,"impl-Octal-for-GoproHeartbeatFlags"],[8821,"impl-UpperHex-for-LimitModule"],[8822,"impl-LowerHex-for-LimitModule"],[8823,"impl-Debug-for-LimitModule"],[8824,"impl-Binary-for-LimitModule"],[8825,"impl-Octal-for-LimitModule"],[8827,"impl-Binary-for-CameraCapFlags"],[8828,"impl-Octal-for-CameraCapFlags"],[8829,"impl-UpperHex-for-CameraCapFlags"],[8830,"impl-LowerHex-for-CameraCapFlags"],[8831,"impl-Debug-for-CameraCapFlags"],[8834,"impl-Debug-for-EscFailureFlags"],[8835,"impl-LowerHex-for-EscFailureFlags"],[8836,"impl-UpperHex-for-EscFailureFlags"],[8837,"impl-Octal-for-EscFailureFlags"],[8838,"impl-Binary-for-EscFailureFlags"],[8843,"impl-LowerHex-for-GimbalDeviceFlags"],[8844,"impl-Binary-for-GimbalDeviceFlags"],[8845,"impl-Debug-for-GimbalDeviceFlags"],[8846,"impl-Octal-for-GimbalDeviceFlags"],[8847,"impl-UpperHex-for-GimbalDeviceFlags"],[8849,"impl-Debug-for-HighresImuUpdatedFlags"],[8850,"impl-UpperHex-for-HighresImuUpdatedFlags"],[8851,"impl-Binary-for-HighresImuUpdatedFlags"],[8852,"impl-Octal-for-HighresImuUpdatedFlags"],[8853,"impl-LowerHex-for-HighresImuUpdatedFlags"],[8856,"impl-UpperHex-for-MavPowerStatus"],[8857,"impl-Octal-for-MavPowerStatus"],[8858,"impl-Debug-for-MavPowerStatus"],[8859,"impl-Binary-for-MavPowerStatus"],[8860,"impl-LowerHex-for-MavPowerStatus"],[8871,"impl-UpperHex-for-AisFlags"],[8872,"impl-Debug-for-AisFlags"],[8873,"impl-LowerHex-for-AisFlags"],[8874,"impl-Octal-for-AisFlags"],[8875,"impl-Binary-for-AisFlags"],[8895,"impl-Debug-for-RallyFlags"],[8896,"impl-UpperHex-for-RallyFlags"],[8897,"impl-Octal-for-RallyFlags"],[8898,"impl-Binary-for-RallyFlags"],[8899,"impl-LowerHex-for-RallyFlags"],[8901,"impl-Debug-for-SerialControlFlag"],[8902,"impl-UpperHex-for-SerialControlFlag"],[8903,"impl-LowerHex-for-SerialControlFlag"],[8904,"impl-Binary-for-SerialControlFlag"],[8905,"impl-Octal-for-SerialControlFlag"],[8909,"impl-Binary-for-HlFailureFlag"],[8910,"impl-Debug-for-HlFailureFlag"],[8911,"impl-LowerHex-for-HlFailureFlag"],[8912,"impl-Octal-for-HlFailureFlag"],[8913,"impl-UpperHex-for-HlFailureFlag"],[8917,"impl-UpperHex-for-MavProtocolCapability"],[8918,"impl-Binary-for-MavProtocolCapability"],[8919,"impl-LowerHex-for-MavProtocolCapability"],[8920,"impl-Debug-for-MavProtocolCapability"],[8921,"impl-Octal-for-MavProtocolCapability"],[8936,"impl-Binary-for-GimbalDeviceErrorFlags"],[8937,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[8938,"impl-Debug-for-GimbalDeviceErrorFlags"],[8939,"impl-Octal-for-GimbalDeviceErrorFlags"],[8940,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[8942,"impl-LowerHex-for-GpsInputIgnoreFlags"],[8943,"impl-Octal-for-GpsInputIgnoreFlags"],[8944,"impl-UpperHex-for-GpsInputIgnoreFlags"],[8945,"impl-Binary-for-GpsInputIgnoreFlags"],[8946,"impl-Debug-for-GpsInputIgnoreFlags"],[8950,"impl-Binary-for-MavWinchStatusFlag"],[8951,"impl-Debug-for-MavWinchStatusFlag"],[8952,"impl-LowerHex-for-MavWinchStatusFlag"],[8953,"impl-UpperHex-for-MavWinchStatusFlag"],[8954,"impl-Octal-for-MavWinchStatusFlag"],[8963,"impl-Debug-for-EstimatorStatusFlags"],[8964,"impl-LowerHex-for-EstimatorStatusFlags"],[8965,"impl-Octal-for-EstimatorStatusFlags"],[8966,"impl-Binary-for-EstimatorStatusFlags"],[8967,"impl-UpperHex-for-EstimatorStatusFlags"],[21924,"impl-LowerHex-for-HilSensorUpdatedFlags"],[21925,"impl-UpperHex-for-HilSensorUpdatedFlags"],[21926,"impl-Octal-for-HilSensorUpdatedFlags"],[21927,"impl-Debug-for-HilSensorUpdatedFlags"],[21928,"impl-Binary-for-HilSensorUpdatedFlags"],[21944,"impl-Debug-for-GimbalManagerCapFlags"],[21945,"impl-Binary-for-GimbalManagerCapFlags"],[21946,"impl-LowerHex-for-GimbalManagerCapFlags"],[21947,"impl-UpperHex-for-GimbalManagerCapFlags"],[21948,"impl-Octal-for-GimbalManagerCapFlags"],[21950,"impl-Debug-for-MavEventCurrentSequenceFlags"],[21951,"impl-Binary-for-MavEventCurrentSequenceFlags"],[21952,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[21953,"impl-Octal-for-MavEventCurrentSequenceFlags"],[21954,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[21958,"impl-UpperHex-for-MavPowerStatus"],[21959,"impl-Debug-for-MavPowerStatus"],[21960,"impl-LowerHex-for-MavPowerStatus"],[21961,"impl-Octal-for-MavPowerStatus"],[21962,"impl-Binary-for-MavPowerStatus"],[21966,"impl-Debug-for-AdsbFlags"],[21967,"impl-Binary-for-AdsbFlags"],[21968,"impl-UpperHex-for-AdsbFlags"],[21969,"impl-Octal-for-AdsbFlags"],[21970,"impl-LowerHex-for-AdsbFlags"],[21976,"impl-LowerHex-for-UtmDataAvailFlags"],[21977,"impl-UpperHex-for-UtmDataAvailFlags"],[21978,"impl-Debug-for-UtmDataAvailFlags"],[21979,"impl-Binary-for-UtmDataAvailFlags"],[21980,"impl-Octal-for-UtmDataAvailFlags"],[21982,"impl-LowerHex-for-MavProtocolCapability"],[21983,"impl-Debug-for-MavProtocolCapability"],[21984,"impl-Binary-for-MavProtocolCapability"],[21985,"impl-Octal-for-MavProtocolCapability"],[21986,"impl-UpperHex-for-MavProtocolCapability"],[21987,"impl-Debug-for-GimbalDeviceCapFlags"],[21988,"impl-LowerHex-for-GimbalDeviceCapFlags"],[21989,"impl-Binary-for-GimbalDeviceCapFlags"],[21990,"impl-Octal-for-GimbalDeviceCapFlags"],[21991,"impl-UpperHex-for-GimbalDeviceCapFlags"],[21994,"impl-LowerHex-for-PositionTargetTypemask"],[21995,"impl-Octal-for-PositionTargetTypemask"],[21996,"impl-UpperHex-for-PositionTargetTypemask"],[21997,"impl-Debug-for-PositionTargetTypemask"],[21998,"impl-Binary-for-PositionTargetTypemask"],[22004,"impl-Binary-for-GpsInputIgnoreFlags"],[22005,"impl-Debug-for-GpsInputIgnoreFlags"],[22006,"impl-UpperHex-for-GpsInputIgnoreFlags"],[22007,"impl-LowerHex-for-GpsInputIgnoreFlags"],[22008,"impl-Octal-for-GpsInputIgnoreFlags"],[22010,"impl-UpperHex-for-MavModeFlag"],[22011,"impl-Debug-for-MavModeFlag"],[22012,"impl-Octal-for-MavModeFlag"],[22013,"impl-LowerHex-for-MavModeFlag"],[22014,"impl-Binary-for-MavModeFlag"],[22032,"impl-Debug-for-MavWinchStatusFlag"],[22033,"impl-UpperHex-for-MavWinchStatusFlag"],[22034,"impl-Octal-for-MavWinchStatusFlag"],[22035,"impl-LowerHex-for-MavWinchStatusFlag"],[22036,"impl-Binary-for-MavWinchStatusFlag"],[22044,"impl-LowerHex-for-EstimatorStatusFlags"],[22045,"impl-Octal-for-EstimatorStatusFlags"],[22046,"impl-Binary-for-EstimatorStatusFlags"],[22047,"impl-Debug-for-EstimatorStatusFlags"],[22048,"impl-UpperHex-for-EstimatorStatusFlags"],[22057,"impl-Octal-for-GimbalDeviceErrorFlags"],[22058,"impl-Binary-for-GimbalDeviceErrorFlags"],[22059,"impl-Debug-for-GimbalDeviceErrorFlags"],[22060,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[22061,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[22065,"impl-Octal-for-TuneFormat"],[22066,"impl-Debug-for-TuneFormat"],[22067,"impl-Binary-for-TuneFormat"],[22068,"impl-UpperHex-for-TuneFormat"],[22069,"impl-LowerHex-for-TuneFormat"],[22070,"impl-LowerHex-for-HlFailureFlag"],[22071,"impl-Binary-for-HlFailureFlag"],[22072,"impl-Debug-for-HlFailureFlag"],[22073,"impl-Octal-for-HlFailureFlag"],[22074,"impl-UpperHex-for-HlFailureFlag"],[22080,"impl-Octal-for-EscFailureFlags"],[22081,"impl-UpperHex-for-EscFailureFlags"],[22082,"impl-LowerHex-for-EscFailureFlags"],[22083,"impl-Debug-for-EscFailureFlags"],[22084,"impl-Binary-for-EscFailureFlags"],[22086,"impl-Debug-for-SerialControlFlag"],[22087,"impl-Binary-for-SerialControlFlag"],[22088,"impl-Octal-for-SerialControlFlag"],[22089,"impl-UpperHex-for-SerialControlFlag"],[22090,"impl-LowerHex-for-SerialControlFlag"],[22096,"impl-UpperHex-for-AisFlags"],[22097,"impl-Binary-for-AisFlags"],[22098,"impl-LowerHex-for-AisFlags"],[22099,"impl-Octal-for-AisFlags"],[22100,"impl-Debug-for-AisFlags"],[22110,"impl-Debug-for-MavGeneratorStatusFlag"],[22111,"impl-LowerHex-for-MavGeneratorStatusFlag"],[22112,"impl-UpperHex-for-MavGeneratorStatusFlag"],[22113,"impl-Binary-for-MavGeneratorStatusFlag"],[22114,"impl-Octal-for-MavGeneratorStatusFlag"],[22117,"impl-LowerHex-for-GimbalDeviceFlags"],[22118,"impl-Binary-for-GimbalDeviceFlags"],[22119,"impl-Octal-for-GimbalDeviceFlags"],[22120,"impl-UpperHex-for-GimbalDeviceFlags"],[22121,"impl-Debug-for-GimbalDeviceFlags"],[22122,"impl-LowerHex-for-MavSysStatusSensor"],[22123,"impl-Debug-for-MavSysStatusSensor"],[22124,"impl-Octal-for-MavSysStatusSensor"],[22125,"impl-UpperHex-for-MavSysStatusSensor"],[22126,"impl-Binary-for-MavSysStatusSensor"],[22128,"impl-Octal-for-AttitudeTargetTypemask"],[22129,"impl-Binary-for-AttitudeTargetTypemask"],[22130,"impl-LowerHex-for-AttitudeTargetTypemask"],[22131,"impl-Debug-for-AttitudeTargetTypemask"],[22132,"impl-UpperHex-for-AttitudeTargetTypemask"],[22142,"impl-UpperHex-for-HighresImuUpdatedFlags"],[22143,"impl-Octal-for-HighresImuUpdatedFlags"],[22144,"impl-LowerHex-for-HighresImuUpdatedFlags"],[22145,"impl-Debug-for-HighresImuUpdatedFlags"],[22146,"impl-Binary-for-HighresImuUpdatedFlags"],[22148,"impl-LowerHex-for-CameraCapFlags"],[22149,"impl-Octal-for-CameraCapFlags"],[22150,"impl-Debug-for-CameraCapFlags"],[22151,"impl-UpperHex-for-CameraCapFlags"],[22152,"impl-Binary-for-CameraCapFlags"],[27077,"impl-Display-for-ParserError"],[27078,"impl-Debug-for-ParserError"],[27079,"impl-Display-for-MessageReadError"],[27080,"impl-Debug-for-MessageReadError"],[27081,"impl-Display-for-MessageWriteError"],[27082,"impl-Debug-for-MessageWriteError"],[27084,"impl-From%3CParserError%3E-for-MessageReadError"],[27085,"impl-From%3CError%3E-for-MessageReadError"],[33845,"impl-Octal-for-MavPowerStatus"],[33846,"impl-Debug-for-MavPowerStatus"],[33847,"impl-UpperHex-for-MavPowerStatus"],[33848,"impl-Binary-for-MavPowerStatus"],[33849,"impl-LowerHex-for-MavPowerStatus"],[33850,"impl-Octal-for-GimbalDeviceErrorFlags"],[33851,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[33852,"impl-Binary-for-GimbalDeviceErrorFlags"],[33853,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[33854,"impl-Debug-for-GimbalDeviceErrorFlags"],[33856,"impl-UpperHex-for-MavProtocolCapability"],[33857,"impl-Debug-for-MavProtocolCapability"],[33858,"impl-LowerHex-for-MavProtocolCapability"],[33859,"impl-Binary-for-MavProtocolCapability"],[33860,"impl-Octal-for-MavProtocolCapability"],[33861,"impl-UpperHex-for-PositionTargetTypemask"],[33862,"impl-Octal-for-PositionTargetTypemask"],[33863,"impl-LowerHex-for-PositionTargetTypemask"],[33864,"impl-Debug-for-PositionTargetTypemask"],[33865,"impl-Binary-for-PositionTargetTypemask"],[33873,"impl-Binary-for-UavionixAdsbOutRfSelect"],[33874,"impl-LowerHex-for-UavionixAdsbOutRfSelect"],[33875,"impl-Octal-for-UavionixAdsbOutRfSelect"],[33876,"impl-UpperHex-for-UavionixAdsbOutRfSelect"],[33877,"impl-Debug-for-UavionixAdsbOutRfSelect"],[33881,"impl-Debug-for-GimbalManagerCapFlags"],[33882,"impl-Binary-for-GimbalManagerCapFlags"],[33883,"impl-LowerHex-for-GimbalManagerCapFlags"],[33884,"impl-Octal-for-GimbalManagerCapFlags"],[33885,"impl-UpperHex-for-GimbalManagerCapFlags"],[33886,"impl-UpperHex-for-AisFlags"],[33887,"impl-Debug-for-AisFlags"],[33888,"impl-Octal-for-AisFlags"],[33889,"impl-LowerHex-for-AisFlags"],[33890,"impl-Binary-for-AisFlags"],[33896,"impl-Debug-for-HlFailureFlag"],[33897,"impl-Binary-for-HlFailureFlag"],[33898,"impl-Octal-for-HlFailureFlag"],[33899,"impl-UpperHex-for-HlFailureFlag"],[33900,"impl-LowerHex-for-HlFailureFlag"],[33913,"impl-Octal-for-UavionixAdsbRfHealth"],[33914,"impl-LowerHex-for-UavionixAdsbRfHealth"],[33915,"impl-UpperHex-for-UavionixAdsbRfHealth"],[33916,"impl-Binary-for-UavionixAdsbRfHealth"],[33917,"impl-Debug-for-UavionixAdsbRfHealth"],[33921,"impl-UpperHex-for-EscFailureFlags"],[33922,"impl-Octal-for-EscFailureFlags"],[33923,"impl-Binary-for-EscFailureFlags"],[33924,"impl-LowerHex-for-EscFailureFlags"],[33925,"impl-Debug-for-EscFailureFlags"],[33927,"impl-Debug-for-GimbalDeviceFlags"],[33928,"impl-Binary-for-GimbalDeviceFlags"],[33929,"impl-LowerHex-for-GimbalDeviceFlags"],[33930,"impl-Octal-for-GimbalDeviceFlags"],[33931,"impl-UpperHex-for-GimbalDeviceFlags"],[33936,"impl-LowerHex-for-CameraCapFlags"],[33937,"impl-Binary-for-CameraCapFlags"],[33938,"impl-UpperHex-for-CameraCapFlags"],[33939,"impl-Octal-for-CameraCapFlags"],[33940,"impl-Debug-for-CameraCapFlags"],[33951,"impl-Debug-for-GpsInputIgnoreFlags"],[33952,"impl-LowerHex-for-GpsInputIgnoreFlags"],[33953,"impl-Binary-for-GpsInputIgnoreFlags"],[33954,"impl-Octal-for-GpsInputIgnoreFlags"],[33955,"impl-UpperHex-for-GpsInputIgnoreFlags"],[33959,"impl-Binary-for-MavSysStatusSensor"],[33960,"impl-Debug-for-MavSysStatusSensor"],[33961,"impl-Octal-for-MavSysStatusSensor"],[33962,"impl-UpperHex-for-MavSysStatusSensor"],[33963,"impl-LowerHex-for-MavSysStatusSensor"],[33965,"impl-LowerHex-for-UavionixAdsbOutDynamicState"],[33966,"impl-Octal-for-UavionixAdsbOutDynamicState"],[33967,"impl-Binary-for-UavionixAdsbOutDynamicState"],[33968,"impl-UpperHex-for-UavionixAdsbOutDynamicState"],[33969,"impl-Debug-for-UavionixAdsbOutDynamicState"],[33978,"impl-Binary-for-HilSensorUpdatedFlags"],[33979,"impl-Debug-for-HilSensorUpdatedFlags"],[33980,"impl-Octal-for-HilSensorUpdatedFlags"],[33981,"impl-LowerHex-for-HilSensorUpdatedFlags"],[33982,"impl-UpperHex-for-HilSensorUpdatedFlags"],[33983,"impl-Debug-for-AttitudeTargetTypemask"],[33984,"impl-Binary-for-AttitudeTargetTypemask"],[33985,"impl-UpperHex-for-AttitudeTargetTypemask"],[33986,"impl-Octal-for-AttitudeTargetTypemask"],[33987,"impl-LowerHex-for-AttitudeTargetTypemask"],[33991,"impl-UpperHex-for-EstimatorStatusFlags"],[33992,"impl-Octal-for-EstimatorStatusFlags"],[33993,"impl-LowerHex-for-EstimatorStatusFlags"],[33994,"impl-Debug-for-EstimatorStatusFlags"],[33995,"impl-Binary-for-EstimatorStatusFlags"],[33998,"impl-Octal-for-HighresImuUpdatedFlags"],[33999,"impl-Debug-for-HighresImuUpdatedFlags"],[34000,"impl-LowerHex-for-HighresImuUpdatedFlags"],[34001,"impl-Binary-for-HighresImuUpdatedFlags"],[34002,"impl-UpperHex-for-HighresImuUpdatedFlags"],[34005,"impl-Binary-for-UtmDataAvailFlags"],[34006,"impl-UpperHex-for-UtmDataAvailFlags"],[34007,"impl-Debug-for-UtmDataAvailFlags"],[34008,"impl-LowerHex-for-UtmDataAvailFlags"],[34009,"impl-Octal-for-UtmDataAvailFlags"],[34014,"impl-LowerHex-for-MavWinchStatusFlag"],[34015,"impl-UpperHex-for-MavWinchStatusFlag"],[34016,"impl-Debug-for-MavWinchStatusFlag"],[34017,"impl-Binary-for-MavWinchStatusFlag"],[34018,"impl-Octal-for-MavWinchStatusFlag"],[34029,"impl-Binary-for-SerialControlFlag"],[34030,"impl-UpperHex-for-SerialControlFlag"],[34031,"impl-Octal-for-SerialControlFlag"],[34032,"impl-LowerHex-for-SerialControlFlag"],[34033,"impl-Debug-for-SerialControlFlag"],[34034,"impl-UpperHex-for-GimbalDeviceCapFlags"],[34035,"impl-Octal-for-GimbalDeviceCapFlags"],[34036,"impl-LowerHex-for-GimbalDeviceCapFlags"],[34037,"impl-Debug-for-GimbalDeviceCapFlags"],[34038,"impl-Binary-for-GimbalDeviceCapFlags"],[34042,"impl-Debug-for-MavGeneratorStatusFlag"],[34043,"impl-Binary-for-MavGeneratorStatusFlag"],[34044,"impl-UpperHex-for-MavGeneratorStatusFlag"],[34045,"impl-Octal-for-MavGeneratorStatusFlag"],[34046,"impl-LowerHex-for-MavGeneratorStatusFlag"],[34047,"impl-UpperHex-for-TuneFormat"],[34048,"impl-Debug-for-TuneFormat"],[34049,"impl-Octal-for-TuneFormat"],[34050,"impl-LowerHex-for-TuneFormat"],[34051,"impl-Binary-for-TuneFormat"],[34057,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[34058,"impl-Binary-for-MavEventCurrentSequenceFlags"],[34059,"impl-Debug-for-MavEventCurrentSequenceFlags"],[34060,"impl-Octal-for-MavEventCurrentSequenceFlags"],[34061,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[34067,"impl-Debug-for-AdsbFlags"],[34068,"impl-LowerHex-for-AdsbFlags"],[34069,"impl-UpperHex-for-AdsbFlags"],[34070,"impl-Binary-for-AdsbFlags"],[34071,"impl-Octal-for-AdsbFlags"],[34083,"impl-Octal-for-MavModeFlag"],[34084,"impl-LowerHex-for-MavModeFlag"],[34085,"impl-UpperHex-for-MavModeFlag"],[34086,"impl-Debug-for-MavModeFlag"],[34087,"impl-Binary-for-MavModeFlag"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPOFUwAAAAUACAAAAA0ABQAUABgALgADADMABAA5AAsASgABAE0AAgBRAAEAWAAMAGYAAwBuAAAAdAACAHgAAAB6AB8AmwAAAJ8AzA2MDnYAgw8CAOYPSwhSGAYAeRhmBQAeFwA4HuYEaSX1AX8nDwDPJwAA+inYAPMqHAEwLKED8i8+AHEwBACWMIkEQDXlBUY7SQGRPA0AoDwHAKo8lApYR2YAI0gBAHBIIAaqTgEAxU7wA89SDgD3UqYDUFhuAdhZDQAYWgAAsluZAGVc7QBsXa4CNGAnAI5gBACsYGEDJ2RSBJNoOAHNaQEA0WkAANVpUQAsagMANWo0AGtqAQB2atkKbHVnAER2AQCadlAGB30BACV9CQRLgRAAeIHLAwqHhAGriA0A8YgAAJyKmQBSi/EAYIy+AjuPKgCejwQAv492A1KTcwTilyYBC5kAAA=="}],\ +["mavlink",{"t":"TTTFFSSSKFFGKRKTPPCNNNNNNNNNNCCHNNNNNNNNNNNNCNNNOHNNNMMNNNNNNCMNNNNNNNNNNNNNNNOCNNNNNNNMNNMMONNMNNNNCMONNHHHHHMNMNNNNOMMNNNNNNNNNMNNONNNNNNNNNNNNNNNNNNNNCCHHHPPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTPFPPFPFFPFTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFOPFPFPFPPFFPFTTTTTTPFPFPFPFPFPPPPGGGGGFFGGFGPFPPFPFPFTTTTTTTTTTTTPPPFPPPPFPFPFPPPPFPFPPPPPPPPFPFPPPPPPPPPPPFPFPPFPPPFPPFPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPFFOPFPFPFPFPFPFPFPFPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPFFGGGGGGGGGGGGGOOOGOPFPFPFPFPFPFPFPFPFPFPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPFPFPFPFPFPFPFGGOPFTTTTTTTTPFTTTPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPTTTTTTTTPFPFPFPFPFTTTTTTTTTTPFTTPFPFFGFFPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPFPPPPFPFOPFPPPPPPFPPPPPPPPFGGGGGGPFPPPPPPPPPPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPPFFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPFPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPFPFPPPPPPPPPPFPFPFTTTTTTTTPFPFPFPFPPGGGFFFFGGGGGGGFGGGGGGGGGGGGFGPPPFPFPFPFTTTTTTTTTTTTTTTPPFFPFPFPFPFPFPFTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTPFPFPFGFFFOOOOPPPPPPPFPFPPPPFGGPFPPPPTPFPPPPPPPPPFPTTTPFPPFFPFPFPPFFPFPFPFPFPFPFGGFGPPPPPFPFPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTPPPPPPPPTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTPTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTPFOOOOPFPFPFPFPFPFPFPFPFPFPPFPFPFPFPPFPPPPPPPFPOPPPPPPPPFPFPFPFGGGGGGGGGGGGGGGGGGGFGGGGFGGGGGGFGGGGGGGGGGGGGGGGGGGGGFFGGGGGGGFGGGGFGGGGPFPFPFPPPGPPFFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPPPFPFPPPPPPPPPPPPFPFPGGGOPPPPPPPPFPFPFPFPFPFPPFPFPPPPFPFPPPFPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPFTTTTTTTTTTTTPFPPPPFGGOOOGGFGGGPFPFPFPFPFPFPFPFPFPFPFPFPPPFPFPFPFPFPFPPPPPPPPPPPPPFPPFGGGPFPFPPFPFFPPFPFFPPPPPFPFPPPPPTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPFPFPFPFPFPFPPOPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFGGFGGGGGGPFPFPFPFPFPFPPPPPPPFPFTTPFGFPPPPPFPPPPPPFPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPFPPPPPPTTTTTPPPPPPTTTPTTTTPFPTTTTTTTTPPPPPPFGGGGGGGFFFFGPFPFPFPFPFPFPPPPPPPFPFPFPPPPPOOOGGOGPFPFPFPPPPPPPPPPPPPPPPPPPPPFPPFFGGGPPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONONNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTPFTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPPFFPFTTTTTTPFPFPFPFPPPPGGGGFFGGFGPPFPFPFTTTTTTTTTTTTPFPFPFPPPPFPFPFPPPPPPPPPPPFPFPPFPPPFPPFPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPFFOPFPFPFPFPFPFPFPPPPPPPFPFFGGGGGGGGGGGPFPFPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPTTTTTTTTPFPFTTTTTTTTTTPFTTPFPFGFFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPPPPPFPPPPPPPPFGGGGGGPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTTTPPPPPPPPPPPFPFPFPFPFPPFFPFPFPFPPPPPPPPPPFPFPFTTTTTTTTPFPFPFPFPPFFFFGGFGPFPFTTTTTTTTTTTTTTTPPFFPFPFPFPFPFPFTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTPFPFFFFOPFPFPPPPPFPPFFPFPFPPFFPFPFPFPFPFPFGPPPPPFPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTPPPPPPPPTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTPTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTPFPFPFPFPFPFPFPFPFPPFPFPFPFPPFPPPPPPPFPOPPPPPPPPFGGGGGGGGGGGGGGGGGGFGGGGFGGGGGGFGGGGGGGGGGGGGGGGGGGGFFGGGGGFGGGGFGGGGPFPFPFPPPGPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPGPPPPPPPPFPFPFPFPFPFPPFPFPPPPFPFPPFPFPFPFPFTTTTTTTTTTTTPFPPPPFGGFGGGPFPFPFPFPFPFPFPFPPPFPFPFPFPPGGPFPFPPFPFFPPFPFFPFPPPPPTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPPPPPPPPPPPPPPFPFPFGFGGGGPFPFPFPFPFPFPFPFTTPFFPPPPPFPPPPPPFPTTTTTTTTPPPPPPFGGFGPFPFPFPFPFPFPPPPPPPFPFPPPPPOGGOGPFPFPPPPPPPPPPPPPPPPPPPPPFPFGGGPPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONONNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPGGPGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOTTTTTTPPPPPPPFPFPPPGGGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNOOOOOONNNNNNNNNONNNNNNNNNNNNNNNNNNNOOOOONNNNNFNNNNNNNNNNNNNNPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTPFTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPPFFPFTTTTTTPFPFPFPFPPPPGGGGFFGGFGPPFPFPFTTTTTTTTTTTTPFPFPFPPPPFPFPFPPPPPPPPPPPFPFPPFPPPFPPFPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPFFOPFPFPFPFPFPFPFPPPPPPPFPFFGGGGGGGGGGGPFPFPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPTTTTTTTTPFPFTTTTTTTTTTPFTTPFPFGFFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPPPPPFPPPPPPPPFGGGGGGPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTTTPPPPPPPPPPPFPFPFPFPFPPFFPFPFPFPPPPPPPPPPFPFPFTTTTTTTTPFPFPFPFPPFFFFGGFGPFPFTTTTTTTTTTTTTTTPPFFPFPFPFPFPFPFTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTPFPFFFFOOPFPFPPPPPFPPFFPFPFPPFFPFPFPFPFPFPFGPPPPPFPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTPPPPPPPPTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTPTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTPFPFPFPFPFPFPFPFPFPPFPFPFPFPPFPPPPPPPFPOPPPPPPPPFGGGGGGGGGGGGGGGGGGFGGGGFGGGGGGFGGGGGGGGGGGGGGGGGGGGFFGGGGGFGGGGFGGGGPFPFPFPPPGPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPGPPPPPPPPFPFPFPFPFPFPPFPFPPPPFPFPPFPFPFPFPFTTTTTTTTTTTTPFPPPPFGGFGGGPFPFPFPFPFPFPFPFPPPFPFPFPFPPGGPFPFPPFPFFPPFPFFPFPPPPPTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPPPPPPPPPPPPPPFPFPFGFGGGGPFPFPFPFPFPFPFPFTTPFFPPPPPFPPPPPPFPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPFPPPPPPTTTTTPPPPPPTTTPTTTTPFPTTTTTTTTPPPPPPFGGGGGGGFFFFGPFPFPFPFPFPFPPPPPPPFPFPPPPPOOGGOGPFPFPPPPPPPPPPPPPPPPPPPPPFPFGGGPPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONONNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOKHM","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","has_valid_crc","has_valid_crc","header","header","header","header","icarous","incompatibility_flags","incompatibility_flags_mut","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","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","serialize_message_for_signing","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","RustDefault","remove_trailing_zeroes","rust_default"],"q":[[0,"mavlink"],[158,"mavlink::ardupilotmega"],[15500,"mavlink::bytes"],[15524,"mavlink::bytes_mut"],[15549,"mavlink::common"],[27062,"mavlink::error"],[27104,"mavlink::error::ParserError"],[27109,"mavlink::icarous"],[27241,"mavlink::peek_reader"],[27256,"mavlink::uavionix"],[39176,"mavlink::utils"],[39179,"mavlink_core"],[39180,"core::clone"],[39181,"mavlink_core::connection"],[39182,"alloc::boxed"],[39183,"std::io::error"],[39184,"core::result"],[39185,"mavlink_core::error"],[39186,"serde::de"],[39187,"core::fmt"],[39188,"mavlink_core::peek_reader"],[39189,"std::io"],[39190,"serde::ser"],[39191,"core::any"],[39192,"core::cmp"],[39193,"core::iter::traits::collect"],[39194,"core::option"],[39195,"core::hash"],[39196,"mavlink_core::bytes"],[39197,"mavlink_core::bytes_mut"],[39198,"alloc::string"],[39199,"mavlink_core::utils"]],"i":[21,21,21,0,0,0,0,0,0,0,0,0,0,21,0,21,9,9,0,8,9,10,6,7,8,9,10,6,7,0,0,0,6,7,8,9,10,6,7,8,9,10,6,7,0,7,6,7,8,0,8,6,7,12,21,10,8,8,9,6,7,0,12,8,9,10,6,7,8,9,10,6,7,6,7,10,6,7,10,0,7,7,8,9,10,6,7,12,6,7,12,12,10,6,7,12,6,7,6,7,0,15,10,6,7,0,0,0,0,0,15,15,15,15,15,6,7,8,12,21,10,8,9,10,6,7,6,7,7,15,6,7,8,8,9,10,6,7,8,9,10,6,7,8,9,10,6,7,8,9,10,6,7,0,0,0,0,0,447,447,447,447,447,447,447,447,376,376,376,376,376,376,71,0,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,71,0,71,0,432,432,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,48,48,48,48,48,48,48,48,48,48,71,0,71,71,0,71,0,0,71,0,68,68,68,68,68,68,68,68,68,68,68,68,68,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,71,0,71,0,119,71,0,71,0,71,0,71,71,0,0,71,0,44,44,44,44,44,44,71,0,71,0,71,0,71,0,71,0,413,413,413,413,0,0,0,0,0,0,0,0,0,0,0,71,0,481,71,0,71,0,71,0,53,53,53,53,53,53,53,53,53,53,53,53,71,506,506,0,506,506,506,71,0,71,0,71,0,454,454,454,71,0,71,0,441,441,441,441,441,441,441,71,0,71,0,500,500,500,496,496,496,395,395,395,395,71,0,71,0,384,71,0,384,384,71,0,71,375,0,375,375,375,375,440,440,440,440,526,526,526,526,526,71,0,400,400,400,400,400,400,400,400,400,400,400,400,400,71,71,0,0,289,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,402,402,402,402,402,402,71,0,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,71,0,71,0,71,0,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,324,324,324,0,148,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,386,386,386,386,386,386,386,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,377,377,71,0,71,0,71,0,71,0,71,0,71,0,71,0,0,0,109,71,0,59,59,59,59,59,59,59,59,71,0,59,59,59,71,0,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,369,369,369,369,369,369,39,39,39,39,39,39,39,39,71,0,71,0,71,0,71,0,71,0,47,47,47,47,47,47,47,47,47,47,71,0,47,47,71,0,71,0,0,0,0,0,414,414,414,414,414,414,414,414,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,41,424,424,424,424,424,424,424,424,368,368,368,368,71,0,428,428,428,71,0,71,0,148,71,0,412,412,412,412,412,71,0,371,371,371,371,371,371,371,71,0,0,0,0,0,0,0,71,0,439,439,439,484,484,484,397,397,397,71,0,71,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,57,57,57,57,57,57,57,57,57,57,63,63,63,63,63,63,63,63,63,63,71,0,71,0,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,445,445,445,445,445,445,445,445,445,445,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,71,0,0,71,0,505,505,505,505,505,505,505,505,505,426,426,426,426,426,426,426,426,483,483,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,459,459,459,54,455,455,455,455,455,455,455,455,455,455,455,455,455,455,71,0,71,0,71,0,443,443,443,443,509,509,509,509,509,398,398,398,398,398,467,467,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,391,391,391,391,391,504,504,504,470,470,470,470,470,520,520,515,515,515,515,515,515,515,515,515,515,515,515,515,515,71,0,71,0,390,71,0,71,0,466,466,466,466,466,466,466,466,466,71,0,71,0,71,0,66,66,66,66,66,66,66,66,71,0,71,0,71,0,71,0,420,420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,436,436,71,0,71,0,71,0,71,0,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,71,71,0,0,71,0,71,0,71,0,71,0,71,0,71,0,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,71,0,71,0,52,52,52,52,52,52,52,52,52,52,52,52,52,52,71,0,71,0,71,0,0,0,0,0,148,101,86,216,419,419,419,419,419,419,71,0,71,0,418,418,418,71,0,0,0,71,0,473,473,473,473,41,71,0,389,389,389,393,393,393,393,393,71,0,393,42,42,42,71,0,71,71,0,0,71,0,71,0,71,71,0,0,71,0,71,0,71,0,71,0,71,0,71,0,0,0,0,0,452,452,452,452,71,0,71,0,452,452,452,452,71,0,71,0,517,517,517,517,517,517,498,498,498,498,498,498,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,453,453,453,453,453,453,453,453,481,481,481,481,481,481,481,481,448,448,448,448,448,380,380,380,463,463,463,463,463,370,417,417,417,417,417,417,417,417,417,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,514,514,514,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,499,499,499,499,499,499,499,480,480,449,449,449,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,495,495,495,495,495,495,495,495,495,450,450,450,450,450,401,527,527,527,527,527,527,527,527,527,51,425,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,493,493,493,493,493,493,493,493,493,493,493,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,516,516,516,516,407,407,407,407,407,437,437,437,437,437,437,437,437,437,437,437,437,437,437,508,508,508,508,437,437,403,403,60,60,382,382,382,382,382,382,382,382,60,60,60,60,60,60,513,513,513,513,513,513,513,403,403,403,403,403,403,403,403,403,464,464,464,464,464,464,464,524,524,444,444,444,444,444,444,396,396,396,396,465,465,415,415,415,415,415,415,415,415,394,394,394,416,416,381,381,381,381,381,381,381,381,381,381,381,381,381,486,486,486,486,486,489,427,427,427,374,374,374,374,374,512,512,512,512,512,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,442,442,442,442,442,442,442,451,451,451,451,451,451,451,451,451,451,451,474,474,474,474,474,474,474,474,474,474,50,50,50,50,50,50,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,387,387,388,388,488,488,488,488,488,488,488,501,501,501,501,501,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,523,523,523,523,523,523,523,523,392,392,392,392,392,392,392,392,392,46,46,46,46,46,46,411,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,522,522,522,522,522,522,522,522,522,522,522,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,373,373,373,373,373,62,62,62,62,62,62,62,62,62,62,62,62,62,62,71,0,126,126,126,126,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,479,71,0,71,0,71,0,71,0,479,71,0,431,431,431,431,431,431,71,0,479,289,429,409,409,409,429,429,429,71,0,71,0,71,0,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,0,71,0,71,0,497,497,497,0,71,71,0,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,421,421,421,421,421,478,71,0,71,0,478,478,478,478,435,435,435,478,478,478,478,71,0,71,0,435,0,0,0,148,477,477,477,438,438,438,438,71,0,71,0,71,0,71,0,71,0,71,0,528,71,0,71,0,528,528,528,71,0,71,0,528,71,518,0,518,518,518,518,518,71,0,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,71,0,71,0,71,0,71,0,56,56,56,56,56,56,56,56,56,56,56,56,71,0,468,468,468,71,0,0,0,109,109,109,0,0,0,0,0,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,372,372,71,0,71,0,71,0,71,0,71,0,71,0,383,383,383,383,383,383,383,383,383,383,383,383,71,0,408,408,0,0,0,0,71,0,71,0,71,71,0,71,0,0,71,71,0,71,0,0,503,503,503,503,71,0,71,0,482,482,482,482,482,67,67,67,67,67,482,482,482,482,482,482,482,482,482,482,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,71,0,446,446,119,71,0,71,0,434,434,434,434,457,457,457,457,457,457,457,457,457,404,404,404,404,469,469,469,469,469,469,469,469,469,71,0,71,0,71,0,0,0,0,0,0,0,0,0,0,71,0,71,0,71,0,71,0,71,0,71,0,525,525,525,525,525,525,71,0,71,0,38,38,71,0,0,0,475,475,475,475,71,0,458,458,458,458,458,71,0,71,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,0,521,521,521,521,521,521,521,521,491,491,379,71,0,494,494,494,494,494,494,40,40,40,40,40,379,379,379,379,379,379,43,43,43,379,61,61,61,61,71,0,487,55,55,55,55,55,55,55,55,433,433,433,433,433,71,0,0,0,0,0,0,0,0,0,0,0,0,0,71,0,71,0,71,0,71,0,71,0,71,0,502,502,519,519,519,519,71,0,71,0,71,0,461,461,461,461,461,101,240,287,0,0,240,0,71,0,71,0,71,0,485,485,485,485,476,476,476,476,476,476,492,492,492,492,492,492,492,492,492,492,71,0,71,71,0,0,0,0,0,422,422,422,422,110,350,320,220,220,220,82,82,82,81,222,298,287,287,287,148,354,306,202,344,344,311,311,311,311,311,311,78,281,308,197,278,292,339,197,278,292,339,197,278,292,339,86,90,111,116,322,111,322,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,68,69,96,104,116,185,203,204,231,232,266,274,292,293,313,320,339,352,362,363,146,179,146,360,360,85,88,150,173,216,218,236,317,322,100,111,265,265,100,202,100,100,111,100,216,106,153,153,136,246,323,136,246,323,136,246,323,328,211,218,317,218,317,218,317,236,236,118,118,118,118,92,131,263,179,77,320,232,75,75,141,301,319,121,322,229,239,239,239,239,338,340,135,148,354,135,135,261,287,265,98,111,120,121,222,298,222,298,222,298,222,298,269,322,269,113,305,111,162,305,237,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,68,69,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,68,69,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,68,69,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,68,69,149,158,316,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,68,69,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,68,69,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,68,69,195,76,294,76,294,76,294,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,100,94,214,94,94,94,204,142,122,215,233,281,308,269,281,308,281,308,145,77,229,77,229,86,216,289,358,358,280,360,104,149,127,157,195,113,113,309,104,118,310,326,310,326,310,326,310,310,310,310,310,310,163,165,310,326,125,163,165,310,326,125,163,165,310,326,125,163,165,310,326,125,163,165,310,326,125,163,165,310,326,125,163,165,310,326,125,163,165,310,326,125,310,326,310,113,115,118,118,116,111,322,227,227,227,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,181,208,270,335,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,68,69,185,274,293,141,220,272,283,301,307,319,170,328,268,77,229,73,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,68,69,77,77,106,164,330,283,300,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,68,69,271,306,97,169,296,197,278,292,339,103,107,166,204,235,237,267,281,286,300,308,316,332,355,366,300,135,196,256,362,226,226,114,236,107,117,141,206,286,301,319,324,332,162,223,305,305,256,275,322,322,322,254,127,254,111,120,121,322,127,320,113,98,79,95,122,138,143,200,215,221,235,237,260,267,281,321,327,347,348,75,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,71,167,171,171,171,171,171,171,171,194,194,194,80,80,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,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,148,354,92,92,237,113,274,274,229,229,229,109,110,350,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,68,69,289,289,289,289,128,265,77,77,77,113,203,153,188,189,252,266,366,234,162,98,261,287,86,216,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,68,69,211,211,176,177,180,305,328,98,185,274,293,322,185,274,293,322,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,134,354,300,81,81,162,162,162,162,162,320,250,135,362,280,92,98,236,328,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,68,69,71,170,328,170,328,354,354,207,111,136,300,322,130,226,250,110,350,91,104,127,358,143,321,273,229,185,274,293,363,248,357,73,136,139,158,169,187,191,204,216,237,240,246,258,289,309,316,323,347,351,352,358,360,195,352,195,131,276,276,276,276,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,376,377,38,38,38,38,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,39,39,39,39,392,393,394,395,396,397,398,40,40,40,40,40,399,41,41,41,41,41,400,401,402,42,42,42,42,42,43,43,43,43,43,403,404,44,44,44,44,44,45,45,45,45,45,405,406,46,46,46,46,46,407,408,409,47,47,47,47,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,48,48,48,48,427,49,49,49,49,49,428,429,430,431,432,433,50,50,50,50,50,434,435,436,437,51,51,51,51,51,438,439,440,52,52,52,52,52,441,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,442,443,444,445,446,447,448,56,56,56,56,56,449,450,57,57,57,57,57,58,58,58,58,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,59,59,59,59,466,467,468,469,470,471,472,473,60,60,60,60,60,474,475,476,477,478,61,61,61,61,61,479,480,481,482,483,484,485,486,487,62,62,62,62,62,488,63,63,63,63,63,489,490,491,492,493,494,495,496,64,64,64,64,64,497,498,499,500,501,502,503,504,65,65,65,65,65,505,506,507,508,509,66,66,66,66,66,510,511,67,67,67,67,67,512,513,514,515,516,517,518,68,68,68,68,68,69,69,69,69,69,519,520,521,522,523,524,525,526,527,528,360,358,170,193,198,141,151,153,238,257,295,301,319,115,149,158,316,142,84,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,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,68,69,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,68,69,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,68,69,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,527,528,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,68,69,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,527,528,98,98,306,346,346,269,269,139,157,246,258,351,287,287,287,287,86,86,111,363,111,226,226,302,327,327,276,111,116,322,97,296,82,82,82,203,352,191,127,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,68,69,203,313,203,363,111,116,216,289,322,111,74,98,266,265,364,265,146,158,316,216,175,363,265,202,184,168,168,168,222,298,92,113,122,126,166,184,202,215,235,256,266,284,305,72,75,80,118,228,265,297,228,233,108,204,325,355,98,363,104,340,340,280,360,164,234,330,356,232,84,206,300,300,192,98,89,89,89,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,68,69,254,98,98,188,252,188,252,188,252,188,252,188,252,188,252,324,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,68,69,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,68,69,299,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,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,68,69,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,68,69,328,171,171,171,364,365,130,268,204,111,209,250,236,236,214,99,214,207,284,75,214,273,214,85,88,96,104,185,190,203,204,216,224,231,232,266,274,275,289,293,302,313,320,327,352,355,360,362,363,146,146,292,339,111,150,173,218,265,317,322,95,122,138,215,221,260,347,348,75,143,321,358,93,214,117,226,226,226,226,226,85,88,190,204,266,355,360,162,269,275,92,96,104,185,203,216,224,231,232,274,275,289,293,302,313,320,327,352,362,363,146,146,292,339,111,150,173,218,265,317,322,82,82,288,82,288,82,288,191,329,302,121,78,113,121,130,138,221,226,256,260,289,305,316,322,343,348,364,264,264,264,264,264,151,234,256,164,330,93,130,71,299,71,71,186,333,72,331,331,331,195,195,264,264,264,264,264,151,234,256,164,330,93,268,268,130,74,169,239,328,172,329,127,358,214,214,214,183,72,124,159,168,255,263,289,316,179,239,179,179,289,211,352,352,352,248,357,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,68,69,222,298,264,287,233,284,151,229,229,229,361,166,235,229,229,229,354,81,81,81,354,186,162,162,162,233,118,137,297,297,118,137,118,118,137,256,195,195,330,353,330,353,280,238,257,238,257,238,257,280,238,257,238,257,238,257,280,280,364,141,283,301,319,141,283,301,319,141,283,301,319,141,283,301,319,283,283,283,152,303,83,152,164,205,245,249,303,314,330,367,83,152,245,303,314,205,152,205,249,303,367,152,205,249,303,367,83,83,83,83,71,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,68,69,271,251,236,236,254,161,315,333,364,161,161,275,346,346,211,85,88,96,111,129,139,147,160,190,213,231,247,258,266,285,329,360,239,127,157,127,157,90,139,258,115,196,231,232,247,349,201,201,140,140,140,125,163,219,191,191,73,90,191,191,73,167,220,167,220,167,220,167,220,115,320,106,269,123,155,178,337,155,178,337,123,123,110,350,351,351,195,98,211,76,90,104,112,115,136,146,196,218,246,250,294,317,323,96,349,96,349,96,349,96,349,250,130,188,252,276,145,201,295,226,226,320,109,82,82,338,253,201,201,201,201,340,269,267,281,308,104,313,352,362,248,357,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,68,69,248,357,81,336,336,164,244,262,267,279,281,308,330,353,149,158,316,358,149,158,316,358,211,113,164,244,267,272,279,345,86,207,261,211,85,88,96,111,129,147,160,190,213,231,247,266,285,329,360,239,127,157,127,157,90,115,196,231,232,247,349,149,158,316,98,107,206,286,332,182,182,125,163,248,310,326,357,222,298,222,298,222,298,269,331,331,331,331,207,248,357,268,225,225,225,225,225,185,225,274,293,363,89,83,351,351,192,188,252,276,358,358,151,234,132,141,230,241,243,301,304,334,359,199,200,79,92,102,143,187,253,321,253,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,113,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,219,219,219,219,219,219,219,219,170,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,68,69,290,170,328,354,354,207,72,114,284,364,153,153,275,98,93,117,128,265,363,265,265,128,216,287,202,251,183,183,183,236,86,176,177,180,336,99,287,109,109,109,117,130,134,149,199,208,265,269,270,277,309,338,96,96,262,338,338,226,226,226,158,186,316,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,68,69,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,68,69,74,207,168,168,168,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,68,69,121,131,145,322,179,72,75,80,83,87,89,95,97,102,103,108,114,118,122,132,136,137,139,140,141,143,154,161,165,166,170,171,174,176,177,180,181,183,192,193,194,197,198,199,200,204,215,217,228,230,233,238,241,245,246,249,250,253,254,258,261,265,273,281,282,283,288,292,294,297,301,307,308,312,314,315,318,319,321,323,325,328,330,333,334,335,336,342,343,353,355,361,367,201,322,322,315,333,153,72,75,80,83,87,89,95,97,102,103,108,114,118,120,122,132,136,137,139,140,141,143,154,161,165,166,170,171,173,174,176,177,180,181,183,192,193,194,197,198,199,200,204,215,217,228,230,233,238,241,245,246,249,250,253,254,258,261,265,271,273,280,281,282,283,288,292,294,297,301,307,308,312,314,315,317,318,319,321,323,325,328,330,333,334,335,336,342,343,353,355,360,361,367,191,212,107,110,111,117,123,155,178,184,188,252,266,286,300,305,332,337,350,111,322,226,226,117,73,275,290,354,354,202,111,116,239,322,324,98,98,76,294,329,352,76,91,99,104,124,125,127,131,136,144,146,147,151,155,156,157,163,172,178,197,210,242,247,255,256,266,278,285,292,294,310,313,329,337,338,339,340,341,346,349,351,356,358,250,188,252,106,222,298,202,156,269,74,90,97,100,106,110,112,115,117,119,123,135,153,159,167,168,169,175,185,188,191,196,206,219,220,226,227,231,232,234,239,241,252,259,263,274,276,280,293,295,296,300,326,344,350,359,360,362,363,366,104,284,363,363,237,75,118,137,207,265,320,322,331,265,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,527,528,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,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,527,528,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,68,69,338,107,286,332,222,298,201,201,203,262,232,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,212,216,289,193,342,289,331,331,331,207,248,357,264,264,264,264,264,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,376,377,38,378,379,380,381,382,383,384,385,386,387,388,389,390,391,39,392,393,394,395,396,397,398,40,399,41,400,401,402,42,43,403,404,44,45,405,406,46,407,408,409,47,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,48,427,49,428,429,430,431,432,433,50,434,435,436,437,51,438,439,440,52,441,53,54,55,442,443,444,445,446,447,448,56,449,450,57,58,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,59,466,467,468,469,470,471,472,473,60,474,475,476,477,478,61,479,480,481,482,483,484,485,486,487,62,488,63,489,490,491,492,493,494,495,496,64,497,498,499,500,501,502,503,504,65,505,506,507,508,509,66,510,511,67,512,513,514,515,516,517,518,68,69,519,520,521,522,523,524,525,526,527,528,76,197,278,292,294,339,354,228,228,352,127,195,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,68,69,352,226,74,168,91,149,262,316,262,105,129,160,213,338,287,88,88,88,88,203,352,250,167,220,78,124,208,255,335,356,175,175,96,293,363,363,96,293,363,185,274,293,320,287,287,203,352,203,203,203,191,90,220,220,220,220,289,115,73,195,127,358,74,78,216,93,271,175,363,265,146,227,227,227,340,96,293,363,107,117,189,206,223,286,332,162,305,209,109,115,135,197,210,231,232,250,278,292,313,339,352,362,109,115,135,197,210,231,232,250,278,292,313,339,352,362,109,115,135,197,210,231,232,250,278,292,313,339,352,362,113,364,175,322,175,175,175,322,222,298,179,111,111,322,338,105,112,115,129,135,141,145,147,151,159,160,197,210,213,218,278,295,301,317,319,90,90,90,96,110,144,190,231,232,242,259,341,350,96,110,144,190,242,259,341,350,110,144,242,259,341,350,179,105,112,115,129,135,141,145,147,151,159,160,197,210,213,218,278,295,301,317,319,90,90,90,96,110,144,190,231,232,242,259,341,350,85,88,96,129,139,147,160,190,197,213,231,247,258,266,278,285,292,329,339,360,127,157,127,157,90,139,197,258,278,292,339,239,115,196,231,232,247,349,96,110,144,190,242,259,341,350,110,144,242,259,341,350,105,112,115,129,135,141,145,147,151,159,160,197,210,213,218,278,295,301,317,319,90,90,90,96,110,144,190,231,232,242,259,341,350,96,110,144,190,242,259,341,350,110,144,242,259,341,350,170,170,0,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,0,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,835,835,835,835,835,835,569,0,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,569,0,855,855,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,568,568,568,568,568,568,568,568,568,568,569,0,546,546,546,546,546,546,546,546,546,546,546,546,546,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,569,0,569,0,569,0,569,569,0,0,569,0,561,561,561,561,561,561,569,0,569,0,569,0,569,0,892,892,892,892,0,0,0,0,0,0,0,0,0,0,873,569,0,569,0,569,0,562,562,562,562,562,562,562,562,562,562,562,562,569,0,569,0,569,0,793,793,793,569,0,569,0,569,0,843,843,843,839,839,839,898,898,898,898,569,0,569,0,857,569,0,857,857,569,0,569,881,0,881,881,881,881,810,810,810,810,896,896,896,896,896,569,0,861,861,861,861,861,861,861,861,861,861,861,861,861,569,569,0,0,708,569,0,569,0,569,0,569,0,569,0,569,0,569,0,872,872,872,872,872,872,569,0,569,0,0,0,0,0,0,0,0,0,0,0,0,0,569,0,569,0,569,0,569,0,569,0,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,569,0,569,0,569,0,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,840,840,840,840,840,840,558,558,558,558,558,558,558,558,569,0,569,0,552,552,552,552,552,552,552,552,552,552,569,0,552,552,569,0,569,0,0,0,0,823,823,823,823,823,823,823,823,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,834,834,834,834,834,834,834,834,798,798,798,798,830,830,830,569,0,569,0,901,901,901,901,901,569,0,796,796,796,796,796,796,796,569,0,0,0,0,0,0,0,569,0,569,0,566,566,566,566,566,566,566,566,566,566,566,566,566,566,564,564,564,564,564,564,564,564,564,564,548,548,548,548,548,548,548,548,548,548,569,0,569,0,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,851,851,851,851,851,851,851,851,851,851,569,0,569,0,569,0,569,0,569,0,569,569,0,0,569,0,569,0,569,0,848,848,848,848,848,848,848,848,848,569,0,569,0,569,0,549,549,549,549,549,549,549,549,569,0,569,0,569,0,569,0,816,816,0,0,0,0,0,0,0,0,569,0,569,0,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,569,569,0,0,569,0,569,0,569,0,569,0,569,0,569,0,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,569,0,569,0,565,565,565,565,565,565,565,565,565,565,565,565,565,565,569,0,569,0,0,0,0,683,569,0,569,0,899,899,899,899,569,0,569,569,0,0,569,0,569,0,569,569,0,0,569,0,569,0,569,0,569,0,569,0,569,0,0,792,792,792,792,569,0,792,792,792,792,569,0,569,0,800,800,800,800,800,800,889,889,889,889,889,889,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,886,886,886,886,886,886,886,886,873,873,873,873,873,873,873,873,807,807,807,807,807,880,880,880,882,882,882,882,882,841,841,841,841,841,841,841,841,841,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,878,863,863,863,863,863,863,863,897,897,829,829,829,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,858,858,858,858,858,858,858,858,858,799,799,799,799,799,885,879,879,879,879,879,879,879,879,879,551,838,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,894,894,894,894,894,894,894,894,894,894,894,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,883,883,883,883,842,842,842,842,842,811,811,811,811,811,811,811,811,811,811,811,811,811,811,815,815,815,815,811,811,828,828,559,559,802,802,802,802,802,802,802,802,559,559,559,559,559,559,828,828,828,828,828,828,828,828,828,864,864,864,864,864,864,864,884,884,837,837,837,837,837,837,801,801,801,801,866,866,871,871,871,871,871,871,871,871,876,876,876,805,805,822,822,822,822,822,822,822,822,822,822,822,822,822,867,867,867,867,867,893,831,831,831,895,895,895,895,895,818,818,818,818,818,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,891,891,891,891,891,891,891,891,891,891,891,891,891,891,891,891,900,900,900,900,900,900,900,852,852,852,852,852,852,852,852,852,852,852,849,849,849,849,849,849,849,849,849,849,544,544,544,544,544,544,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,797,797,797,797,797,797,797,808,808,808,808,808,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,888,887,887,887,887,887,887,887,887,803,803,803,803,803,803,803,803,803,555,555,555,555,555,555,804,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,791,791,791,791,791,791,791,791,791,791,791,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,902,812,812,812,812,812,547,547,547,547,547,547,547,547,547,547,547,547,547,547,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,853,569,0,569,0,569,0,569,0,853,569,0,794,794,794,794,794,794,569,0,853,708,819,844,844,844,819,819,819,569,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,569,0,569,0,569,0,865,865,865,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,826,826,826,826,826,0,820,820,820,856,856,856,856,569,0,569,0,569,0,569,0,569,0,569,0,817,569,0,569,0,817,817,817,569,0,569,0,817,569,0,569,0,569,0,569,0,569,0,557,557,557,557,557,557,557,557,557,557,557,557,569,0,795,795,795,569,0,0,0,0,0,0,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,847,847,569,0,569,0,569,0,569,0,869,869,0,0,569,0,569,0,569,569,0,569,0,0,569,569,0,569,0,0,569,0,877,877,877,877,877,550,550,550,550,550,877,877,877,877,877,877,877,877,877,877,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,874,874,874,874,875,875,875,875,875,875,875,875,875,814,814,814,814,569,0,569,0,569,0,0,0,0,0,0,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,569,0,545,545,569,0,0,859,859,859,859,569,0,850,850,850,850,850,569,0,809,553,553,553,553,553,553,553,553,824,824,824,824,824,569,0,0,0,0,0,569,0,569,0,569,0,569,0,569,0,569,0,825,825,862,862,862,862,569,0,569,0,890,890,890,890,890,784,0,0,784,0,569,0,569,0,827,827,827,827,813,813,813,813,813,813,870,870,870,870,870,870,870,870,870,870,569,0,569,0,0,0,0,860,860,860,860,747,779,768,649,649,649,576,790,648,599,624,624,701,629,674,699,709,629,674,699,709,629,674,699,709,584,663,706,730,706,730,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,577,582,612,629,660,663,674,679,691,711,717,724,731,744,758,768,586,757,586,604,645,672,683,702,706,587,730,635,635,587,599,587,587,730,587,683,615,615,580,690,697,580,690,697,580,690,697,607,604,702,604,702,604,702,636,636,636,636,639,570,627,757,768,731,693,693,572,589,673,613,706,588,759,759,759,759,723,773,684,684,684,635,737,613,682,730,576,790,576,790,576,790,576,790,595,706,595,618,675,675,721,730,767,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,608,720,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,677,630,713,630,713,630,713,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,587,661,661,661,661,593,643,644,595,705,588,588,683,708,782,782,711,783,785,677,618,618,711,636,685,762,685,762,685,762,762,762,762,762,762,762,685,696,762,766,655,685,696,762,766,655,685,696,762,766,655,685,696,762,766,655,685,696,762,766,655,685,696,762,766,655,685,696,762,766,655,685,696,762,766,655,685,762,762,618,585,636,636,663,706,730,722,722,722,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,577,612,724,572,589,649,650,673,689,755,772,588,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,689,657,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,590,648,602,665,669,629,674,699,709,608,642,653,657,662,764,767,657,640,681,684,744,743,743,572,589,673,687,756,675,721,675,640,670,706,706,706,783,613,682,706,730,783,768,618,737,594,621,643,644,653,654,656,740,751,767,693,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,569,581,626,626,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,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,639,639,767,618,724,724,588,588,588,747,779,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,708,708,708,708,635,618,679,605,615,642,658,746,721,737,683,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,607,607,579,609,714,675,737,577,612,706,724,577,612,706,724,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,592,657,721,721,721,721,721,768,760,684,744,639,737,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,623,730,580,657,706,735,743,760,747,779,753,711,782,783,654,751,600,588,577,582,612,724,712,571,580,583,598,602,608,656,683,688,690,697,708,720,758,767,771,782,784,677,758,677,570,769,769,769,769,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,544,544,544,544,544,793,545,545,545,545,545,794,795,796,797,798,799,800,546,546,546,546,546,801,802,803,804,805,806,547,547,547,547,547,807,808,809,810,548,548,548,548,548,549,549,549,549,549,550,550,550,550,550,811,812,813,814,815,816,817,818,819,551,551,551,551,551,820,821,822,823,824,825,826,552,552,552,552,552,827,828,829,830,831,832,833,834,835,836,553,553,553,553,553,837,554,554,554,554,554,838,839,840,555,555,555,555,555,841,842,843,844,845,846,847,848,849,850,851,556,556,556,556,556,852,853,557,557,557,557,557,854,855,856,857,858,859,558,558,558,558,558,860,861,862,863,864,865,866,559,559,559,559,559,867,560,560,560,560,560,868,869,870,871,561,561,561,561,561,872,873,874,562,562,562,562,562,875,563,563,563,563,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,564,564,564,564,891,892,565,565,565,565,565,893,894,566,566,566,566,566,567,567,567,567,567,895,896,897,898,568,568,568,568,568,899,900,901,902,782,694,707,572,575,589,591,615,673,741,585,608,720,641,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,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,901,902,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,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,901,902,737,737,648,738,738,595,595,583,598,688,690,785,730,582,730,743,743,740,774,740,769,663,706,730,665,669,679,758,571,783,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,679,717,679,582,663,683,706,708,730,730,737,745,603,635,635,586,608,720,683,582,646,635,599,750,596,596,596,576,790,599,618,639,640,643,644,653,662,675,750,765,626,633,635,636,693,727,752,752,593,737,582,711,723,723,746,698,731,641,657,687,657,715,737,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,737,737,605,658,605,658,605,658,605,658,605,658,605,658,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,659,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,603,634,735,772,601,730,760,788,623,765,693,600,577,582,612,660,670,679,683,691,708,711,717,724,731,739,740,744,758,768,774,586,586,629,674,604,635,645,672,702,706,730,594,643,644,656,654,693,751,782,573,756,743,743,743,743,743,721,595,670,639,577,582,612,660,670,679,683,691,708,711,717,724,731,739,740,744,758,768,774,586,586,629,674,604,635,645,672,702,706,730,571,637,774,613,603,608,613,618,640,675,701,706,708,728,735,743,640,746,573,735,569,659,569,569,651,725,727,668,668,668,677,677,640,746,573,772,772,735,602,745,759,611,637,782,783,727,596,608,620,627,676,708,716,757,759,757,757,708,607,758,758,758,712,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,576,790,593,765,588,588,588,653,662,588,588,588,651,721,721,721,593,616,636,633,633,616,636,636,616,636,640,677,677,575,741,575,741,575,741,575,741,575,741,575,741,603,572,589,673,689,572,589,673,689,572,589,673,689,572,589,673,689,689,689,689,622,719,622,678,695,710,718,719,749,781,622,710,719,749,781,678,622,678,695,718,719,622,678,695,718,719,781,781,781,781,569,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,590,736,603,671,725,729,729,729,670,738,738,607,578,597,598,637,660,688,691,726,730,742,763,770,759,783,785,783,785,584,598,688,585,660,681,726,731,754,652,652,617,655,766,571,571,584,571,571,581,649,581,649,581,649,581,649,585,768,595,631,700,703,777,631,703,777,700,700,747,779,583,583,677,737,607,580,584,585,586,604,630,681,686,690,697,702,711,713,760,691,754,691,754,691,754,691,754,760,605,658,735,769,705,591,652,743,743,768,773,638,652,652,652,652,723,595,711,717,744,758,712,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,712,666,666,761,608,720,782,608,720,782,607,618,650,623,607,578,597,637,660,691,726,730,742,763,770,759,783,785,783,785,584,585,660,681,726,731,754,608,720,687,737,655,685,712,762,766,576,790,576,790,576,790,595,668,668,668,668,623,712,772,610,610,610,610,610,577,582,610,612,724,781,583,583,715,605,658,769,782,782,746,574,589,606,628,664,673,704,732,733,621,638,639,654,751,771,787,638,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,618,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,617,617,617,617,617,617,617,617,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,789,623,727,603,765,615,615,670,737,573,756,582,635,635,635,683,599,736,579,609,714,666,788,592,595,635,735,756,773,691,691,761,773,773,743,743,743,608,651,720,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,745,623,596,596,596,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,613,570,705,706,757,572,574,575,579,580,589,593,594,598,600,609,616,619,625,626,628,629,630,632,633,635,636,638,643,644,647,654,662,664,666,667,669,671,673,680,688,689,690,693,694,695,696,697,707,709,710,714,715,718,725,727,728,729,733,749,751,752,755,760,764,776,781,787,652,706,706,671,725,615,572,574,575,579,580,589,590,593,594,598,600,604,609,616,619,625,626,628,629,630,632,633,635,636,638,643,644,645,647,654,662,664,666,667,669,671,673,680,682,688,689,690,693,694,695,696,697,707,709,710,714,715,718,725,727,728,729,733,749,751,752,755,760,764,776,781,787,571,786,605,631,657,658,675,700,703,730,747,750,756,777,779,706,730,743,743,756,670,789,599,663,706,730,759,737,737,630,637,713,758,570,580,583,586,597,611,614,620,629,630,631,637,640,655,674,676,698,699,703,709,711,713,717,723,726,734,738,742,753,754,762,766,773,775,777,778,780,782,783,785,788,760,605,658,576,790,599,780,595,571,574,577,581,582,584,585,587,591,596,602,605,612,615,617,624,627,642,646,649,657,658,660,665,669,681,684,685,686,687,700,704,716,722,724,731,743,744,745,746,747,748,756,759,769,779,711,765,582,582,767,616,623,635,636,668,693,706,768,635,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,901,902,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,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,901,902,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,773,576,790,652,652,679,761,731,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,786,683,708,680,694,708,668,668,668,623,712,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,544,793,545,794,795,796,797,798,799,800,546,801,802,803,804,805,806,547,807,808,809,810,548,549,550,811,812,813,814,815,816,817,818,819,551,820,821,822,823,824,825,826,552,827,828,829,830,831,832,833,834,835,836,553,837,554,838,839,840,555,841,842,843,844,845,846,847,848,849,850,851,556,852,853,557,854,855,856,857,858,859,558,860,861,862,863,864,865,866,559,867,560,868,869,870,871,561,872,873,874,562,875,563,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,564,891,892,565,893,894,566,567,895,896,897,898,568,899,900,901,902,629,630,674,699,709,713,752,752,758,677,783,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,758,743,596,745,608,753,761,761,578,692,763,770,773,679,758,760,581,649,620,676,698,701,646,646,582,612,691,582,582,612,691,577,612,724,768,679,758,679,679,679,571,584,649,649,649,649,708,585,677,782,783,745,701,683,573,590,582,646,635,586,722,722,722,723,582,612,691,687,756,721,675,601,585,629,660,674,684,699,709,717,731,744,758,760,778,585,629,660,674,684,699,709,717,731,744,758,760,778,585,629,660,674,684,699,709,717,731,744,758,760,778,618,603,646,706,646,646,646,706,576,790,757,730,706,730,773,572,578,585,589,591,604,673,684,686,692,699,702,705,709,716,742,763,770,778,584,584,584,614,660,691,731,734,747,748,775,779,614,691,734,747,748,775,779,614,734,747,748,775,779,757,572,578,585,589,591,604,673,684,686,692,699,702,705,709,716,742,763,770,778,584,584,584,614,660,691,731,734,747,748,775,779,578,597,598,629,637,660,674,688,691,699,709,726,742,763,770,783,785,783,785,584,598,629,674,688,699,709,759,585,660,681,726,731,754,614,691,734,747,748,775,779,614,734,747,748,775,779,572,578,585,589,591,604,673,684,686,692,699,702,705,709,716,742,763,770,778,584,584,584,614,660,691,731,734,747,748,775,779,614,691,734,747,748,775,779,614,734,747,748,775,779,22,22,30,33,0,0,30,0,22,22,30,33,22,30,33,22,22,30,30,33,33,22,30,30,30,33,33,22,30,33,22,30,33,22,30,33,22,30,33,22,30,33,1280,1281,1282,1281,1280,905,906,907,908,905,906,908,908,908,908,908,908,904,0,904,0,907,907,907,0,0,0,904,905,906,907,908,904,905,906,907,908,904,905,906,907,908,904,905,906,907,908,905,906,907,908,904,905,906,904,905,906,907,908,904,905,906,907,908,904,904,905,906,907,908,904,905,906,907,908,907,908,907,908,904,905,906,907,908,905,905,905,905,905,904,904,904,905,905,905,905,905,905,904,904,905,906,904,905,906,907,908,906,907,908,904,905,906,907,908,907,908,904,905,906,907,908,904,905,906,907,908,905,905,905,905,905,904,905,906,907,908,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28,1235,1235,1235,1235,1235,1235,937,0,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,1206,937,0,1240,1240,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,913,913,913,913,913,913,913,913,913,913,937,0,922,922,922,922,922,922,922,922,922,922,922,922,922,1175,1175,1175,1175,1175,1175,1175,1175,1175,1175,1175,1175,1175,1175,1175,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,937,0,937,0,937,0,937,937,0,0,937,0,930,930,930,930,930,930,937,0,937,0,937,0,937,0,1183,1183,1183,1183,0,0,0,0,0,0,0,0,0,0,1239,937,0,937,0,937,0,920,920,920,920,920,920,920,920,920,920,920,920,937,0,937,0,937,0,1216,1216,1216,937,0,937,0,937,0,1225,1225,1225,1233,1233,1233,1177,1177,1177,1177,937,0,937,0,1178,937,0,1178,1178,937,0,937,1277,0,1277,1277,1277,1277,1241,1241,1241,1241,1198,1198,1198,1198,1198,937,0,1260,1260,1260,1260,1260,1260,1260,1260,1260,1260,1260,1260,1260,937,937,0,0,1105,937,0,937,0,937,0,937,0,937,0,937,0,937,0,1234,1234,1234,1234,1234,1234,937,0,937,0,0,0,0,0,0,0,0,0,0,0,0,0,937,0,937,0,937,0,937,0,937,0,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,937,0,937,0,937,0,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,1231,1231,1231,1231,1231,1231,925,925,925,925,925,925,925,925,937,0,937,0,909,909,909,909,909,909,909,909,909,909,937,0,909,909,937,0,937,0,0,0,0,1192,1192,1192,1192,1192,1192,1192,1192,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1200,1200,1200,1200,1200,1200,1200,1200,1203,1203,1203,1203,1168,1168,1168,937,0,937,0,1202,1202,1202,1202,1202,937,0,1274,1274,1274,1274,1274,1274,1274,937,0,0,0,0,0,0,0,937,0,937,0,915,915,915,915,915,915,915,915,915,915,915,915,915,915,934,934,934,934,934,934,934,934,934,934,921,921,921,921,921,921,921,921,921,921,937,0,937,0,933,933,933,933,933,933,933,933,933,933,933,933,933,933,933,933,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,937,0,937,0,937,0,937,0,937,0,937,937,0,0,937,0,937,0,937,0,1253,1253,1253,1253,1253,1253,1253,1253,1253,937,0,937,0,937,0,917,917,917,917,917,917,917,917,937,0,937,0,937,0,937,0,1218,1218,0,0,0,0,0,0,0,0,937,0,937,0,928,928,928,928,928,928,928,928,928,928,928,928,928,928,928,937,937,0,0,937,0,937,0,937,0,937,0,937,0,937,0,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,937,0,937,0,919,919,919,919,919,919,919,919,919,919,919,919,919,919,937,0,937,0,0,0,0,1100,1146,937,0,937,0,1271,1271,1271,1271,937,0,937,937,0,0,937,0,937,0,937,937,0,0,937,0,937,0,937,0,937,0,937,0,937,0,0,1208,1208,1208,1208,937,0,1208,1208,1208,1208,937,0,937,0,1190,1190,1190,1190,1190,1190,1232,1232,1232,1232,1232,1232,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1246,1246,1246,1246,1246,1246,1246,1246,1239,1239,1239,1239,1239,1239,1239,1239,1267,1267,1267,1267,1267,1204,1204,1204,1205,1205,1205,1205,1205,1270,1270,1270,1270,1270,1270,1270,1270,1270,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1189,1189,1189,1189,1189,1189,1189,1247,1247,1248,1248,1248,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1170,1170,1170,1170,1170,1170,1170,1170,1170,1195,1195,1195,1195,1195,1249,1245,1245,1245,1245,1245,1245,1245,1245,1245,936,1201,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,923,923,923,923,923,923,923,923,923,923,923,923,923,923,923,923,923,923,923,923,923,923,923,1199,1199,1199,1199,1163,1163,1163,1163,1163,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1268,1268,1268,1268,1229,1229,1264,1264,927,927,1261,1261,1261,1261,1261,1261,1261,1261,927,927,927,927,927,927,1264,1264,1264,1264,1264,1264,1264,1264,1264,1171,1171,1171,1171,1171,1171,1171,1193,1193,1278,1278,1278,1278,1278,1278,1191,1191,1191,1191,1269,1269,1242,1242,1242,1242,1242,1242,1242,1242,1236,1236,1236,1223,1223,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1221,1221,1221,1221,1221,1182,1215,1215,1215,1197,1197,1197,1197,1197,1256,1256,1256,1256,1256,1172,1172,1172,1172,1172,1172,1172,1172,1172,1172,1172,1172,1172,1172,1172,1172,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1176,1176,1176,1176,1176,1176,1176,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1184,1184,1184,1184,1184,1184,1184,1184,1184,1184,910,910,910,910,910,910,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,1166,1166,1166,1166,1166,1166,1166,1238,1238,1238,1238,1238,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,1275,1275,1275,1275,1275,1275,1275,1275,1167,1167,1167,1167,1167,1167,1167,1167,1167,914,914,914,914,914,914,1228,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,1226,1226,1226,1226,1226,1226,1226,1226,1226,1226,1226,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1254,1254,1254,1254,1254,918,918,918,918,918,918,918,918,918,918,918,918,918,918,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,1273,937,0,937,0,937,0,937,0,1273,937,0,1173,1173,1173,1173,1173,1173,937,0,1273,1105,1217,1276,1276,1276,1217,1217,1217,937,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,937,0,937,0,937,0,1213,1213,1213,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,1181,1181,1181,1181,1181,0,1250,1250,1250,1266,1266,1266,1266,937,0,937,0,937,0,937,0,937,0,937,0,1272,937,0,937,0,1272,1272,1272,937,0,937,0,1272,937,0,937,0,937,0,937,0,937,0,912,912,912,912,912,912,912,912,912,912,912,912,937,0,1196,1196,1196,937,0,0,0,0,0,0,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,1214,1214,937,0,937,0,937,0,937,0,1187,1187,0,0,937,0,937,0,937,937,0,937,0,0,937,937,0,937,0,0,937,0,1224,1224,1224,1224,1224,929,929,929,929,929,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,1165,1165,1165,1165,1186,1186,1186,1186,1186,1186,1186,1186,1186,1220,1220,1220,1220,937,0,937,0,937,0,0,0,0,0,0,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,937,0,931,931,937,0,0,1251,1251,1251,1251,937,0,1244,1244,1244,1244,1244,937,0,937,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188,0,1185,1185,1185,1185,1185,1185,1185,1185,1237,1237,1211,937,0,1194,1194,1194,1194,1194,1194,935,935,935,935,935,1211,1211,1211,1211,1211,1211,911,911,911,1211,926,926,926,926,937,0,1175,932,932,932,932,932,932,932,932,1210,1210,1210,1210,1210,937,0,0,0,0,0,0,0,0,0,0,0,0,0,937,0,937,0,937,0,937,0,937,0,937,0,1252,1252,1174,1174,1174,1174,937,0,937,0,1180,1180,1180,1180,1180,1150,973,0,0,1150,0,937,0,937,0,1162,1162,1162,1162,1259,1259,1259,1259,1259,1259,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,937,0,937,0,0,0,0,1257,1257,1257,1257,1016,1064,1083,1092,1092,1092,954,965,973,973,973,992,962,1131,1131,1066,966,1071,1075,1084,966,1071,1075,1084,966,1071,1075,1084,1100,1043,1081,1119,1134,1043,1119,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,936,956,979,987,1008,1010,1023,1062,1071,1081,1083,1084,1096,1104,1115,1139,1143,1117,1103,1117,1015,1065,1091,1119,1146,1158,1043,1129,980,980,1129,962,1129,1129,1043,1129,1146,1153,1153,945,1048,1122,945,1048,1122,945,1048,1122,984,1065,1091,1065,1091,1065,1091,1028,1028,1028,1028,1140,940,993,1103,1083,1139,995,995,951,1056,1089,1014,1119,1152,991,991,991,991,977,1090,1012,1012,1012,973,980,1080,1014,1043,1088,954,965,954,965,954,965,954,965,1059,1119,1059,947,1116,1043,1087,1116,1099,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,936,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,936,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,936,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,936,1035,1118,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,936,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,936,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,936,1054,1021,1155,1021,1155,1021,1155,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,1129,1052,1052,1052,1052,960,1051,1068,1059,1055,1152,1152,1100,1105,1146,941,941,1143,1004,1032,1054,947,947,1143,1028,1046,1086,1046,1086,1046,1086,1046,1046,1046,1046,1046,1046,1041,1046,1086,1136,1026,1041,1046,1086,1136,1026,1041,1046,1086,1136,1026,1041,1046,1086,1136,1026,1041,1046,1086,1136,1026,1041,1046,1086,1136,1026,1041,1046,1086,1136,1026,1041,1046,1086,1136,1026,1046,1086,1046,947,1063,1028,1028,1081,1043,1119,1144,1144,1144,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,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,936,979,987,1115,951,958,994,1056,1067,1089,1092,1058,1152,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,936,958,985,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,936,944,992,948,1007,1061,966,1071,1075,1084,938,985,989,1069,1099,1118,1132,985,956,1012,1107,1123,1053,1053,951,990,1056,1089,1094,1087,1116,1116,1107,1047,1119,1119,1119,1032,1014,1043,1088,1119,1032,1083,947,1080,938,955,997,1039,1050,1051,1068,1076,1099,1121,995,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,937,1002,953,953,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,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,1140,1140,1099,947,987,987,1152,1152,1152,1016,1064,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,936,1105,1105,1105,1105,980,947,1008,1069,1114,1141,1153,968,1087,1080,973,1100,1146,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,936,984,984,1025,961,1098,1116,1080,979,987,1115,1119,979,987,1115,1119,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,1126,985,1087,1087,1087,1087,1087,1083,1070,956,1012,1140,1080,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,936,937,1005,1043,945,985,1119,1074,1053,1070,1016,1064,996,1143,941,1032,997,1076,939,1152,979,987,1010,1115,1027,941,945,949,955,1003,1019,1022,1035,1048,1061,1062,1099,1105,1118,1122,1146,1149,1150,1054,1062,1054,940,1125,1125,1125,1125,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,1164,1165,1166,1167,909,909,909,909,909,1168,1169,910,910,910,910,910,1170,1171,911,911,911,911,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,912,912,912,912,913,913,913,913,913,1182,1183,1184,1185,1186,1187,1188,1189,914,914,914,914,914,1190,1191,915,915,915,915,915,1192,916,916,916,916,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,917,917,917,917,1202,918,918,918,918,918,1203,1204,919,919,919,919,919,1205,1206,1207,1208,1209,920,920,920,920,920,1210,1211,1212,1213,921,921,921,921,921,1214,1215,1216,1217,922,922,922,922,922,923,923,923,923,923,1218,1219,1220,1221,1222,1223,924,924,924,924,924,1224,1225,1226,1227,925,925,925,925,925,1228,1229,1230,1231,1232,1233,926,926,926,926,926,1234,927,927,927,927,927,1235,1236,1237,1238,928,928,928,928,928,1239,929,929,929,929,929,1240,1241,1242,1243,1244,1245,930,930,930,930,930,931,931,931,931,931,1246,1247,1248,1249,1250,1251,932,932,932,932,932,1252,1253,933,933,933,933,933,934,934,934,934,934,1254,935,935,935,935,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,936,936,936,936,1276,1277,1278,941,943,1161,946,951,969,1056,1089,1127,1153,1063,1035,1118,1057,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,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,936,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,936,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,936,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,1277,1278,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,936,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,1277,1278,1080,1080,992,1093,1093,1059,1059,949,1004,1019,1022,1048,973,973,973,973,1100,1100,1043,1010,1043,1053,1053,1039,1145,1039,1125,1043,1081,1119,948,1007,1008,1062,1003,1032,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,936,1008,1096,1008,1010,1043,1081,1105,1119,1146,1043,1031,1080,980,1072,980,1035,1117,1118,1146,1010,1040,980,962,967,963,963,963,954,965,938,947,962,967,976,989,1051,1068,1107,1116,1140,953,980,995,1028,1030,1108,1159,1159,960,1080,1010,1143,977,977,968,1102,1139,985,990,1057,985,1078,1080,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,936,1080,1080,1114,1141,1114,1141,1114,1141,1114,1141,1114,1141,1114,1141,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,936,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,936,1156,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,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,936,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,936,1072,983,1074,1058,1043,1070,1160,978,1005,976,995,939,956,979,987,1008,1010,1023,1039,1047,1062,1083,1096,1104,1105,1115,1139,1143,1145,1146,1154,1117,1117,1071,1084,980,1015,1043,1065,1091,1119,1158,955,1050,1051,1068,995,997,1076,941,957,1094,1053,1053,1053,1053,1053,1087,1059,1047,1140,956,979,987,1008,1010,1023,1039,1047,1062,1083,1096,1104,1105,1115,1139,1143,1145,1146,1154,1117,1117,1071,1084,980,1015,1043,1065,1091,1119,1158,1003,1011,1145,1014,947,1000,1014,1053,1066,1072,1074,1105,1107,1116,1118,1119,968,1107,957,1074,937,1156,937,937,1124,1112,1108,998,998,998,1054,1054,968,1107,957,1058,1058,1074,991,1031,1061,1079,1011,941,1032,1108,963,993,1033,1038,1105,1118,1133,1103,991,1103,1103,1105,984,1062,1062,1062,1027,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,936,954,965,973,960,976,1152,1152,1152,938,989,1152,1152,1152,1124,1087,1087,1087,960,1028,1097,1030,1030,1028,1097,1028,1028,1097,1107,1054,1054,946,1127,946,1127,946,1127,946,1127,946,1127,946,1127,1072,951,958,1056,1089,951,958,1056,1089,951,958,1056,1089,951,958,1056,1089,958,958,958,970,1082,970,982,999,1013,1037,1082,1128,1142,970,999,1013,1037,1082,982,970,982,1082,1128,1142,970,982,1082,1128,1142,1037,1037,1037,1037,937,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,936,944,952,959,1036,1072,1112,1036,1036,1047,1093,1093,984,949,964,1006,1011,1022,1023,1043,1049,1101,1104,1106,1137,991,1004,1032,1004,1032,949,1022,1134,981,1063,1104,1106,1123,1139,974,974,1026,1041,1085,1003,1003,1134,1003,1003,1002,1092,1002,1092,1002,1092,1002,1092,1063,1083,1059,942,1024,1029,1148,942,1024,1148,1029,1029,1016,1064,1019,1019,1054,1080,984,945,950,1021,1048,1063,1065,1070,1091,1117,1122,1123,1134,1143,1155,981,1023,981,1023,981,1023,981,1023,1070,1074,1114,1125,1141,1055,969,974,1053,1053,1083,1090,1020,974,974,974,974,977,1059,956,1062,1096,1143,1027,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,936,1027,1135,1135,1111,941,1035,1118,941,1035,1118,984,947,994,1113,1100,1005,984,964,1006,1011,1023,1043,1049,1101,1104,1106,1137,991,1004,1032,1004,1032,1134,981,1063,1104,1106,1123,1139,1035,1118,990,1080,1026,1027,1041,1046,1086,954,965,954,965,954,965,1059,998,998,998,998,1005,1027,1058,1060,1060,1060,1060,1060,979,987,1010,1060,1115,1037,1019,1019,1078,1114,1125,1141,941,941,968,951,988,1017,1073,1089,1095,1110,1130,1157,1121,997,1020,1076,1140,1147,1149,1020,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,947,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,1085,1085,1085,1085,1085,1085,1085,1085,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,936,975,1005,1108,976,1072,1153,1153,1047,1080,957,1094,980,1010,980,980,973,1146,962,952,1100,1025,961,1098,1135,973,978,980,1059,1074,1090,1094,1126,1023,1023,1111,1090,1090,1053,1053,1053,1035,1118,1124,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,936,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,936,1031,1005,963,963,963,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,936,1014,940,1055,1119,1103,939,943,945,948,949,951,953,958,959,960,961,972,980,986,989,995,997,999,1000,1009,1013,1017,1020,1021,1022,1025,1028,1030,1036,1037,1044,1045,1048,1050,1051,1056,1067,1068,1070,1073,1075,1076,1078,1084,1089,1097,1098,1108,1112,1120,1122,1127,1128,1130,1132,1135,1136,1138,1142,1147,1157,1159,1161,974,1119,1119,959,1112,1153,939,943,944,945,948,949,951,953,958,959,960,961,972,980,986,989,995,997,999,1000,1009,1013,1017,1020,1021,1022,1025,1028,1030,1036,1037,1044,1045,1048,1050,1051,1056,1065,1067,1068,1070,1073,1075,1076,1078,1084,1088,1089,1097,1098,1108,1112,1120,1122,1127,1128,1130,1132,1135,1136,1138,1142,1147,1157,1158,1159,1161,1003,1034,942,967,985,1016,1024,1029,1043,1064,1094,1114,1116,1141,1148,1043,1119,1053,1053,1094,1047,975,962,991,1043,1081,1119,1080,1080,1011,1021,1155,1062,940,941,942,945,964,966,977,978,981,996,1001,1004,1011,1018,1019,1021,1024,1026,1032,1038,1041,1046,1071,1075,1077,1079,1084,1090,1093,1096,1101,1102,1106,1107,1109,1117,1133,1143,1148,1151,1155,1070,1114,1141,954,965,962,1151,1059,948,950,956,963,968,969,979,985,987,988,990,991,993,1002,1003,1007,1010,1012,1016,1029,1031,1033,1040,1042,1053,1061,1063,1064,1069,1073,1085,1086,1092,1094,1104,1114,1115,1123,1125,1129,1131,1134,1139,1141,1144,1153,976,1143,1010,1010,1099,980,995,998,1005,1028,1083,1097,1119,980,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,1277,1278,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,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,1277,1278,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,936,1090,954,965,974,974,1008,1111,1139,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,1034,1105,1146,943,1045,1105,998,998,998,1005,1027,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,1164,1165,1166,1167,909,1168,1169,910,1170,1171,911,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,912,913,1182,1183,1184,1185,1186,1187,1188,1189,914,1190,1191,915,1192,916,1193,1194,1195,1196,1197,1198,1199,1200,1201,917,1202,918,1203,1204,919,1205,1206,1207,1208,1209,920,1210,1211,1212,1213,921,1214,1215,1216,1217,922,923,1218,1219,1220,1221,1222,1223,924,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,1233,926,1234,927,1235,1236,1237,1238,928,1239,929,1240,1241,1242,1243,1244,1245,930,931,1246,1247,1248,1249,1250,1251,932,1252,1253,933,934,1254,935,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,936,1276,1277,1278,966,1021,1071,1075,1084,1155,1159,1062,1159,1032,1054,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,936,1062,1053,963,1031,996,1111,1118,1111,971,1006,1049,1137,1090,973,1008,1062,1070,1002,1092,1038,1066,1102,1133,1040,1040,1010,1023,1115,1010,1010,1023,1115,979,987,1083,1115,973,973,1008,1062,1008,1008,1008,1003,1134,1092,1092,1092,1092,1105,1063,1054,941,1032,1031,1066,1146,944,957,1010,1040,980,1117,1144,1144,1144,977,1010,1023,1115,990,1094,1087,1116,1160,956,966,1012,1062,1063,1070,1071,1075,1084,1096,1104,1109,1139,956,966,1012,1062,1063,1070,1071,1075,1084,1096,1104,1109,1139,956,966,1012,1062,1063,1070,1071,1075,1084,1096,1104,1109,1139,947,1072,1040,1119,1040,1040,1040,1119,954,965,1103,1043,1043,1119,1090,950,951,964,966,969,971,1006,1012,1033,1049,1055,1056,1063,1065,1075,1089,1091,1109,1137,1134,1134,1134,1001,1016,1018,1023,1042,1064,1077,1104,1139,1001,1016,1018,1023,1042,1064,1077,1001,1016,1018,1042,1064,1077,1103,950,951,964,966,969,971,1006,1012,1033,1049,1055,1056,1063,1065,1075,1089,1091,1109,1137,1134,1134,1134,1001,1016,1018,1023,1042,1064,1077,1104,1139,949,964,966,1006,1011,1022,1023,1049,1071,1075,1084,1101,1104,1106,1137,1004,1032,1004,1032,949,966,1022,1071,1075,1084,1134,991,981,1063,1104,1106,1123,1139,1001,1016,1018,1023,1042,1064,1077,1001,1016,1018,1042,1064,1077,950,951,964,966,969,971,1006,1012,1033,1049,1055,1056,1063,1065,1075,1089,1091,1109,1137,1134,1134,1134,1001,1016,1018,1023,1042,1064,1077,1104,1139,1001,1016,1018,1023,1042,1064,1077,1001,1016,1018,1042,1064,1077,0,0,1279],"f":"```````````````````{{{b{c}}}{{b{e}}}{}{}}0000{{{b{dc}}}{{b{de}}}{}{}}0000``{{{b{{h{f}}}}f}j}{{{b{l}}}j}{{{b{n}}}j}{{{b{A`}}}A`}{{{b{Ab}}}Ab}{{{b{{Ad{c}}}}}{{Ad{c}}}{AfAh}}{{{b{l}}}l}{{{b{n}}}n}{{{b{c}}{b{de}}}Aj{}{}}0000`{{{b{n}}}f}{{{b{l}}}f}1`{{{b{Al}}}{{Bd{{B`{An}}Bb}}}}{{}A`}{{}l}{{}n}{Bf{{Bd{Ah{b{Al}}}}}}{{Ab{b{{h{f}}}}}{{Bd{{Bj{}{{Bh{c}}}}Bl}}}Ah}{{Ab{b{{h{f}}}}}{{Bd{{Ad{c}}Bl}}}Ah}{c{{Bd{A`}}}Bn}{{{b{A`}}{b{A`}}}C`}{{{b{Ab}}{b{Ab}}}C`}{{{b{l}}{b{l}}}C`}{{{b{n}}{b{n}}}C`}`{Bff}{{{b{A`}}{b{dCb}}}{{Bd{AjCd}}}}{{{b{Ab}}{b{dCb}}}{{Bd{AjCd}}}}{{{b{{Ad{c}}}}{b{dCb}}}{{Bd{AjCd}}}{CfAh}}{{{b{l}}{b{dCb}}}{{Bd{AjCd}}}}{{{b{n}}{b{dCb}}}{{Bd{AjCd}}}}{cc{}}0000{{{b{l}}}C`}{{{b{n}}}C`}{{{b{{Ad{c}}}}}A`Ah}{{{b{dl}}}{{b{{h{f}}}}}}{{{b{n}}}{{b{{h{f}}}}}}``{{{b{n}}}f}{{{b{dn}}}{{b{df}}}}{ce{}{}}0000{{{b{Ah}}}Bf}{{{b{l}}}f}{{{b{n}}}Bf}{{{b{Al}}}{{Bd{Bf{b{Al}}}}}}{{{b{Ah}}}{{b{Al}}}}`{{}l}{{}n}{{AbBf{b{{h{f}}}}}{{Bd{AhBl}}}}{{{b{l}}}{{b{{h{f}}}}}}<7;`{{{b{An}}}Ab}`1={{{b{d{Ch{c}}}}}{{Bd{{Cj{A`e}}Cl}}}CnAh}{{{b{d{Ch{c}}}}}{{Bd{lCl}}}Cn}1{{{b{d{Ch{c}}}}}{{Bd{nCl}}}Cn}{{{b{d{Ch{c}}}}Ab}{{Bd{{Cj{A`e}}Cl}}}CnAh}{{{b{An}}}{{Bd{{Cj{A`c}}Cl}}}Ah}{{{b{An}}}{{Bd{{Ad{c}}Cl}}}Ah}{{{b{An}}{b{A`}}{b{c}}}{{Bd{D`Db}}}Ah}{{{b{An}}{b{c}}}{{Bd{D`Db}}}Ah}{{{b{An}}{b{{Ad{c}}}}}{{Bd{D`Db}}}Ah}{{{b{l}}}f}{{{b{n}}}f}`{{{b{Ah}}Ab{b{d{h{f}}}}}D`}{{{b{{Bj{}{{Bh{c}}}}}}Ab{b{d{h{f}}}}}D`Ah}{{{b{{Ad{c}}}}{b{d{h{f}}}}}D`Ah}{{{b{A`}}c}BdDd}{{{b{Ab}}c}BdDd}{{{b{{Ad{c}}}}e}Bd{AhDf}Dd}{{{b{dl}}A`{b{c}}}AjAh}{{{b{dn}}A`{b{c}}}AjAh}{{{b{dl}}A`{b{c}}}AjBj}{{{b{dn}}A`{b{c}}}AjBj}2{{{b{dAn}}Ab}Aj}<;`{{{b{c}}}e{}{}}0000{c{{Bd{e}}}{}{}}000000000{{{b{c}}}Dh{}}0000``{{{b{dc}}A`{b{e}}}{{Bd{D`Db}}}DjAh}0{{{b{dc}}AbA`{b{e}}}{{Bd{D`Db}}}DjAh}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{}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}{{}Hh}{{}Hj}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{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}{{HhHh}Hh}{{HjHj}Hj}{{{b{dDl}}Dl}Aj}{{{b{dDn}}Dn}Aj}{{{b{dE`}}E`}Aj}{{{b{dEb}}Eb}Aj}{{{b{dEd}}Ed}Aj}{{{b{dEf}}Ef}Aj}{{{b{dEh}}Eh}Aj}{{{b{dEj}}Ej}Aj}{{{b{dEl}}El}Aj}{{{b{dEn}}En}Aj}{{{b{dF`}}F`}Aj}{{{b{dFb}}Fb}Aj}{{{b{dFd}}Fd}Aj}{{{b{dFf}}Ff}Aj}{{{b{dFh}}Fh}Aj}{{{b{dFj}}Fj}Aj}{{{b{dFl}}Fl}Aj}{{{b{dFn}}Fn}Aj}{{{b{dG`}}G`}Aj}{{{b{dGb}}Gb}Aj}{{{b{dGd}}Gd}Aj}{{{b{dGf}}Gf}Aj}{{{b{dGh}}Gh}Aj}{{{b{dGj}}Gj}Aj}{{{b{dGl}}Gl}Aj}{{{b{dGn}}Gn}Aj}{{{b{dH`}}H`}Aj}{{{b{dHb}}Hb}Aj}{{{b{dHd}}Hd}Aj}{{{b{dHf}}Hf}Aj}{{{b{dHh}}Hh}Aj}{{{b{dHj}}Hj}Aj}{{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}{{HhHh}Hh}{{HjHj}Hj}{{{b{dDl}}Dl}Aj}{{{b{dDn}}Dn}Aj}{{{b{dE`}}E`}Aj}{{{b{dEb}}Eb}Aj}{{{b{dEd}}Ed}Aj}{{{b{dEf}}Ef}Aj}{{{b{dEh}}Eh}Aj}{{{b{dEj}}Ej}Aj}{{{b{dEl}}El}Aj}{{{b{dEn}}En}Aj}{{{b{dF`}}F`}Aj}{{{b{dFb}}Fb}Aj}{{{b{dFd}}Fd}Aj}{{{b{dFf}}Ff}Aj}{{{b{dFh}}Fh}Aj}{{{b{dFj}}Fj}Aj}{{{b{dFl}}Fl}Aj}{{{b{dFn}}Fn}Aj}{{{b{dG`}}G`}Aj}{{{b{dGb}}Gb}Aj}{{{b{dGd}}Gd}Aj}{{{b{dGf}}Gf}Aj}{{{b{dGh}}Gh}Aj}{{{b{dGj}}Gj}Aj}{{{b{dGl}}Gl}Aj}{{{b{dGn}}Gn}Aj}{{{b{dH`}}H`}Aj}{{{b{dHb}}Hb}Aj}{{{b{dHd}}Hd}Aj}{{{b{dHf}}Hf}Aj}{{{b{dHh}}Hh}Aj}{{{b{dHj}}Hj}Aj}```{{{b{Dl}}}Bf}{{{b{Dn}}}j}{{{b{E`}}}j}{{{b{Eb}}}f}{{{b{Ed}}}f}{{{b{Ef}}}f}{{{b{Eh}}}f}{{{b{Ej}}}j}{{{b{El}}}Bf}{{{b{En}}}j}{{{b{F`}}}j}{{{b{Fb}}}Hl}{{{b{Fd}}}j}{{{b{Ff}}}f}{{{b{Fh}}}j}{{{b{Fj}}}Bf}{{{b{Fl}}}f}{{{b{Fn}}}f}{{{b{G`}}}j}{{{b{Gb}}}Bf}{{{b{Gd}}}Hl}{{{b{Gf}}}j}{{{b{Gh}}}f}{{{b{Gj}}}f}{{{b{Gl}}}Bf}{{{b{Gn}}}j}{{{b{H`}}}j}{{{b{Hb}}}Bf}{{{b{Hd}}}j}{{{b{Hf}}}f}{{{b{Hh}}}j}{{{b{Hj}}}Bf}{{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}{{HhHh}Hh}{{HjHj}Hj}{{{b{dDl}}Dl}Aj}{{{b{dDn}}Dn}Aj}{{{b{dE`}}E`}Aj}{{{b{dEb}}Eb}Aj}{{{b{dEd}}Ed}Aj}{{{b{dEf}}Ef}Aj}{{{b{dEh}}Eh}Aj}{{{b{dEj}}Ej}Aj}{{{b{dEl}}El}Aj}{{{b{dEn}}En}Aj}{{{b{dF`}}F`}Aj}{{{b{dFb}}Fb}Aj}{{{b{dFd}}Fd}Aj}{{{b{dFf}}Ff}Aj}{{{b{dFh}}Fh}Aj}{{{b{dFj}}Fj}Aj}{{{b{dFl}}Fl}Aj}{{{b{dFn}}Fn}Aj}{{{b{dG`}}G`}Aj}{{{b{dGb}}Gb}Aj}{{{b{dGd}}Gd}Aj}{{{b{dGf}}Gf}Aj}{{{b{dGh}}Gh}Aj}{{{b{dGj}}Gj}Aj}{{{b{dGl}}Gl}Aj}{{{b{dGn}}Gn}Aj}{{{b{dH`}}H`}Aj}{{{b{dHb}}Hb}Aj}{{{b{dHd}}Hd}Aj}{{{b{dHf}}Hf}Aj}{{{b{dHh}}Hh}Aj}{{{b{dHj}}Hj}Aj}```````{{{b{c}}}{{b{e}}}{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{dc}}}{{b{de}}}{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{Hn}}}Hn}{{{b{I`}}}I`}{{{b{Ib}}}Ib}{{{b{Id}}}Id}{{{b{If}}}If}{{{b{Ih}}}Ih}{{{b{Ij}}}Ij}{{{b{Il}}}Il}{{{b{In}}}In}{{{b{J`}}}J`}{{{b{Jb}}}Jb}{{{b{Jd}}}Jd}{{{b{Jf}}}Jf}{{{b{Jh}}}Jh}{{{b{Jj}}}Jj}{{{b{Jl}}}Jl}{{{b{Jn}}}Jn}{{{b{K`}}}K`}{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{{b{Kf}}}Kf}{{{b{Kh}}}Kh}{{{b{Kj}}}Kj}{{{b{Kl}}}Kl}{{{b{Kn}}}Kn}{{{b{L`}}}L`}{{{b{Lb}}}Lb}{{{b{Ld}}}Ld}{{{b{Lf}}}Lf}{{{b{Lh}}}Lh}{{{b{Lj}}}Lj}{{{b{Ll}}}Ll}{{{b{Ln}}}Ln}{{{b{M`}}}M`}{{{b{Mb}}}Mb}{{{b{Md}}}Md}{{{b{Mf}}}Mf}{{{b{Mh}}}Mh}{{{b{Mj}}}Mj}{{{b{Ml}}}Ml}{{{b{Mn}}}Mn}{{{b{N`}}}N`}{{{b{Nb}}}Nb}{{{b{Nd}}}Nd}{{{b{Nf}}}Nf}{{{b{Nh}}}Nh}{{{b{Nj}}}Nj}{{{b{Nl}}}Nl}{{{b{Nn}}}Nn}{{{b{O`}}}O`}{{{b{Ob}}}Ob}{{{b{Od}}}Od}{{{b{Of}}}Of}{{{b{Oh}}}Oh}{{{b{Oj}}}Oj}{{{b{Ol}}}Ol}{{{b{On}}}On}{{{b{A@`}}}A@`}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{AAb}}}AAb}{{{b{AAd}}}AAd}{{{b{AAf}}}AAf}{{{b{AAh}}}AAh}{{{b{AAj}}}AAj}{{{b{AAl}}}AAl}{{{b{AAn}}}AAn}{{{b{AB`}}}AB`}{{{b{ABb}}}ABb}{{{b{ABd}}}ABd}{{{b{ABf}}}ABf}{{{b{ABh}}}ABh}{{{b{ABj}}}ABj}{{{b{ABl}}}ABl}{{{b{ABn}}}ABn}{{{b{AC`}}}AC`}{{{b{ACb}}}ACb}{{{b{ACd}}}ACd}{{{b{ACf}}}ACf}{{{b{ACh}}}ACh}{{{b{ACj}}}ACj}{{{b{ACl}}}ACl}{{{b{ACn}}}ACn}{{{b{AD`}}}AD`}{{{b{ADb}}}ADb}{{{b{ADd}}}ADd}{{{b{ADf}}}ADf}{{{b{ADh}}}ADh}{{{b{ADj}}}ADj}{{{b{ADl}}}ADl}{{{b{ADn}}}ADn}{{{b{AE`}}}AE`}{{{b{AEb}}}AEb}{{{b{AEd}}}AEd}{{{b{AEf}}}AEf}{{{b{AEh}}}AEh}{{{b{AEj}}}AEj}{{{b{AEl}}}AEl}{{{b{AEn}}}AEn}{{{b{AF`}}}AF`}{{{b{AFb}}}AFb}{{{b{AFd}}}AFd}{{{b{AFf}}}AFf}{{{b{AFh}}}AFh}{{{b{AFj}}}AFj}{{{b{AFl}}}AFl}{{{b{AFn}}}AFn}{{{b{AG`}}}AG`}{{{b{AGb}}}AGb}{{{b{AGd}}}AGd}{{{b{AGf}}}AGf}{{{b{AGh}}}AGh}{{{b{AGj}}}AGj}{{{b{AGl}}}AGl}{{{b{AGn}}}AGn}{{{b{AH`}}}AH`}{{{b{AHb}}}AHb}{{{b{AHd}}}AHd}{{{b{AHf}}}AHf}{{{b{AHh}}}AHh}{{{b{AHj}}}AHj}{{{b{AHl}}}AHl}{{{b{AHn}}}AHn}{{{b{AI`}}}AI`}{{{b{AIb}}}AIb}{{{b{AId}}}AId}{{{b{AIf}}}AIf}{{{b{AIh}}}AIh}{{{b{AIj}}}AIj}{{{b{AIl}}}AIl}{{{b{AIn}}}AIn}{{{b{AJ`}}}AJ`}{{{b{AJb}}}AJb}{{{b{AJd}}}AJd}{{{b{AJf}}}AJf}{{{b{AJh}}}AJh}{{{b{AJj}}}AJj}{{{b{AJl}}}AJl}{{{b{AJn}}}AJn}{{{b{AK`}}}AK`}{{{b{AKb}}}AKb}{{{b{AKd}}}AKd}{{{b{AKf}}}AKf}{{{b{AKh}}}AKh}{{{b{AKj}}}AKj}{{{b{AKl}}}AKl}{{{b{AKn}}}AKn}{{{b{AL`}}}AL`}{{{b{ALb}}}ALb}{{{b{ALd}}}ALd}{{{b{ALf}}}ALf}{{{b{ALh}}}ALh}{{{b{ALj}}}ALj}{{{b{ALl}}}ALl}{{{b{ALn}}}ALn}{{{b{AM`}}}AM`}{{{b{AMb}}}AMb}{{{b{AMd}}}AMd}{{{b{AMf}}}AMf}{{{b{AMh}}}AMh}{{{b{AMj}}}AMj}{{{b{AMl}}}AMl}{{{b{AMn}}}AMn}{{{b{AN`}}}AN`}{{{b{ANb}}}ANb}{{{b{ANd}}}ANd}{{{b{ANf}}}ANf}{{{b{ANh}}}ANh}{{{b{ANj}}}ANj}{{{b{ANl}}}ANl}{{{b{ANn}}}ANn}{{{b{AO`}}}AO`}{{{b{AOb}}}AOb}{{{b{AOd}}}AOd}{{{b{AOf}}}AOf}{{{b{AOh}}}AOh}{{{b{AOj}}}AOj}{{{b{AOl}}}AOl}{{{b{AOn}}}AOn}{{{b{B@`}}}B@`}{{{b{B@b}}}B@b}{{{b{B@d}}}B@d}{{{b{B@f}}}B@f}{{{b{B@h}}}B@h}{{{b{B@j}}}B@j}{{{b{B@l}}}B@l}{{{b{B@n}}}B@n}{{{b{BA`}}}BA`}{{{b{BAb}}}BAb}{{{b{BAd}}}BAd}{{{b{BAf}}}BAf}{{{b{BAh}}}BAh}{{{b{BAj}}}BAj}{{{b{BAl}}}BAl}{{{b{BAn}}}BAn}{{{b{BB`}}}BB`}{{{b{BBb}}}BBb}{{{b{BBd}}}BBd}{{{b{BBf}}}BBf}{{{b{BBh}}}BBh}{{{b{BBj}}}BBj}{{{b{BBl}}}BBl}{{{b{BBn}}}BBn}{{{b{BC`}}}BC`}{{{b{BCb}}}BCb}{{{b{BCd}}}BCd}{{{b{BCf}}}BCf}{{{b{BCh}}}BCh}{{{b{BCj}}}BCj}{{{b{BCl}}}BCl}{{{b{BCn}}}BCn}{{{b{BD`}}}BD`}{{{b{BDb}}}BDb}{{{b{BDd}}}BDd}{{{b{BDf}}}BDf}{{{b{BDh}}}BDh}{{{b{BDj}}}BDj}{{{b{BDl}}}BDl}{{{b{BDn}}}BDn}{{{b{BE`}}}BE`}{{{b{BEb}}}BEb}{{{b{BEd}}}BEd}{{{b{BEf}}}BEf}{{{b{BEh}}}BEh}{{{b{BEj}}}BEj}{{{b{BEl}}}BEl}{{{b{BEn}}}BEn}{{{b{BF`}}}BF`}{{{b{BFb}}}BFb}{{{b{BFd}}}BFd}{{{b{BFf}}}BFf}{{{b{BFh}}}BFh}{{{b{BFj}}}BFj}{{{b{BFl}}}BFl}{{{b{BFn}}}BFn}{{{b{BG`}}}BG`}{{{b{BGb}}}BGb}{{{b{BGd}}}BGd}{{{b{BGf}}}BGf}{{{b{BGh}}}BGh}{{{b{BGj}}}BGj}{{{b{BGl}}}BGl}{{{b{BGn}}}BGn}{{{b{BH`}}}BH`}{{{b{BHb}}}BHb}{{{b{BHd}}}BHd}{{{b{BHf}}}BHf}{{{b{BHh}}}BHh}{{{b{BHj}}}BHj}{{{b{BHl}}}BHl}{{{b{BHn}}}BHn}{{{b{BI`}}}BI`}{{{b{BIb}}}BIb}{{{b{BId}}}BId}{{{b{BIf}}}BIf}{{{b{BIh}}}BIh}{{{b{BIj}}}BIj}{{{b{BIl}}}BIl}{{{b{BIn}}}BIn}{{{b{BJ`}}}BJ`}{{{b{BJb}}}BJb}{{{b{BJd}}}BJd}{{{b{BJf}}}BJf}{{{b{BJh}}}BJh}{{{b{BJj}}}BJj}{{{b{BJl}}}BJl}{{{b{BJn}}}BJn}{{{b{BK`}}}BK`}{{{b{BKb}}}BKb}{{{b{BKd}}}BKd}{{{b{BKf}}}BKf}{{{b{BKh}}}BKh}{{{b{BKj}}}BKj}{{{b{BKl}}}BKl}{{{b{BKn}}}BKn}{{{b{BL`}}}BL`}{{{b{BLb}}}BLb}{{{b{BLd}}}BLd}{{{b{BLf}}}BLf}{{{b{BLh}}}BLh}{{{b{BLj}}}BLj}{{{b{BLl}}}BLl}{{{b{BLn}}}BLn}{{{b{BM`}}}BM`}{{{b{BMb}}}BMb}{{{b{BMd}}}BMd}{{{b{BMf}}}BMf}{{{b{BMh}}}BMh}{{{b{BMj}}}BMj}{{{b{BMl}}}BMl}{{{b{BMn}}}BMn}{{{b{BN`}}}BN`}{{{b{BNb}}}BNb}{{{b{BNd}}}BNd}{{{b{BNf}}}BNf}{{{b{BNh}}}BNh}{{{b{BNj}}}BNj}{{{b{BNl}}}BNl}{{{b{BNn}}}BNn}{{{b{BO`}}}BO`}{{{b{BOb}}}BOb}{{{b{Dl}}}Dl}{{{b{BOd}}}BOd}{{{b{BOf}}}BOf}{{{b{BOh}}}BOh}{{{b{BOj}}}BOj}{{{b{BOl}}}BOl}{{{b{BOn}}}BOn}{{{b{C@`}}}C@`}{{{b{C@b}}}C@b}{{{b{C@d}}}C@d}{{{b{C@f}}}C@f}{{{b{C@h}}}C@h}{{{b{C@j}}}C@j}{{{b{C@l}}}C@l}{{{b{C@n}}}C@n}{{{b{Dn}}}Dn}{{{b{CA`}}}CA`}{{{b{CAb}}}CAb}{{{b{CAd}}}CAd}{{{b{CAf}}}CAf}{{{b{CAh}}}CAh}{{{b{CAj}}}CAj}{{{b{CAl}}}CAl}{{{b{E`}}}E`}{{{b{CAn}}}CAn}{{{b{Eb}}}Eb}{{{b{CB`}}}CB`}{{{b{CBb}}}CBb}{{{b{CBd}}}CBd}{{{b{Ed}}}Ed}{{{b{Ef}}}Ef}{{{b{CBf}}}CBf}{{{b{CBh}}}CBh}{{{b{Eh}}}Eh}{{{b{Ej}}}Ej}{{{b{CBj}}}CBj}{{{b{CBl}}}CBl}{{{b{El}}}El}{{{b{CBn}}}CBn}{{{b{CC`}}}CC`}{{{b{CCb}}}CCb}{{{b{En}}}En}{{{b{CCd}}}CCd}{{{b{CCf}}}CCf}{{{b{CCh}}}CCh}{{{b{CCj}}}CCj}{{{b{CCl}}}CCl}{{{b{CCn}}}CCn}{{{b{CD`}}}CD`}{{{b{CDb}}}CDb}{{{b{CDd}}}CDd}{{{b{CDf}}}CDf}{{{b{CDh}}}CDh}{{{b{CDj}}}CDj}{{{b{CDl}}}CDl}{{{b{CDn}}}CDn}{{{b{CE`}}}CE`}{{{b{CEb}}}CEb}{{{b{CEd}}}CEd}{{{b{F`}}}F`}{{{b{CEf}}}CEf}{{{b{Fb}}}Fb}{{{b{CEh}}}CEh}{{{b{CEj}}}CEj}{{{b{CEl}}}CEl}{{{b{CEn}}}CEn}{{{b{CF`}}}CF`}{{{b{CFb}}}CFb}{{{b{Fd}}}Fd}{{{b{CFd}}}CFd}{{{b{CFf}}}CFf}{{{b{CFh}}}CFh}{{{b{CFj}}}CFj}{{{b{Ff}}}Ff}{{{b{CFl}}}CFl}{{{b{CFn}}}CFn}{{{b{CG`}}}CG`}{{{b{Fh}}}Fh}{{{b{CGb}}}CGb}{{{b{Fj}}}Fj}{{{b{Fl}}}Fl}{{{b{Fn}}}Fn}{{{b{CGd}}}CGd}{{{b{CGf}}}CGf}{{{b{CGh}}}CGh}{{{b{CGj}}}CGj}{{{b{CGl}}}CGl}{{{b{CGn}}}CGn}{{{b{CH`}}}CH`}{{{b{G`}}}G`}{{{b{CHb}}}CHb}{{{b{CHd}}}CHd}{{{b{Gb}}}Gb}{{{b{Gd}}}Gd}{{{b{CHf}}}CHf}{{{b{CHh}}}CHh}{{{b{CHj}}}CHj}{{{b{CHl}}}CHl}{{{b{CHn}}}CHn}{{{b{CI`}}}CI`}{{{b{CIb}}}CIb}{{{b{CId}}}CId}{{{b{CIf}}}CIf}{{{b{CIh}}}CIh}{{{b{CIj}}}CIj}{{{b{CIl}}}CIl}{{{b{CIn}}}CIn}{{{b{CJ`}}}CJ`}{{{b{CJb}}}CJb}{{{b{Gf}}}Gf}{{{b{CJd}}}CJd}{{{b{CJf}}}CJf}{{{b{CJh}}}CJh}{{{b{CJj}}}CJj}{{{b{CJl}}}CJl}{{{b{CJn}}}CJn}{{{b{CK`}}}CK`}{{{b{CKb}}}CKb}{{{b{Gh}}}Gh}{{{b{CKd}}}CKd}{{{b{CKf}}}CKf}{{{b{CKh}}}CKh}{{{b{CKj}}}CKj}{{{b{CKl}}}CKl}{{{b{Gj}}}Gj}{{{b{CKn}}}CKn}{{{b{CL`}}}CL`}{{{b{CLb}}}CLb}{{{b{CLd}}}CLd}{{{b{CLf}}}CLf}{{{b{CLh}}}CLh}{{{b{CLj}}}CLj}{{{b{CLl}}}CLl}{{{b{CLn}}}CLn}{{{b{Gl}}}Gl}{{{b{CM`}}}CM`}{{{b{Gn}}}Gn}{{{b{CMb}}}CMb}{{{b{CMd}}}CMd}{{{b{CMf}}}CMf}{{{b{CMh}}}CMh}{{{b{CMj}}}CMj}{{{b{CMl}}}CMl}{{{b{CMn}}}CMn}{{{b{CN`}}}CN`}{{{b{H`}}}H`}{{{b{CNb}}}CNb}{{{b{CNd}}}CNd}{{{b{CNf}}}CNf}{{{b{CNh}}}CNh}{{{b{CNj}}}CNj}{{{b{CNl}}}CNl}{{{b{CNn}}}CNn}{{{b{CO`}}}CO`}{{{b{Hb}}}Hb}{{{b{COb}}}COb}{{{b{COd}}}COd}{{{b{COf}}}COf}{{{b{COh}}}COh}{{{b{COj}}}COj}{{{b{Hd}}}Hd}{{{b{COl}}}COl}{{{b{COn}}}COn}{{{b{Hf}}}Hf}{{{b{D@`}}}D@`}{{{b{D@b}}}D@b}{{{b{D@d}}}D@d}{{{b{D@f}}}D@f}{{{b{D@h}}}D@h}{{{b{D@j}}}D@j}{{{b{D@l}}}D@l}{{{b{Hh}}}Hh}{{{b{Hj}}}Hj}{{{b{D@n}}}D@n}{{{b{DA`}}}DA`}{{{b{DAb}}}DAb}{{{b{DAd}}}DAd}{{{b{DAf}}}DAf}{{{b{DAh}}}DAh}{{{b{DAj}}}DAj}{{{b{DAl}}}DAl}{{{b{DAn}}}DAn}{{{b{DB`}}}DB`}{{{b{c}}{b{de}}}Aj{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000````{{{b{Dl}}{b{Dl}}}DBb}{{{b{Dn}}{b{Dn}}}DBb}{{{b{E`}}{b{E`}}}DBb}{{{b{Eb}}{b{Eb}}}DBb}{{{b{Ed}}{b{Ed}}}DBb}{{{b{Ef}}{b{Ef}}}DBb}{{{b{Eh}}{b{Eh}}}DBb}{{{b{Ej}}{b{Ej}}}DBb}{{{b{El}}{b{El}}}DBb}{{{b{En}}{b{En}}}DBb}{{{b{F`}}{b{F`}}}DBb}{{{b{Fb}}{b{Fb}}}DBb}{{{b{Fd}}{b{Fd}}}DBb}{{{b{Ff}}{b{Ff}}}DBb}{{{b{Fh}}{b{Fh}}}DBb}{{{b{Fj}}{b{Fj}}}DBb}{{{b{Fl}}{b{Fl}}}DBb}{{{b{Fn}}{b{Fn}}}DBb}{{{b{G`}}{b{G`}}}DBb}{{{b{Gb}}{b{Gb}}}DBb}{{{b{Gd}}{b{Gd}}}DBb}{{{b{Gf}}{b{Gf}}}DBb}{{{b{Gh}}{b{Gh}}}DBb}{{{b{Gj}}{b{Gj}}}DBb}{{{b{Gl}}{b{Gl}}}DBb}{{{b{Gn}}{b{Gn}}}DBb}{{{b{H`}}{b{H`}}}DBb}{{{b{Hb}}{b{Hb}}}DBb}{{{b{Hd}}{b{Hd}}}DBb}{{{b{Hf}}{b{Hf}}}DBb}{{{b{Hh}}{b{Hh}}}DBb}{{{b{Hj}}{b{Hj}}}DBb}````````````````{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}{HhHh}{HjHj}```````{{{b{Dl}}Dl}C`}{{{b{Dn}}Dn}C`}{{{b{E`}}E`}C`}{{{b{Eb}}Eb}C`}{{{b{Ed}}Ed}C`}{{{b{Ef}}Ef}C`}{{{b{Eh}}Eh}C`}{{{b{Ej}}Ej}C`}{{{b{El}}El}C`}{{{b{En}}En}C`}{{{b{F`}}F`}C`}{{{b{Fb}}Fb}C`}{{{b{Fd}}Fd}C`}{{{b{Ff}}Ff}C`}{{{b{Fh}}Fh}C`}{{{b{Fj}}Fj}C`}{{{b{Fl}}Fl}C`}{{{b{Fn}}Fn}C`}{{{b{G`}}G`}C`}{{{b{Gb}}Gb}C`}{{{b{Gd}}Gd}C`}{{{b{Gf}}Gf}C`}{{{b{Gh}}Gh}C`}{{{b{Gj}}Gj}C`}{{{b{Gl}}Gl}C`}{{{b{Gn}}Gn}C`}{{{b{H`}}H`}C`}{{{b{Hb}}Hb}C`}{{{b{Hd}}Hd}C`}{{{b{Hf}}Hf}C`}{{{b{Hh}}Hh}C`}{{{b{Hj}}Hj}C`}````````````````````````````````````````````````````````````````````````````````{{}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}{{}BO`}{{}BOb}{{}Dl}{{}BOd}{{}BOf}{{}BOh}{{}BOj}{{}BOl}{{}BOn}{{}C@`}{{}C@b}{{}C@d}{{}C@f}{{}C@h}{{}C@j}{{}C@l}{{}C@n}{{}Dn}{{}CA`}{{}CAb}{{}CAd}{{}CAf}{{}CAh}{{}CAj}{{}CAl}{{}E`}{{}CAn}{{}Eb}{{}CB`}{{}CBb}{{}CBd}{{}Ed}{{}Ef}{{}CBf}{{}CBh}{{}Eh}{{}Ej}{{}CBj}{{}CBl}{{}El}{{}CBn}{{}CC`}{{}CCb}{{}En}{{}CCd}{{}CCf}{{}CCh}{{}CCj}{{}CCl}{{}CCn}{{}CD`}{{}CDb}{{}CDd}{{}CDf}{{}CDh}{{}CDj}{{}CDl}{{}CDn}{{}CE`}{{}CEb}{{}CEd}{{}F`}{{}CEf}{{}Fb}{{}CEh}{{}CEj}{{}CEl}{{}CEn}{{}CF`}{{}CFb}{{}Fd}{{}CFd}{{}CFf}{{}CFh}{{}CFj}{{}Ff}{{}CFl}{{}CFn}{{}CG`}{{}Fh}{{}CGb}{{}Fj}{{}Fl}{{}Fn}{{}CGd}{{}CGf}{{}CGh}{{}CGj}{{}CGl}{{}CGn}{{}CH`}{{}G`}{{}CHb}{{}CHd}{{}Gb}{{}Gd}{{}CHf}{{}CHh}{{}CHj}{{}CHl}{{}CHn}{{}CI`}{{}CIb}{{}CId}{{}CIf}{{}CIh}{{}CIj}{{}CIl}{{}CIn}{{}CJ`}{{}CJb}{{}Gf}{{}CJd}{{}CJf}{{}CJh}{{}CJj}{{}CJl}{{}CJn}{{}CK`}{{}CKb}{{}Gh}{{}CKd}{{}CKf}{{}CKh}{{}CKj}{{}CKl}{{}Gj}{{}CKn}{{}CL`}{{}CLb}{{}CLd}{{}CLf}{{}CLh}{{}CLj}{{}CLl}{{}CLn}{{}Gl}{{}CM`}{{}Gn}{{}CMb}{{}CMd}{{}CMf}{{}CMh}{{}CMj}{{}CMl}{{}CMn}{{}CN`}{{}H`}{{}CNb}{{}CNd}{{}CNf}{{}CNh}{{}CNj}{{}CNl}{{}CNn}{{}CO`}{{}Hb}{{}COb}{{}COd}{{}COf}{{}COh}{{}COj}{{}Hd}{{}COl}{{}COn}{{}Hf}{{}D@`}{{}D@b}{{}D@d}{{}D@f}{{}D@h}{{}D@j}{{}D@l}{{}Hh}{{}Hj}{{}D@n}{{}DA`}{{}DAb}{{}DAd}{{}DAf}{{}DAh}{{}DAj}{{}DAl}{{}DAn}{{}DB`}{Bf{{Bd{Hn{b{Al}}}}}}`````````````{{Ab{b{{h{f}}}}}{{Bd{I`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{IbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{IdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{IfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{IhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{IjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{IlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{InBl}}}}{{Ab{b{{h{f}}}}}{{Bd{J`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{JbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{JdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{JfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{JhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{JjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{JlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{JnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{K`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{KbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{KdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{KfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{KhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{KjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{KlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{KnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{L`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{LbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{LdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{LfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{LhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{LjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{LlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{LnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{M`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{MbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{MdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{MfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{MhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{MjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{MlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{MnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{N`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{NbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{NdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{NfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{NhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{NjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{NlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{NnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{O`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ObBl}}}}{{Ab{b{{h{f}}}}}{{Bd{OdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{OfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{OhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{OjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{OlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{OnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@bBl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@dBl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@fBl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@hBl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@jBl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@lBl}}}}{{Ab{b{{h{f}}}}}{{Bd{A@nBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AA`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AAbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AAdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AAfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AAhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AAjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AAlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AAnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AB`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ABbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ABdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ABfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ABhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ABjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ABlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ABnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AC`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ACbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ACdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ACfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AChBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ACjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AClBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ACnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AD`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ADbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ADdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ADfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ADhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ADjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ADlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ADnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AE`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AEbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AEdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AEfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AEhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AEjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AElBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AEnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AF`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AFbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AFdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AFfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AFhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AFjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AFlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AFnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AG`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AGbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AGdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AGfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AGhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AGjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AGlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AGnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AH`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AHbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AHdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AHfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AHhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AHjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AHlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AHnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AI`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AIbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AIdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AIfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AIhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AIjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AIlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AInBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJ`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AJnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AK`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AKbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AKdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AKfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AKhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AKjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AKlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AKnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AL`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ALbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ALdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ALfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ALhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ALjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ALlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ALnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AM`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AMbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AMdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AMfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AMhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AMjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AMlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AMnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AN`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ANbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ANdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ANfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ANhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ANjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ANlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ANnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AO`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{AObBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AOdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AOfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AOhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AOjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AOlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{AOnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@bBl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@dBl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@fBl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@hBl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@jBl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@lBl}}}}{{Ab{b{{h{f}}}}}{{Bd{B@nBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BA`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BAbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BAdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BAfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BAhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BAjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BAlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BAnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BB`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BBbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BBdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BBfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BBhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BBjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BBlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BBnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BC`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BCbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BCdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BCfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BChBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BCjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BClBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BCnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BD`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BDbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BDdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BDfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BDhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BDjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BDlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BDnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BE`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BEbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BEdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BEfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BEhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BEjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BElBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BEnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BF`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BFbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BFdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BFfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BFhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BFjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BFlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BFnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BG`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BGbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BGdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BGfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BGhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BGjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BGlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BGnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BH`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BHbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BHdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BHfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BHhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BHjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BHlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BHnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BI`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BIbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BIdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BIfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BIhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BIjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BIlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BInBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJ`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BJnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BK`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BKbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BKdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BKfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BKhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BKjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BKlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BKnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BL`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BLbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BLdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BLfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BLhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BLjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BLlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BLnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BM`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{BMbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BMdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BMfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BMhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BMjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BMlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{BMnBl}}}}{c{{Bd{Hn}}}Bn}{c{{Bd{I`}}}Bn}{c{{Bd{Ib}}}Bn}{c{{Bd{Id}}}Bn}{c{{Bd{If}}}Bn}{c{{Bd{Ih}}}Bn}{c{{Bd{Ij}}}Bn}{c{{Bd{Il}}}Bn}{c{{Bd{In}}}Bn}{c{{Bd{J`}}}Bn}{c{{Bd{Jb}}}Bn}{c{{Bd{Jd}}}Bn}{c{{Bd{Jf}}}Bn}{c{{Bd{Jh}}}Bn}{c{{Bd{Jj}}}Bn}{c{{Bd{Jl}}}Bn}{c{{Bd{Jn}}}Bn}{c{{Bd{K`}}}Bn}{c{{Bd{Kb}}}Bn}{c{{Bd{Kd}}}Bn}{c{{Bd{Kf}}}Bn}{c{{Bd{Kh}}}Bn}{c{{Bd{Kj}}}Bn}{c{{Bd{Kl}}}Bn}{c{{Bd{Kn}}}Bn}{c{{Bd{L`}}}Bn}{c{{Bd{Lb}}}Bn}{c{{Bd{Ld}}}Bn}{c{{Bd{Lf}}}Bn}{c{{Bd{Lh}}}Bn}{c{{Bd{Lj}}}Bn}{c{{Bd{Ll}}}Bn}{c{{Bd{Ln}}}Bn}{c{{Bd{M`}}}Bn}{c{{Bd{Mb}}}Bn}{c{{Bd{Md}}}Bn}{c{{Bd{Mf}}}Bn}{c{{Bd{Mh}}}Bn}{c{{Bd{Mj}}}Bn}{c{{Bd{Ml}}}Bn}{c{{Bd{Mn}}}Bn}{c{{Bd{N`}}}Bn}{c{{Bd{Nb}}}Bn}{c{{Bd{Nd}}}Bn}{c{{Bd{Nf}}}Bn}{c{{Bd{Nh}}}Bn}{c{{Bd{Nj}}}Bn}{c{{Bd{Nl}}}Bn}{c{{Bd{Nn}}}Bn}{c{{Bd{O`}}}Bn}{c{{Bd{Ob}}}Bn}{c{{Bd{Od}}}Bn}{c{{Bd{Of}}}Bn}{c{{Bd{Oh}}}Bn}{c{{Bd{Oj}}}Bn}{c{{Bd{Ol}}}Bn}{c{{Bd{On}}}Bn}{c{{Bd{A@`}}}Bn}{c{{Bd{A@b}}}Bn}{c{{Bd{A@d}}}Bn}{c{{Bd{A@f}}}Bn}{c{{Bd{A@h}}}Bn}{c{{Bd{A@j}}}Bn}{c{{Bd{A@l}}}Bn}{c{{Bd{A@n}}}Bn}{c{{Bd{AA`}}}Bn}{c{{Bd{AAb}}}Bn}{c{{Bd{AAd}}}Bn}{c{{Bd{AAf}}}Bn}{c{{Bd{AAh}}}Bn}{c{{Bd{AAj}}}Bn}{c{{Bd{AAl}}}Bn}{c{{Bd{AAn}}}Bn}{c{{Bd{AB`}}}Bn}{c{{Bd{ABb}}}Bn}{c{{Bd{ABd}}}Bn}{c{{Bd{ABf}}}Bn}{c{{Bd{ABh}}}Bn}{c{{Bd{ABj}}}Bn}{c{{Bd{ABl}}}Bn}{c{{Bd{ABn}}}Bn}{c{{Bd{AC`}}}Bn}{c{{Bd{ACb}}}Bn}{c{{Bd{ACd}}}Bn}{c{{Bd{ACf}}}Bn}{c{{Bd{ACh}}}Bn}{c{{Bd{ACj}}}Bn}{c{{Bd{ACl}}}Bn}{c{{Bd{ACn}}}Bn}{c{{Bd{AD`}}}Bn}{c{{Bd{ADb}}}Bn}{c{{Bd{ADd}}}Bn}{c{{Bd{ADf}}}Bn}{c{{Bd{ADh}}}Bn}{c{{Bd{ADj}}}Bn}{c{{Bd{ADl}}}Bn}{c{{Bd{ADn}}}Bn}{c{{Bd{AE`}}}Bn}{c{{Bd{AEb}}}Bn}{c{{Bd{AEd}}}Bn}{c{{Bd{AEf}}}Bn}{c{{Bd{AEh}}}Bn}{c{{Bd{AEj}}}Bn}{c{{Bd{AEl}}}Bn}{c{{Bd{AEn}}}Bn}{c{{Bd{AF`}}}Bn}{c{{Bd{AFb}}}Bn}{c{{Bd{AFd}}}Bn}{c{{Bd{AFf}}}Bn}{c{{Bd{AFh}}}Bn}{c{{Bd{AFj}}}Bn}{c{{Bd{AFl}}}Bn}{c{{Bd{AFn}}}Bn}{c{{Bd{AG`}}}Bn}{c{{Bd{AGb}}}Bn}{c{{Bd{AGd}}}Bn}{c{{Bd{AGf}}}Bn}{c{{Bd{AGh}}}Bn}{c{{Bd{AGj}}}Bn}{c{{Bd{AGl}}}Bn}{c{{Bd{AGn}}}Bn}{c{{Bd{AH`}}}Bn}{c{{Bd{AHb}}}Bn}{c{{Bd{AHd}}}Bn}{c{{Bd{AHf}}}Bn}{c{{Bd{AHh}}}Bn}{c{{Bd{AHj}}}Bn}{c{{Bd{AHl}}}Bn}{c{{Bd{AHn}}}Bn}{c{{Bd{AI`}}}Bn}{c{{Bd{AIb}}}Bn}{c{{Bd{AId}}}Bn}{c{{Bd{AIf}}}Bn}{c{{Bd{AIh}}}Bn}{c{{Bd{AIj}}}Bn}{c{{Bd{AIl}}}Bn}{c{{Bd{AIn}}}Bn}{c{{Bd{AJ`}}}Bn}{c{{Bd{AJb}}}Bn}{c{{Bd{AJd}}}Bn}{c{{Bd{AJf}}}Bn}{c{{Bd{AJh}}}Bn}{c{{Bd{AJj}}}Bn}{c{{Bd{AJl}}}Bn}{c{{Bd{AJn}}}Bn}{c{{Bd{AK`}}}Bn}{c{{Bd{AKb}}}Bn}{c{{Bd{AKd}}}Bn}{c{{Bd{AKf}}}Bn}{c{{Bd{AKh}}}Bn}{c{{Bd{AKj}}}Bn}{c{{Bd{AKl}}}Bn}{c{{Bd{AKn}}}Bn}{c{{Bd{AL`}}}Bn}{c{{Bd{ALb}}}Bn}{c{{Bd{ALd}}}Bn}{c{{Bd{ALf}}}Bn}{c{{Bd{ALh}}}Bn}{c{{Bd{ALj}}}Bn}{c{{Bd{ALl}}}Bn}{c{{Bd{ALn}}}Bn}{c{{Bd{AM`}}}Bn}{c{{Bd{AMb}}}Bn}{c{{Bd{AMd}}}Bn}{c{{Bd{AMf}}}Bn}{c{{Bd{AMh}}}Bn}{c{{Bd{AMj}}}Bn}{c{{Bd{AMl}}}Bn}{c{{Bd{AMn}}}Bn}{c{{Bd{AN`}}}Bn}{c{{Bd{ANb}}}Bn}{c{{Bd{ANd}}}Bn}{c{{Bd{ANf}}}Bn}{c{{Bd{ANh}}}Bn}{c{{Bd{ANj}}}Bn}{c{{Bd{ANl}}}Bn}{c{{Bd{ANn}}}Bn}{c{{Bd{AO`}}}Bn}{c{{Bd{AOb}}}Bn}{c{{Bd{AOd}}}Bn}{c{{Bd{AOf}}}Bn}{c{{Bd{AOh}}}Bn}{c{{Bd{AOj}}}Bn}{c{{Bd{AOl}}}Bn}{c{{Bd{AOn}}}Bn}{c{{Bd{B@`}}}Bn}{c{{Bd{B@b}}}Bn}{c{{Bd{B@d}}}Bn}{c{{Bd{B@f}}}Bn}{c{{Bd{B@h}}}Bn}{c{{Bd{B@j}}}Bn}{c{{Bd{B@l}}}Bn}{c{{Bd{B@n}}}Bn}{c{{Bd{BA`}}}Bn}{c{{Bd{BAb}}}Bn}{c{{Bd{BAd}}}Bn}{c{{Bd{BAf}}}Bn}{c{{Bd{BAh}}}Bn}{c{{Bd{BAj}}}Bn}{c{{Bd{BAl}}}Bn}{c{{Bd{BAn}}}Bn}{c{{Bd{BB`}}}Bn}{c{{Bd{BBb}}}Bn}{c{{Bd{BBd}}}Bn}{c{{Bd{BBf}}}Bn}{c{{Bd{BBh}}}Bn}{c{{Bd{BBj}}}Bn}{c{{Bd{BBl}}}Bn}{c{{Bd{BBn}}}Bn}{c{{Bd{BC`}}}Bn}{c{{Bd{BCb}}}Bn}{c{{Bd{BCd}}}Bn}{c{{Bd{BCf}}}Bn}{c{{Bd{BCh}}}Bn}{c{{Bd{BCj}}}Bn}{c{{Bd{BCl}}}Bn}{c{{Bd{BCn}}}Bn}{c{{Bd{BD`}}}Bn}{c{{Bd{BDb}}}Bn}{c{{Bd{BDd}}}Bn}{c{{Bd{BDf}}}Bn}{c{{Bd{BDh}}}Bn}{c{{Bd{BDj}}}Bn}{c{{Bd{BDl}}}Bn}{c{{Bd{BDn}}}Bn}{c{{Bd{BE`}}}Bn}{c{{Bd{BEb}}}Bn}{c{{Bd{BEd}}}Bn}{c{{Bd{BEf}}}Bn}{c{{Bd{BEh}}}Bn}{c{{Bd{BEj}}}Bn}{c{{Bd{BEl}}}Bn}{c{{Bd{BEn}}}Bn}{c{{Bd{BF`}}}Bn}{c{{Bd{BFb}}}Bn}{c{{Bd{BFd}}}Bn}{c{{Bd{BFf}}}Bn}{c{{Bd{BFh}}}Bn}{c{{Bd{BFj}}}Bn}{c{{Bd{BFl}}}Bn}{c{{Bd{BFn}}}Bn}{c{{Bd{BG`}}}Bn}{c{{Bd{BGb}}}Bn}{c{{Bd{BGd}}}Bn}{c{{Bd{BGf}}}Bn}{c{{Bd{BGh}}}Bn}{c{{Bd{BGj}}}Bn}{c{{Bd{BGl}}}Bn}{c{{Bd{BGn}}}Bn}{c{{Bd{BH`}}}Bn}{c{{Bd{BHb}}}Bn}{c{{Bd{BHd}}}Bn}{c{{Bd{BHf}}}Bn}{c{{Bd{BHh}}}Bn}{c{{Bd{BHj}}}Bn}{c{{Bd{BHl}}}Bn}{c{{Bd{BHn}}}Bn}{c{{Bd{BI`}}}Bn}{c{{Bd{BIb}}}Bn}{c{{Bd{BId}}}Bn}{c{{Bd{BIf}}}Bn}{c{{Bd{BIh}}}Bn}{c{{Bd{BIj}}}Bn}{c{{Bd{BIl}}}Bn}{c{{Bd{BIn}}}Bn}{c{{Bd{BJ`}}}Bn}{c{{Bd{BJb}}}Bn}{c{{Bd{BJd}}}Bn}{c{{Bd{BJf}}}Bn}{c{{Bd{BJh}}}Bn}{c{{Bd{BJj}}}Bn}{c{{Bd{BJl}}}Bn}{c{{Bd{BJn}}}Bn}{c{{Bd{BK`}}}Bn}{c{{Bd{BKb}}}Bn}{c{{Bd{BKd}}}Bn}{c{{Bd{BKf}}}Bn}{c{{Bd{BKh}}}Bn}{c{{Bd{BKj}}}Bn}{c{{Bd{BKl}}}Bn}{c{{Bd{BKn}}}Bn}{c{{Bd{BL`}}}Bn}{c{{Bd{BLb}}}Bn}{c{{Bd{BLd}}}Bn}{c{{Bd{BLf}}}Bn}{c{{Bd{BLh}}}Bn}{c{{Bd{BLj}}}Bn}{c{{Bd{BLl}}}Bn}{c{{Bd{BLn}}}Bn}{c{{Bd{BM`}}}Bn}{c{{Bd{BMb}}}Bn}{c{{Bd{BMd}}}Bn}{c{{Bd{BMf}}}Bn}{c{{Bd{BMh}}}Bn}{c{{Bd{BMj}}}Bn}{c{{Bd{BMl}}}Bn}{c{{Bd{BMn}}}Bn}{c{{Bd{BN`}}}Bn}{c{{Bd{BNb}}}Bn}{c{{Bd{BNd}}}Bn}{c{{Bd{BNf}}}Bn}{c{{Bd{BNh}}}Bn}{c{{Bd{BNj}}}Bn}{c{{Bd{BNl}}}Bn}{c{{Bd{BNn}}}Bn}{c{{Bd{BO`}}}Bn}{c{{Bd{BOb}}}Bn}{c{{Bd{Dl}}}Bn}{c{{Bd{BOd}}}Bn}{c{{Bd{BOf}}}Bn}{c{{Bd{BOh}}}Bn}{c{{Bd{BOj}}}Bn}{c{{Bd{BOl}}}Bn}{c{{Bd{BOn}}}Bn}{c{{Bd{C@`}}}Bn}{c{{Bd{C@b}}}Bn}{c{{Bd{C@d}}}Bn}{c{{Bd{C@f}}}Bn}{c{{Bd{C@h}}}Bn}{c{{Bd{C@j}}}Bn}{c{{Bd{C@l}}}Bn}{c{{Bd{C@n}}}Bn}{c{{Bd{Dn}}}Bn}{c{{Bd{CA`}}}Bn}{c{{Bd{CAb}}}Bn}{c{{Bd{CAd}}}Bn}{c{{Bd{CAf}}}Bn}{c{{Bd{CAh}}}Bn}{c{{Bd{CAj}}}Bn}{c{{Bd{CAl}}}Bn}{c{{Bd{E`}}}Bn}{c{{Bd{CAn}}}Bn}{c{{Bd{Eb}}}Bn}{c{{Bd{CB`}}}Bn}{c{{Bd{CBb}}}Bn}{c{{Bd{CBd}}}Bn}{c{{Bd{Ed}}}Bn}{c{{Bd{Ef}}}Bn}{c{{Bd{CBf}}}Bn}{c{{Bd{CBh}}}Bn}{c{{Bd{Eh}}}Bn}{c{{Bd{Ej}}}Bn}{c{{Bd{CBj}}}Bn}{c{{Bd{CBl}}}Bn}{c{{Bd{El}}}Bn}{c{{Bd{CBn}}}Bn}{c{{Bd{CC`}}}Bn}{c{{Bd{CCb}}}Bn}{c{{Bd{En}}}Bn}{c{{Bd{CCd}}}Bn}{c{{Bd{CCf}}}Bn}{c{{Bd{CCh}}}Bn}{c{{Bd{CCj}}}Bn}{c{{Bd{CCl}}}Bn}{c{{Bd{CCn}}}Bn}{c{{Bd{CD`}}}Bn}{c{{Bd{CDb}}}Bn}{c{{Bd{CDd}}}Bn}{c{{Bd{CDf}}}Bn}{c{{Bd{CDh}}}Bn}{c{{Bd{CDj}}}Bn}{c{{Bd{CDl}}}Bn}{c{{Bd{CDn}}}Bn}{c{{Bd{CE`}}}Bn}{c{{Bd{CEb}}}Bn}{c{{Bd{CEd}}}Bn}{c{{Bd{F`}}}Bn}{c{{Bd{CEf}}}Bn}{c{{Bd{Fb}}}Bn}{c{{Bd{CEh}}}Bn}{c{{Bd{CEj}}}Bn}{c{{Bd{CEl}}}Bn}{c{{Bd{CEn}}}Bn}{c{{Bd{CF`}}}Bn}{c{{Bd{CFb}}}Bn}{c{{Bd{Fd}}}Bn}{c{{Bd{CFd}}}Bn}{c{{Bd{CFf}}}Bn}{c{{Bd{CFh}}}Bn}{c{{Bd{CFj}}}Bn}{c{{Bd{Ff}}}Bn}{c{{Bd{CFl}}}Bn}{c{{Bd{CFn}}}Bn}{c{{Bd{CG`}}}Bn}{c{{Bd{Fh}}}Bn}{c{{Bd{CGb}}}Bn}{c{{Bd{Fj}}}Bn}{c{{Bd{Fl}}}Bn}{c{{Bd{Fn}}}Bn}{c{{Bd{CGd}}}Bn}{c{{Bd{CGf}}}Bn}{c{{Bd{CGh}}}Bn}{c{{Bd{CGj}}}Bn}{c{{Bd{CGl}}}Bn}{c{{Bd{CGn}}}Bn}{c{{Bd{CH`}}}Bn}{c{{Bd{G`}}}Bn}{c{{Bd{CHb}}}Bn}{c{{Bd{CHd}}}Bn}{c{{Bd{Gb}}}Bn}{c{{Bd{Gd}}}Bn}{c{{Bd{CHf}}}Bn}{c{{Bd{CHh}}}Bn}{c{{Bd{CHj}}}Bn}{c{{Bd{CHl}}}Bn}{c{{Bd{CHn}}}Bn}{c{{Bd{CI`}}}Bn}{c{{Bd{CIb}}}Bn}{c{{Bd{CId}}}Bn}{c{{Bd{CIf}}}Bn}{c{{Bd{CIh}}}Bn}{c{{Bd{CIj}}}Bn}{c{{Bd{CIl}}}Bn}{c{{Bd{CIn}}}Bn}{c{{Bd{CJ`}}}Bn}{c{{Bd{CJb}}}Bn}{c{{Bd{Gf}}}Bn}{c{{Bd{CJd}}}Bn}{c{{Bd{CJf}}}Bn}{c{{Bd{CJh}}}Bn}{c{{Bd{CJj}}}Bn}{c{{Bd{CJl}}}Bn}{c{{Bd{CJn}}}Bn}{c{{Bd{CK`}}}Bn}{c{{Bd{CKb}}}Bn}{c{{Bd{Gh}}}Bn}{c{{Bd{CKd}}}Bn}{c{{Bd{CKf}}}Bn}{c{{Bd{CKh}}}Bn}{c{{Bd{CKj}}}Bn}{c{{Bd{CKl}}}Bn}{c{{Bd{Gj}}}Bn}{c{{Bd{CKn}}}Bn}{c{{Bd{CL`}}}Bn}{c{{Bd{CLb}}}Bn}{c{{Bd{CLd}}}Bn}{c{{Bd{CLf}}}Bn}{c{{Bd{CLh}}}Bn}{c{{Bd{CLj}}}Bn}{c{{Bd{CLl}}}Bn}{c{{Bd{CLn}}}Bn}{c{{Bd{Gl}}}Bn}{c{{Bd{CM`}}}Bn}{c{{Bd{Gn}}}Bn}{c{{Bd{CMb}}}Bn}{c{{Bd{CMd}}}Bn}{c{{Bd{CMf}}}Bn}{c{{Bd{CMh}}}Bn}{c{{Bd{CMj}}}Bn}{c{{Bd{CMl}}}Bn}{c{{Bd{CMn}}}Bn}{c{{Bd{CN`}}}Bn}{c{{Bd{H`}}}Bn}{c{{Bd{CNb}}}Bn}{c{{Bd{CNd}}}Bn}{c{{Bd{CNf}}}Bn}{c{{Bd{CNh}}}Bn}{c{{Bd{CNj}}}Bn}{c{{Bd{CNl}}}Bn}{c{{Bd{CNn}}}Bn}{c{{Bd{CO`}}}Bn}{c{{Bd{Hb}}}Bn}{c{{Bd{COb}}}Bn}{c{{Bd{COd}}}Bn}{c{{Bd{COf}}}Bn}{c{{Bd{COh}}}Bn}{c{{Bd{COj}}}Bn}{c{{Bd{Hd}}}Bn}{c{{Bd{COl}}}Bn}{c{{Bd{COn}}}Bn}{c{{Bd{Hf}}}Bn}{c{{Bd{D@`}}}Bn}{c{{Bd{D@b}}}Bn}{c{{Bd{D@d}}}Bn}{c{{Bd{D@f}}}Bn}{c{{Bd{D@h}}}Bn}{c{{Bd{D@j}}}Bn}{c{{Bd{D@l}}}Bn}{c{{Bd{Hh}}}Bn}{c{{Bd{Hj}}}Bn}{c{{Bd{D@n}}}Bn}{c{{Bd{DA`}}}Bn}{c{{Bd{DAb}}}Bn}{c{{Bd{DAd}}}Bn}{c{{Bd{DAf}}}Bn}{c{{Bd{DAh}}}Bn}{c{{Bd{DAj}}}Bn}{c{{Bd{DAl}}}Bn}{c{{Bd{DAn}}}Bn}{c{{Bd{DB`}}}Bn}``````````````{{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}{{HhHh}Hh}{{HjHj}Hj}````````````````````````{{}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}{{}Hh}{{}Hj}````````````````{{{b{Hn}}{b{Hn}}}C`}{{{b{I`}}{b{I`}}}C`}{{{b{Ib}}{b{Ib}}}C`}{{{b{Id}}{b{Id}}}C`}{{{b{If}}{b{If}}}C`}{{{b{Ih}}{b{Ih}}}C`}{{{b{Ij}}{b{Ij}}}C`}{{{b{Il}}{b{Il}}}C`}{{{b{In}}{b{In}}}C`}{{{b{J`}}{b{J`}}}C`}{{{b{Jb}}{b{Jb}}}C`}{{{b{Jd}}{b{Jd}}}C`}{{{b{Jf}}{b{Jf}}}C`}{{{b{Jh}}{b{Jh}}}C`}{{{b{Jj}}{b{Jj}}}C`}{{{b{Jl}}{b{Jl}}}C`}{{{b{Jn}}{b{Jn}}}C`}{{{b{K`}}{b{K`}}}C`}{{{b{Kb}}{b{Kb}}}C`}{{{b{Kd}}{b{Kd}}}C`}{{{b{Kf}}{b{Kf}}}C`}{{{b{Kh}}{b{Kh}}}C`}{{{b{Kj}}{b{Kj}}}C`}{{{b{Kl}}{b{Kl}}}C`}{{{b{Kn}}{b{Kn}}}C`}{{{b{L`}}{b{L`}}}C`}{{{b{Lb}}{b{Lb}}}C`}{{{b{Ld}}{b{Ld}}}C`}{{{b{Lf}}{b{Lf}}}C`}{{{b{Lh}}{b{Lh}}}C`}{{{b{Lj}}{b{Lj}}}C`}{{{b{Ll}}{b{Ll}}}C`}{{{b{Ln}}{b{Ln}}}C`}{{{b{M`}}{b{M`}}}C`}{{{b{Mb}}{b{Mb}}}C`}{{{b{Md}}{b{Md}}}C`}{{{b{Mf}}{b{Mf}}}C`}{{{b{Mh}}{b{Mh}}}C`}{{{b{Mj}}{b{Mj}}}C`}{{{b{Ml}}{b{Ml}}}C`}{{{b{Mn}}{b{Mn}}}C`}{{{b{N`}}{b{N`}}}C`}{{{b{Nb}}{b{Nb}}}C`}{{{b{Nd}}{b{Nd}}}C`}{{{b{Nf}}{b{Nf}}}C`}{{{b{Nh}}{b{Nh}}}C`}{{{b{Nj}}{b{Nj}}}C`}{{{b{Nl}}{b{Nl}}}C`}{{{b{Nn}}{b{Nn}}}C`}{{{b{O`}}{b{O`}}}C`}{{{b{Ob}}{b{Ob}}}C`}{{{b{Od}}{b{Od}}}C`}{{{b{Of}}{b{Of}}}C`}{{{b{Oh}}{b{Oh}}}C`}{{{b{Oj}}{b{Oj}}}C`}{{{b{Ol}}{b{Ol}}}C`}{{{b{On}}{b{On}}}C`}{{{b{A@`}}{b{A@`}}}C`}{{{b{A@b}}{b{A@b}}}C`}{{{b{A@d}}{b{A@d}}}C`}{{{b{A@f}}{b{A@f}}}C`}{{{b{A@h}}{b{A@h}}}C`}{{{b{A@j}}{b{A@j}}}C`}{{{b{A@l}}{b{A@l}}}C`}{{{b{A@n}}{b{A@n}}}C`}{{{b{AA`}}{b{AA`}}}C`}{{{b{AAb}}{b{AAb}}}C`}{{{b{AAd}}{b{AAd}}}C`}{{{b{AAf}}{b{AAf}}}C`}{{{b{AAh}}{b{AAh}}}C`}{{{b{AAj}}{b{AAj}}}C`}{{{b{AAl}}{b{AAl}}}C`}{{{b{AAn}}{b{AAn}}}C`}{{{b{AB`}}{b{AB`}}}C`}{{{b{ABb}}{b{ABb}}}C`}{{{b{ABd}}{b{ABd}}}C`}{{{b{ABf}}{b{ABf}}}C`}{{{b{ABh}}{b{ABh}}}C`}{{{b{ABj}}{b{ABj}}}C`}{{{b{ABl}}{b{ABl}}}C`}{{{b{ABn}}{b{ABn}}}C`}{{{b{AC`}}{b{AC`}}}C`}{{{b{ACb}}{b{ACb}}}C`}{{{b{ACd}}{b{ACd}}}C`}{{{b{ACf}}{b{ACf}}}C`}{{{b{ACh}}{b{ACh}}}C`}{{{b{ACj}}{b{ACj}}}C`}{{{b{ACl}}{b{ACl}}}C`}{{{b{ACn}}{b{ACn}}}C`}{{{b{AD`}}{b{AD`}}}C`}{{{b{ADb}}{b{ADb}}}C`}{{{b{ADd}}{b{ADd}}}C`}{{{b{ADf}}{b{ADf}}}C`}{{{b{ADh}}{b{ADh}}}C`}{{{b{ADj}}{b{ADj}}}C`}{{{b{ADl}}{b{ADl}}}C`}{{{b{ADn}}{b{ADn}}}C`}{{{b{AE`}}{b{AE`}}}C`}{{{b{AEb}}{b{AEb}}}C`}{{{b{AEd}}{b{AEd}}}C`}{{{b{AEf}}{b{AEf}}}C`}{{{b{AEh}}{b{AEh}}}C`}{{{b{AEj}}{b{AEj}}}C`}{{{b{AEl}}{b{AEl}}}C`}{{{b{AEn}}{b{AEn}}}C`}{{{b{AF`}}{b{AF`}}}C`}{{{b{AFb}}{b{AFb}}}C`}{{{b{AFd}}{b{AFd}}}C`}{{{b{AFf}}{b{AFf}}}C`}{{{b{AFh}}{b{AFh}}}C`}{{{b{AFj}}{b{AFj}}}C`}{{{b{AFl}}{b{AFl}}}C`}{{{b{AFn}}{b{AFn}}}C`}{{{b{AG`}}{b{AG`}}}C`}{{{b{AGb}}{b{AGb}}}C`}{{{b{AGd}}{b{AGd}}}C`}{{{b{AGf}}{b{AGf}}}C`}{{{b{AGh}}{b{AGh}}}C`}{{{b{AGj}}{b{AGj}}}C`}{{{b{AGl}}{b{AGl}}}C`}{{{b{AGn}}{b{AGn}}}C`}{{{b{AH`}}{b{AH`}}}C`}{{{b{AHb}}{b{AHb}}}C`}{{{b{AHd}}{b{AHd}}}C`}{{{b{AHf}}{b{AHf}}}C`}{{{b{AHh}}{b{AHh}}}C`}{{{b{AHj}}{b{AHj}}}C`}{{{b{AHl}}{b{AHl}}}C`}{{{b{AHn}}{b{AHn}}}C`}{{{b{AI`}}{b{AI`}}}C`}{{{b{AIb}}{b{AIb}}}C`}{{{b{AId}}{b{AId}}}C`}{{{b{AIf}}{b{AIf}}}C`}{{{b{AIh}}{b{AIh}}}C`}{{{b{AIj}}{b{AIj}}}C`}{{{b{AIl}}{b{AIl}}}C`}{{{b{AIn}}{b{AIn}}}C`}{{{b{AJ`}}{b{AJ`}}}C`}{{{b{AJb}}{b{AJb}}}C`}{{{b{AJd}}{b{AJd}}}C`}{{{b{AJf}}{b{AJf}}}C`}{{{b{AJh}}{b{AJh}}}C`}{{{b{AJj}}{b{AJj}}}C`}{{{b{AJl}}{b{AJl}}}C`}{{{b{AJn}}{b{AJn}}}C`}{{{b{AK`}}{b{AK`}}}C`}{{{b{AKb}}{b{AKb}}}C`}{{{b{AKd}}{b{AKd}}}C`}{{{b{AKf}}{b{AKf}}}C`}{{{b{AKh}}{b{AKh}}}C`}{{{b{AKj}}{b{AKj}}}C`}{{{b{AKl}}{b{AKl}}}C`}{{{b{AKn}}{b{AKn}}}C`}{{{b{AL`}}{b{AL`}}}C`}{{{b{ALb}}{b{ALb}}}C`}{{{b{ALd}}{b{ALd}}}C`}{{{b{ALf}}{b{ALf}}}C`}{{{b{ALh}}{b{ALh}}}C`}{{{b{ALj}}{b{ALj}}}C`}{{{b{ALl}}{b{ALl}}}C`}{{{b{ALn}}{b{ALn}}}C`}{{{b{AM`}}{b{AM`}}}C`}{{{b{AMb}}{b{AMb}}}C`}{{{b{AMd}}{b{AMd}}}C`}{{{b{AMf}}{b{AMf}}}C`}{{{b{AMh}}{b{AMh}}}C`}{{{b{AMj}}{b{AMj}}}C`}{{{b{AMl}}{b{AMl}}}C`}{{{b{AMn}}{b{AMn}}}C`}{{{b{AN`}}{b{AN`}}}C`}{{{b{ANb}}{b{ANb}}}C`}{{{b{ANd}}{b{ANd}}}C`}{{{b{ANf}}{b{ANf}}}C`}{{{b{ANh}}{b{ANh}}}C`}{{{b{ANj}}{b{ANj}}}C`}{{{b{ANl}}{b{ANl}}}C`}{{{b{ANn}}{b{ANn}}}C`}{{{b{AO`}}{b{AO`}}}C`}{{{b{AOb}}{b{AOb}}}C`}{{{b{AOd}}{b{AOd}}}C`}{{{b{AOf}}{b{AOf}}}C`}{{{b{AOh}}{b{AOh}}}C`}{{{b{AOj}}{b{AOj}}}C`}{{{b{AOl}}{b{AOl}}}C`}{{{b{AOn}}{b{AOn}}}C`}{{{b{B@`}}{b{B@`}}}C`}{{{b{B@b}}{b{B@b}}}C`}{{{b{B@d}}{b{B@d}}}C`}{{{b{B@f}}{b{B@f}}}C`}{{{b{B@h}}{b{B@h}}}C`}{{{b{B@j}}{b{B@j}}}C`}{{{b{B@l}}{b{B@l}}}C`}{{{b{B@n}}{b{B@n}}}C`}{{{b{BA`}}{b{BA`}}}C`}{{{b{BAb}}{b{BAb}}}C`}{{{b{BAd}}{b{BAd}}}C`}{{{b{BAf}}{b{BAf}}}C`}{{{b{BAh}}{b{BAh}}}C`}{{{b{BAj}}{b{BAj}}}C`}{{{b{BAl}}{b{BAl}}}C`}{{{b{BAn}}{b{BAn}}}C`}{{{b{BB`}}{b{BB`}}}C`}{{{b{BBb}}{b{BBb}}}C`}{{{b{BBd}}{b{BBd}}}C`}{{{b{BBf}}{b{BBf}}}C`}{{{b{BBh}}{b{BBh}}}C`}{{{b{BBj}}{b{BBj}}}C`}{{{b{BBl}}{b{BBl}}}C`}{{{b{BBn}}{b{BBn}}}C`}{{{b{BC`}}{b{BC`}}}C`}{{{b{BCb}}{b{BCb}}}C`}{{{b{BCd}}{b{BCd}}}C`}{{{b{BCf}}{b{BCf}}}C`}{{{b{BCh}}{b{BCh}}}C`}{{{b{BCj}}{b{BCj}}}C`}{{{b{BCl}}{b{BCl}}}C`}{{{b{BCn}}{b{BCn}}}C`}{{{b{BD`}}{b{BD`}}}C`}{{{b{BDb}}{b{BDb}}}C`}{{{b{BDd}}{b{BDd}}}C`}{{{b{BDf}}{b{BDf}}}C`}{{{b{BDh}}{b{BDh}}}C`}{{{b{BDj}}{b{BDj}}}C`}{{{b{BDl}}{b{BDl}}}C`}{{{b{BDn}}{b{BDn}}}C`}{{{b{BE`}}{b{BE`}}}C`}{{{b{BEb}}{b{BEb}}}C`}{{{b{BEd}}{b{BEd}}}C`}{{{b{BEf}}{b{BEf}}}C`}{{{b{BEh}}{b{BEh}}}C`}{{{b{BEj}}{b{BEj}}}C`}{{{b{BEl}}{b{BEl}}}C`}{{{b{BEn}}{b{BEn}}}C`}{{{b{BF`}}{b{BF`}}}C`}{{{b{BFb}}{b{BFb}}}C`}{{{b{BFd}}{b{BFd}}}C`}{{{b{BFf}}{b{BFf}}}C`}{{{b{BFh}}{b{BFh}}}C`}{{{b{BFj}}{b{BFj}}}C`}{{{b{BFl}}{b{BFl}}}C`}{{{b{BFn}}{b{BFn}}}C`}{{{b{BG`}}{b{BG`}}}C`}{{{b{BGb}}{b{BGb}}}C`}{{{b{BGd}}{b{BGd}}}C`}{{{b{BGf}}{b{BGf}}}C`}{{{b{BGh}}{b{BGh}}}C`}{{{b{BGj}}{b{BGj}}}C`}{{{b{BGl}}{b{BGl}}}C`}{{{b{BGn}}{b{BGn}}}C`}{{{b{BH`}}{b{BH`}}}C`}{{{b{BHb}}{b{BHb}}}C`}{{{b{BHd}}{b{BHd}}}C`}{{{b{BHf}}{b{BHf}}}C`}{{{b{BHh}}{b{BHh}}}C`}{{{b{BHj}}{b{BHj}}}C`}{{{b{BHl}}{b{BHl}}}C`}{{{b{BHn}}{b{BHn}}}C`}{{{b{BI`}}{b{BI`}}}C`}{{{b{BIb}}{b{BIb}}}C`}{{{b{BId}}{b{BId}}}C`}{{{b{BIf}}{b{BIf}}}C`}{{{b{BIh}}{b{BIh}}}C`}{{{b{BIj}}{b{BIj}}}C`}{{{b{BIl}}{b{BIl}}}C`}{{{b{BIn}}{b{BIn}}}C`}{{{b{BJ`}}{b{BJ`}}}C`}{{{b{BJb}}{b{BJb}}}C`}{{{b{BJd}}{b{BJd}}}C`}{{{b{BJf}}{b{BJf}}}C`}{{{b{BJh}}{b{BJh}}}C`}{{{b{BJj}}{b{BJj}}}C`}{{{b{BJl}}{b{BJl}}}C`}{{{b{BJn}}{b{BJn}}}C`}{{{b{BK`}}{b{BK`}}}C`}{{{b{BKb}}{b{BKb}}}C`}{{{b{BKd}}{b{BKd}}}C`}{{{b{BKf}}{b{BKf}}}C`}{{{b{BKh}}{b{BKh}}}C`}{{{b{BKj}}{b{BKj}}}C`}{{{b{BKl}}{b{BKl}}}C`}{{{b{BKn}}{b{BKn}}}C`}{{{b{BL`}}{b{BL`}}}C`}{{{b{BLb}}{b{BLb}}}C`}{{{b{BLd}}{b{BLd}}}C`}{{{b{BLf}}{b{BLf}}}C`}{{{b{BLh}}{b{BLh}}}C`}{{{b{BLj}}{b{BLj}}}C`}{{{b{BLl}}{b{BLl}}}C`}{{{b{BLn}}{b{BLn}}}C`}{{{b{BM`}}{b{BM`}}}C`}{{{b{BMb}}{b{BMb}}}C`}{{{b{BMd}}{b{BMd}}}C`}{{{b{BMf}}{b{BMf}}}C`}{{{b{BMh}}{b{BMh}}}C`}{{{b{BMj}}{b{BMj}}}C`}{{{b{BMl}}{b{BMl}}}C`}{{{b{BMn}}{b{BMn}}}C`}{{{b{BN`}}{b{BN`}}}C`}{{{b{BNb}}{b{BNb}}}C`}{{{b{BNd}}{b{BNd}}}C`}{{{b{BNf}}{b{BNf}}}C`}{{{b{BNh}}{b{BNh}}}C`}{{{b{BNj}}{b{BNj}}}C`}{{{b{BNl}}{b{BNl}}}C`}{{{b{BNn}}{b{BNn}}}C`}{{{b{BO`}}{b{BO`}}}C`}{{{b{BOb}}{b{BOb}}}C`}{{{b{Dl}}{b{Dl}}}C`}{{{b{BOd}}{b{BOd}}}C`}{{{b{BOf}}{b{BOf}}}C`}{{{b{BOh}}{b{BOh}}}C`}{{{b{BOj}}{b{BOj}}}C`}{{{b{BOl}}{b{BOl}}}C`}{{{b{BOn}}{b{BOn}}}C`}{{{b{C@`}}{b{C@`}}}C`}{{{b{C@b}}{b{C@b}}}C`}{{{b{C@d}}{b{C@d}}}C`}{{{b{C@f}}{b{C@f}}}C`}{{{b{C@h}}{b{C@h}}}C`}{{{b{C@j}}{b{C@j}}}C`}{{{b{C@l}}{b{C@l}}}C`}{{{b{C@n}}{b{C@n}}}C`}{{{b{Dn}}{b{Dn}}}C`}{{{b{CA`}}{b{CA`}}}C`}{{{b{CAb}}{b{CAb}}}C`}{{{b{CAd}}{b{CAd}}}C`}{{{b{CAf}}{b{CAf}}}C`}{{{b{CAh}}{b{CAh}}}C`}{{{b{CAj}}{b{CAj}}}C`}{{{b{CAl}}{b{CAl}}}C`}{{{b{E`}}{b{E`}}}C`}{{{b{CAn}}{b{CAn}}}C`}{{{b{Eb}}{b{Eb}}}C`}{{{b{CB`}}{b{CB`}}}C`}{{{b{CBb}}{b{CBb}}}C`}{{{b{CBd}}{b{CBd}}}C`}{{{b{Ed}}{b{Ed}}}C`}{{{b{Ef}}{b{Ef}}}C`}{{{b{CBf}}{b{CBf}}}C`}{{{b{CBh}}{b{CBh}}}C`}{{{b{Eh}}{b{Eh}}}C`}{{{b{Ej}}{b{Ej}}}C`}{{{b{CBj}}{b{CBj}}}C`}{{{b{CBl}}{b{CBl}}}C`}{{{b{El}}{b{El}}}C`}{{{b{CBn}}{b{CBn}}}C`}{{{b{CC`}}{b{CC`}}}C`}{{{b{CCb}}{b{CCb}}}C`}{{{b{En}}{b{En}}}C`}{{{b{CCd}}{b{CCd}}}C`}{{{b{CCf}}{b{CCf}}}C`}{{{b{CCh}}{b{CCh}}}C`}{{{b{CCj}}{b{CCj}}}C`}{{{b{CCl}}{b{CCl}}}C`}{{{b{CCn}}{b{CCn}}}C`}{{{b{CD`}}{b{CD`}}}C`}{{{b{CDb}}{b{CDb}}}C`}{{{b{CDd}}{b{CDd}}}C`}{{{b{CDf}}{b{CDf}}}C`}{{{b{CDh}}{b{CDh}}}C`}{{{b{CDj}}{b{CDj}}}C`}{{{b{CDl}}{b{CDl}}}C`}{{{b{CDn}}{b{CDn}}}C`}{{{b{CE`}}{b{CE`}}}C`}{{{b{CEb}}{b{CEb}}}C`}{{{b{CEd}}{b{CEd}}}C`}{{{b{F`}}{b{F`}}}C`}{{{b{CEf}}{b{CEf}}}C`}{{{b{Fb}}{b{Fb}}}C`}{{{b{CEh}}{b{CEh}}}C`}{{{b{CEj}}{b{CEj}}}C`}{{{b{CEl}}{b{CEl}}}C`}{{{b{CEn}}{b{CEn}}}C`}{{{b{CF`}}{b{CF`}}}C`}{{{b{CFb}}{b{CFb}}}C`}{{{b{Fd}}{b{Fd}}}C`}{{{b{CFd}}{b{CFd}}}C`}{{{b{CFf}}{b{CFf}}}C`}{{{b{CFh}}{b{CFh}}}C`}{{{b{CFj}}{b{CFj}}}C`}{{{b{Ff}}{b{Ff}}}C`}{{{b{CFl}}{b{CFl}}}C`}{{{b{CFn}}{b{CFn}}}C`}{{{b{CG`}}{b{CG`}}}C`}{{{b{Fh}}{b{Fh}}}C`}{{{b{CGb}}{b{CGb}}}C`}{{{b{Fj}}{b{Fj}}}C`}{{{b{Fl}}{b{Fl}}}C`}{{{b{Fn}}{b{Fn}}}C`}{{{b{CGd}}{b{CGd}}}C`}{{{b{CGf}}{b{CGf}}}C`}{{{b{CGh}}{b{CGh}}}C`}{{{b{CGj}}{b{CGj}}}C`}{{{b{CGl}}{b{CGl}}}C`}{{{b{CGn}}{b{CGn}}}C`}{{{b{CH`}}{b{CH`}}}C`}{{{b{G`}}{b{G`}}}C`}{{{b{CHb}}{b{CHb}}}C`}{{{b{CHd}}{b{CHd}}}C`}{{{b{Gb}}{b{Gb}}}C`}{{{b{Gd}}{b{Gd}}}C`}{{{b{CHf}}{b{CHf}}}C`}{{{b{CHh}}{b{CHh}}}C`}{{{b{CHj}}{b{CHj}}}C`}{{{b{CHl}}{b{CHl}}}C`}{{{b{CHn}}{b{CHn}}}C`}{{{b{CI`}}{b{CI`}}}C`}{{{b{CIb}}{b{CIb}}}C`}{{{b{CId}}{b{CId}}}C`}{{{b{CIf}}{b{CIf}}}C`}{{{b{CIh}}{b{CIh}}}C`}{{{b{CIj}}{b{CIj}}}C`}{{{b{CIl}}{b{CIl}}}C`}{{{b{CIn}}{b{CIn}}}C`}{{{b{CJ`}}{b{CJ`}}}C`}{{{b{CJb}}{b{CJb}}}C`}{{{b{Gf}}{b{Gf}}}C`}{{{b{CJd}}{b{CJd}}}C`}{{{b{CJf}}{b{CJf}}}C`}{{{b{CJh}}{b{CJh}}}C`}{{{b{CJj}}{b{CJj}}}C`}{{{b{CJl}}{b{CJl}}}C`}{{{b{CJn}}{b{CJn}}}C`}{{{b{CK`}}{b{CK`}}}C`}{{{b{CKb}}{b{CKb}}}C`}{{{b{Gh}}{b{Gh}}}C`}{{{b{CKd}}{b{CKd}}}C`}{{{b{CKf}}{b{CKf}}}C`}{{{b{CKh}}{b{CKh}}}C`}{{{b{CKj}}{b{CKj}}}C`}{{{b{CKl}}{b{CKl}}}C`}{{{b{Gj}}{b{Gj}}}C`}{{{b{CKn}}{b{CKn}}}C`}{{{b{CL`}}{b{CL`}}}C`}{{{b{CLb}}{b{CLb}}}C`}{{{b{CLd}}{b{CLd}}}C`}{{{b{CLf}}{b{CLf}}}C`}{{{b{CLh}}{b{CLh}}}C`}{{{b{CLj}}{b{CLj}}}C`}{{{b{CLl}}{b{CLl}}}C`}{{{b{CLn}}{b{CLn}}}C`}{{{b{Gl}}{b{Gl}}}C`}{{{b{CM`}}{b{CM`}}}C`}{{{b{Gn}}{b{Gn}}}C`}{{{b{CMb}}{b{CMb}}}C`}{{{b{CMd}}{b{CMd}}}C`}{{{b{CMf}}{b{CMf}}}C`}{{{b{CMh}}{b{CMh}}}C`}{{{b{CMj}}{b{CMj}}}C`}{{{b{CMl}}{b{CMl}}}C`}{{{b{CMn}}{b{CMn}}}C`}{{{b{CN`}}{b{CN`}}}C`}{{{b{H`}}{b{H`}}}C`}{{{b{CNb}}{b{CNb}}}C`}{{{b{CNd}}{b{CNd}}}C`}{{{b{CNf}}{b{CNf}}}C`}{{{b{CNh}}{b{CNh}}}C`}{{{b{CNj}}{b{CNj}}}C`}{{{b{CNl}}{b{CNl}}}C`}{{{b{CNn}}{b{CNn}}}C`}{{{b{CO`}}{b{CO`}}}C`}{{{b{Hb}}{b{Hb}}}C`}{{{b{COb}}{b{COb}}}C`}{{{b{COd}}{b{COd}}}C`}{{{b{COf}}{b{COf}}}C`}{{{b{COh}}{b{COh}}}C`}{{{b{COj}}{b{COj}}}C`}{{{b{Hd}}{b{Hd}}}C`}{{{b{COl}}{b{COl}}}C`}{{{b{COn}}{b{COn}}}C`}{{{b{Hf}}{b{Hf}}}C`}{{{b{D@`}}{b{D@`}}}C`}{{{b{D@b}}{b{D@b}}}C`}{{{b{D@d}}{b{D@d}}}C`}{{{b{D@f}}{b{D@f}}}C`}{{{b{D@h}}{b{D@h}}}C`}{{{b{D@j}}{b{D@j}}}C`}{{{b{D@l}}{b{D@l}}}C`}{{{b{Hh}}{b{Hh}}}C`}{{{b{Hj}}{b{Hj}}}C`}{{{b{D@n}}{b{D@n}}}C`}{{{b{DA`}}{b{DA`}}}C`}{{{b{DAb}}{b{DAb}}}C`}{{{b{DAd}}{b{DAd}}}C`}{{{b{DAf}}{b{DAf}}}C`}{{{b{DAh}}{b{DAh}}}C`}{{{b{DAj}}{b{DAj}}}C`}{{{b{DAl}}{b{DAl}}}C`}{{{b{DAn}}{b{DAn}}}C`}{{{b{DB`}}{b{DB`}}}C`}```````````````````{{{b{dDl}}c}Aj{{DBf{}{{DBd{Dl}}}}}}{{{b{dDn}}c}Aj{{DBf{}{{DBd{Dn}}}}}}{{{b{dE`}}c}Aj{{DBf{}{{DBd{E`}}}}}}{{{b{dEb}}c}Aj{{DBf{}{{DBd{Eb}}}}}}{{{b{dEd}}c}Aj{{DBf{}{{DBd{Ed}}}}}}{{{b{dEf}}c}Aj{{DBf{}{{DBd{Ef}}}}}}{{{b{dEh}}c}Aj{{DBf{}{{DBd{Eh}}}}}}{{{b{dEj}}c}Aj{{DBf{}{{DBd{Ej}}}}}}{{{b{dEl}}c}Aj{{DBf{}{{DBd{El}}}}}}{{{b{dEn}}c}Aj{{DBf{}{{DBd{En}}}}}}{{{b{dF`}}c}Aj{{DBf{}{{DBd{F`}}}}}}{{{b{dFb}}c}Aj{{DBf{}{{DBd{Fb}}}}}}{{{b{dFd}}c}Aj{{DBf{}{{DBd{Fd}}}}}}{{{b{dFf}}c}Aj{{DBf{}{{DBd{Ff}}}}}}{{{b{dFh}}c}Aj{{DBf{}{{DBd{Fh}}}}}}{{{b{dFj}}c}Aj{{DBf{}{{DBd{Fj}}}}}}{{{b{dFl}}c}Aj{{DBf{}{{DBd{Fl}}}}}}{{{b{dFn}}c}Aj{{DBf{}{{DBd{Fn}}}}}}{{{b{dG`}}c}Aj{{DBf{}{{DBd{G`}}}}}}{{{b{dGb}}c}Aj{{DBf{}{{DBd{Gb}}}}}}{{{b{dGd}}c}Aj{{DBf{}{{DBd{Gd}}}}}}{{{b{dGf}}c}Aj{{DBf{}{{DBd{Gf}}}}}}{{{b{dGh}}c}Aj{{DBf{}{{DBd{Gh}}}}}}{{{b{dGj}}c}Aj{{DBf{}{{DBd{Gj}}}}}}{{{b{dGl}}c}Aj{{DBf{}{{DBd{Gl}}}}}}{{{b{dGn}}c}Aj{{DBf{}{{DBd{Gn}}}}}}{{{b{dH`}}c}Aj{{DBf{}{{DBd{H`}}}}}}{{{b{dHb}}c}Aj{{DBf{}{{DBd{Hb}}}}}}{{{b{dHd}}c}Aj{{DBf{}{{DBd{Hd}}}}}}{{{b{dHf}}c}Aj{{DBf{}{{DBd{Hf}}}}}}{{{b{dHh}}c}Aj{{DBf{}{{DBd{Hh}}}}}}{{{b{dHj}}c}Aj{{DBf{}{{DBd{Hj}}}}}}{Bff}````````````````````````````````````````````````````````````{{{b{Hn}}{b{dCb}}}DBh}{{{b{I`}}{b{dCb}}}DBh}{{{b{Ib}}{b{dCb}}}DBh}{{{b{Id}}{b{dCb}}}DBh}{{{b{If}}{b{dCb}}}DBh}{{{b{Ih}}{b{dCb}}}DBh}{{{b{Ij}}{b{dCb}}}DBh}{{{b{Il}}{b{dCb}}}DBh}{{{b{In}}{b{dCb}}}DBh}{{{b{J`}}{b{dCb}}}DBh}{{{b{Jb}}{b{dCb}}}DBh}{{{b{Jd}}{b{dCb}}}DBh}{{{b{Jf}}{b{dCb}}}DBh}{{{b{Jh}}{b{dCb}}}DBh}{{{b{Jj}}{b{dCb}}}DBh}{{{b{Jl}}{b{dCb}}}DBh}{{{b{Jn}}{b{dCb}}}DBh}{{{b{K`}}{b{dCb}}}DBh}{{{b{Kb}}{b{dCb}}}DBh}{{{b{Kd}}{b{dCb}}}DBh}{{{b{Kf}}{b{dCb}}}DBh}{{{b{Kh}}{b{dCb}}}DBh}{{{b{Kj}}{b{dCb}}}DBh}{{{b{Kl}}{b{dCb}}}DBh}{{{b{Kn}}{b{dCb}}}DBh}{{{b{L`}}{b{dCb}}}DBh}{{{b{Lb}}{b{dCb}}}DBh}{{{b{Ld}}{b{dCb}}}DBh}{{{b{Lf}}{b{dCb}}}DBh}{{{b{Lh}}{b{dCb}}}DBh}{{{b{Lj}}{b{dCb}}}DBh}{{{b{Ll}}{b{dCb}}}DBh}{{{b{Ln}}{b{dCb}}}DBh}{{{b{M`}}{b{dCb}}}DBh}{{{b{Mb}}{b{dCb}}}DBh}{{{b{Md}}{b{dCb}}}DBh}{{{b{Mf}}{b{dCb}}}DBh}{{{b{Mh}}{b{dCb}}}DBh}{{{b{Mj}}{b{dCb}}}DBh}{{{b{Ml}}{b{dCb}}}DBh}{{{b{Mn}}{b{dCb}}}DBh}{{{b{N`}}{b{dCb}}}DBh}{{{b{Nb}}{b{dCb}}}DBh}{{{b{Nd}}{b{dCb}}}DBh}{{{b{Nf}}{b{dCb}}}DBh}{{{b{Nh}}{b{dCb}}}DBh}{{{b{Nj}}{b{dCb}}}DBh}{{{b{Nl}}{b{dCb}}}DBh}{{{b{Nn}}{b{dCb}}}DBh}{{{b{O`}}{b{dCb}}}DBh}{{{b{Ob}}{b{dCb}}}DBh}{{{b{Od}}{b{dCb}}}DBh}{{{b{Of}}{b{dCb}}}DBh}{{{b{Oh}}{b{dCb}}}DBh}{{{b{Oj}}{b{dCb}}}DBh}{{{b{Ol}}{b{dCb}}}DBh}{{{b{On}}{b{dCb}}}DBh}{{{b{A@`}}{b{dCb}}}DBh}{{{b{A@b}}{b{dCb}}}DBh}{{{b{A@d}}{b{dCb}}}DBh}{{{b{A@f}}{b{dCb}}}DBh}{{{b{A@h}}{b{dCb}}}DBh}{{{b{A@j}}{b{dCb}}}DBh}{{{b{A@l}}{b{dCb}}}DBh}{{{b{A@n}}{b{dCb}}}DBh}{{{b{AA`}}{b{dCb}}}DBh}{{{b{AAb}}{b{dCb}}}DBh}{{{b{AAd}}{b{dCb}}}DBh}{{{b{AAf}}{b{dCb}}}DBh}{{{b{AAh}}{b{dCb}}}DBh}{{{b{AAj}}{b{dCb}}}DBh}{{{b{AAl}}{b{dCb}}}DBh}{{{b{AAn}}{b{dCb}}}DBh}{{{b{AB`}}{b{dCb}}}DBh}{{{b{ABb}}{b{dCb}}}DBh}{{{b{ABd}}{b{dCb}}}DBh}{{{b{ABf}}{b{dCb}}}DBh}{{{b{ABh}}{b{dCb}}}DBh}{{{b{ABj}}{b{dCb}}}DBh}{{{b{ABl}}{b{dCb}}}DBh}{{{b{ABn}}{b{dCb}}}DBh}{{{b{AC`}}{b{dCb}}}DBh}{{{b{ACb}}{b{dCb}}}DBh}{{{b{ACd}}{b{dCb}}}DBh}{{{b{ACf}}{b{dCb}}}DBh}{{{b{ACh}}{b{dCb}}}DBh}{{{b{ACj}}{b{dCb}}}DBh}{{{b{ACl}}{b{dCb}}}DBh}{{{b{ACn}}{b{dCb}}}DBh}{{{b{AD`}}{b{dCb}}}DBh}{{{b{ADb}}{b{dCb}}}DBh}{{{b{ADd}}{b{dCb}}}DBh}{{{b{ADf}}{b{dCb}}}DBh}{{{b{ADh}}{b{dCb}}}DBh}{{{b{ADj}}{b{dCb}}}DBh}{{{b{ADl}}{b{dCb}}}DBh}{{{b{ADn}}{b{dCb}}}DBh}{{{b{AE`}}{b{dCb}}}DBh}{{{b{AEb}}{b{dCb}}}DBh}{{{b{AEd}}{b{dCb}}}DBh}{{{b{AEf}}{b{dCb}}}DBh}{{{b{AEh}}{b{dCb}}}DBh}{{{b{AEj}}{b{dCb}}}DBh}{{{b{AEl}}{b{dCb}}}DBh}{{{b{AEn}}{b{dCb}}}DBh}{{{b{AF`}}{b{dCb}}}DBh}{{{b{AFb}}{b{dCb}}}DBh}{{{b{AFd}}{b{dCb}}}DBh}{{{b{AFf}}{b{dCb}}}DBh}{{{b{AFh}}{b{dCb}}}DBh}{{{b{AFj}}{b{dCb}}}DBh}{{{b{AFl}}{b{dCb}}}DBh}{{{b{AFn}}{b{dCb}}}DBh}{{{b{AG`}}{b{dCb}}}DBh}{{{b{AGb}}{b{dCb}}}DBh}{{{b{AGd}}{b{dCb}}}DBh}{{{b{AGf}}{b{dCb}}}DBh}{{{b{AGh}}{b{dCb}}}DBh}{{{b{AGj}}{b{dCb}}}DBh}{{{b{AGl}}{b{dCb}}}DBh}{{{b{AGn}}{b{dCb}}}DBh}{{{b{AH`}}{b{dCb}}}DBh}{{{b{AHb}}{b{dCb}}}DBh}{{{b{AHd}}{b{dCb}}}DBh}{{{b{AHf}}{b{dCb}}}DBh}{{{b{AHh}}{b{dCb}}}DBh}{{{b{AHj}}{b{dCb}}}DBh}{{{b{AHl}}{b{dCb}}}DBh}{{{b{AHn}}{b{dCb}}}DBh}{{{b{AI`}}{b{dCb}}}DBh}{{{b{AIb}}{b{dCb}}}DBh}{{{b{AId}}{b{dCb}}}DBh}{{{b{AIf}}{b{dCb}}}DBh}{{{b{AIh}}{b{dCb}}}DBh}{{{b{AIj}}{b{dCb}}}DBh}{{{b{AIl}}{b{dCb}}}DBh}{{{b{AIn}}{b{dCb}}}DBh}{{{b{AJ`}}{b{dCb}}}DBh}{{{b{AJb}}{b{dCb}}}DBh}{{{b{AJd}}{b{dCb}}}DBh}{{{b{AJf}}{b{dCb}}}DBh}{{{b{AJh}}{b{dCb}}}DBh}{{{b{AJj}}{b{dCb}}}DBh}{{{b{AJl}}{b{dCb}}}DBh}{{{b{AJn}}{b{dCb}}}DBh}{{{b{AK`}}{b{dCb}}}DBh}{{{b{AKb}}{b{dCb}}}DBh}{{{b{AKd}}{b{dCb}}}DBh}{{{b{AKf}}{b{dCb}}}DBh}{{{b{AKh}}{b{dCb}}}DBh}{{{b{AKj}}{b{dCb}}}DBh}{{{b{AKl}}{b{dCb}}}DBh}{{{b{AKn}}{b{dCb}}}DBh}{{{b{AL`}}{b{dCb}}}DBh}{{{b{ALb}}{b{dCb}}}DBh}{{{b{ALd}}{b{dCb}}}DBh}{{{b{ALf}}{b{dCb}}}DBh}{{{b{ALh}}{b{dCb}}}DBh}{{{b{ALj}}{b{dCb}}}DBh}{{{b{ALl}}{b{dCb}}}DBh}{{{b{ALn}}{b{dCb}}}DBh}{{{b{AM`}}{b{dCb}}}DBh}{{{b{AMb}}{b{dCb}}}DBh}{{{b{AMd}}{b{dCb}}}DBh}{{{b{AMf}}{b{dCb}}}DBh}{{{b{AMh}}{b{dCb}}}DBh}{{{b{AMj}}{b{dCb}}}DBh}{{{b{AMl}}{b{dCb}}}DBh}{{{b{AMn}}{b{dCb}}}DBh}{{{b{AN`}}{b{dCb}}}DBh}{{{b{ANb}}{b{dCb}}}DBh}{{{b{ANd}}{b{dCb}}}DBh}{{{b{ANf}}{b{dCb}}}DBh}{{{b{ANh}}{b{dCb}}}DBh}{{{b{ANj}}{b{dCb}}}DBh}{{{b{ANl}}{b{dCb}}}DBh}{{{b{ANn}}{b{dCb}}}DBh}{{{b{AO`}}{b{dCb}}}DBh}{{{b{AOb}}{b{dCb}}}DBh}{{{b{AOd}}{b{dCb}}}DBh}{{{b{AOf}}{b{dCb}}}DBh}{{{b{AOh}}{b{dCb}}}DBh}{{{b{AOj}}{b{dCb}}}DBh}{{{b{AOl}}{b{dCb}}}DBh}{{{b{AOn}}{b{dCb}}}DBh}{{{b{B@`}}{b{dCb}}}DBh}{{{b{B@b}}{b{dCb}}}DBh}{{{b{B@d}}{b{dCb}}}DBh}{{{b{B@f}}{b{dCb}}}DBh}{{{b{B@h}}{b{dCb}}}DBh}{{{b{B@j}}{b{dCb}}}DBh}{{{b{B@l}}{b{dCb}}}DBh}{{{b{B@n}}{b{dCb}}}DBh}{{{b{BA`}}{b{dCb}}}DBh}{{{b{BAb}}{b{dCb}}}DBh}{{{b{BAd}}{b{dCb}}}DBh}{{{b{BAf}}{b{dCb}}}DBh}{{{b{BAh}}{b{dCb}}}DBh}{{{b{BAj}}{b{dCb}}}DBh}{{{b{BAl}}{b{dCb}}}DBh}{{{b{BAn}}{b{dCb}}}DBh}{{{b{BB`}}{b{dCb}}}DBh}{{{b{BBb}}{b{dCb}}}DBh}{{{b{BBd}}{b{dCb}}}DBh}{{{b{BBf}}{b{dCb}}}DBh}{{{b{BBh}}{b{dCb}}}DBh}{{{b{BBj}}{b{dCb}}}DBh}{{{b{BBl}}{b{dCb}}}DBh}{{{b{BBn}}{b{dCb}}}DBh}{{{b{BC`}}{b{dCb}}}DBh}{{{b{BCb}}{b{dCb}}}DBh}{{{b{BCd}}{b{dCb}}}DBh}{{{b{BCf}}{b{dCb}}}DBh}{{{b{BCh}}{b{dCb}}}DBh}{{{b{BCj}}{b{dCb}}}DBh}{{{b{BCl}}{b{dCb}}}DBh}{{{b{BCn}}{b{dCb}}}DBh}{{{b{BD`}}{b{dCb}}}DBh}{{{b{BDb}}{b{dCb}}}DBh}{{{b{BDd}}{b{dCb}}}DBh}{{{b{BDf}}{b{dCb}}}DBh}{{{b{BDh}}{b{dCb}}}DBh}{{{b{BDj}}{b{dCb}}}DBh}{{{b{BDl}}{b{dCb}}}DBh}{{{b{BDn}}{b{dCb}}}DBh}{{{b{BE`}}{b{dCb}}}DBh}{{{b{BEb}}{b{dCb}}}DBh}{{{b{BEd}}{b{dCb}}}DBh}{{{b{BEf}}{b{dCb}}}DBh}{{{b{BEh}}{b{dCb}}}DBh}{{{b{BEj}}{b{dCb}}}DBh}{{{b{BEl}}{b{dCb}}}DBh}{{{b{BEn}}{b{dCb}}}DBh}{{{b{BF`}}{b{dCb}}}DBh}{{{b{BFb}}{b{dCb}}}DBh}{{{b{BFd}}{b{dCb}}}DBh}{{{b{BFf}}{b{dCb}}}DBh}{{{b{BFh}}{b{dCb}}}DBh}{{{b{BFj}}{b{dCb}}}DBh}{{{b{BFl}}{b{dCb}}}DBh}{{{b{BFn}}{b{dCb}}}DBh}{{{b{BG`}}{b{dCb}}}DBh}{{{b{BGb}}{b{dCb}}}DBh}{{{b{BGd}}{b{dCb}}}DBh}{{{b{BGf}}{b{dCb}}}DBh}{{{b{BGh}}{b{dCb}}}DBh}{{{b{BGj}}{b{dCb}}}DBh}{{{b{BGl}}{b{dCb}}}DBh}{{{b{BGn}}{b{dCb}}}DBh}{{{b{BH`}}{b{dCb}}}DBh}{{{b{BHb}}{b{dCb}}}DBh}{{{b{BHd}}{b{dCb}}}DBh}{{{b{BHf}}{b{dCb}}}DBh}{{{b{BHh}}{b{dCb}}}DBh}{{{b{BHj}}{b{dCb}}}DBh}{{{b{BHl}}{b{dCb}}}DBh}{{{b{BHn}}{b{dCb}}}DBh}{{{b{BI`}}{b{dCb}}}DBh}{{{b{BIb}}{b{dCb}}}DBh}{{{b{BId}}{b{dCb}}}DBh}{{{b{BIf}}{b{dCb}}}DBh}{{{b{BIh}}{b{dCb}}}DBh}{{{b{BIj}}{b{dCb}}}DBh}{{{b{BIl}}{b{dCb}}}DBh}{{{b{BIn}}{b{dCb}}}DBh}{{{b{BJ`}}{b{dCb}}}DBh}{{{b{BJb}}{b{dCb}}}DBh}{{{b{BJd}}{b{dCb}}}DBh}{{{b{BJf}}{b{dCb}}}DBh}{{{b{BJh}}{b{dCb}}}DBh}{{{b{BJj}}{b{dCb}}}DBh}{{{b{BJl}}{b{dCb}}}DBh}{{{b{BJn}}{b{dCb}}}DBh}{{{b{BK`}}{b{dCb}}}DBh}{{{b{BKb}}{b{dCb}}}DBh}{{{b{BKd}}{b{dCb}}}DBh}{{{b{BKf}}{b{dCb}}}DBh}{{{b{BKh}}{b{dCb}}}DBh}{{{b{BKj}}{b{dCb}}}DBh}{{{b{BKl}}{b{dCb}}}DBh}{{{b{BKn}}{b{dCb}}}DBh}{{{b{BL`}}{b{dCb}}}DBh}{{{b{BLb}}{b{dCb}}}DBh}{{{b{BLd}}{b{dCb}}}DBh}{{{b{BLf}}{b{dCb}}}DBh}{{{b{BLh}}{b{dCb}}}DBh}{{{b{BLj}}{b{dCb}}}DBh}{{{b{BLl}}{b{dCb}}}DBh}{{{b{BLn}}{b{dCb}}}DBh}{{{b{BM`}}{b{dCb}}}DBh}{{{b{BMb}}{b{dCb}}}DBh}{{{b{BMd}}{b{dCb}}}DBh}{{{b{BMf}}{b{dCb}}}DBh}{{{b{BMh}}{b{dCb}}}DBh}{{{b{BMj}}{b{dCb}}}DBh}{{{b{BMl}}{b{dCb}}}DBh}{{{b{BMn}}{b{dCb}}}DBh}{{{b{BN`}}{b{dCb}}}DBh}{{{b{BNb}}{b{dCb}}}DBh}{{{b{BNd}}{b{dCb}}}DBh}{{{b{BNf}}{b{dCb}}}DBh}{{{b{BNh}}{b{dCb}}}DBh}{{{b{BNj}}{b{dCb}}}DBh}{{{b{BNl}}{b{dCb}}}DBh}{{{b{BNn}}{b{dCb}}}DBh}{{{b{BO`}}{b{dCb}}}DBh}{{{b{BOb}}{b{dCb}}}DBh}{{{b{Dl}}{b{dCb}}}DBh}0000{{{b{BOd}}{b{dCb}}}DBh}{{{b{BOf}}{b{dCb}}}DBh}{{{b{BOh}}{b{dCb}}}DBh}{{{b{BOj}}{b{dCb}}}DBh}{{{b{BOl}}{b{dCb}}}DBh}{{{b{BOn}}{b{dCb}}}DBh}{{{b{C@`}}{b{dCb}}}DBh}{{{b{C@b}}{b{dCb}}}DBh}{{{b{C@d}}{b{dCb}}}DBh}{{{b{C@f}}{b{dCb}}}DBh}{{{b{C@h}}{b{dCb}}}DBh}{{{b{C@j}}{b{dCb}}}DBh}{{{b{C@l}}{b{dCb}}}DBh}{{{b{C@n}}{b{dCb}}}DBh}{{{b{Dn}}{b{dCb}}}DBh}0000{{{b{CA`}}{b{dCb}}}DBh}{{{b{CAb}}{b{dCb}}}DBh}{{{b{CAd}}{b{dCb}}}DBh}{{{b{CAf}}{b{dCb}}}DBh}{{{b{CAh}}{b{dCb}}}DBh}{{{b{CAj}}{b{dCb}}}DBh}{{{b{CAl}}{b{dCb}}}DBh}{{{b{E`}}{b{dCb}}}DBh}0000{{{b{CAn}}{b{dCb}}}DBh}{{{b{Eb}}{b{dCb}}}DBh}0000{{{b{CB`}}{b{dCb}}}DBh}{{{b{CBb}}{b{dCb}}}DBh}{{{b{CBd}}{b{dCb}}}DBh}{{{b{Ed}}{b{dCb}}}DBh}0000{{{b{Ef}}{b{dCb}}}DBh}0000{{{b{CBf}}{b{dCb}}}DBh}{{{b{CBh}}{b{dCb}}}DBh}{{{b{Eh}}{b{dCb}}}DBh}0000{{{b{Ej}}{b{dCb}}}DBh}0000{{{b{CBj}}{b{dCb}}}DBh}{{{b{CBl}}{b{dCb}}}DBh}{{{b{El}}{b{dCb}}}DBh}0000{{{b{CBn}}{b{dCb}}}DBh}{{{b{CC`}}{b{dCb}}}DBh}{{{b{CCb}}{b{dCb}}}DBh}{{{b{En}}{b{dCb}}}DBh}0000{{{b{CCd}}{b{dCb}}}DBh}{{{b{CCf}}{b{dCb}}}DBh}{{{b{CCh}}{b{dCb}}}DBh}{{{b{CCj}}{b{dCb}}}DBh}{{{b{CCl}}{b{dCb}}}DBh}{{{b{CCn}}{b{dCb}}}DBh}{{{b{CD`}}{b{dCb}}}DBh}{{{b{CDb}}{b{dCb}}}DBh}{{{b{CDd}}{b{dCb}}}DBh}{{{b{CDf}}{b{dCb}}}DBh}{{{b{CDh}}{b{dCb}}}DBh}{{{b{CDj}}{b{dCb}}}DBh}{{{b{CDl}}{b{dCb}}}DBh}{{{b{CDn}}{b{dCb}}}DBh}{{{b{CE`}}{b{dCb}}}DBh}{{{b{CEb}}{b{dCb}}}DBh}{{{b{CEd}}{b{dCb}}}DBh}{{{b{F`}}{b{dCb}}}DBh}0000{{{b{CEf}}{b{dCb}}}DBh}{{{b{Fb}}{b{dCb}}}DBh}0000{{{b{CEh}}{b{dCb}}}DBh}{{{b{CEj}}{b{dCb}}}DBh}{{{b{CEl}}{b{dCb}}}DBh}{{{b{CEn}}{b{dCb}}}DBh}{{{b{CF`}}{b{dCb}}}DBh}{{{b{CFb}}{b{dCb}}}DBh}{{{b{Fd}}{b{dCb}}}DBh}0000{{{b{CFd}}{b{dCb}}}DBh}{{{b{CFf}}{b{dCb}}}DBh}{{{b{CFh}}{b{dCb}}}DBh}{{{b{CFj}}{b{dCb}}}DBh}{{{b{Ff}}{b{dCb}}}DBh}0000{{{b{CFl}}{b{dCb}}}DBh}{{{b{CFn}}{b{dCb}}}DBh}{{{b{CG`}}{b{dCb}}}DBh}{{{b{Fh}}{b{dCb}}}DBh}0000{{{b{CGb}}{b{dCb}}}DBh}{{{b{Fj}}{b{dCb}}}DBh}0000{{{b{Fl}}{b{dCb}}}DBh}0000{{{b{Fn}}{b{dCb}}}DBh}0000{{{b{CGd}}{b{dCb}}}DBh}{{{b{CGf}}{b{dCb}}}DBh}{{{b{CGh}}{b{dCb}}}DBh}{{{b{CGj}}{b{dCb}}}DBh}{{{b{CGl}}{b{dCb}}}DBh}{{{b{CGn}}{b{dCb}}}DBh}{{{b{CH`}}{b{dCb}}}DBh}{{{b{G`}}{b{dCb}}}DBh}0000{{{b{CHb}}{b{dCb}}}DBh}{{{b{CHd}}{b{dCb}}}DBh}{{{b{Gb}}{b{dCb}}}DBh}0000{{{b{Gd}}{b{dCb}}}DBh}0000{{{b{CHf}}{b{dCb}}}DBh}{{{b{CHh}}{b{dCb}}}DBh}{{{b{CHj}}{b{dCb}}}DBh}{{{b{CHl}}{b{dCb}}}DBh}{{{b{CHn}}{b{dCb}}}DBh}{{{b{CI`}}{b{dCb}}}DBh}{{{b{CIb}}{b{dCb}}}DBh}{{{b{CId}}{b{dCb}}}DBh}{{{b{CIf}}{b{dCb}}}DBh}{{{b{CIh}}{b{dCb}}}DBh}{{{b{CIj}}{b{dCb}}}DBh}{{{b{CIl}}{b{dCb}}}DBh}{{{b{CIn}}{b{dCb}}}DBh}{{{b{CJ`}}{b{dCb}}}DBh}{{{b{CJb}}{b{dCb}}}DBh}{{{b{Gf}}{b{dCb}}}DBh}0000{{{b{CJd}}{b{dCb}}}DBh}{{{b{CJf}}{b{dCb}}}DBh}{{{b{CJh}}{b{dCb}}}DBh}{{{b{CJj}}{b{dCb}}}DBh}{{{b{CJl}}{b{dCb}}}DBh}{{{b{CJn}}{b{dCb}}}DBh}{{{b{CK`}}{b{dCb}}}DBh}{{{b{CKb}}{b{dCb}}}DBh}{{{b{Gh}}{b{dCb}}}DBh}0000{{{b{CKd}}{b{dCb}}}DBh}{{{b{CKf}}{b{dCb}}}DBh}{{{b{CKh}}{b{dCb}}}DBh}{{{b{CKj}}{b{dCb}}}DBh}{{{b{CKl}}{b{dCb}}}DBh}{{{b{Gj}}{b{dCb}}}DBh}0000{{{b{CKn}}{b{dCb}}}DBh}{{{b{CL`}}{b{dCb}}}DBh}{{{b{CLb}}{b{dCb}}}DBh}{{{b{CLd}}{b{dCb}}}DBh}{{{b{CLf}}{b{dCb}}}DBh}{{{b{CLh}}{b{dCb}}}DBh}{{{b{CLj}}{b{dCb}}}DBh}{{{b{CLl}}{b{dCb}}}DBh}{{{b{CLn}}{b{dCb}}}DBh}{{{b{Gl}}{b{dCb}}}DBh}0000{{{b{CM`}}{b{dCb}}}DBh}{{{b{Gn}}{b{dCb}}}DBh}0000{{{b{CMb}}{b{dCb}}}DBh}{{{b{CMd}}{b{dCb}}}DBh}{{{b{CMf}}{b{dCb}}}DBh}{{{b{CMh}}{b{dCb}}}DBh}{{{b{CMj}}{b{dCb}}}DBh}{{{b{CMl}}{b{dCb}}}DBh}{{{b{CMn}}{b{dCb}}}DBh}{{{b{CN`}}{b{dCb}}}DBh}{{{b{H`}}{b{dCb}}}DBh}0000{{{b{CNb}}{b{dCb}}}DBh}{{{b{CNd}}{b{dCb}}}DBh}{{{b{CNf}}{b{dCb}}}DBh}{{{b{CNh}}{b{dCb}}}DBh}{{{b{CNj}}{b{dCb}}}DBh}{{{b{CNl}}{b{dCb}}}DBh}{{{b{CNn}}{b{dCb}}}DBh}{{{b{CO`}}{b{dCb}}}DBh}{{{b{Hb}}{b{dCb}}}DBh}0000{{{b{COb}}{b{dCb}}}DBh}{{{b{COd}}{b{dCb}}}DBh}{{{b{COf}}{b{dCb}}}DBh}{{{b{COh}}{b{dCb}}}DBh}{{{b{COj}}{b{dCb}}}DBh}{{{b{Hd}}{b{dCb}}}DBh}0000{{{b{COl}}{b{dCb}}}DBh}{{{b{COn}}{b{dCb}}}DBh}{{{b{Hf}}{b{dCb}}}DBh}0000{{{b{D@`}}{b{dCb}}}DBh}{{{b{D@b}}{b{dCb}}}DBh}{{{b{D@d}}{b{dCb}}}DBh}{{{b{D@f}}{b{dCb}}}DBh}{{{b{D@h}}{b{dCb}}}DBh}{{{b{D@j}}{b{dCb}}}DBh}{{{b{D@l}}{b{dCb}}}DBh}{{{b{Hh}}{b{dCb}}}DBh}0000{{{b{Hj}}{b{dCb}}}DBh}0000{{{b{D@n}}{b{dCb}}}DBh}{{{b{DA`}}{b{dCb}}}DBh}{{{b{DAb}}{b{dCb}}}DBh}{{{b{DAd}}{b{dCb}}}DBh}{{{b{DAf}}{b{dCb}}}DBh}{{{b{DAh}}{b{dCb}}}DBh}{{{b{DAj}}{b{dCb}}}DBh}{{{b{DAl}}{b{dCb}}}DBh}{{{b{DAn}}{b{dCb}}}DBh}{{{b{DB`}}{b{dCb}}}DBh}```````````````````{cc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{Bf{{DBj{Dl}}}}{j{{DBj{Dn}}}}{j{{DBj{E`}}}}{f{{DBj{Eb}}}}{f{{DBj{Ed}}}}{f{{DBj{Ef}}}}{f{{DBj{Eh}}}}{j{{DBj{Ej}}}}{Bf{{DBj{El}}}}{j{{DBj{En}}}}{j{{DBj{F`}}}}{Hl{{DBj{Fb}}}}{j{{DBj{Fd}}}}{f{{DBj{Ff}}}}{j{{DBj{Fh}}}}{Bf{{DBj{Fj}}}}{f{{DBj{Fl}}}}{f{{DBj{Fn}}}}{j{{DBj{G`}}}}{Bf{{DBj{Gb}}}}{Hl{{DBj{Gd}}}}{j{{DBj{Gf}}}}{f{{DBj{Gh}}}}{f{{DBj{Gj}}}}{Bf{{DBj{Gl}}}}{j{{DBj{Gn}}}}{j{{DBj{H`}}}}{Bf{{DBj{Hb}}}}{j{{DBj{Hd}}}}{f{{DBj{Hf}}}}{j{{DBj{Hh}}}}{Bf{{DBj{Hj}}}}{BfDl}{jDn}{jE`}{fEb}{fEd}{fEf}{fEh}{jEj}{BfEl}{jEn}{jF`}{HlFb}{jFd}{fFf}{jFh}{BfFj}{fFl}{fFn}{jG`}{BfGb}{HlGd}{jGf}{fGh}{fGj}{BfGl}{jGn}{jH`}{BfHb}{jHd}{fHf}{jHh}{BfHj}{BfDl}{jDn}{jE`}{fEb}{fEd}{fEf}{fEh}{jEj}{BfEl}{jEn}{jF`}{HlFb}{jFd}{fFf}{jFh}{BfFj}{fFl}{fFn}{jG`}{BfGb}{HlGd}{jGf}{fGh}{fGj}{BfGl}{jGn}{jH`}{BfHb}{jHd}{fHf}{jHh}{BfHj}{DBl{{DBj{BN`}}}}{DBl{{DBj{BNb}}}}{DBl{{DBj{BNd}}}}{DBl{{DBj{BNf}}}}{DBl{{DBj{BNh}}}}{DBl{{DBj{BNj}}}}{DBl{{DBj{BNl}}}}{DBl{{DBj{BNn}}}}{DBl{{DBj{BO`}}}}{DBl{{DBj{BOb}}}}{DBl{{DBj{BOd}}}}{DBl{{DBj{BOf}}}}{DBl{{DBj{BOh}}}}{DBl{{DBj{BOj}}}}{DBl{{DBj{BOl}}}}{DBl{{DBj{BOn}}}}{DBl{{DBj{C@`}}}}{DBl{{DBj{C@b}}}}{DBl{{DBj{C@d}}}}{DBl{{DBj{C@f}}}}{DBl{{DBj{C@h}}}}{DBl{{DBj{C@j}}}}{DBl{{DBj{C@l}}}}{DBl{{DBj{C@n}}}}{DBl{{DBj{CA`}}}}{DBl{{DBj{CAb}}}}{DBl{{DBj{CAd}}}}{DBl{{DBj{CAf}}}}{DBl{{DBj{CAh}}}}{DBl{{DBj{CAj}}}}{DBl{{DBj{CAl}}}}{DBl{{DBj{CAn}}}}{DBl{{DBj{CB`}}}}{DBl{{DBj{CBb}}}}{DBl{{DBj{CBd}}}}{DBl{{DBj{CBf}}}}{DBl{{DBj{CBh}}}}{DBl{{DBj{CBj}}}}{DBl{{DBj{CBl}}}}{DBl{{DBj{CBn}}}}{DBl{{DBj{CC`}}}}{DBl{{DBj{CCb}}}}{DBl{{DBj{CCd}}}}{DBl{{DBj{CCf}}}}{DBl{{DBj{CCh}}}}{DBl{{DBj{CCj}}}}{DBl{{DBj{CCl}}}}{DBl{{DBj{CCn}}}}{DBl{{DBj{CD`}}}}{DBl{{DBj{CDb}}}}{DBl{{DBj{CDd}}}}{DBl{{DBj{CDf}}}}{DBl{{DBj{CDh}}}}{DBl{{DBj{CDj}}}}{DBl{{DBj{CDl}}}}{DBl{{DBj{CDn}}}}{DBl{{DBj{CE`}}}}{DBl{{DBj{CEb}}}}{DBl{{DBj{CEd}}}}{DBl{{DBj{CEf}}}}{DBl{{DBj{CEh}}}}{DBl{{DBj{CEj}}}}{DBl{{DBj{CEl}}}}{DBl{{DBj{CEn}}}}{DBl{{DBj{CF`}}}}{DBl{{DBj{CFb}}}}{DBl{{DBj{CFd}}}}{DBl{{DBj{CFf}}}}{DBl{{DBj{CFh}}}}{DBl{{DBj{CFj}}}}{DBl{{DBj{CFl}}}}{DBl{{DBj{CFn}}}}{DBl{{DBj{CG`}}}}{DBl{{DBj{CGb}}}}{DBl{{DBj{CGd}}}}{DBl{{DBj{CGf}}}}{DBl{{DBj{CGh}}}}{DBl{{DBj{CGj}}}}{DBl{{DBj{CGl}}}}{DBl{{DBj{CGn}}}}{DBl{{DBj{CH`}}}}{DBl{{DBj{CHb}}}}{DBl{{DBj{CHd}}}}{DBl{{DBj{CHf}}}}{DBl{{DBj{CHh}}}}{DBl{{DBj{CHj}}}}{DBl{{DBj{CHl}}}}{DBl{{DBj{CHn}}}}{DBl{{DBj{CI`}}}}{DBl{{DBj{CIb}}}}{DBl{{DBj{CId}}}}{DBl{{DBj{CIf}}}}{DBl{{DBj{CIh}}}}{DBl{{DBj{CIj}}}}{DBl{{DBj{CIl}}}}{DBl{{DBj{CIn}}}}{DBl{{DBj{CJ`}}}}{DBl{{DBj{CJb}}}}{DBl{{DBj{CJd}}}}{DBl{{DBj{CJf}}}}{DBl{{DBj{CJh}}}}{DBl{{DBj{CJj}}}}{DBl{{DBj{CJl}}}}{DBl{{DBj{CJn}}}}{DBl{{DBj{CK`}}}}{DBl{{DBj{CKb}}}}{DBl{{DBj{CKd}}}}{DBl{{DBj{CKf}}}}{DBl{{DBj{CKh}}}}{DBl{{DBj{CKj}}}}{DBl{{DBj{CKl}}}}{DBl{{DBj{CKn}}}}{DBl{{DBj{CL`}}}}{DBl{{DBj{CLb}}}}{DBl{{DBj{CLd}}}}{DBl{{DBj{CLf}}}}{DBl{{DBj{CLh}}}}{DBl{{DBj{CLj}}}}{DBl{{DBj{CLl}}}}{DBl{{DBj{CLn}}}}{DBl{{DBj{CM`}}}}{DBl{{DBj{CMb}}}}{DBl{{DBj{CMd}}}}{DBl{{DBj{CMf}}}}{DBl{{DBj{CMh}}}}{DBl{{DBj{CMj}}}}{DBl{{DBj{CMl}}}}{DBl{{DBj{CMn}}}}{DBl{{DBj{CN`}}}}{DBl{{DBj{CNb}}}}{DBl{{DBj{CNd}}}}{DBl{{DBj{CNf}}}}{DBl{{DBj{CNh}}}}{DBl{{DBj{CNj}}}}{DBl{{DBj{CNl}}}}{DBl{{DBj{CNn}}}}{DBl{{DBj{CO`}}}}{DBl{{DBj{COb}}}}{DBl{{DBj{COd}}}}{DBl{{DBj{COf}}}}{DBl{{DBj{COh}}}}{DBl{{DBj{COj}}}}{DBl{{DBj{COl}}}}{DBl{{DBj{COn}}}}{DBl{{DBj{D@`}}}}{DBl{{DBj{D@b}}}}{DBl{{DBj{D@d}}}}{DBl{{DBj{D@f}}}}{DBl{{DBj{D@h}}}}{DBl{{DBj{D@j}}}}{DBl{{DBj{D@l}}}}{DBl{{DBj{D@n}}}}{DBl{{DBj{DA`}}}}{DBl{{DBj{DAb}}}}{DBl{{DBj{DAd}}}}{DBl{{DBj{DAf}}}}{DBl{{DBj{DAh}}}}{DBl{{DBj{DAj}}}}{DBl{{DBj{DAl}}}}{DBl{{DBj{DAn}}}}{DBl{{DBj{DB`}}}}{cDl{{DBf{}{{DBd{Dl}}}}}}{cDn{{DBf{}{{DBd{Dn}}}}}}{cE`{{DBf{}{{DBd{E`}}}}}}{cEb{{DBf{}{{DBd{Eb}}}}}}{cEd{{DBf{}{{DBd{Ed}}}}}}{cEf{{DBf{}{{DBd{Ef}}}}}}{cEh{{DBf{}{{DBd{Eh}}}}}}{cEj{{DBf{}{{DBd{Ej}}}}}}{cEl{{DBf{}{{DBd{El}}}}}}{cEn{{DBf{}{{DBd{En}}}}}}{cF`{{DBf{}{{DBd{F`}}}}}}{cFb{{DBf{}{{DBd{Fb}}}}}}{cFd{{DBf{}{{DBd{Fd}}}}}}{cFf{{DBf{}{{DBd{Ff}}}}}}{cFh{{DBf{}{{DBd{Fh}}}}}}{cFj{{DBf{}{{DBd{Fj}}}}}}{cFl{{DBf{}{{DBd{Fl}}}}}}{cFn{{DBf{}{{DBd{Fn}}}}}}{cG`{{DBf{}{{DBd{G`}}}}}}{cGb{{DBf{}{{DBd{Gb}}}}}}{cGd{{DBf{}{{DBd{Gd}}}}}}{cGf{{DBf{}{{DBd{Gf}}}}}}{cGh{{DBf{}{{DBd{Gh}}}}}}{cGj{{DBf{}{{DBd{Gj}}}}}}{cGl{{DBf{}{{DBd{Gl}}}}}}{cGn{{DBf{}{{DBd{Gn}}}}}}{cH`{{DBf{}{{DBd{H`}}}}}}{cHb{{DBf{}{{DBd{Hb}}}}}}{cHd{{DBf{}{{DBd{Hd}}}}}}{cHf{{DBf{}{{DBd{Hf}}}}}}{cHh{{DBf{}{{DBd{Hh}}}}}}{cHj{{DBf{}{{DBd{Hj}}}}}}{Hl{{DBj{BN`}}}}{Hl{{DBj{BNb}}}}{Hl{{DBj{BNd}}}}{Hl{{DBj{BNf}}}}{Hl{{DBj{BNh}}}}{Hl{{DBj{BNj}}}}{Hl{{DBj{BNl}}}}{Hl{{DBj{BNn}}}}{Hl{{DBj{BO`}}}}{Hl{{DBj{BOb}}}}{Hl{{DBj{BOd}}}}{Hl{{DBj{BOf}}}}{Hl{{DBj{BOh}}}}{Hl{{DBj{BOj}}}}{Hl{{DBj{BOl}}}}{Hl{{DBj{BOn}}}}{Hl{{DBj{C@`}}}}{Hl{{DBj{C@b}}}}{Hl{{DBj{C@d}}}}{Hl{{DBj{C@f}}}}{Hl{{DBj{C@h}}}}{Hl{{DBj{C@j}}}}{Hl{{DBj{C@l}}}}{Hl{{DBj{C@n}}}}{Hl{{DBj{CA`}}}}{Hl{{DBj{CAb}}}}{Hl{{DBj{CAd}}}}{Hl{{DBj{CAf}}}}{Hl{{DBj{CAh}}}}{Hl{{DBj{CAj}}}}{Hl{{DBj{CAl}}}}{Hl{{DBj{CAn}}}}{Hl{{DBj{CB`}}}}{Hl{{DBj{CBb}}}}{Hl{{DBj{CBd}}}}{Hl{{DBj{CBf}}}}{Hl{{DBj{CBh}}}}{Hl{{DBj{CBj}}}}{Hl{{DBj{CBl}}}}{Hl{{DBj{CBn}}}}{Hl{{DBj{CC`}}}}{Hl{{DBj{CCb}}}}{Hl{{DBj{CCd}}}}{Hl{{DBj{CCf}}}}{Hl{{DBj{CCh}}}}{Hl{{DBj{CCj}}}}{Hl{{DBj{CCl}}}}{Hl{{DBj{CCn}}}}{Hl{{DBj{CD`}}}}{Hl{{DBj{CDb}}}}{Hl{{DBj{CDd}}}}{Hl{{DBj{CDf}}}}{Hl{{DBj{CDh}}}}{Hl{{DBj{CDj}}}}{Hl{{DBj{CDl}}}}{Hl{{DBj{CDn}}}}{Hl{{DBj{CE`}}}}{Hl{{DBj{CEb}}}}{Hl{{DBj{CEd}}}}{Hl{{DBj{CEf}}}}{Hl{{DBj{CEh}}}}{Hl{{DBj{CEj}}}}{Hl{{DBj{CEl}}}}{Hl{{DBj{CEn}}}}{Hl{{DBj{CF`}}}}{Hl{{DBj{CFb}}}}{Hl{{DBj{CFd}}}}{Hl{{DBj{CFf}}}}{Hl{{DBj{CFh}}}}{Hl{{DBj{CFj}}}}{Hl{{DBj{CFl}}}}{Hl{{DBj{CFn}}}}{Hl{{DBj{CG`}}}}{Hl{{DBj{CGb}}}}{Hl{{DBj{CGd}}}}{Hl{{DBj{CGf}}}}{Hl{{DBj{CGh}}}}{Hl{{DBj{CGj}}}}{Hl{{DBj{CGl}}}}{Hl{{DBj{CGn}}}}{Hl{{DBj{CH`}}}}{Hl{{DBj{CHb}}}}{Hl{{DBj{CHd}}}}{Hl{{DBj{CHf}}}}{Hl{{DBj{CHh}}}}{Hl{{DBj{CHj}}}}{Hl{{DBj{CHl}}}}{Hl{{DBj{CHn}}}}{Hl{{DBj{CI`}}}}{Hl{{DBj{CIb}}}}{Hl{{DBj{CId}}}}{Hl{{DBj{CIf}}}}{Hl{{DBj{CIh}}}}{Hl{{DBj{CIj}}}}{Hl{{DBj{CIl}}}}{Hl{{DBj{CIn}}}}{Hl{{DBj{CJ`}}}}{Hl{{DBj{CJb}}}}{Hl{{DBj{CJd}}}}{Hl{{DBj{CJf}}}}{Hl{{DBj{CJh}}}}{Hl{{DBj{CJj}}}}{Hl{{DBj{CJl}}}}{Hl{{DBj{CJn}}}}{Hl{{DBj{CK`}}}}{Hl{{DBj{CKb}}}}{Hl{{DBj{CKd}}}}{Hl{{DBj{CKf}}}}{Hl{{DBj{CKh}}}}{Hl{{DBj{CKj}}}}{Hl{{DBj{CKl}}}}{Hl{{DBj{CKn}}}}{Hl{{DBj{CL`}}}}{Hl{{DBj{CLb}}}}{Hl{{DBj{CLd}}}}{Hl{{DBj{CLf}}}}{Hl{{DBj{CLh}}}}{Hl{{DBj{CLj}}}}{Hl{{DBj{CLl}}}}{Hl{{DBj{CLn}}}}{Hl{{DBj{CM`}}}}{Hl{{DBj{CMb}}}}{Hl{{DBj{CMd}}}}{Hl{{DBj{CMf}}}}{Hl{{DBj{CMh}}}}{Hl{{DBj{CMj}}}}{Hl{{DBj{CMl}}}}{Hl{{DBj{CMn}}}}{Hl{{DBj{CN`}}}}{Hl{{DBj{CNb}}}}{Hl{{DBj{CNd}}}}{Hl{{DBj{CNf}}}}{Hl{{DBj{CNh}}}}{Hl{{DBj{CNj}}}}{Hl{{DBj{CNl}}}}{Hl{{DBj{CNn}}}}{Hl{{DBj{CO`}}}}{Hl{{DBj{COb}}}}{Hl{{DBj{COd}}}}{Hl{{DBj{COf}}}}{Hl{{DBj{COh}}}}{Hl{{DBj{COj}}}}{Hl{{DBj{COl}}}}{Hl{{DBj{COn}}}}{Hl{{DBj{D@`}}}}{Hl{{DBj{D@b}}}}{Hl{{DBj{D@d}}}}{Hl{{DBj{D@f}}}}{Hl{{DBj{D@h}}}}{Hl{{DBj{D@j}}}}{Hl{{DBj{D@l}}}}{Hl{{DBj{D@n}}}}{Hl{{DBj{DA`}}}}{Hl{{DBj{DAb}}}}{Hl{{DBj{DAd}}}}{Hl{{DBj{DAf}}}}{Hl{{DBj{DAh}}}}{Hl{{DBj{DAj}}}}{Hl{{DBj{DAl}}}}{Hl{{DBj{DAn}}}}{Hl{{DBj{DB`}}}}```````````````````````````````````````{{{b{Dl}}{b{dc}}}AjDBn}{{{b{Dn}}{b{dc}}}AjDBn}{{{b{E`}}{b{dc}}}AjDBn}{{{b{Eb}}{b{dc}}}AjDBn}{{{b{Ed}}{b{dc}}}AjDBn}{{{b{Ef}}{b{dc}}}AjDBn}{{{b{Eh}}{b{dc}}}AjDBn}{{{b{Ej}}{b{dc}}}AjDBn}{{{b{El}}{b{dc}}}AjDBn}{{{b{En}}{b{dc}}}AjDBn}{{{b{F`}}{b{dc}}}AjDBn}{{{b{Fb}}{b{dc}}}AjDBn}{{{b{Fd}}{b{dc}}}AjDBn}{{{b{Ff}}{b{dc}}}AjDBn}{{{b{Fh}}{b{dc}}}AjDBn}{{{b{Fj}}{b{dc}}}AjDBn}{{{b{Fl}}{b{dc}}}AjDBn}{{{b{Fn}}{b{dc}}}AjDBn}{{{b{G`}}{b{dc}}}AjDBn}{{{b{Gb}}{b{dc}}}AjDBn}{{{b{Gd}}{b{dc}}}AjDBn}{{{b{Gf}}{b{dc}}}AjDBn}{{{b{Gh}}{b{dc}}}AjDBn}{{{b{Gj}}{b{dc}}}AjDBn}{{{b{Gl}}{b{dc}}}AjDBn}{{{b{Gn}}{b{dc}}}AjDBn}{{{b{H`}}{b{dc}}}AjDBn}{{{b{Hb}}{b{dc}}}AjDBn}{{{b{Hd}}{b{dc}}}AjDBn}{{{b{Hf}}{b{dc}}}AjDBn}{{{b{Hh}}{b{dc}}}AjDBn}{{{b{Hj}}{b{dc}}}AjDBn}`````````````````````````````````````````````````````````````````````````````{{{b{dDl}}Dl}Aj}{{{b{dDn}}Dn}Aj}{{{b{dE`}}E`}Aj}{{{b{dEb}}Eb}Aj}{{{b{dEd}}Ed}Aj}{{{b{dEf}}Ef}Aj}{{{b{dEh}}Eh}Aj}{{{b{dEj}}Ej}Aj}{{{b{dEl}}El}Aj}{{{b{dEn}}En}Aj}{{{b{dF`}}F`}Aj}{{{b{dFb}}Fb}Aj}{{{b{dFd}}Fd}Aj}{{{b{dFf}}Ff}Aj}{{{b{dFh}}Fh}Aj}{{{b{dFj}}Fj}Aj}{{{b{dFl}}Fl}Aj}{{{b{dFn}}Fn}Aj}{{{b{dG`}}G`}Aj}{{{b{dGb}}Gb}Aj}{{{b{dGd}}Gd}Aj}{{{b{dGf}}Gf}Aj}{{{b{dGh}}Gh}Aj}{{{b{dGj}}Gj}Aj}{{{b{dGl}}Gl}Aj}{{{b{dGn}}Gn}Aj}{{{b{dH`}}H`}Aj}{{{b{dHb}}Hb}Aj}{{{b{dHd}}Hd}Aj}{{{b{dHf}}Hf}Aj}{{{b{dHh}}Hh}Aj}{{{b{dHj}}Hj}Aj}````````````````{{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}{{HhHh}Hh}{{HjHj}Hj}{{{b{Dl}}Dl}C`}{{{b{Dn}}Dn}C`}{{{b{E`}}E`}C`}{{{b{Eb}}Eb}C`}{{{b{Ed}}Ed}C`}{{{b{Ef}}Ef}C`}{{{b{Eh}}Eh}C`}{{{b{Ej}}Ej}C`}{{{b{El}}El}C`}{{{b{En}}En}C`}{{{b{F`}}F`}C`}{{{b{Fb}}Fb}C`}{{{b{Fd}}Fd}C`}{{{b{Ff}}Ff}C`}{{{b{Fh}}Fh}C`}{{{b{Fj}}Fj}C`}{{{b{Fl}}Fl}C`}{{{b{Fn}}Fn}C`}{{{b{G`}}G`}C`}{{{b{Gb}}Gb}C`}{{{b{Gd}}Gd}C`}{{{b{Gf}}Gf}C`}{{{b{Gh}}Gh}C`}{{{b{Gj}}Gj}C`}{{{b{Gl}}Gl}C`}{{{b{Gn}}Gn}C`}{{{b{H`}}H`}C`}{{{b{Hb}}Hb}C`}{{{b{Hd}}Hd}C`}{{{b{Hf}}Hf}C`}{{{b{Hh}}Hh}C`}{{{b{Hj}}Hj}C`}`{ce{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{Dl}}}C`}{{{b{Dn}}}C`}{{{b{E`}}}C`}{{{b{Eb}}}C`}{{{b{Ed}}}C`}{{{b{Ef}}}C`}{{{b{Eh}}}C`}{{{b{Ej}}}C`}{{{b{El}}}C`}{{{b{En}}}C`}{{{b{F`}}}C`}{{{b{Fb}}}C`}{{{b{Fd}}}C`}{{{b{Ff}}}C`}{{{b{Fh}}}C`}{{{b{Fj}}}C`}{{{b{Fl}}}C`}{{{b{Fn}}}C`}{{{b{G`}}}C`}{{{b{Gb}}}C`}{{{b{Gd}}}C`}{{{b{Gf}}}C`}{{{b{Gh}}}C`}{{{b{Gj}}}C`}{{{b{Gl}}}C`}{{{b{Gn}}}C`}{{{b{H`}}}C`}{{{b{Hb}}}C`}{{{b{Hd}}}C`}{{{b{Hf}}}C`}{{{b{Hh}}}C`}{{{b{Hj}}}C`}{{{b{Dl}}}C`}{{{b{Dn}}}C`}{{{b{E`}}}C`}{{{b{Eb}}}C`}{{{b{Ed}}}C`}{{{b{Ef}}}C`}{{{b{Eh}}}C`}{{{b{Ej}}}C`}{{{b{El}}}C`}{{{b{En}}}C`}{{{b{F`}}}C`}{{{b{Fb}}}C`}{{{b{Fd}}}C`}{{{b{Ff}}}C`}{{{b{Fh}}}C`}{{{b{Fj}}}C`}{{{b{Fl}}}C`}{{{b{Fn}}}C`}{{{b{G`}}}C`}{{{b{Gb}}}C`}{{{b{Gd}}}C`}{{{b{Gf}}}C`}{{{b{Gh}}}C`}{{{b{Gj}}}C`}{{{b{Gl}}}C`}{{{b{Gn}}}C`}{{{b{H`}}}C`}{{{b{Hb}}}C`}{{{b{Hd}}}C`}{{{b{Hf}}}C`}{{{b{Hh}}}C`}{{{b{Hj}}}C`}````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{Hn}}}Bf}`{{{b{Al}}}{{Bd{Bf{b{Al}}}}}}{{{b{Hn}}}{{b{Al}}}}`````````````````````````````````````````````````````{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}{HhHh}{HjHj}``````````````````````````````````````````````````````````````````````````````````````````````````````````````{{AbBf{b{{h{f}}}}}{{Bd{HnBl}}}}{{{b{Dl}}{b{Dl}}}{{DBj{DBb}}}}{{{b{Dn}}{b{Dn}}}{{DBj{DBb}}}}{{{b{E`}}{b{E`}}}{{DBj{DBb}}}}{{{b{Eb}}{b{Eb}}}{{DBj{DBb}}}}{{{b{Ed}}{b{Ed}}}{{DBj{DBb}}}}{{{b{Ef}}{b{Ef}}}{{DBj{DBb}}}}{{{b{Eh}}{b{Eh}}}{{DBj{DBb}}}}{{{b{Ej}}{b{Ej}}}{{DBj{DBb}}}}{{{b{El}}{b{El}}}{{DBj{DBb}}}}{{{b{En}}{b{En}}}{{DBj{DBb}}}}{{{b{F`}}{b{F`}}}{{DBj{DBb}}}}{{{b{Fb}}{b{Fb}}}{{DBj{DBb}}}}{{{b{Fd}}{b{Fd}}}{{DBj{DBb}}}}{{{b{Ff}}{b{Ff}}}{{DBj{DBb}}}}{{{b{Fh}}{b{Fh}}}{{DBj{DBb}}}}{{{b{Fj}}{b{Fj}}}{{DBj{DBb}}}}{{{b{Fl}}{b{Fl}}}{{DBj{DBb}}}}{{{b{Fn}}{b{Fn}}}{{DBj{DBb}}}}{{{b{G`}}{b{G`}}}{{DBj{DBb}}}}{{{b{Gb}}{b{Gb}}}{{DBj{DBb}}}}{{{b{Gd}}{b{Gd}}}{{DBj{DBb}}}}{{{b{Gf}}{b{Gf}}}{{DBj{DBb}}}}{{{b{Gh}}{b{Gh}}}{{DBj{DBb}}}}{{{b{Gj}}{b{Gj}}}{{DBj{DBb}}}}{{{b{Gl}}{b{Gl}}}{{DBj{DBb}}}}{{{b{Gn}}{b{Gn}}}{{DBj{DBb}}}}{{{b{H`}}{b{H`}}}{{DBj{DBb}}}}{{{b{Hb}}{b{Hb}}}{{DBj{DBb}}}}{{{b{Hd}}{b{Hd}}}{{DBj{DBb}}}}{{{b{Hf}}{b{Hf}}}{{DBj{DBb}}}}{{{b{Hh}}{b{Hh}}}{{DBj{DBb}}}}{{{b{Hj}}{b{Hj}}}{{DBj{DBb}}}}``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{dDl}}Dl}Aj}{{{b{dDn}}Dn}Aj}{{{b{dE`}}E`}Aj}{{{b{dEb}}Eb}Aj}{{{b{dEd}}Ed}Aj}{{{b{dEf}}Ef}Aj}{{{b{dEh}}Eh}Aj}{{{b{dEj}}Ej}Aj}{{{b{dEl}}El}Aj}{{{b{dEn}}En}Aj}{{{b{dF`}}F`}Aj}{{{b{dFb}}Fb}Aj}{{{b{dFd}}Fd}Aj}{{{b{dFf}}Ff}Aj}{{{b{dFh}}Fh}Aj}{{{b{dFj}}Fj}Aj}{{{b{dFl}}Fl}Aj}{{{b{dFn}}Fn}Aj}{{{b{dG`}}G`}Aj}{{{b{dGb}}Gb}Aj}{{{b{dGd}}Gd}Aj}{{{b{dGf}}Gf}Aj}{{{b{dGh}}Gh}Aj}{{{b{dGj}}Gj}Aj}{{{b{dGl}}Gl}Aj}{{{b{dGn}}Gn}Aj}{{{b{dH`}}H`}Aj}{{{b{dHb}}Hb}Aj}{{{b{dHd}}Hd}Aj}{{{b{dHf}}Hf}Aj}{{{b{dHh}}Hh}Aj}{{{b{dHj}}Hj}Aj}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{Hn}}Ab{b{d{h{f}}}}}D`}{{{b{I`}}Ab{b{d{h{f}}}}}D`}{{{b{Ib}}Ab{b{d{h{f}}}}}D`}{{{b{Id}}Ab{b{d{h{f}}}}}D`}{{{b{If}}Ab{b{d{h{f}}}}}D`}{{{b{Ih}}Ab{b{d{h{f}}}}}D`}{{{b{Ij}}Ab{b{d{h{f}}}}}D`}{{{b{Il}}Ab{b{d{h{f}}}}}D`}{{{b{In}}Ab{b{d{h{f}}}}}D`}{{{b{J`}}Ab{b{d{h{f}}}}}D`}{{{b{Jb}}Ab{b{d{h{f}}}}}D`}{{{b{Jd}}Ab{b{d{h{f}}}}}D`}{{{b{Jf}}Ab{b{d{h{f}}}}}D`}{{{b{Jh}}Ab{b{d{h{f}}}}}D`}{{{b{Jj}}Ab{b{d{h{f}}}}}D`}{{{b{Jl}}Ab{b{d{h{f}}}}}D`}{{{b{Jn}}Ab{b{d{h{f}}}}}D`}{{{b{K`}}Ab{b{d{h{f}}}}}D`}{{{b{Kb}}Ab{b{d{h{f}}}}}D`}{{{b{Kd}}Ab{b{d{h{f}}}}}D`}{{{b{Kf}}Ab{b{d{h{f}}}}}D`}{{{b{Kh}}Ab{b{d{h{f}}}}}D`}{{{b{Kj}}Ab{b{d{h{f}}}}}D`}{{{b{Kl}}Ab{b{d{h{f}}}}}D`}{{{b{Kn}}Ab{b{d{h{f}}}}}D`}{{{b{L`}}Ab{b{d{h{f}}}}}D`}{{{b{Lb}}Ab{b{d{h{f}}}}}D`}{{{b{Ld}}Ab{b{d{h{f}}}}}D`}{{{b{Lf}}Ab{b{d{h{f}}}}}D`}{{{b{Lh}}Ab{b{d{h{f}}}}}D`}{{{b{Lj}}Ab{b{d{h{f}}}}}D`}{{{b{Ll}}Ab{b{d{h{f}}}}}D`}{{{b{Ln}}Ab{b{d{h{f}}}}}D`}{{{b{M`}}Ab{b{d{h{f}}}}}D`}{{{b{Mb}}Ab{b{d{h{f}}}}}D`}{{{b{Md}}Ab{b{d{h{f}}}}}D`}{{{b{Mf}}Ab{b{d{h{f}}}}}D`}{{{b{Mh}}Ab{b{d{h{f}}}}}D`}{{{b{Mj}}Ab{b{d{h{f}}}}}D`}{{{b{Ml}}Ab{b{d{h{f}}}}}D`}{{{b{Mn}}Ab{b{d{h{f}}}}}D`}{{{b{N`}}Ab{b{d{h{f}}}}}D`}{{{b{Nb}}Ab{b{d{h{f}}}}}D`}{{{b{Nd}}Ab{b{d{h{f}}}}}D`}{{{b{Nf}}Ab{b{d{h{f}}}}}D`}{{{b{Nh}}Ab{b{d{h{f}}}}}D`}{{{b{Nj}}Ab{b{d{h{f}}}}}D`}{{{b{Nl}}Ab{b{d{h{f}}}}}D`}{{{b{Nn}}Ab{b{d{h{f}}}}}D`}{{{b{O`}}Ab{b{d{h{f}}}}}D`}{{{b{Ob}}Ab{b{d{h{f}}}}}D`}{{{b{Od}}Ab{b{d{h{f}}}}}D`}{{{b{Of}}Ab{b{d{h{f}}}}}D`}{{{b{Oh}}Ab{b{d{h{f}}}}}D`}{{{b{Oj}}Ab{b{d{h{f}}}}}D`}{{{b{Ol}}Ab{b{d{h{f}}}}}D`}{{{b{On}}Ab{b{d{h{f}}}}}D`}{{{b{A@`}}Ab{b{d{h{f}}}}}D`}{{{b{A@b}}Ab{b{d{h{f}}}}}D`}{{{b{A@d}}Ab{b{d{h{f}}}}}D`}{{{b{A@f}}Ab{b{d{h{f}}}}}D`}{{{b{A@h}}Ab{b{d{h{f}}}}}D`}{{{b{A@j}}Ab{b{d{h{f}}}}}D`}{{{b{A@l}}Ab{b{d{h{f}}}}}D`}{{{b{A@n}}Ab{b{d{h{f}}}}}D`}{{{b{AA`}}Ab{b{d{h{f}}}}}D`}{{{b{AAb}}Ab{b{d{h{f}}}}}D`}{{{b{AAd}}Ab{b{d{h{f}}}}}D`}{{{b{AAf}}Ab{b{d{h{f}}}}}D`}{{{b{AAh}}Ab{b{d{h{f}}}}}D`}{{{b{AAj}}Ab{b{d{h{f}}}}}D`}{{{b{AAl}}Ab{b{d{h{f}}}}}D`}{{{b{AAn}}Ab{b{d{h{f}}}}}D`}{{{b{AB`}}Ab{b{d{h{f}}}}}D`}{{{b{ABb}}Ab{b{d{h{f}}}}}D`}{{{b{ABd}}Ab{b{d{h{f}}}}}D`}{{{b{ABf}}Ab{b{d{h{f}}}}}D`}{{{b{ABh}}Ab{b{d{h{f}}}}}D`}{{{b{ABj}}Ab{b{d{h{f}}}}}D`}{{{b{ABl}}Ab{b{d{h{f}}}}}D`}{{{b{ABn}}Ab{b{d{h{f}}}}}D`}{{{b{AC`}}Ab{b{d{h{f}}}}}D`}{{{b{ACb}}Ab{b{d{h{f}}}}}D`}{{{b{ACd}}Ab{b{d{h{f}}}}}D`}{{{b{ACf}}Ab{b{d{h{f}}}}}D`}{{{b{ACh}}Ab{b{d{h{f}}}}}D`}{{{b{ACj}}Ab{b{d{h{f}}}}}D`}{{{b{ACl}}Ab{b{d{h{f}}}}}D`}{{{b{ACn}}Ab{b{d{h{f}}}}}D`}{{{b{AD`}}Ab{b{d{h{f}}}}}D`}{{{b{ADb}}Ab{b{d{h{f}}}}}D`}{{{b{ADd}}Ab{b{d{h{f}}}}}D`}{{{b{ADf}}Ab{b{d{h{f}}}}}D`}{{{b{ADh}}Ab{b{d{h{f}}}}}D`}{{{b{ADj}}Ab{b{d{h{f}}}}}D`}{{{b{ADl}}Ab{b{d{h{f}}}}}D`}{{{b{ADn}}Ab{b{d{h{f}}}}}D`}{{{b{AE`}}Ab{b{d{h{f}}}}}D`}{{{b{AEb}}Ab{b{d{h{f}}}}}D`}{{{b{AEd}}Ab{b{d{h{f}}}}}D`}{{{b{AEf}}Ab{b{d{h{f}}}}}D`}{{{b{AEh}}Ab{b{d{h{f}}}}}D`}{{{b{AEj}}Ab{b{d{h{f}}}}}D`}{{{b{AEl}}Ab{b{d{h{f}}}}}D`}{{{b{AEn}}Ab{b{d{h{f}}}}}D`}{{{b{AF`}}Ab{b{d{h{f}}}}}D`}{{{b{AFb}}Ab{b{d{h{f}}}}}D`}{{{b{AFd}}Ab{b{d{h{f}}}}}D`}{{{b{AFf}}Ab{b{d{h{f}}}}}D`}{{{b{AFh}}Ab{b{d{h{f}}}}}D`}{{{b{AFj}}Ab{b{d{h{f}}}}}D`}{{{b{AFl}}Ab{b{d{h{f}}}}}D`}{{{b{AFn}}Ab{b{d{h{f}}}}}D`}{{{b{AG`}}Ab{b{d{h{f}}}}}D`}{{{b{AGb}}Ab{b{d{h{f}}}}}D`}{{{b{AGd}}Ab{b{d{h{f}}}}}D`}{{{b{AGf}}Ab{b{d{h{f}}}}}D`}{{{b{AGh}}Ab{b{d{h{f}}}}}D`}{{{b{AGj}}Ab{b{d{h{f}}}}}D`}{{{b{AGl}}Ab{b{d{h{f}}}}}D`}{{{b{AGn}}Ab{b{d{h{f}}}}}D`}{{{b{AH`}}Ab{b{d{h{f}}}}}D`}{{{b{AHb}}Ab{b{d{h{f}}}}}D`}{{{b{AHd}}Ab{b{d{h{f}}}}}D`}{{{b{AHf}}Ab{b{d{h{f}}}}}D`}{{{b{AHh}}Ab{b{d{h{f}}}}}D`}{{{b{AHj}}Ab{b{d{h{f}}}}}D`}{{{b{AHl}}Ab{b{d{h{f}}}}}D`}{{{b{AHn}}Ab{b{d{h{f}}}}}D`}{{{b{AI`}}Ab{b{d{h{f}}}}}D`}{{{b{AIb}}Ab{b{d{h{f}}}}}D`}{{{b{AId}}Ab{b{d{h{f}}}}}D`}{{{b{AIf}}Ab{b{d{h{f}}}}}D`}{{{b{AIh}}Ab{b{d{h{f}}}}}D`}{{{b{AIj}}Ab{b{d{h{f}}}}}D`}{{{b{AIl}}Ab{b{d{h{f}}}}}D`}{{{b{AIn}}Ab{b{d{h{f}}}}}D`}{{{b{AJ`}}Ab{b{d{h{f}}}}}D`}{{{b{AJb}}Ab{b{d{h{f}}}}}D`}{{{b{AJd}}Ab{b{d{h{f}}}}}D`}{{{b{AJf}}Ab{b{d{h{f}}}}}D`}{{{b{AJh}}Ab{b{d{h{f}}}}}D`}{{{b{AJj}}Ab{b{d{h{f}}}}}D`}{{{b{AJl}}Ab{b{d{h{f}}}}}D`}{{{b{AJn}}Ab{b{d{h{f}}}}}D`}{{{b{AK`}}Ab{b{d{h{f}}}}}D`}{{{b{AKb}}Ab{b{d{h{f}}}}}D`}{{{b{AKd}}Ab{b{d{h{f}}}}}D`}{{{b{AKf}}Ab{b{d{h{f}}}}}D`}{{{b{AKh}}Ab{b{d{h{f}}}}}D`}{{{b{AKj}}Ab{b{d{h{f}}}}}D`}{{{b{AKl}}Ab{b{d{h{f}}}}}D`}{{{b{AKn}}Ab{b{d{h{f}}}}}D`}{{{b{AL`}}Ab{b{d{h{f}}}}}D`}{{{b{ALb}}Ab{b{d{h{f}}}}}D`}{{{b{ALd}}Ab{b{d{h{f}}}}}D`}{{{b{ALf}}Ab{b{d{h{f}}}}}D`}{{{b{ALh}}Ab{b{d{h{f}}}}}D`}{{{b{ALj}}Ab{b{d{h{f}}}}}D`}{{{b{ALl}}Ab{b{d{h{f}}}}}D`}{{{b{ALn}}Ab{b{d{h{f}}}}}D`}{{{b{AM`}}Ab{b{d{h{f}}}}}D`}{{{b{AMb}}Ab{b{d{h{f}}}}}D`}{{{b{AMd}}Ab{b{d{h{f}}}}}D`}{{{b{AMf}}Ab{b{d{h{f}}}}}D`}{{{b{AMh}}Ab{b{d{h{f}}}}}D`}{{{b{AMj}}Ab{b{d{h{f}}}}}D`}{{{b{AMl}}Ab{b{d{h{f}}}}}D`}{{{b{AMn}}Ab{b{d{h{f}}}}}D`}{{{b{AN`}}Ab{b{d{h{f}}}}}D`}{{{b{ANb}}Ab{b{d{h{f}}}}}D`}{{{b{ANd}}Ab{b{d{h{f}}}}}D`}{{{b{ANf}}Ab{b{d{h{f}}}}}D`}{{{b{ANh}}Ab{b{d{h{f}}}}}D`}{{{b{ANj}}Ab{b{d{h{f}}}}}D`}{{{b{ANl}}Ab{b{d{h{f}}}}}D`}{{{b{ANn}}Ab{b{d{h{f}}}}}D`}{{{b{AO`}}Ab{b{d{h{f}}}}}D`}{{{b{AOb}}Ab{b{d{h{f}}}}}D`}{{{b{AOd}}Ab{b{d{h{f}}}}}D`}{{{b{AOf}}Ab{b{d{h{f}}}}}D`}{{{b{AOh}}Ab{b{d{h{f}}}}}D`}{{{b{AOj}}Ab{b{d{h{f}}}}}D`}{{{b{AOl}}Ab{b{d{h{f}}}}}D`}{{{b{AOn}}Ab{b{d{h{f}}}}}D`}{{{b{B@`}}Ab{b{d{h{f}}}}}D`}{{{b{B@b}}Ab{b{d{h{f}}}}}D`}{{{b{B@d}}Ab{b{d{h{f}}}}}D`}{{{b{B@f}}Ab{b{d{h{f}}}}}D`}{{{b{B@h}}Ab{b{d{h{f}}}}}D`}{{{b{B@j}}Ab{b{d{h{f}}}}}D`}{{{b{B@l}}Ab{b{d{h{f}}}}}D`}{{{b{B@n}}Ab{b{d{h{f}}}}}D`}{{{b{BA`}}Ab{b{d{h{f}}}}}D`}{{{b{BAb}}Ab{b{d{h{f}}}}}D`}{{{b{BAd}}Ab{b{d{h{f}}}}}D`}{{{b{BAf}}Ab{b{d{h{f}}}}}D`}{{{b{BAh}}Ab{b{d{h{f}}}}}D`}{{{b{BAj}}Ab{b{d{h{f}}}}}D`}{{{b{BAl}}Ab{b{d{h{f}}}}}D`}{{{b{BAn}}Ab{b{d{h{f}}}}}D`}{{{b{BB`}}Ab{b{d{h{f}}}}}D`}{{{b{BBb}}Ab{b{d{h{f}}}}}D`}{{{b{BBd}}Ab{b{d{h{f}}}}}D`}{{{b{BBf}}Ab{b{d{h{f}}}}}D`}{{{b{BBh}}Ab{b{d{h{f}}}}}D`}{{{b{BBj}}Ab{b{d{h{f}}}}}D`}{{{b{BBl}}Ab{b{d{h{f}}}}}D`}{{{b{BBn}}Ab{b{d{h{f}}}}}D`}{{{b{BC`}}Ab{b{d{h{f}}}}}D`}{{{b{BCb}}Ab{b{d{h{f}}}}}D`}{{{b{BCd}}Ab{b{d{h{f}}}}}D`}{{{b{BCf}}Ab{b{d{h{f}}}}}D`}{{{b{BCh}}Ab{b{d{h{f}}}}}D`}{{{b{BCj}}Ab{b{d{h{f}}}}}D`}{{{b{BCl}}Ab{b{d{h{f}}}}}D`}{{{b{BCn}}Ab{b{d{h{f}}}}}D`}{{{b{BD`}}Ab{b{d{h{f}}}}}D`}{{{b{BDb}}Ab{b{d{h{f}}}}}D`}{{{b{BDd}}Ab{b{d{h{f}}}}}D`}{{{b{BDf}}Ab{b{d{h{f}}}}}D`}{{{b{BDh}}Ab{b{d{h{f}}}}}D`}{{{b{BDj}}Ab{b{d{h{f}}}}}D`}{{{b{BDl}}Ab{b{d{h{f}}}}}D`}{{{b{BDn}}Ab{b{d{h{f}}}}}D`}{{{b{BE`}}Ab{b{d{h{f}}}}}D`}{{{b{BEb}}Ab{b{d{h{f}}}}}D`}{{{b{BEd}}Ab{b{d{h{f}}}}}D`}{{{b{BEf}}Ab{b{d{h{f}}}}}D`}{{{b{BEh}}Ab{b{d{h{f}}}}}D`}{{{b{BEj}}Ab{b{d{h{f}}}}}D`}{{{b{BEl}}Ab{b{d{h{f}}}}}D`}{{{b{BEn}}Ab{b{d{h{f}}}}}D`}{{{b{BF`}}Ab{b{d{h{f}}}}}D`}{{{b{BFb}}Ab{b{d{h{f}}}}}D`}{{{b{BFd}}Ab{b{d{h{f}}}}}D`}{{{b{BFf}}Ab{b{d{h{f}}}}}D`}{{{b{BFh}}Ab{b{d{h{f}}}}}D`}{{{b{BFj}}Ab{b{d{h{f}}}}}D`}{{{b{BFl}}Ab{b{d{h{f}}}}}D`}{{{b{BFn}}Ab{b{d{h{f}}}}}D`}{{{b{BG`}}Ab{b{d{h{f}}}}}D`}{{{b{BGb}}Ab{b{d{h{f}}}}}D`}{{{b{BGd}}Ab{b{d{h{f}}}}}D`}{{{b{BGf}}Ab{b{d{h{f}}}}}D`}{{{b{BGh}}Ab{b{d{h{f}}}}}D`}{{{b{BGj}}Ab{b{d{h{f}}}}}D`}{{{b{BGl}}Ab{b{d{h{f}}}}}D`}{{{b{BGn}}Ab{b{d{h{f}}}}}D`}{{{b{BH`}}Ab{b{d{h{f}}}}}D`}{{{b{BHb}}Ab{b{d{h{f}}}}}D`}{{{b{BHd}}Ab{b{d{h{f}}}}}D`}{{{b{BHf}}Ab{b{d{h{f}}}}}D`}{{{b{BHh}}Ab{b{d{h{f}}}}}D`}{{{b{BHj}}Ab{b{d{h{f}}}}}D`}{{{b{BHl}}Ab{b{d{h{f}}}}}D`}{{{b{BHn}}Ab{b{d{h{f}}}}}D`}{{{b{BI`}}Ab{b{d{h{f}}}}}D`}{{{b{BIb}}Ab{b{d{h{f}}}}}D`}{{{b{BId}}Ab{b{d{h{f}}}}}D`}{{{b{BIf}}Ab{b{d{h{f}}}}}D`}{{{b{BIh}}Ab{b{d{h{f}}}}}D`}{{{b{BIj}}Ab{b{d{h{f}}}}}D`}{{{b{BIl}}Ab{b{d{h{f}}}}}D`}{{{b{BIn}}Ab{b{d{h{f}}}}}D`}{{{b{BJ`}}Ab{b{d{h{f}}}}}D`}{{{b{BJb}}Ab{b{d{h{f}}}}}D`}{{{b{BJd}}Ab{b{d{h{f}}}}}D`}{{{b{BJf}}Ab{b{d{h{f}}}}}D`}{{{b{BJh}}Ab{b{d{h{f}}}}}D`}{{{b{BJj}}Ab{b{d{h{f}}}}}D`}{{{b{BJl}}Ab{b{d{h{f}}}}}D`}{{{b{BJn}}Ab{b{d{h{f}}}}}D`}{{{b{BK`}}Ab{b{d{h{f}}}}}D`}{{{b{BKb}}Ab{b{d{h{f}}}}}D`}{{{b{BKd}}Ab{b{d{h{f}}}}}D`}{{{b{BKf}}Ab{b{d{h{f}}}}}D`}{{{b{BKh}}Ab{b{d{h{f}}}}}D`}{{{b{BKj}}Ab{b{d{h{f}}}}}D`}{{{b{BKl}}Ab{b{d{h{f}}}}}D`}{{{b{BKn}}Ab{b{d{h{f}}}}}D`}{{{b{BL`}}Ab{b{d{h{f}}}}}D`}{{{b{BLb}}Ab{b{d{h{f}}}}}D`}{{{b{BLd}}Ab{b{d{h{f}}}}}D`}{{{b{BLf}}Ab{b{d{h{f}}}}}D`}{{{b{BLh}}Ab{b{d{h{f}}}}}D`}{{{b{BLj}}Ab{b{d{h{f}}}}}D`}{{{b{BLl}}Ab{b{d{h{f}}}}}D`}{{{b{BLn}}Ab{b{d{h{f}}}}}D`}{{{b{BM`}}Ab{b{d{h{f}}}}}D`}{{{b{BMb}}Ab{b{d{h{f}}}}}D`}{{{b{BMd}}Ab{b{d{h{f}}}}}D`}{{{b{BMf}}Ab{b{d{h{f}}}}}D`}{{{b{BMh}}Ab{b{d{h{f}}}}}D`}{{{b{BMj}}Ab{b{d{h{f}}}}}D`}{{{b{BMl}}Ab{b{d{h{f}}}}}D`}{{{b{BMn}}Ab{b{d{h{f}}}}}D`}`{{{b{Hn}}c}BdDd}{{{b{I`}}c}BdDd}{{{b{Ib}}c}BdDd}{{{b{Id}}c}BdDd}{{{b{If}}c}BdDd}{{{b{Ih}}c}BdDd}{{{b{Ij}}c}BdDd}{{{b{Il}}c}BdDd}{{{b{In}}c}BdDd}{{{b{J`}}c}BdDd}{{{b{Jb}}c}BdDd}{{{b{Jd}}c}BdDd}{{{b{Jf}}c}BdDd}{{{b{Jh}}c}BdDd}{{{b{Jj}}c}BdDd}{{{b{Jl}}c}BdDd}{{{b{Jn}}c}BdDd}{{{b{K`}}c}BdDd}{{{b{Kb}}c}BdDd}{{{b{Kd}}c}BdDd}{{{b{Kf}}c}BdDd}{{{b{Kh}}c}BdDd}{{{b{Kj}}c}BdDd}{{{b{Kl}}c}BdDd}{{{b{Kn}}c}BdDd}{{{b{L`}}c}BdDd}{{{b{Lb}}c}BdDd}{{{b{Ld}}c}BdDd}{{{b{Lf}}c}BdDd}{{{b{Lh}}c}BdDd}{{{b{Lj}}c}BdDd}{{{b{Ll}}c}BdDd}{{{b{Ln}}c}BdDd}{{{b{M`}}c}BdDd}{{{b{Mb}}c}BdDd}{{{b{Md}}c}BdDd}{{{b{Mf}}c}BdDd}{{{b{Mh}}c}BdDd}{{{b{Mj}}c}BdDd}{{{b{Ml}}c}BdDd}{{{b{Mn}}c}BdDd}{{{b{N`}}c}BdDd}{{{b{Nb}}c}BdDd}{{{b{Nd}}c}BdDd}{{{b{Nf}}c}BdDd}{{{b{Nh}}c}BdDd}{{{b{Nj}}c}BdDd}{{{b{Nl}}c}BdDd}{{{b{Nn}}c}BdDd}{{{b{O`}}c}BdDd}{{{b{Ob}}c}BdDd}{{{b{Od}}c}BdDd}{{{b{Of}}c}BdDd}{{{b{Oh}}c}BdDd}{{{b{Oj}}c}BdDd}{{{b{Ol}}c}BdDd}{{{b{On}}c}BdDd}{{{b{A@`}}c}BdDd}{{{b{A@b}}c}BdDd}{{{b{A@d}}c}BdDd}{{{b{A@f}}c}BdDd}{{{b{A@h}}c}BdDd}{{{b{A@j}}c}BdDd}{{{b{A@l}}c}BdDd}{{{b{A@n}}c}BdDd}{{{b{AA`}}c}BdDd}{{{b{AAb}}c}BdDd}{{{b{AAd}}c}BdDd}{{{b{AAf}}c}BdDd}{{{b{AAh}}c}BdDd}{{{b{AAj}}c}BdDd}{{{b{AAl}}c}BdDd}{{{b{AAn}}c}BdDd}{{{b{AB`}}c}BdDd}{{{b{ABb}}c}BdDd}{{{b{ABd}}c}BdDd}{{{b{ABf}}c}BdDd}{{{b{ABh}}c}BdDd}{{{b{ABj}}c}BdDd}{{{b{ABl}}c}BdDd}{{{b{ABn}}c}BdDd}{{{b{AC`}}c}BdDd}{{{b{ACb}}c}BdDd}{{{b{ACd}}c}BdDd}{{{b{ACf}}c}BdDd}{{{b{ACh}}c}BdDd}{{{b{ACj}}c}BdDd}{{{b{ACl}}c}BdDd}{{{b{ACn}}c}BdDd}{{{b{AD`}}c}BdDd}{{{b{ADb}}c}BdDd}{{{b{ADd}}c}BdDd}{{{b{ADf}}c}BdDd}{{{b{ADh}}c}BdDd}{{{b{ADj}}c}BdDd}{{{b{ADl}}c}BdDd}{{{b{ADn}}c}BdDd}{{{b{AE`}}c}BdDd}{{{b{AEb}}c}BdDd}{{{b{AEd}}c}BdDd}{{{b{AEf}}c}BdDd}{{{b{AEh}}c}BdDd}{{{b{AEj}}c}BdDd}{{{b{AEl}}c}BdDd}{{{b{AEn}}c}BdDd}{{{b{AF`}}c}BdDd}{{{b{AFb}}c}BdDd}{{{b{AFd}}c}BdDd}{{{b{AFf}}c}BdDd}{{{b{AFh}}c}BdDd}{{{b{AFj}}c}BdDd}{{{b{AFl}}c}BdDd}{{{b{AFn}}c}BdDd}{{{b{AG`}}c}BdDd}{{{b{AGb}}c}BdDd}{{{b{AGd}}c}BdDd}{{{b{AGf}}c}BdDd}{{{b{AGh}}c}BdDd}{{{b{AGj}}c}BdDd}{{{b{AGl}}c}BdDd}{{{b{AGn}}c}BdDd}{{{b{AH`}}c}BdDd}{{{b{AHb}}c}BdDd}{{{b{AHd}}c}BdDd}{{{b{AHf}}c}BdDd}{{{b{AHh}}c}BdDd}{{{b{AHj}}c}BdDd}{{{b{AHl}}c}BdDd}{{{b{AHn}}c}BdDd}{{{b{AI`}}c}BdDd}{{{b{AIb}}c}BdDd}{{{b{AId}}c}BdDd}{{{b{AIf}}c}BdDd}{{{b{AIh}}c}BdDd}{{{b{AIj}}c}BdDd}{{{b{AIl}}c}BdDd}{{{b{AIn}}c}BdDd}{{{b{AJ`}}c}BdDd}{{{b{AJb}}c}BdDd}{{{b{AJd}}c}BdDd}{{{b{AJf}}c}BdDd}{{{b{AJh}}c}BdDd}{{{b{AJj}}c}BdDd}{{{b{AJl}}c}BdDd}{{{b{AJn}}c}BdDd}{{{b{AK`}}c}BdDd}{{{b{AKb}}c}BdDd}{{{b{AKd}}c}BdDd}{{{b{AKf}}c}BdDd}{{{b{AKh}}c}BdDd}{{{b{AKj}}c}BdDd}{{{b{AKl}}c}BdDd}{{{b{AKn}}c}BdDd}{{{b{AL`}}c}BdDd}{{{b{ALb}}c}BdDd}{{{b{ALd}}c}BdDd}{{{b{ALf}}c}BdDd}{{{b{ALh}}c}BdDd}{{{b{ALj}}c}BdDd}{{{b{ALl}}c}BdDd}{{{b{ALn}}c}BdDd}{{{b{AM`}}c}BdDd}{{{b{AMb}}c}BdDd}{{{b{AMd}}c}BdDd}{{{b{AMf}}c}BdDd}{{{b{AMh}}c}BdDd}{{{b{AMj}}c}BdDd}{{{b{AMl}}c}BdDd}{{{b{AMn}}c}BdDd}{{{b{AN`}}c}BdDd}{{{b{ANb}}c}BdDd}{{{b{ANd}}c}BdDd}{{{b{ANf}}c}BdDd}{{{b{ANh}}c}BdDd}{{{b{ANj}}c}BdDd}{{{b{ANl}}c}BdDd}{{{b{ANn}}c}BdDd}{{{b{AO`}}c}BdDd}{{{b{AOb}}c}BdDd}{{{b{AOd}}c}BdDd}{{{b{AOf}}c}BdDd}{{{b{AOh}}c}BdDd}{{{b{AOj}}c}BdDd}{{{b{AOl}}c}BdDd}{{{b{AOn}}c}BdDd}{{{b{B@`}}c}BdDd}{{{b{B@b}}c}BdDd}{{{b{B@d}}c}BdDd}{{{b{B@f}}c}BdDd}{{{b{B@h}}c}BdDd}{{{b{B@j}}c}BdDd}{{{b{B@l}}c}BdDd}{{{b{B@n}}c}BdDd}{{{b{BA`}}c}BdDd}{{{b{BAb}}c}BdDd}{{{b{BAd}}c}BdDd}{{{b{BAf}}c}BdDd}{{{b{BAh}}c}BdDd}{{{b{BAj}}c}BdDd}{{{b{BAl}}c}BdDd}{{{b{BAn}}c}BdDd}{{{b{BB`}}c}BdDd}{{{b{BBb}}c}BdDd}{{{b{BBd}}c}BdDd}{{{b{BBf}}c}BdDd}{{{b{BBh}}c}BdDd}{{{b{BBj}}c}BdDd}{{{b{BBl}}c}BdDd}{{{b{BBn}}c}BdDd}{{{b{BC`}}c}BdDd}{{{b{BCb}}c}BdDd}{{{b{BCd}}c}BdDd}{{{b{BCf}}c}BdDd}{{{b{BCh}}c}BdDd}{{{b{BCj}}c}BdDd}{{{b{BCl}}c}BdDd}{{{b{BCn}}c}BdDd}{{{b{BD`}}c}BdDd}{{{b{BDb}}c}BdDd}{{{b{BDd}}c}BdDd}{{{b{BDf}}c}BdDd}{{{b{BDh}}c}BdDd}{{{b{BDj}}c}BdDd}{{{b{BDl}}c}BdDd}{{{b{BDn}}c}BdDd}{{{b{BE`}}c}BdDd}{{{b{BEb}}c}BdDd}{{{b{BEd}}c}BdDd}{{{b{BEf}}c}BdDd}{{{b{BEh}}c}BdDd}{{{b{BEj}}c}BdDd}{{{b{BEl}}c}BdDd}{{{b{BEn}}c}BdDd}{{{b{BF`}}c}BdDd}{{{b{BFb}}c}BdDd}{{{b{BFd}}c}BdDd}{{{b{BFf}}c}BdDd}{{{b{BFh}}c}BdDd}{{{b{BFj}}c}BdDd}{{{b{BFl}}c}BdDd}{{{b{BFn}}c}BdDd}{{{b{BG`}}c}BdDd}{{{b{BGb}}c}BdDd}{{{b{BGd}}c}BdDd}{{{b{BGf}}c}BdDd}{{{b{BGh}}c}BdDd}{{{b{BGj}}c}BdDd}{{{b{BGl}}c}BdDd}{{{b{BGn}}c}BdDd}{{{b{BH`}}c}BdDd}{{{b{BHb}}c}BdDd}{{{b{BHd}}c}BdDd}{{{b{BHf}}c}BdDd}{{{b{BHh}}c}BdDd}{{{b{BHj}}c}BdDd}{{{b{BHl}}c}BdDd}{{{b{BHn}}c}BdDd}{{{b{BI`}}c}BdDd}{{{b{BIb}}c}BdDd}{{{b{BId}}c}BdDd}{{{b{BIf}}c}BdDd}{{{b{BIh}}c}BdDd}{{{b{BIj}}c}BdDd}{{{b{BIl}}c}BdDd}{{{b{BIn}}c}BdDd}{{{b{BJ`}}c}BdDd}{{{b{BJb}}c}BdDd}{{{b{BJd}}c}BdDd}{{{b{BJf}}c}BdDd}{{{b{BJh}}c}BdDd}{{{b{BJj}}c}BdDd}{{{b{BJl}}c}BdDd}{{{b{BJn}}c}BdDd}{{{b{BK`}}c}BdDd}{{{b{BKb}}c}BdDd}{{{b{BKd}}c}BdDd}{{{b{BKf}}c}BdDd}{{{b{BKh}}c}BdDd}{{{b{BKj}}c}BdDd}{{{b{BKl}}c}BdDd}{{{b{BKn}}c}BdDd}{{{b{BL`}}c}BdDd}{{{b{BLb}}c}BdDd}{{{b{BLd}}c}BdDd}{{{b{BLf}}c}BdDd}{{{b{BLh}}c}BdDd}{{{b{BLj}}c}BdDd}{{{b{BLl}}c}BdDd}{{{b{BLn}}c}BdDd}{{{b{BM`}}c}BdDd}{{{b{BMb}}c}BdDd}{{{b{BMd}}c}BdDd}{{{b{BMf}}c}BdDd}{{{b{BMh}}c}BdDd}{{{b{BMj}}c}BdDd}{{{b{BMl}}c}BdDd}{{{b{BMn}}c}BdDd}{{{b{BN`}}c}BdDd}{{{b{BNb}}c}BdDd}{{{b{BNd}}c}BdDd}{{{b{BNf}}c}BdDd}{{{b{BNh}}c}BdDd}{{{b{BNj}}c}BdDd}{{{b{BNl}}c}BdDd}{{{b{BNn}}c}BdDd}{{{b{BO`}}c}BdDd}{{{b{BOb}}c}BdDd}{{{b{Dl}}c}BdDd}{{{b{BOd}}c}BdDd}{{{b{BOf}}c}BdDd}{{{b{BOh}}c}BdDd}{{{b{BOj}}c}BdDd}{{{b{BOl}}c}BdDd}{{{b{BOn}}c}BdDd}{{{b{C@`}}c}BdDd}{{{b{C@b}}c}BdDd}{{{b{C@d}}c}BdDd}{{{b{C@f}}c}BdDd}{{{b{C@h}}c}BdDd}{{{b{C@j}}c}BdDd}{{{b{C@l}}c}BdDd}{{{b{C@n}}c}BdDd}{{{b{Dn}}c}BdDd}{{{b{CA`}}c}BdDd}{{{b{CAb}}c}BdDd}{{{b{CAd}}c}BdDd}{{{b{CAf}}c}BdDd}{{{b{CAh}}c}BdDd}{{{b{CAj}}c}BdDd}{{{b{CAl}}c}BdDd}{{{b{E`}}c}BdDd}{{{b{CAn}}c}BdDd}{{{b{Eb}}c}BdDd}{{{b{CB`}}c}BdDd}{{{b{CBb}}c}BdDd}{{{b{CBd}}c}BdDd}{{{b{Ed}}c}BdDd}{{{b{Ef}}c}BdDd}{{{b{CBf}}c}BdDd}{{{b{CBh}}c}BdDd}{{{b{Eh}}c}BdDd}{{{b{Ej}}c}BdDd}{{{b{CBj}}c}BdDd}{{{b{CBl}}c}BdDd}{{{b{El}}c}BdDd}{{{b{CBn}}c}BdDd}{{{b{CC`}}c}BdDd}{{{b{CCb}}c}BdDd}{{{b{En}}c}BdDd}{{{b{CCd}}c}BdDd}{{{b{CCf}}c}BdDd}{{{b{CCh}}c}BdDd}{{{b{CCj}}c}BdDd}{{{b{CCl}}c}BdDd}{{{b{CCn}}c}BdDd}{{{b{CD`}}c}BdDd}{{{b{CDb}}c}BdDd}{{{b{CDd}}c}BdDd}{{{b{CDf}}c}BdDd}{{{b{CDh}}c}BdDd}{{{b{CDj}}c}BdDd}{{{b{CDl}}c}BdDd}{{{b{CDn}}c}BdDd}{{{b{CE`}}c}BdDd}{{{b{CEb}}c}BdDd}{{{b{CEd}}c}BdDd}{{{b{F`}}c}BdDd}{{{b{CEf}}c}BdDd}{{{b{Fb}}c}BdDd}{{{b{CEh}}c}BdDd}{{{b{CEj}}c}BdDd}{{{b{CEl}}c}BdDd}{{{b{CEn}}c}BdDd}{{{b{CF`}}c}BdDd}{{{b{CFb}}c}BdDd}{{{b{Fd}}c}BdDd}{{{b{CFd}}c}BdDd}{{{b{CFf}}c}BdDd}{{{b{CFh}}c}BdDd}{{{b{CFj}}c}BdDd}{{{b{Ff}}c}BdDd}{{{b{CFl}}c}BdDd}{{{b{CFn}}c}BdDd}{{{b{CG`}}c}BdDd}{{{b{Fh}}c}BdDd}{{{b{CGb}}c}BdDd}{{{b{Fj}}c}BdDd}{{{b{Fl}}c}BdDd}{{{b{Fn}}c}BdDd}{{{b{CGd}}c}BdDd}{{{b{CGf}}c}BdDd}{{{b{CGh}}c}BdDd}{{{b{CGj}}c}BdDd}{{{b{CGl}}c}BdDd}{{{b{CGn}}c}BdDd}{{{b{CH`}}c}BdDd}{{{b{G`}}c}BdDd}{{{b{CHb}}c}BdDd}{{{b{CHd}}c}BdDd}{{{b{Gb}}c}BdDd}{{{b{Gd}}c}BdDd}{{{b{CHf}}c}BdDd}{{{b{CHh}}c}BdDd}{{{b{CHj}}c}BdDd}{{{b{CHl}}c}BdDd}{{{b{CHn}}c}BdDd}{{{b{CI`}}c}BdDd}{{{b{CIb}}c}BdDd}{{{b{CId}}c}BdDd}{{{b{CIf}}c}BdDd}{{{b{CIh}}c}BdDd}{{{b{CIj}}c}BdDd}{{{b{CIl}}c}BdDd}{{{b{CIn}}c}BdDd}{{{b{CJ`}}c}BdDd}{{{b{CJb}}c}BdDd}{{{b{Gf}}c}BdDd}{{{b{CJd}}c}BdDd}{{{b{CJf}}c}BdDd}{{{b{CJh}}c}BdDd}{{{b{CJj}}c}BdDd}{{{b{CJl}}c}BdDd}{{{b{CJn}}c}BdDd}{{{b{CK`}}c}BdDd}{{{b{CKb}}c}BdDd}{{{b{Gh}}c}BdDd}{{{b{CKd}}c}BdDd}{{{b{CKf}}c}BdDd}{{{b{CKh}}c}BdDd}{{{b{CKj}}c}BdDd}{{{b{CKl}}c}BdDd}{{{b{Gj}}c}BdDd}{{{b{CKn}}c}BdDd}{{{b{CL`}}c}BdDd}{{{b{CLb}}c}BdDd}{{{b{CLd}}c}BdDd}{{{b{CLf}}c}BdDd}{{{b{CLh}}c}BdDd}{{{b{CLj}}c}BdDd}{{{b{CLl}}c}BdDd}{{{b{CLn}}c}BdDd}{{{b{Gl}}c}BdDd}{{{b{CM`}}c}BdDd}{{{b{Gn}}c}BdDd}{{{b{CMb}}c}BdDd}{{{b{CMd}}c}BdDd}{{{b{CMf}}c}BdDd}{{{b{CMh}}c}BdDd}{{{b{CMj}}c}BdDd}{{{b{CMl}}c}BdDd}{{{b{CMn}}c}BdDd}{{{b{CN`}}c}BdDd}{{{b{H`}}c}BdDd}{{{b{CNb}}c}BdDd}{{{b{CNd}}c}BdDd}{{{b{CNf}}c}BdDd}{{{b{CNh}}c}BdDd}{{{b{CNj}}c}BdDd}{{{b{CNl}}c}BdDd}{{{b{CNn}}c}BdDd}{{{b{CO`}}c}BdDd}{{{b{Hb}}c}BdDd}{{{b{COb}}c}BdDd}{{{b{COd}}c}BdDd}{{{b{COf}}c}BdDd}{{{b{COh}}c}BdDd}{{{b{COj}}c}BdDd}{{{b{Hd}}c}BdDd}{{{b{COl}}c}BdDd}{{{b{COn}}c}BdDd}{{{b{Hf}}c}BdDd}{{{b{D@`}}c}BdDd}{{{b{D@b}}c}BdDd}{{{b{D@d}}c}BdDd}{{{b{D@f}}c}BdDd}{{{b{D@h}}c}BdDd}{{{b{D@j}}c}BdDd}{{{b{D@l}}c}BdDd}{{{b{Hh}}c}BdDd}{{{b{Hj}}c}BdDd}{{{b{D@n}}c}BdDd}{{{b{DA`}}c}BdDd}{{{b{DAb}}c}BdDd}{{{b{DAd}}c}BdDd}{{{b{DAf}}c}BdDd}{{{b{DAh}}c}BdDd}{{{b{DAj}}c}BdDd}{{{b{DAl}}c}BdDd}{{{b{DAn}}c}BdDd}{{{b{DB`}}c}BdDd}`````````{{{b{dDl}}DlC`}Aj}{{{b{dDn}}DnC`}Aj}{{{b{dE`}}E`C`}Aj}{{{b{dEb}}EbC`}Aj}{{{b{dEd}}EdC`}Aj}{{{b{dEf}}EfC`}Aj}{{{b{dEh}}EhC`}Aj}{{{b{dEj}}EjC`}Aj}{{{b{dEl}}ElC`}Aj}{{{b{dEn}}EnC`}Aj}{{{b{dF`}}F`C`}Aj}{{{b{dFb}}FbC`}Aj}{{{b{dFd}}FdC`}Aj}{{{b{dFf}}FfC`}Aj}{{{b{dFh}}FhC`}Aj}{{{b{dFj}}FjC`}Aj}{{{b{dFl}}FlC`}Aj}{{{b{dFn}}FnC`}Aj}{{{b{dG`}}G`C`}Aj}{{{b{dGb}}GbC`}Aj}{{{b{dGd}}GdC`}Aj}{{{b{dGf}}GfC`}Aj}{{{b{dGh}}GhC`}Aj}{{{b{dGj}}GjC`}Aj}{{{b{dGl}}GlC`}Aj}{{{b{dGn}}GnC`}Aj}{{{b{dH`}}H`C`}Aj}{{{b{dHb}}HbC`}Aj}{{{b{dHd}}HdC`}Aj}{{{b{dHf}}HfC`}Aj}{{{b{dHh}}HhC`}Aj}{{{b{dHj}}HjC`}Aj}```````````````````````````````````````````````````````````````{{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}{{HhHh}Hh}{{HjHj}Hj}{{{b{dDl}}Dl}Aj}{{{b{dDn}}Dn}Aj}{{{b{dE`}}E`}Aj}{{{b{dEb}}Eb}Aj}{{{b{dEd}}Ed}Aj}{{{b{dEf}}Ef}Aj}{{{b{dEh}}Eh}Aj}{{{b{dEj}}Ej}Aj}{{{b{dEl}}El}Aj}{{{b{dEn}}En}Aj}{{{b{dF`}}F`}Aj}{{{b{dFb}}Fb}Aj}{{{b{dFd}}Fd}Aj}{{{b{dFf}}Ff}Aj}{{{b{dFh}}Fh}Aj}{{{b{dFj}}Fj}Aj}{{{b{dFl}}Fl}Aj}{{{b{dFn}}Fn}Aj}{{{b{dG`}}G`}Aj}{{{b{dGb}}Gb}Aj}{{{b{dGd}}Gd}Aj}{{{b{dGf}}Gf}Aj}{{{b{dGh}}Gh}Aj}{{{b{dGj}}Gj}Aj}{{{b{dGl}}Gl}Aj}{{{b{dGn}}Gn}Aj}{{{b{dH`}}H`}Aj}{{{b{dHb}}Hb}Aj}{{{b{dHd}}Hd}Aj}{{{b{dHf}}Hf}Aj}{{{b{dHh}}Hh}Aj}{{{b{dHj}}Hj}Aj}`````{{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}{{HhHh}Hh}{{HjHj}Hj}``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{BN`}}}{{DBj{DBl}}}}{{{b{BNb}}}{{DBj{DBl}}}}{{{b{BNd}}}{{DBj{DBl}}}}{{{b{BNf}}}{{DBj{DBl}}}}{{{b{BNh}}}{{DBj{DBl}}}}{{{b{BNj}}}{{DBj{DBl}}}}{{{b{BNl}}}{{DBj{DBl}}}}{{{b{BNn}}}{{DBj{DBl}}}}{{{b{BO`}}}{{DBj{DBl}}}}{{{b{BOb}}}{{DBj{DBl}}}}{{{b{BOd}}}{{DBj{DBl}}}}{{{b{BOf}}}{{DBj{DBl}}}}{{{b{BOh}}}{{DBj{DBl}}}}{{{b{BOj}}}{{DBj{DBl}}}}{{{b{BOl}}}{{DBj{DBl}}}}{{{b{BOn}}}{{DBj{DBl}}}}{{{b{C@`}}}{{DBj{DBl}}}}{{{b{C@b}}}{{DBj{DBl}}}}{{{b{C@d}}}{{DBj{DBl}}}}{{{b{C@f}}}{{DBj{DBl}}}}{{{b{C@h}}}{{DBj{DBl}}}}{{{b{C@j}}}{{DBj{DBl}}}}{{{b{C@l}}}{{DBj{DBl}}}}{{{b{C@n}}}{{DBj{DBl}}}}{{{b{CA`}}}{{DBj{DBl}}}}{{{b{CAb}}}{{DBj{DBl}}}}{{{b{CAd}}}{{DBj{DBl}}}}{{{b{CAf}}}{{DBj{DBl}}}}{{{b{CAh}}}{{DBj{DBl}}}}{{{b{CAj}}}{{DBj{DBl}}}}{{{b{CAl}}}{{DBj{DBl}}}}{{{b{CAn}}}{{DBj{DBl}}}}{{{b{CB`}}}{{DBj{DBl}}}}{{{b{CBb}}}{{DBj{DBl}}}}{{{b{CBd}}}{{DBj{DBl}}}}{{{b{CBf}}}{{DBj{DBl}}}}{{{b{CBh}}}{{DBj{DBl}}}}{{{b{CBj}}}{{DBj{DBl}}}}{{{b{CBl}}}{{DBj{DBl}}}}{{{b{CBn}}}{{DBj{DBl}}}}{{{b{CC`}}}{{DBj{DBl}}}}{{{b{CCb}}}{{DBj{DBl}}}}{{{b{CCd}}}{{DBj{DBl}}}}{{{b{CCf}}}{{DBj{DBl}}}}{{{b{CCh}}}{{DBj{DBl}}}}{{{b{CCj}}}{{DBj{DBl}}}}{{{b{CCl}}}{{DBj{DBl}}}}{{{b{CCn}}}{{DBj{DBl}}}}{{{b{CD`}}}{{DBj{DBl}}}}{{{b{CDb}}}{{DBj{DBl}}}}{{{b{CDd}}}{{DBj{DBl}}}}{{{b{CDf}}}{{DBj{DBl}}}}{{{b{CDh}}}{{DBj{DBl}}}}{{{b{CDj}}}{{DBj{DBl}}}}{{{b{CDl}}}{{DBj{DBl}}}}{{{b{CDn}}}{{DBj{DBl}}}}{{{b{CE`}}}{{DBj{DBl}}}}{{{b{CEb}}}{{DBj{DBl}}}}{{{b{CEd}}}{{DBj{DBl}}}}{{{b{CEf}}}{{DBj{DBl}}}}{{{b{CEh}}}{{DBj{DBl}}}}{{{b{CEj}}}{{DBj{DBl}}}}{{{b{CEl}}}{{DBj{DBl}}}}{{{b{CEn}}}{{DBj{DBl}}}}{{{b{CF`}}}{{DBj{DBl}}}}{{{b{CFb}}}{{DBj{DBl}}}}{{{b{CFd}}}{{DBj{DBl}}}}{{{b{CFf}}}{{DBj{DBl}}}}{{{b{CFh}}}{{DBj{DBl}}}}{{{b{CFj}}}{{DBj{DBl}}}}{{{b{CFl}}}{{DBj{DBl}}}}{{{b{CFn}}}{{DBj{DBl}}}}{{{b{CG`}}}{{DBj{DBl}}}}{{{b{CGb}}}{{DBj{DBl}}}}{{{b{CGd}}}{{DBj{DBl}}}}{{{b{CGf}}}{{DBj{DBl}}}}{{{b{CGh}}}{{DBj{DBl}}}}{{{b{CGj}}}{{DBj{DBl}}}}{{{b{CGl}}}{{DBj{DBl}}}}{{{b{CGn}}}{{DBj{DBl}}}}{{{b{CH`}}}{{DBj{DBl}}}}{{{b{CHb}}}{{DBj{DBl}}}}{{{b{CHd}}}{{DBj{DBl}}}}{{{b{CHf}}}{{DBj{DBl}}}}{{{b{CHh}}}{{DBj{DBl}}}}{{{b{CHj}}}{{DBj{DBl}}}}{{{b{CHl}}}{{DBj{DBl}}}}{{{b{CHn}}}{{DBj{DBl}}}}{{{b{CI`}}}{{DBj{DBl}}}}{{{b{CIb}}}{{DBj{DBl}}}}{{{b{CId}}}{{DBj{DBl}}}}{{{b{CIf}}}{{DBj{DBl}}}}{{{b{CIh}}}{{DBj{DBl}}}}{{{b{CIj}}}{{DBj{DBl}}}}{{{b{CIl}}}{{DBj{DBl}}}}{{{b{CIn}}}{{DBj{DBl}}}}{{{b{CJ`}}}{{DBj{DBl}}}}{{{b{CJb}}}{{DBj{DBl}}}}{{{b{CJd}}}{{DBj{DBl}}}}{{{b{CJf}}}{{DBj{DBl}}}}{{{b{CJh}}}{{DBj{DBl}}}}{{{b{CJj}}}{{DBj{DBl}}}}{{{b{CJl}}}{{DBj{DBl}}}}{{{b{CJn}}}{{DBj{DBl}}}}{{{b{CK`}}}{{DBj{DBl}}}}{{{b{CKb}}}{{DBj{DBl}}}}{{{b{CKd}}}{{DBj{DBl}}}}{{{b{CKf}}}{{DBj{DBl}}}}{{{b{CKh}}}{{DBj{DBl}}}}{{{b{CKj}}}{{DBj{DBl}}}}{{{b{CKl}}}{{DBj{DBl}}}}{{{b{CKn}}}{{DBj{DBl}}}}{{{b{CL`}}}{{DBj{DBl}}}}{{{b{CLb}}}{{DBj{DBl}}}}{{{b{CLd}}}{{DBj{DBl}}}}{{{b{CLf}}}{{DBj{DBl}}}}{{{b{CLh}}}{{DBj{DBl}}}}{{{b{CLj}}}{{DBj{DBl}}}}{{{b{CLl}}}{{DBj{DBl}}}}{{{b{CLn}}}{{DBj{DBl}}}}{{{b{CM`}}}{{DBj{DBl}}}}{{{b{CMb}}}{{DBj{DBl}}}}{{{b{CMd}}}{{DBj{DBl}}}}{{{b{CMf}}}{{DBj{DBl}}}}{{{b{CMh}}}{{DBj{DBl}}}}{{{b{CMj}}}{{DBj{DBl}}}}{{{b{CMl}}}{{DBj{DBl}}}}{{{b{CMn}}}{{DBj{DBl}}}}{{{b{CN`}}}{{DBj{DBl}}}}{{{b{CNb}}}{{DBj{DBl}}}}{{{b{CNd}}}{{DBj{DBl}}}}{{{b{CNf}}}{{DBj{DBl}}}}{{{b{CNh}}}{{DBj{DBl}}}}{{{b{CNj}}}{{DBj{DBl}}}}{{{b{CNl}}}{{DBj{DBl}}}}{{{b{CNn}}}{{DBj{DBl}}}}{{{b{CO`}}}{{DBj{DBl}}}}{{{b{COb}}}{{DBj{DBl}}}}{{{b{COd}}}{{DBj{DBl}}}}{{{b{COf}}}{{DBj{DBl}}}}{{{b{COh}}}{{DBj{DBl}}}}{{{b{COj}}}{{DBj{DBl}}}}{{{b{COl}}}{{DBj{DBl}}}}{{{b{COn}}}{{DBj{DBl}}}}{{{b{D@`}}}{{DBj{DBl}}}}{{{b{D@b}}}{{DBj{DBl}}}}{{{b{D@d}}}{{DBj{DBl}}}}{{{b{D@f}}}{{DBj{DBl}}}}{{{b{D@h}}}{{DBj{DBl}}}}{{{b{D@j}}}{{DBj{DBl}}}}{{{b{D@l}}}{{DBj{DBl}}}}{{{b{D@n}}}{{DBj{DBl}}}}{{{b{DA`}}}{{DBj{DBl}}}}{{{b{DAb}}}{{DBj{DBl}}}}{{{b{DAd}}}{{DBj{DBl}}}}{{{b{DAf}}}{{DBj{DBl}}}}{{{b{DAh}}}{{DBj{DBl}}}}{{{b{DAj}}}{{DBj{DBl}}}}{{{b{DAl}}}{{DBj{DBl}}}}{{{b{DAn}}}{{DBj{DBl}}}}{{{b{DB`}}}{{DBj{DBl}}}}{{{b{c}}}e{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{BN`}}}{{DBj{Hl}}}}{{{b{BNb}}}{{DBj{Hl}}}}{{{b{BNd}}}{{DBj{Hl}}}}{{{b{BNf}}}{{DBj{Hl}}}}{{{b{BNh}}}{{DBj{Hl}}}}{{{b{BNj}}}{{DBj{Hl}}}}{{{b{BNl}}}{{DBj{Hl}}}}{{{b{BNn}}}{{DBj{Hl}}}}{{{b{BO`}}}{{DBj{Hl}}}}{{{b{BOb}}}{{DBj{Hl}}}}{{{b{BOd}}}{{DBj{Hl}}}}{{{b{BOf}}}{{DBj{Hl}}}}{{{b{BOh}}}{{DBj{Hl}}}}{{{b{BOj}}}{{DBj{Hl}}}}{{{b{BOl}}}{{DBj{Hl}}}}{{{b{BOn}}}{{DBj{Hl}}}}{{{b{C@`}}}{{DBj{Hl}}}}{{{b{C@b}}}{{DBj{Hl}}}}{{{b{C@d}}}{{DBj{Hl}}}}{{{b{C@f}}}{{DBj{Hl}}}}{{{b{C@h}}}{{DBj{Hl}}}}{{{b{C@j}}}{{DBj{Hl}}}}{{{b{C@l}}}{{DBj{Hl}}}}{{{b{C@n}}}{{DBj{Hl}}}}{{{b{CA`}}}{{DBj{Hl}}}}{{{b{CAb}}}{{DBj{Hl}}}}{{{b{CAd}}}{{DBj{Hl}}}}{{{b{CAf}}}{{DBj{Hl}}}}{{{b{CAh}}}{{DBj{Hl}}}}{{{b{CAj}}}{{DBj{Hl}}}}{{{b{CAl}}}{{DBj{Hl}}}}{{{b{CAn}}}{{DBj{Hl}}}}{{{b{CB`}}}{{DBj{Hl}}}}{{{b{CBb}}}{{DBj{Hl}}}}{{{b{CBd}}}{{DBj{Hl}}}}{{{b{CBf}}}{{DBj{Hl}}}}{{{b{CBh}}}{{DBj{Hl}}}}{{{b{CBj}}}{{DBj{Hl}}}}{{{b{CBl}}}{{DBj{Hl}}}}{{{b{CBn}}}{{DBj{Hl}}}}{{{b{CC`}}}{{DBj{Hl}}}}{{{b{CCb}}}{{DBj{Hl}}}}{{{b{CCd}}}{{DBj{Hl}}}}{{{b{CCf}}}{{DBj{Hl}}}}{{{b{CCh}}}{{DBj{Hl}}}}{{{b{CCj}}}{{DBj{Hl}}}}{{{b{CCl}}}{{DBj{Hl}}}}{{{b{CCn}}}{{DBj{Hl}}}}{{{b{CD`}}}{{DBj{Hl}}}}{{{b{CDb}}}{{DBj{Hl}}}}{{{b{CDd}}}{{DBj{Hl}}}}{{{b{CDf}}}{{DBj{Hl}}}}{{{b{CDh}}}{{DBj{Hl}}}}{{{b{CDj}}}{{DBj{Hl}}}}{{{b{CDl}}}{{DBj{Hl}}}}{{{b{CDn}}}{{DBj{Hl}}}}{{{b{CE`}}}{{DBj{Hl}}}}{{{b{CEb}}}{{DBj{Hl}}}}{{{b{CEd}}}{{DBj{Hl}}}}{{{b{CEf}}}{{DBj{Hl}}}}{{{b{CEh}}}{{DBj{Hl}}}}{{{b{CEj}}}{{DBj{Hl}}}}{{{b{CEl}}}{{DBj{Hl}}}}{{{b{CEn}}}{{DBj{Hl}}}}{{{b{CF`}}}{{DBj{Hl}}}}{{{b{CFb}}}{{DBj{Hl}}}}{{{b{CFd}}}{{DBj{Hl}}}}{{{b{CFf}}}{{DBj{Hl}}}}{{{b{CFh}}}{{DBj{Hl}}}}{{{b{CFj}}}{{DBj{Hl}}}}{{{b{CFl}}}{{DBj{Hl}}}}{{{b{CFn}}}{{DBj{Hl}}}}{{{b{CG`}}}{{DBj{Hl}}}}{{{b{CGb}}}{{DBj{Hl}}}}{{{b{CGd}}}{{DBj{Hl}}}}{{{b{CGf}}}{{DBj{Hl}}}}{{{b{CGh}}}{{DBj{Hl}}}}{{{b{CGj}}}{{DBj{Hl}}}}{{{b{CGl}}}{{DBj{Hl}}}}{{{b{CGn}}}{{DBj{Hl}}}}{{{b{CH`}}}{{DBj{Hl}}}}{{{b{CHb}}}{{DBj{Hl}}}}{{{b{CHd}}}{{DBj{Hl}}}}{{{b{CHf}}}{{DBj{Hl}}}}{{{b{CHh}}}{{DBj{Hl}}}}{{{b{CHj}}}{{DBj{Hl}}}}{{{b{CHl}}}{{DBj{Hl}}}}{{{b{CHn}}}{{DBj{Hl}}}}{{{b{CI`}}}{{DBj{Hl}}}}{{{b{CIb}}}{{DBj{Hl}}}}{{{b{CId}}}{{DBj{Hl}}}}{{{b{CIf}}}{{DBj{Hl}}}}{{{b{CIh}}}{{DBj{Hl}}}}{{{b{CIj}}}{{DBj{Hl}}}}{{{b{CIl}}}{{DBj{Hl}}}}{{{b{CIn}}}{{DBj{Hl}}}}{{{b{CJ`}}}{{DBj{Hl}}}}{{{b{CJb}}}{{DBj{Hl}}}}{{{b{CJd}}}{{DBj{Hl}}}}{{{b{CJf}}}{{DBj{Hl}}}}{{{b{CJh}}}{{DBj{Hl}}}}{{{b{CJj}}}{{DBj{Hl}}}}{{{b{CJl}}}{{DBj{Hl}}}}{{{b{CJn}}}{{DBj{Hl}}}}{{{b{CK`}}}{{DBj{Hl}}}}{{{b{CKb}}}{{DBj{Hl}}}}{{{b{CKd}}}{{DBj{Hl}}}}{{{b{CKf}}}{{DBj{Hl}}}}{{{b{CKh}}}{{DBj{Hl}}}}{{{b{CKj}}}{{DBj{Hl}}}}{{{b{CKl}}}{{DBj{Hl}}}}{{{b{CKn}}}{{DBj{Hl}}}}{{{b{CL`}}}{{DBj{Hl}}}}{{{b{CLb}}}{{DBj{Hl}}}}{{{b{CLd}}}{{DBj{Hl}}}}{{{b{CLf}}}{{DBj{Hl}}}}{{{b{CLh}}}{{DBj{Hl}}}}{{{b{CLj}}}{{DBj{Hl}}}}{{{b{CLl}}}{{DBj{Hl}}}}{{{b{CLn}}}{{DBj{Hl}}}}{{{b{CM`}}}{{DBj{Hl}}}}{{{b{CMb}}}{{DBj{Hl}}}}{{{b{CMd}}}{{DBj{Hl}}}}{{{b{CMf}}}{{DBj{Hl}}}}{{{b{CMh}}}{{DBj{Hl}}}}{{{b{CMj}}}{{DBj{Hl}}}}{{{b{CMl}}}{{DBj{Hl}}}}{{{b{CMn}}}{{DBj{Hl}}}}{{{b{CN`}}}{{DBj{Hl}}}}{{{b{CNb}}}{{DBj{Hl}}}}{{{b{CNd}}}{{DBj{Hl}}}}{{{b{CNf}}}{{DBj{Hl}}}}{{{b{CNh}}}{{DBj{Hl}}}}{{{b{CNj}}}{{DBj{Hl}}}}{{{b{CNl}}}{{DBj{Hl}}}}{{{b{CNn}}}{{DBj{Hl}}}}{{{b{CO`}}}{{DBj{Hl}}}}{{{b{COb}}}{{DBj{Hl}}}}{{{b{COd}}}{{DBj{Hl}}}}{{{b{COf}}}{{DBj{Hl}}}}{{{b{COh}}}{{DBj{Hl}}}}{{{b{COj}}}{{DBj{Hl}}}}{{{b{COl}}}{{DBj{Hl}}}}{{{b{COn}}}{{DBj{Hl}}}}{{{b{D@`}}}{{DBj{Hl}}}}{{{b{D@b}}}{{DBj{Hl}}}}{{{b{D@d}}}{{DBj{Hl}}}}{{{b{D@f}}}{{DBj{Hl}}}}{{{b{D@h}}}{{DBj{Hl}}}}{{{b{D@j}}}{{DBj{Hl}}}}{{{b{D@l}}}{{DBj{Hl}}}}{{{b{D@n}}}{{DBj{Hl}}}}{{{b{DA`}}}{{DBj{Hl}}}}{{{b{DAb}}}{{DBj{Hl}}}}{{{b{DAd}}}{{DBj{Hl}}}}{{{b{DAf}}}{{DBj{Hl}}}}{{{b{DAh}}}{{DBj{Hl}}}}{{{b{DAj}}}{{DBj{Hl}}}}{{{b{DAl}}}{{DBj{Hl}}}}{{{b{DAn}}}{{DBj{Hl}}}}{{{b{DB`}}}{{DBj{Hl}}}}{{{b{dDl}}Dl}Aj}{{{b{dDn}}Dn}Aj}{{{b{dE`}}E`}Aj}{{{b{dEb}}Eb}Aj}{{{b{dEd}}Ed}Aj}{{{b{dEf}}Ef}Aj}{{{b{dEh}}Eh}Aj}{{{b{dEj}}Ej}Aj}{{{b{dEl}}El}Aj}{{{b{dEn}}En}Aj}{{{b{dF`}}F`}Aj}{{{b{dFb}}Fb}Aj}{{{b{dFd}}Fd}Aj}{{{b{dFf}}Ff}Aj}{{{b{dFh}}Fh}Aj}{{{b{dFj}}Fj}Aj}{{{b{dFl}}Fl}Aj}{{{b{dFn}}Fn}Aj}{{{b{dG`}}G`}Aj}{{{b{dGb}}Gb}Aj}{{{b{dGd}}Gd}Aj}{{{b{dGf}}Gf}Aj}{{{b{dGh}}Gh}Aj}{{{b{dGj}}Gj}Aj}{{{b{dGl}}Gl}Aj}{{{b{dGn}}Gn}Aj}{{{b{dH`}}H`}Aj}{{{b{dHb}}Hb}Aj}{{{b{dHd}}Hd}Aj}{{{b{dHf}}Hf}Aj}{{{b{dHh}}Hh}Aj}{{{b{dHj}}Hj}Aj}```````````{c{{Bd{e}}}{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`````````````````{{{b{c}}}Dh{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000````````````{{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}{{HhHh}Hh}{{HjHj}Hj}````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{cc{}}{{{b{dDC`}}}{{DCb{f}}}}{{{b{dDC`}}D`}{{b{{h{f}}}}}}{{{b{dDC`}}}DCd}{{{b{dDC`}}}DCf}{{{b{dDC`}}}DCh}{{{b{dDC`}}}DCj}0{{{b{dDC`}}}DBl}{{{b{dDC`}}}DCl}{{{b{dDC`}}}j}{{{b{dDC`}}}Bf}0{{{b{dDC`}}}Hl}{{{b{dDC`}}}f}{ce{}{}}{{{b{{h{f}}}}}DC`}{{{b{DC`}}}{{b{{h{f}}}}}}{c{{Bd{e}}}{}{}}0{{{b{c}}}Dh{}}`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{cc{}}7{{{b{DCn}}}C`}{{{b{DCn}}}D`}{{{b{d{h{f}}}}}DCn}{{{b{dDCn}}DCd}Aj}{{{b{dDCn}}DCf}Aj}{{{b{dDCn}}DCh}Aj}{{{b{dDCn}}DCj}Aj}0{{{b{dDCn}}DBl}Aj}{{{b{dDCn}}DCl}Aj}{{{b{dDCn}}{b{{h{f}}}}}Aj}{{{b{dDCn}}j}Aj}{{{b{dDCn}}Bf}Aj}0{{{b{dDCn}}Hl}Aj}{{{b{dDCn}}f}Aj}<{c{{Bd{e}}}{}{}}0{{{b{c}}}Dh{}}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{}DD`}{{}DDb}{{}DDd}{{}DDf}{{}DDh}{{}DDj}{{}DDl}{{}DDn}{{}DE`}{{}DEb}{{}DEd}{{}DEf}{{}DEh}{{}DEj}{{}DEl}{{}DEn}{{}DF`}{{}DFb}{{}DFd}{{}DFf}{{}DFh}{{}DFj}{{}DFl}{{}DFn}{{}DG`}```````````````````````````````````````````````````````````````````````````````````````````````````````{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}{{{b{dDD`}}DD`}Aj}{{{b{dDDb}}DDb}Aj}{{{b{dDDd}}DDd}Aj}{{{b{dDDf}}DDf}Aj}{{{b{dDDh}}DDh}Aj}{{{b{dDDj}}DDj}Aj}{{{b{dDDl}}DDl}Aj}{{{b{dDDn}}DDn}Aj}{{{b{dDE`}}DE`}Aj}{{{b{dDEb}}DEb}Aj}{{{b{dDEd}}DEd}Aj}{{{b{dDEf}}DEf}Aj}{{{b{dDEh}}DEh}Aj}{{{b{dDEj}}DEj}Aj}{{{b{dDEl}}DEl}Aj}{{{b{dDEn}}DEn}Aj}{{{b{dDF`}}DF`}Aj}{{{b{dDFb}}DFb}Aj}{{{b{dDFd}}DFd}Aj}{{{b{dDFf}}DFf}Aj}{{{b{dDFh}}DFh}Aj}{{{b{dDFj}}DFj}Aj}{{{b{dDFl}}DFl}Aj}{{{b{dDFn}}DFn}Aj}{{{b{dDG`}}DG`}Aj}{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}{{{b{dDD`}}DD`}Aj}{{{b{dDDb}}DDb}Aj}{{{b{dDDd}}DDd}Aj}{{{b{dDDf}}DDf}Aj}{{{b{dDDh}}DDh}Aj}{{{b{dDDj}}DDj}Aj}{{{b{dDDl}}DDl}Aj}{{{b{dDDn}}DDn}Aj}{{{b{dDE`}}DE`}Aj}{{{b{dDEb}}DEb}Aj}{{{b{dDEd}}DEd}Aj}{{{b{dDEf}}DEf}Aj}{{{b{dDEh}}DEh}Aj}{{{b{dDEj}}DEj}Aj}{{{b{dDEl}}DEl}Aj}{{{b{dDEn}}DEn}Aj}{{{b{dDF`}}DF`}Aj}{{{b{dDFb}}DFb}Aj}{{{b{dDFd}}DFd}Aj}{{{b{dDFf}}DFf}Aj}{{{b{dDFh}}DFh}Aj}{{{b{dDFj}}DFj}Aj}{{{b{dDFl}}DFl}Aj}{{{b{dDFn}}DFn}Aj}{{{b{dDG`}}DG`}Aj}``{{{b{DD`}}}j}{{{b{DDb}}}Bf}{{{b{DDd}}}j}{{{b{DDf}}}Bf}{{{b{DDh}}}j}{{{b{DDj}}}j}{{{b{DDl}}}f}{{{b{DDn}}}f}{{{b{DE`}}}j}{{{b{DEb}}}f}{{{b{DEd}}}Hl}{{{b{DEf}}}Bf}{{{b{DEh}}}Hl}{{{b{DEj}}}j}{{{b{DEl}}}j}{{{b{DEn}}}f}{{{b{DF`}}}Bf}{{{b{DFb}}}f}{{{b{DFd}}}Bf}{{{b{DFf}}}j}{{{b{DFh}}}Bf}{{{b{DFj}}}j}{{{b{DFl}}}j}{{{b{DFn}}}Bf}{{{b{DG`}}}j}{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}{{{b{dDD`}}DD`}Aj}{{{b{dDDb}}DDb}Aj}{{{b{dDDd}}DDd}Aj}{{{b{dDDf}}DDf}Aj}{{{b{dDDh}}DDh}Aj}{{{b{dDDj}}DDj}Aj}{{{b{dDDl}}DDl}Aj}{{{b{dDDn}}DDn}Aj}{{{b{dDE`}}DE`}Aj}{{{b{dDEb}}DEb}Aj}{{{b{dDEd}}DEd}Aj}{{{b{dDEf}}DEf}Aj}{{{b{dDEh}}DEh}Aj}{{{b{dDEj}}DEj}Aj}{{{b{dDEl}}DEl}Aj}{{{b{dDEn}}DEn}Aj}{{{b{dDF`}}DF`}Aj}{{{b{dDFb}}DFb}Aj}{{{b{dDFd}}DFd}Aj}{{{b{dDFf}}DFf}Aj}{{{b{dDFh}}DFh}Aj}{{{b{dDFj}}DFj}Aj}{{{b{dDFl}}DFl}Aj}{{{b{dDFn}}DFn}Aj}{{{b{dDG`}}DG`}Aj}```````{{{b{c}}}{{b{e}}}{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{dc}}}{{b{de}}}{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`````````````````````````````````````````````````````````````````````````````````````````{{{b{DGb}}}DGb}{{{b{DGd}}}DGd}{{{b{DGf}}}DGf}{{{b{DGh}}}DGh}{{{b{DGj}}}DGj}{{{b{DGl}}}DGl}{{{b{DGn}}}DGn}{{{b{DH`}}}DH`}{{{b{DHb}}}DHb}{{{b{DHd}}}DHd}{{{b{DHf}}}DHf}{{{b{DHh}}}DHh}{{{b{DHj}}}DHj}{{{b{DHl}}}DHl}{{{b{DHn}}}DHn}{{{b{DI`}}}DI`}{{{b{DIb}}}DIb}{{{b{DId}}}DId}{{{b{DIf}}}DIf}{{{b{DIh}}}DIh}{{{b{DIj}}}DIj}{{{b{DIl}}}DIl}{{{b{DIn}}}DIn}{{{b{DJ`}}}DJ`}{{{b{DJb}}}DJb}{{{b{DJd}}}DJd}{{{b{DJf}}}DJf}{{{b{DJh}}}DJh}{{{b{DJj}}}DJj}{{{b{DJl}}}DJl}{{{b{DJn}}}DJn}{{{b{DK`}}}DK`}{{{b{DKb}}}DKb}{{{b{DKd}}}DKd}{{{b{DKf}}}DKf}{{{b{DKh}}}DKh}{{{b{DKj}}}DKj}{{{b{DKl}}}DKl}{{{b{DKn}}}DKn}{{{b{DL`}}}DL`}{{{b{DLb}}}DLb}{{{b{DLd}}}DLd}{{{b{DLf}}}DLf}{{{b{DLh}}}DLh}{{{b{DLj}}}DLj}{{{b{DLl}}}DLl}{{{b{DLn}}}DLn}{{{b{DM`}}}DM`}{{{b{DMb}}}DMb}{{{b{DMd}}}DMd}{{{b{DMf}}}DMf}{{{b{DMh}}}DMh}{{{b{DMj}}}DMj}{{{b{DMl}}}DMl}{{{b{DMn}}}DMn}{{{b{DN`}}}DN`}{{{b{DNb}}}DNb}{{{b{DNd}}}DNd}{{{b{DNf}}}DNf}{{{b{DNh}}}DNh}{{{b{DNj}}}DNj}{{{b{DNl}}}DNl}{{{b{DNn}}}DNn}{{{b{DO`}}}DO`}{{{b{DOb}}}DOb}{{{b{DOd}}}DOd}{{{b{DOf}}}DOf}{{{b{DOh}}}DOh}{{{b{DOj}}}DOj}{{{b{DOl}}}DOl}{{{b{DOn}}}DOn}{{{b{E@`}}}E@`}{{{b{E@b}}}E@b}{{{b{E@d}}}E@d}{{{b{E@f}}}E@f}{{{b{E@h}}}E@h}{{{b{E@j}}}E@j}{{{b{E@l}}}E@l}{{{b{E@n}}}E@n}{{{b{EA`}}}EA`}{{{b{EAb}}}EAb}{{{b{EAd}}}EAd}{{{b{EAf}}}EAf}{{{b{EAh}}}EAh}{{{b{EAj}}}EAj}{{{b{EAl}}}EAl}{{{b{EAn}}}EAn}{{{b{EB`}}}EB`}{{{b{EBb}}}EBb}{{{b{EBd}}}EBd}{{{b{EBf}}}EBf}{{{b{EBh}}}EBh}{{{b{EBj}}}EBj}{{{b{EBl}}}EBl}{{{b{EBn}}}EBn}{{{b{EC`}}}EC`}{{{b{ECb}}}ECb}{{{b{ECd}}}ECd}{{{b{ECf}}}ECf}{{{b{ECh}}}ECh}{{{b{ECj}}}ECj}{{{b{ECl}}}ECl}{{{b{ECn}}}ECn}{{{b{ED`}}}ED`}{{{b{EDb}}}EDb}{{{b{EDd}}}EDd}{{{b{EDf}}}EDf}{{{b{EDh}}}EDh}{{{b{EDj}}}EDj}{{{b{EDl}}}EDl}{{{b{EDn}}}EDn}{{{b{EE`}}}EE`}{{{b{EEb}}}EEb}{{{b{EEd}}}EEd}{{{b{EEf}}}EEf}{{{b{EEh}}}EEh}{{{b{EEj}}}EEj}{{{b{EEl}}}EEl}{{{b{EEn}}}EEn}{{{b{EF`}}}EF`}{{{b{EFb}}}EFb}{{{b{EFd}}}EFd}{{{b{EFf}}}EFf}{{{b{EFh}}}EFh}{{{b{EFj}}}EFj}{{{b{EFl}}}EFl}{{{b{EFn}}}EFn}{{{b{EG`}}}EG`}{{{b{EGb}}}EGb}{{{b{EGd}}}EGd}{{{b{EGf}}}EGf}{{{b{EGh}}}EGh}{{{b{EGj}}}EGj}{{{b{EGl}}}EGl}{{{b{EGn}}}EGn}{{{b{EH`}}}EH`}{{{b{EHb}}}EHb}{{{b{EHd}}}EHd}{{{b{EHf}}}EHf}{{{b{EHh}}}EHh}{{{b{EHj}}}EHj}{{{b{EHl}}}EHl}{{{b{EHn}}}EHn}{{{b{EI`}}}EI`}{{{b{EIb}}}EIb}{{{b{EId}}}EId}{{{b{EIf}}}EIf}{{{b{EIh}}}EIh}{{{b{EIj}}}EIj}{{{b{EIl}}}EIl}{{{b{EIn}}}EIn}{{{b{EJ`}}}EJ`}{{{b{EJb}}}EJb}{{{b{EJd}}}EJd}{{{b{EJf}}}EJf}{{{b{EJh}}}EJh}{{{b{EJj}}}EJj}{{{b{EJl}}}EJl}{{{b{EJn}}}EJn}{{{b{EK`}}}EK`}{{{b{EKb}}}EKb}{{{b{EKd}}}EKd}{{{b{EKf}}}EKf}{{{b{EKh}}}EKh}{{{b{EKj}}}EKj}{{{b{EKl}}}EKl}{{{b{EKn}}}EKn}{{{b{EL`}}}EL`}{{{b{ELb}}}ELb}{{{b{ELd}}}ELd}{{{b{ELf}}}ELf}{{{b{ELh}}}ELh}{{{b{ELj}}}ELj}{{{b{ELl}}}ELl}{{{b{ELn}}}ELn}{{{b{EM`}}}EM`}{{{b{EMb}}}EMb}{{{b{EMd}}}EMd}{{{b{EMf}}}EMf}{{{b{EMh}}}EMh}{{{b{EMj}}}EMj}{{{b{EMl}}}EMl}{{{b{EMn}}}EMn}{{{b{EN`}}}EN`}{{{b{ENb}}}ENb}{{{b{ENd}}}ENd}{{{b{ENf}}}ENf}{{{b{ENh}}}ENh}{{{b{ENj}}}ENj}{{{b{ENl}}}ENl}{{{b{ENn}}}ENn}{{{b{EO`}}}EO`}{{{b{EOb}}}EOb}{{{b{EOd}}}EOd}{{{b{EOf}}}EOf}{{{b{EOh}}}EOh}{{{b{EOj}}}EOj}{{{b{EOl}}}EOl}{{{b{EOn}}}EOn}{{{b{F@`}}}F@`}{{{b{F@b}}}F@b}{{{b{F@d}}}F@d}{{{b{F@f}}}F@f}{{{b{F@h}}}F@h}{{{b{F@j}}}F@j}{{{b{F@l}}}F@l}{{{b{F@n}}}F@n}{{{b{FA`}}}FA`}{{{b{FAb}}}FAb}{{{b{FAd}}}FAd}{{{b{FAf}}}FAf}{{{b{FAh}}}FAh}{{{b{FAj}}}FAj}{{{b{FAl}}}FAl}{{{b{FAn}}}FAn}{{{b{FB`}}}FB`}{{{b{FBb}}}FBb}{{{b{FBd}}}FBd}{{{b{FBf}}}FBf}{{{b{FBh}}}FBh}{{{b{FBj}}}FBj}{{{b{FBl}}}FBl}{{{b{FBn}}}FBn}{{{b{FC`}}}FC`}{{{b{DD`}}}DD`}{{{b{FCb}}}FCb}{{{b{DDb}}}DDb}{{{b{FCd}}}FCd}{{{b{FCf}}}FCf}{{{b{FCh}}}FCh}{{{b{FCj}}}FCj}{{{b{FCl}}}FCl}{{{b{FCn}}}FCn}{{{b{FD`}}}FD`}{{{b{DDd}}}DDd}{{{b{FDb}}}FDb}{{{b{FDd}}}FDd}{{{b{FDf}}}FDf}{{{b{FDh}}}FDh}{{{b{FDj}}}FDj}{{{b{FDl}}}FDl}{{{b{DDf}}}DDf}{{{b{FDn}}}FDn}{{{b{FE`}}}FE`}{{{b{FEb}}}FEb}{{{b{FEd}}}FEd}{{{b{DDh}}}DDh}{{{b{DDj}}}DDj}{{{b{DDl}}}DDl}{{{b{FEf}}}FEf}{{{b{FEh}}}FEh}{{{b{FEj}}}FEj}{{{b{FEl}}}FEl}{{{b{FEn}}}FEn}{{{b{FF`}}}FF`}{{{b{FFb}}}FFb}{{{b{FFd}}}FFd}{{{b{FFf}}}FFf}{{{b{DDn}}}DDn}{{{b{FFh}}}FFh}{{{b{FFj}}}FFj}{{{b{FFl}}}FFl}{{{b{FFn}}}FFn}{{{b{FG`}}}FG`}{{{b{FGb}}}FGb}{{{b{FGd}}}FGd}{{{b{DE`}}}DE`}{{{b{FGf}}}FGf}{{{b{FGh}}}FGh}{{{b{FGj}}}FGj}{{{b{FGl}}}FGl}{{{b{FGn}}}FGn}{{{b{FH`}}}FH`}{{{b{FHb}}}FHb}{{{b{FHd}}}FHd}{{{b{FHf}}}FHf}{{{b{FHh}}}FHh}{{{b{DEb}}}DEb}{{{b{FHj}}}FHj}{{{b{DEd}}}DEd}{{{b{FHl}}}FHl}{{{b{FHn}}}FHn}{{{b{FI`}}}FI`}{{{b{DEf}}}DEf}{{{b{FIb}}}FIb}{{{b{FId}}}FId}{{{b{FIf}}}FIf}{{{b{FIh}}}FIh}{{{b{FIj}}}FIj}{{{b{FIl}}}FIl}{{{b{FIn}}}FIn}{{{b{FJ`}}}FJ`}{{{b{FJb}}}FJb}{{{b{FJd}}}FJd}{{{b{FJf}}}FJf}{{{b{DEh}}}DEh}{{{b{FJh}}}FJh}{{{b{FJj}}}FJj}{{{b{DEj}}}DEj}{{{b{FJl}}}FJl}{{{b{FJn}}}FJn}{{{b{FK`}}}FK`}{{{b{FKb}}}FKb}{{{b{FKd}}}FKd}{{{b{FKf}}}FKf}{{{b{DEl}}}DEl}{{{b{FKh}}}FKh}{{{b{FKj}}}FKj}{{{b{FKl}}}FKl}{{{b{FKn}}}FKn}{{{b{FL`}}}FL`}{{{b{FLb}}}FLb}{{{b{FLd}}}FLd}{{{b{DEn}}}DEn}{{{b{FLf}}}FLf}{{{b{DF`}}}DF`}{{{b{FLh}}}FLh}{{{b{FLj}}}FLj}{{{b{FLl}}}FLl}{{{b{FLn}}}FLn}{{{b{DFb}}}DFb}{{{b{FM`}}}FM`}{{{b{FMb}}}FMb}{{{b{FMd}}}FMd}{{{b{DFd}}}DFd}{{{b{FMf}}}FMf}{{{b{DFf}}}DFf}{{{b{FMh}}}FMh}{{{b{FMj}}}FMj}{{{b{FMl}}}FMl}{{{b{FMn}}}FMn}{{{b{FN`}}}FN`}{{{b{FNb}}}FNb}{{{b{FNd}}}FNd}{{{b{FNf}}}FNf}{{{b{FNh}}}FNh}{{{b{FNj}}}FNj}{{{b{FNl}}}FNl}{{{b{FNn}}}FNn}{{{b{FO`}}}FO`}{{{b{FOb}}}FOb}{{{b{FOd}}}FOd}{{{b{DFh}}}DFh}{{{b{FOf}}}FOf}{{{b{FOh}}}FOh}{{{b{DFj}}}DFj}{{{b{FOj}}}FOj}{{{b{FOl}}}FOl}{{{b{DFl}}}DFl}{{{b{DFn}}}DFn}{{{b{FOn}}}FOn}{{{b{G@`}}}G@`}{{{b{G@b}}}G@b}{{{b{G@d}}}G@d}{{{b{DG`}}}DG`}{{{b{G@f}}}G@f}{{{b{G@h}}}G@h}{{{b{G@j}}}G@j}{{{b{G@l}}}G@l}{{{b{c}}{b{de}}}Aj{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{DD`}}{b{DD`}}}DBb}{{{b{DDb}}{b{DDb}}}DBb}{{{b{DDd}}{b{DDd}}}DBb}{{{b{DDf}}{b{DDf}}}DBb}{{{b{DDh}}{b{DDh}}}DBb}{{{b{DDj}}{b{DDj}}}DBb}{{{b{DDl}}{b{DDl}}}DBb}{{{b{DDn}}{b{DDn}}}DBb}{{{b{DE`}}{b{DE`}}}DBb}{{{b{DEb}}{b{DEb}}}DBb}{{{b{DEd}}{b{DEd}}}DBb}{{{b{DEf}}{b{DEf}}}DBb}{{{b{DEh}}{b{DEh}}}DBb}{{{b{DEj}}{b{DEj}}}DBb}{{{b{DEl}}{b{DEl}}}DBb}{{{b{DEn}}{b{DEn}}}DBb}{{{b{DF`}}{b{DF`}}}DBb}{{{b{DFb}}{b{DFb}}}DBb}{{{b{DFd}}{b{DFd}}}DBb}{{{b{DFf}}{b{DFf}}}DBb}{{{b{DFh}}{b{DFh}}}DBb}{{{b{DFj}}{b{DFj}}}DBb}{{{b{DFl}}{b{DFl}}}DBb}{{{b{DFn}}{b{DFn}}}DBb}{{{b{DG`}}{b{DG`}}}DBb}````````````{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}{DFnDFn}{DG`DG`}``{{{b{DD`}}DD`}C`}{{{b{DDb}}DDb}C`}{{{b{DDd}}DDd}C`}{{{b{DDf}}DDf}C`}{{{b{DDh}}DDh}C`}{{{b{DDj}}DDj}C`}{{{b{DDl}}DDl}C`}{{{b{DDn}}DDn}C`}{{{b{DE`}}DE`}C`}{{{b{DEb}}DEb}C`}{{{b{DEd}}DEd}C`}{{{b{DEf}}DEf}C`}{{{b{DEh}}DEh}C`}{{{b{DEj}}DEj}C`}{{{b{DEl}}DEl}C`}{{{b{DEn}}DEn}C`}{{{b{DF`}}DF`}C`}{{{b{DFb}}DFb}C`}{{{b{DFd}}DFd}C`}{{{b{DFf}}DFf}C`}{{{b{DFh}}DFh}C`}{{{b{DFj}}DFj}C`}{{{b{DFl}}DFl}C`}{{{b{DFn}}DFn}C`}{{{b{DG`}}DG`}C`}````````````````````````````````````````````````````````{{}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`}{{}DD`}{{}FCb}{{}DDb}{{}FCd}{{}FCf}{{}FCh}{{}FCj}{{}FCl}{{}FCn}{{}FD`}{{}DDd}{{}FDb}{{}FDd}{{}FDf}{{}FDh}{{}FDj}{{}FDl}{{}DDf}{{}FDn}{{}FE`}{{}FEb}{{}FEd}{{}DDh}{{}DDj}{{}DDl}{{}FEf}{{}FEh}{{}FEj}{{}FEl}{{}FEn}{{}FF`}{{}FFb}{{}FFd}{{}FFf}{{}DDn}{{}FFh}{{}FFj}{{}FFl}{{}FFn}{{}FG`}{{}FGb}{{}FGd}{{}DE`}{{}FGf}{{}FGh}{{}FGj}{{}FGl}{{}FGn}{{}FH`}{{}FHb}{{}FHd}{{}FHf}{{}FHh}{{}DEb}{{}FHj}{{}DEd}{{}FHl}{{}FHn}{{}FI`}{{}DEf}{{}FIb}{{}FId}{{}FIf}{{}FIh}{{}FIj}{{}FIl}{{}FIn}{{}FJ`}{{}FJb}{{}FJd}{{}FJf}{{}DEh}{{}FJh}{{}FJj}{{}DEj}{{}FJl}{{}FJn}{{}FK`}{{}FKb}{{}FKd}{{}FKf}{{}DEl}{{}FKh}{{}FKj}{{}FKl}{{}FKn}{{}FL`}{{}FLb}{{}FLd}{{}DEn}{{}FLf}{{}DF`}{{}FLh}{{}FLj}{{}FLl}{{}FLn}{{}DFb}{{}FM`}{{}FMb}{{}FMd}{{}DFd}{{}FMf}{{}DFf}{{}FMh}{{}FMj}{{}FMl}{{}FMn}{{}FN`}{{}FNb}{{}FNd}{{}FNf}{{}FNh}{{}FNj}{{}FNl}{{}FNn}{{}FO`}{{}FOb}{{}FOd}{{}DFh}{{}FOf}{{}FOh}{{}DFj}{{}FOj}{{}FOl}{{}DFl}{{}DFn}{{}FOn}{{}G@`}{{}G@b}{{}G@d}{{}DG`}{{}G@f}{{}G@h}{{}G@j}{{}G@l}{Bf{{Bd{DGb{b{Al}}}}}}```{{Ab{b{{h{f}}}}}{{Bd{DGdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DGfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DGhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DGjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DGlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DGnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DH`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DHbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DHdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DHfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DHhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DHjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DHlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DHnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DI`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DIbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DIdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DIfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DIhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DIjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DIlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DInBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJ`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DJnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DK`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DKbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DKdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DKfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DKhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DKjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DKlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DKnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DL`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DLbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DLdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DLfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DLhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DLjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DLlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DLnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DM`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DMbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DMdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DMfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DMhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DMjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DMlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DMnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DN`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DNbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DNdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DNfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DNhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DNjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DNlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DNnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DO`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{DObBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DOdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DOfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DOhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DOjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DOlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{DOnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@bBl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@dBl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@fBl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@hBl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@jBl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@lBl}}}}{{Ab{b{{h{f}}}}}{{Bd{E@nBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EA`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EAbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EAdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EAfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EAhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EAjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EAlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EAnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EB`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EBbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EBdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EBfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EBhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EBjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EBlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EBnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EC`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ECbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ECdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ECfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EChBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ECjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EClBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ECnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ED`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EDbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EDdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EDfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EDhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EDjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EDlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EDnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EE`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EEbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EEdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EEfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EEhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EEjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EElBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EEnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EF`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EFbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EFdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EFfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EFhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EFjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EFlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EFnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EG`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EGbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EGdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EGfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EGhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EGjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EGlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EGnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EH`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EHbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EHdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EHfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EHhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EHjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EHlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EHnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EI`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EIbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EIdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EIfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EIhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EIjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EIlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EInBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJ`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EJnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EK`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EKbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EKdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EKfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EKhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EKjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EKlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EKnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EL`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ELbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ELdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ELfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ELhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ELjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ELlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ELnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EM`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EMbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EMdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EMfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EMhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EMjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EMlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EMnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EN`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{ENbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ENdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ENfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ENhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ENjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ENlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{ENnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EO`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{EObBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EOdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EOfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EOhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EOjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EOlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{EOnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@bBl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@dBl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@fBl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@hBl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@jBl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@lBl}}}}{{Ab{b{{h{f}}}}}{{Bd{F@nBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FA`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{FAbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FAdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FAfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FAhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FAjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FAlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FAnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FB`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{FBbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FBdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FBfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FBhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FBjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{FBlBl}}}}{c{{Bd{DGb}}}Bn}{c{{Bd{DGd}}}Bn}{c{{Bd{DGf}}}Bn}{c{{Bd{DGh}}}Bn}{c{{Bd{DGj}}}Bn}{c{{Bd{DGl}}}Bn}{c{{Bd{DGn}}}Bn}{c{{Bd{DH`}}}Bn}{c{{Bd{DHb}}}Bn}{c{{Bd{DHd}}}Bn}{c{{Bd{DHf}}}Bn}{c{{Bd{DHh}}}Bn}{c{{Bd{DHj}}}Bn}{c{{Bd{DHl}}}Bn}{c{{Bd{DHn}}}Bn}{c{{Bd{DI`}}}Bn}{c{{Bd{DIb}}}Bn}{c{{Bd{DId}}}Bn}{c{{Bd{DIf}}}Bn}{c{{Bd{DIh}}}Bn}{c{{Bd{DIj}}}Bn}{c{{Bd{DIl}}}Bn}{c{{Bd{DIn}}}Bn}{c{{Bd{DJ`}}}Bn}{c{{Bd{DJb}}}Bn}{c{{Bd{DJd}}}Bn}{c{{Bd{DJf}}}Bn}{c{{Bd{DJh}}}Bn}{c{{Bd{DJj}}}Bn}{c{{Bd{DJl}}}Bn}{c{{Bd{DJn}}}Bn}{c{{Bd{DK`}}}Bn}{c{{Bd{DKb}}}Bn}{c{{Bd{DKd}}}Bn}{c{{Bd{DKf}}}Bn}{c{{Bd{DKh}}}Bn}{c{{Bd{DKj}}}Bn}{c{{Bd{DKl}}}Bn}{c{{Bd{DKn}}}Bn}{c{{Bd{DL`}}}Bn}{c{{Bd{DLb}}}Bn}{c{{Bd{DLd}}}Bn}{c{{Bd{DLf}}}Bn}{c{{Bd{DLh}}}Bn}{c{{Bd{DLj}}}Bn}{c{{Bd{DLl}}}Bn}{c{{Bd{DLn}}}Bn}{c{{Bd{DM`}}}Bn}{c{{Bd{DMb}}}Bn}{c{{Bd{DMd}}}Bn}{c{{Bd{DMf}}}Bn}{c{{Bd{DMh}}}Bn}{c{{Bd{DMj}}}Bn}{c{{Bd{DMl}}}Bn}{c{{Bd{DMn}}}Bn}{c{{Bd{DN`}}}Bn}{c{{Bd{DNb}}}Bn}{c{{Bd{DNd}}}Bn}{c{{Bd{DNf}}}Bn}{c{{Bd{DNh}}}Bn}{c{{Bd{DNj}}}Bn}{c{{Bd{DNl}}}Bn}{c{{Bd{DNn}}}Bn}{c{{Bd{DO`}}}Bn}{c{{Bd{DOb}}}Bn}{c{{Bd{DOd}}}Bn}{c{{Bd{DOf}}}Bn}{c{{Bd{DOh}}}Bn}{c{{Bd{DOj}}}Bn}{c{{Bd{DOl}}}Bn}{c{{Bd{DOn}}}Bn}{c{{Bd{E@`}}}Bn}{c{{Bd{E@b}}}Bn}{c{{Bd{E@d}}}Bn}{c{{Bd{E@f}}}Bn}{c{{Bd{E@h}}}Bn}{c{{Bd{E@j}}}Bn}{c{{Bd{E@l}}}Bn}{c{{Bd{E@n}}}Bn}{c{{Bd{EA`}}}Bn}{c{{Bd{EAb}}}Bn}{c{{Bd{EAd}}}Bn}{c{{Bd{EAf}}}Bn}{c{{Bd{EAh}}}Bn}{c{{Bd{EAj}}}Bn}{c{{Bd{EAl}}}Bn}{c{{Bd{EAn}}}Bn}{c{{Bd{EB`}}}Bn}{c{{Bd{EBb}}}Bn}{c{{Bd{EBd}}}Bn}{c{{Bd{EBf}}}Bn}{c{{Bd{EBh}}}Bn}{c{{Bd{EBj}}}Bn}{c{{Bd{EBl}}}Bn}{c{{Bd{EBn}}}Bn}{c{{Bd{EC`}}}Bn}{c{{Bd{ECb}}}Bn}{c{{Bd{ECd}}}Bn}{c{{Bd{ECf}}}Bn}{c{{Bd{ECh}}}Bn}{c{{Bd{ECj}}}Bn}{c{{Bd{ECl}}}Bn}{c{{Bd{ECn}}}Bn}{c{{Bd{ED`}}}Bn}{c{{Bd{EDb}}}Bn}{c{{Bd{EDd}}}Bn}{c{{Bd{EDf}}}Bn}{c{{Bd{EDh}}}Bn}{c{{Bd{EDj}}}Bn}{c{{Bd{EDl}}}Bn}{c{{Bd{EDn}}}Bn}{c{{Bd{EE`}}}Bn}{c{{Bd{EEb}}}Bn}{c{{Bd{EEd}}}Bn}{c{{Bd{EEf}}}Bn}{c{{Bd{EEh}}}Bn}{c{{Bd{EEj}}}Bn}{c{{Bd{EEl}}}Bn}{c{{Bd{EEn}}}Bn}{c{{Bd{EF`}}}Bn}{c{{Bd{EFb}}}Bn}{c{{Bd{EFd}}}Bn}{c{{Bd{EFf}}}Bn}{c{{Bd{EFh}}}Bn}{c{{Bd{EFj}}}Bn}{c{{Bd{EFl}}}Bn}{c{{Bd{EFn}}}Bn}{c{{Bd{EG`}}}Bn}{c{{Bd{EGb}}}Bn}{c{{Bd{EGd}}}Bn}{c{{Bd{EGf}}}Bn}{c{{Bd{EGh}}}Bn}{c{{Bd{EGj}}}Bn}{c{{Bd{EGl}}}Bn}{c{{Bd{EGn}}}Bn}{c{{Bd{EH`}}}Bn}{c{{Bd{EHb}}}Bn}{c{{Bd{EHd}}}Bn}{c{{Bd{EHf}}}Bn}{c{{Bd{EHh}}}Bn}{c{{Bd{EHj}}}Bn}{c{{Bd{EHl}}}Bn}{c{{Bd{EHn}}}Bn}{c{{Bd{EI`}}}Bn}{c{{Bd{EIb}}}Bn}{c{{Bd{EId}}}Bn}{c{{Bd{EIf}}}Bn}{c{{Bd{EIh}}}Bn}{c{{Bd{EIj}}}Bn}{c{{Bd{EIl}}}Bn}{c{{Bd{EIn}}}Bn}{c{{Bd{EJ`}}}Bn}{c{{Bd{EJb}}}Bn}{c{{Bd{EJd}}}Bn}{c{{Bd{EJf}}}Bn}{c{{Bd{EJh}}}Bn}{c{{Bd{EJj}}}Bn}{c{{Bd{EJl}}}Bn}{c{{Bd{EJn}}}Bn}{c{{Bd{EK`}}}Bn}{c{{Bd{EKb}}}Bn}{c{{Bd{EKd}}}Bn}{c{{Bd{EKf}}}Bn}{c{{Bd{EKh}}}Bn}{c{{Bd{EKj}}}Bn}{c{{Bd{EKl}}}Bn}{c{{Bd{EKn}}}Bn}{c{{Bd{EL`}}}Bn}{c{{Bd{ELb}}}Bn}{c{{Bd{ELd}}}Bn}{c{{Bd{ELf}}}Bn}{c{{Bd{ELh}}}Bn}{c{{Bd{ELj}}}Bn}{c{{Bd{ELl}}}Bn}{c{{Bd{ELn}}}Bn}{c{{Bd{EM`}}}Bn}{c{{Bd{EMb}}}Bn}{c{{Bd{EMd}}}Bn}{c{{Bd{EMf}}}Bn}{c{{Bd{EMh}}}Bn}{c{{Bd{EMj}}}Bn}{c{{Bd{EMl}}}Bn}{c{{Bd{EMn}}}Bn}{c{{Bd{EN`}}}Bn}{c{{Bd{ENb}}}Bn}{c{{Bd{ENd}}}Bn}{c{{Bd{ENf}}}Bn}{c{{Bd{ENh}}}Bn}{c{{Bd{ENj}}}Bn}{c{{Bd{ENl}}}Bn}{c{{Bd{ENn}}}Bn}{c{{Bd{EO`}}}Bn}{c{{Bd{EOb}}}Bn}{c{{Bd{EOd}}}Bn}{c{{Bd{EOf}}}Bn}{c{{Bd{EOh}}}Bn}{c{{Bd{EOj}}}Bn}{c{{Bd{EOl}}}Bn}{c{{Bd{EOn}}}Bn}{c{{Bd{F@`}}}Bn}{c{{Bd{F@b}}}Bn}{c{{Bd{F@d}}}Bn}{c{{Bd{F@f}}}Bn}{c{{Bd{F@h}}}Bn}{c{{Bd{F@j}}}Bn}{c{{Bd{F@l}}}Bn}{c{{Bd{F@n}}}Bn}{c{{Bd{FA`}}}Bn}{c{{Bd{FAb}}}Bn}{c{{Bd{FAd}}}Bn}{c{{Bd{FAf}}}Bn}{c{{Bd{FAh}}}Bn}{c{{Bd{FAj}}}Bn}{c{{Bd{FAl}}}Bn}{c{{Bd{FAn}}}Bn}{c{{Bd{FB`}}}Bn}{c{{Bd{FBb}}}Bn}{c{{Bd{FBd}}}Bn}{c{{Bd{FBf}}}Bn}{c{{Bd{FBh}}}Bn}{c{{Bd{FBj}}}Bn}{c{{Bd{FBl}}}Bn}{c{{Bd{FBn}}}Bn}{c{{Bd{FC`}}}Bn}{c{{Bd{DD`}}}Bn}{c{{Bd{FCb}}}Bn}{c{{Bd{DDb}}}Bn}{c{{Bd{FCd}}}Bn}{c{{Bd{FCf}}}Bn}{c{{Bd{FCh}}}Bn}{c{{Bd{FCj}}}Bn}{c{{Bd{FCl}}}Bn}{c{{Bd{FCn}}}Bn}{c{{Bd{FD`}}}Bn}{c{{Bd{DDd}}}Bn}{c{{Bd{FDb}}}Bn}{c{{Bd{FDd}}}Bn}{c{{Bd{FDf}}}Bn}{c{{Bd{FDh}}}Bn}{c{{Bd{FDj}}}Bn}{c{{Bd{FDl}}}Bn}{c{{Bd{DDf}}}Bn}{c{{Bd{FDn}}}Bn}{c{{Bd{FE`}}}Bn}{c{{Bd{FEb}}}Bn}{c{{Bd{FEd}}}Bn}{c{{Bd{DDh}}}Bn}{c{{Bd{DDj}}}Bn}{c{{Bd{DDl}}}Bn}{c{{Bd{FEf}}}Bn}{c{{Bd{FEh}}}Bn}{c{{Bd{FEj}}}Bn}{c{{Bd{FEl}}}Bn}{c{{Bd{FEn}}}Bn}{c{{Bd{FF`}}}Bn}{c{{Bd{FFb}}}Bn}{c{{Bd{FFd}}}Bn}{c{{Bd{FFf}}}Bn}{c{{Bd{DDn}}}Bn}{c{{Bd{FFh}}}Bn}{c{{Bd{FFj}}}Bn}{c{{Bd{FFl}}}Bn}{c{{Bd{FFn}}}Bn}{c{{Bd{FG`}}}Bn}{c{{Bd{FGb}}}Bn}{c{{Bd{FGd}}}Bn}{c{{Bd{DE`}}}Bn}{c{{Bd{FGf}}}Bn}{c{{Bd{FGh}}}Bn}{c{{Bd{FGj}}}Bn}{c{{Bd{FGl}}}Bn}{c{{Bd{FGn}}}Bn}{c{{Bd{FH`}}}Bn}{c{{Bd{FHb}}}Bn}{c{{Bd{FHd}}}Bn}{c{{Bd{FHf}}}Bn}{c{{Bd{FHh}}}Bn}{c{{Bd{DEb}}}Bn}{c{{Bd{FHj}}}Bn}{c{{Bd{DEd}}}Bn}{c{{Bd{FHl}}}Bn}{c{{Bd{FHn}}}Bn}{c{{Bd{FI`}}}Bn}{c{{Bd{DEf}}}Bn}{c{{Bd{FIb}}}Bn}{c{{Bd{FId}}}Bn}{c{{Bd{FIf}}}Bn}{c{{Bd{FIh}}}Bn}{c{{Bd{FIj}}}Bn}{c{{Bd{FIl}}}Bn}{c{{Bd{FIn}}}Bn}{c{{Bd{FJ`}}}Bn}{c{{Bd{FJb}}}Bn}{c{{Bd{FJd}}}Bn}{c{{Bd{FJf}}}Bn}{c{{Bd{DEh}}}Bn}{c{{Bd{FJh}}}Bn}{c{{Bd{FJj}}}Bn}{c{{Bd{DEj}}}Bn}{c{{Bd{FJl}}}Bn}{c{{Bd{FJn}}}Bn}{c{{Bd{FK`}}}Bn}{c{{Bd{FKb}}}Bn}{c{{Bd{FKd}}}Bn}{c{{Bd{FKf}}}Bn}{c{{Bd{DEl}}}Bn}{c{{Bd{FKh}}}Bn}{c{{Bd{FKj}}}Bn}{c{{Bd{FKl}}}Bn}{c{{Bd{FKn}}}Bn}{c{{Bd{FL`}}}Bn}{c{{Bd{FLb}}}Bn}{c{{Bd{FLd}}}Bn}{c{{Bd{DEn}}}Bn}{c{{Bd{FLf}}}Bn}{c{{Bd{DF`}}}Bn}{c{{Bd{FLh}}}Bn}{c{{Bd{FLj}}}Bn}{c{{Bd{FLl}}}Bn}{c{{Bd{FLn}}}Bn}{c{{Bd{DFb}}}Bn}{c{{Bd{FM`}}}Bn}{c{{Bd{FMb}}}Bn}{c{{Bd{FMd}}}Bn}{c{{Bd{DFd}}}Bn}{c{{Bd{FMf}}}Bn}{c{{Bd{DFf}}}Bn}{c{{Bd{FMh}}}Bn}{c{{Bd{FMj}}}Bn}{c{{Bd{FMl}}}Bn}{c{{Bd{FMn}}}Bn}{c{{Bd{FN`}}}Bn}{c{{Bd{FNb}}}Bn}{c{{Bd{FNd}}}Bn}{c{{Bd{FNf}}}Bn}{c{{Bd{FNh}}}Bn}{c{{Bd{FNj}}}Bn}{c{{Bd{FNl}}}Bn}{c{{Bd{FNn}}}Bn}{c{{Bd{FO`}}}Bn}{c{{Bd{FOb}}}Bn}{c{{Bd{FOd}}}Bn}{c{{Bd{DFh}}}Bn}{c{{Bd{FOf}}}Bn}{c{{Bd{FOh}}}Bn}{c{{Bd{DFj}}}Bn}{c{{Bd{FOj}}}Bn}{c{{Bd{FOl}}}Bn}{c{{Bd{DFl}}}Bn}{c{{Bd{DFn}}}Bn}{c{{Bd{FOn}}}Bn}{c{{Bd{G@`}}}Bn}{c{{Bd{G@b}}}Bn}{c{{Bd{G@d}}}Bn}{c{{Bd{DG`}}}Bn}{c{{Bd{G@f}}}Bn}{c{{Bd{G@h}}}Bn}{c{{Bd{G@j}}}Bn}{c{{Bd{G@l}}}Bn}```````````{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}```````````````{{}DD`}{{}DDb}{{}DDd}{{}DDf}{{}DDh}{{}DDj}{{}DDl}{{}DDn}{{}DE`}{{}DEb}{{}DEd}{{}DEf}{{}DEh}{{}DEj}{{}DEl}{{}DEn}{{}DF`}{{}DFb}{{}DFd}{{}DFf}{{}DFh}{{}DFj}{{}DFl}{{}DFn}{{}DG`}```````````````{{{b{DGb}}{b{DGb}}}C`}{{{b{DGd}}{b{DGd}}}C`}{{{b{DGf}}{b{DGf}}}C`}{{{b{DGh}}{b{DGh}}}C`}{{{b{DGj}}{b{DGj}}}C`}{{{b{DGl}}{b{DGl}}}C`}{{{b{DGn}}{b{DGn}}}C`}{{{b{DH`}}{b{DH`}}}C`}{{{b{DHb}}{b{DHb}}}C`}{{{b{DHd}}{b{DHd}}}C`}{{{b{DHf}}{b{DHf}}}C`}{{{b{DHh}}{b{DHh}}}C`}{{{b{DHj}}{b{DHj}}}C`}{{{b{DHl}}{b{DHl}}}C`}{{{b{DHn}}{b{DHn}}}C`}{{{b{DI`}}{b{DI`}}}C`}{{{b{DIb}}{b{DIb}}}C`}{{{b{DId}}{b{DId}}}C`}{{{b{DIf}}{b{DIf}}}C`}{{{b{DIh}}{b{DIh}}}C`}{{{b{DIj}}{b{DIj}}}C`}{{{b{DIl}}{b{DIl}}}C`}{{{b{DIn}}{b{DIn}}}C`}{{{b{DJ`}}{b{DJ`}}}C`}{{{b{DJb}}{b{DJb}}}C`}{{{b{DJd}}{b{DJd}}}C`}{{{b{DJf}}{b{DJf}}}C`}{{{b{DJh}}{b{DJh}}}C`}{{{b{DJj}}{b{DJj}}}C`}{{{b{DJl}}{b{DJl}}}C`}{{{b{DJn}}{b{DJn}}}C`}{{{b{DK`}}{b{DK`}}}C`}{{{b{DKb}}{b{DKb}}}C`}{{{b{DKd}}{b{DKd}}}C`}{{{b{DKf}}{b{DKf}}}C`}{{{b{DKh}}{b{DKh}}}C`}{{{b{DKj}}{b{DKj}}}C`}{{{b{DKl}}{b{DKl}}}C`}{{{b{DKn}}{b{DKn}}}C`}{{{b{DL`}}{b{DL`}}}C`}{{{b{DLb}}{b{DLb}}}C`}{{{b{DLd}}{b{DLd}}}C`}{{{b{DLf}}{b{DLf}}}C`}{{{b{DLh}}{b{DLh}}}C`}{{{b{DLj}}{b{DLj}}}C`}{{{b{DLl}}{b{DLl}}}C`}{{{b{DLn}}{b{DLn}}}C`}{{{b{DM`}}{b{DM`}}}C`}{{{b{DMb}}{b{DMb}}}C`}{{{b{DMd}}{b{DMd}}}C`}{{{b{DMf}}{b{DMf}}}C`}{{{b{DMh}}{b{DMh}}}C`}{{{b{DMj}}{b{DMj}}}C`}{{{b{DMl}}{b{DMl}}}C`}{{{b{DMn}}{b{DMn}}}C`}{{{b{DN`}}{b{DN`}}}C`}{{{b{DNb}}{b{DNb}}}C`}{{{b{DNd}}{b{DNd}}}C`}{{{b{DNf}}{b{DNf}}}C`}{{{b{DNh}}{b{DNh}}}C`}{{{b{DNj}}{b{DNj}}}C`}{{{b{DNl}}{b{DNl}}}C`}{{{b{DNn}}{b{DNn}}}C`}{{{b{DO`}}{b{DO`}}}C`}{{{b{DOb}}{b{DOb}}}C`}{{{b{DOd}}{b{DOd}}}C`}{{{b{DOf}}{b{DOf}}}C`}{{{b{DOh}}{b{DOh}}}C`}{{{b{DOj}}{b{DOj}}}C`}{{{b{DOl}}{b{DOl}}}C`}{{{b{DOn}}{b{DOn}}}C`}{{{b{E@`}}{b{E@`}}}C`}{{{b{E@b}}{b{E@b}}}C`}{{{b{E@d}}{b{E@d}}}C`}{{{b{E@f}}{b{E@f}}}C`}{{{b{E@h}}{b{E@h}}}C`}{{{b{E@j}}{b{E@j}}}C`}{{{b{E@l}}{b{E@l}}}C`}{{{b{E@n}}{b{E@n}}}C`}{{{b{EA`}}{b{EA`}}}C`}{{{b{EAb}}{b{EAb}}}C`}{{{b{EAd}}{b{EAd}}}C`}{{{b{EAf}}{b{EAf}}}C`}{{{b{EAh}}{b{EAh}}}C`}{{{b{EAj}}{b{EAj}}}C`}{{{b{EAl}}{b{EAl}}}C`}{{{b{EAn}}{b{EAn}}}C`}{{{b{EB`}}{b{EB`}}}C`}{{{b{EBb}}{b{EBb}}}C`}{{{b{EBd}}{b{EBd}}}C`}{{{b{EBf}}{b{EBf}}}C`}{{{b{EBh}}{b{EBh}}}C`}{{{b{EBj}}{b{EBj}}}C`}{{{b{EBl}}{b{EBl}}}C`}{{{b{EBn}}{b{EBn}}}C`}{{{b{EC`}}{b{EC`}}}C`}{{{b{ECb}}{b{ECb}}}C`}{{{b{ECd}}{b{ECd}}}C`}{{{b{ECf}}{b{ECf}}}C`}{{{b{ECh}}{b{ECh}}}C`}{{{b{ECj}}{b{ECj}}}C`}{{{b{ECl}}{b{ECl}}}C`}{{{b{ECn}}{b{ECn}}}C`}{{{b{ED`}}{b{ED`}}}C`}{{{b{EDb}}{b{EDb}}}C`}{{{b{EDd}}{b{EDd}}}C`}{{{b{EDf}}{b{EDf}}}C`}{{{b{EDh}}{b{EDh}}}C`}{{{b{EDj}}{b{EDj}}}C`}{{{b{EDl}}{b{EDl}}}C`}{{{b{EDn}}{b{EDn}}}C`}{{{b{EE`}}{b{EE`}}}C`}{{{b{EEb}}{b{EEb}}}C`}{{{b{EEd}}{b{EEd}}}C`}{{{b{EEf}}{b{EEf}}}C`}{{{b{EEh}}{b{EEh}}}C`}{{{b{EEj}}{b{EEj}}}C`}{{{b{EEl}}{b{EEl}}}C`}{{{b{EEn}}{b{EEn}}}C`}{{{b{EF`}}{b{EF`}}}C`}{{{b{EFb}}{b{EFb}}}C`}{{{b{EFd}}{b{EFd}}}C`}{{{b{EFf}}{b{EFf}}}C`}{{{b{EFh}}{b{EFh}}}C`}{{{b{EFj}}{b{EFj}}}C`}{{{b{EFl}}{b{EFl}}}C`}{{{b{EFn}}{b{EFn}}}C`}{{{b{EG`}}{b{EG`}}}C`}{{{b{EGb}}{b{EGb}}}C`}{{{b{EGd}}{b{EGd}}}C`}{{{b{EGf}}{b{EGf}}}C`}{{{b{EGh}}{b{EGh}}}C`}{{{b{EGj}}{b{EGj}}}C`}{{{b{EGl}}{b{EGl}}}C`}{{{b{EGn}}{b{EGn}}}C`}{{{b{EH`}}{b{EH`}}}C`}{{{b{EHb}}{b{EHb}}}C`}{{{b{EHd}}{b{EHd}}}C`}{{{b{EHf}}{b{EHf}}}C`}{{{b{EHh}}{b{EHh}}}C`}{{{b{EHj}}{b{EHj}}}C`}{{{b{EHl}}{b{EHl}}}C`}{{{b{EHn}}{b{EHn}}}C`}{{{b{EI`}}{b{EI`}}}C`}{{{b{EIb}}{b{EIb}}}C`}{{{b{EId}}{b{EId}}}C`}{{{b{EIf}}{b{EIf}}}C`}{{{b{EIh}}{b{EIh}}}C`}{{{b{EIj}}{b{EIj}}}C`}{{{b{EIl}}{b{EIl}}}C`}{{{b{EIn}}{b{EIn}}}C`}{{{b{EJ`}}{b{EJ`}}}C`}{{{b{EJb}}{b{EJb}}}C`}{{{b{EJd}}{b{EJd}}}C`}{{{b{EJf}}{b{EJf}}}C`}{{{b{EJh}}{b{EJh}}}C`}{{{b{EJj}}{b{EJj}}}C`}{{{b{EJl}}{b{EJl}}}C`}{{{b{EJn}}{b{EJn}}}C`}{{{b{EK`}}{b{EK`}}}C`}{{{b{EKb}}{b{EKb}}}C`}{{{b{EKd}}{b{EKd}}}C`}{{{b{EKf}}{b{EKf}}}C`}{{{b{EKh}}{b{EKh}}}C`}{{{b{EKj}}{b{EKj}}}C`}{{{b{EKl}}{b{EKl}}}C`}{{{b{EKn}}{b{EKn}}}C`}{{{b{EL`}}{b{EL`}}}C`}{{{b{ELb}}{b{ELb}}}C`}{{{b{ELd}}{b{ELd}}}C`}{{{b{ELf}}{b{ELf}}}C`}{{{b{ELh}}{b{ELh}}}C`}{{{b{ELj}}{b{ELj}}}C`}{{{b{ELl}}{b{ELl}}}C`}{{{b{ELn}}{b{ELn}}}C`}{{{b{EM`}}{b{EM`}}}C`}{{{b{EMb}}{b{EMb}}}C`}{{{b{EMd}}{b{EMd}}}C`}{{{b{EMf}}{b{EMf}}}C`}{{{b{EMh}}{b{EMh}}}C`}{{{b{EMj}}{b{EMj}}}C`}{{{b{EMl}}{b{EMl}}}C`}{{{b{EMn}}{b{EMn}}}C`}{{{b{EN`}}{b{EN`}}}C`}{{{b{ENb}}{b{ENb}}}C`}{{{b{ENd}}{b{ENd}}}C`}{{{b{ENf}}{b{ENf}}}C`}{{{b{ENh}}{b{ENh}}}C`}{{{b{ENj}}{b{ENj}}}C`}{{{b{ENl}}{b{ENl}}}C`}{{{b{ENn}}{b{ENn}}}C`}{{{b{EO`}}{b{EO`}}}C`}{{{b{EOb}}{b{EOb}}}C`}{{{b{EOd}}{b{EOd}}}C`}{{{b{EOf}}{b{EOf}}}C`}{{{b{EOh}}{b{EOh}}}C`}{{{b{EOj}}{b{EOj}}}C`}{{{b{EOl}}{b{EOl}}}C`}{{{b{EOn}}{b{EOn}}}C`}{{{b{F@`}}{b{F@`}}}C`}{{{b{F@b}}{b{F@b}}}C`}{{{b{F@d}}{b{F@d}}}C`}{{{b{F@f}}{b{F@f}}}C`}{{{b{F@h}}{b{F@h}}}C`}{{{b{F@j}}{b{F@j}}}C`}{{{b{F@l}}{b{F@l}}}C`}{{{b{F@n}}{b{F@n}}}C`}{{{b{FA`}}{b{FA`}}}C`}{{{b{FAb}}{b{FAb}}}C`}{{{b{FAd}}{b{FAd}}}C`}{{{b{FAf}}{b{FAf}}}C`}{{{b{FAh}}{b{FAh}}}C`}{{{b{FAj}}{b{FAj}}}C`}{{{b{FAl}}{b{FAl}}}C`}{{{b{FAn}}{b{FAn}}}C`}{{{b{FB`}}{b{FB`}}}C`}{{{b{FBb}}{b{FBb}}}C`}{{{b{FBd}}{b{FBd}}}C`}{{{b{FBf}}{b{FBf}}}C`}{{{b{FBh}}{b{FBh}}}C`}{{{b{FBj}}{b{FBj}}}C`}{{{b{FBl}}{b{FBl}}}C`}{{{b{FBn}}{b{FBn}}}C`}{{{b{FC`}}{b{FC`}}}C`}{{{b{DD`}}{b{DD`}}}C`}{{{b{FCb}}{b{FCb}}}C`}{{{b{DDb}}{b{DDb}}}C`}{{{b{FCd}}{b{FCd}}}C`}{{{b{FCf}}{b{FCf}}}C`}{{{b{FCh}}{b{FCh}}}C`}{{{b{FCj}}{b{FCj}}}C`}{{{b{FCl}}{b{FCl}}}C`}{{{b{FCn}}{b{FCn}}}C`}{{{b{FD`}}{b{FD`}}}C`}{{{b{DDd}}{b{DDd}}}C`}{{{b{FDb}}{b{FDb}}}C`}{{{b{FDd}}{b{FDd}}}C`}{{{b{FDf}}{b{FDf}}}C`}{{{b{FDh}}{b{FDh}}}C`}{{{b{FDj}}{b{FDj}}}C`}{{{b{FDl}}{b{FDl}}}C`}{{{b{DDf}}{b{DDf}}}C`}{{{b{FDn}}{b{FDn}}}C`}{{{b{FE`}}{b{FE`}}}C`}{{{b{FEb}}{b{FEb}}}C`}{{{b{FEd}}{b{FEd}}}C`}{{{b{DDh}}{b{DDh}}}C`}{{{b{DDj}}{b{DDj}}}C`}{{{b{DDl}}{b{DDl}}}C`}{{{b{FEf}}{b{FEf}}}C`}{{{b{FEh}}{b{FEh}}}C`}{{{b{FEj}}{b{FEj}}}C`}{{{b{FEl}}{b{FEl}}}C`}{{{b{FEn}}{b{FEn}}}C`}{{{b{FF`}}{b{FF`}}}C`}{{{b{FFb}}{b{FFb}}}C`}{{{b{FFd}}{b{FFd}}}C`}{{{b{FFf}}{b{FFf}}}C`}{{{b{DDn}}{b{DDn}}}C`}{{{b{FFh}}{b{FFh}}}C`}{{{b{FFj}}{b{FFj}}}C`}{{{b{FFl}}{b{FFl}}}C`}{{{b{FFn}}{b{FFn}}}C`}{{{b{FG`}}{b{FG`}}}C`}{{{b{FGb}}{b{FGb}}}C`}{{{b{FGd}}{b{FGd}}}C`}{{{b{DE`}}{b{DE`}}}C`}{{{b{FGf}}{b{FGf}}}C`}{{{b{FGh}}{b{FGh}}}C`}{{{b{FGj}}{b{FGj}}}C`}{{{b{FGl}}{b{FGl}}}C`}{{{b{FGn}}{b{FGn}}}C`}{{{b{FH`}}{b{FH`}}}C`}{{{b{FHb}}{b{FHb}}}C`}{{{b{FHd}}{b{FHd}}}C`}{{{b{FHf}}{b{FHf}}}C`}{{{b{FHh}}{b{FHh}}}C`}{{{b{DEb}}{b{DEb}}}C`}{{{b{FHj}}{b{FHj}}}C`}{{{b{DEd}}{b{DEd}}}C`}{{{b{FHl}}{b{FHl}}}C`}{{{b{FHn}}{b{FHn}}}C`}{{{b{FI`}}{b{FI`}}}C`}{{{b{DEf}}{b{DEf}}}C`}{{{b{FIb}}{b{FIb}}}C`}{{{b{FId}}{b{FId}}}C`}{{{b{FIf}}{b{FIf}}}C`}{{{b{FIh}}{b{FIh}}}C`}{{{b{FIj}}{b{FIj}}}C`}{{{b{FIl}}{b{FIl}}}C`}{{{b{FIn}}{b{FIn}}}C`}{{{b{FJ`}}{b{FJ`}}}C`}{{{b{FJb}}{b{FJb}}}C`}{{{b{FJd}}{b{FJd}}}C`}{{{b{FJf}}{b{FJf}}}C`}{{{b{DEh}}{b{DEh}}}C`}{{{b{FJh}}{b{FJh}}}C`}{{{b{FJj}}{b{FJj}}}C`}{{{b{DEj}}{b{DEj}}}C`}{{{b{FJl}}{b{FJl}}}C`}{{{b{FJn}}{b{FJn}}}C`}{{{b{FK`}}{b{FK`}}}C`}{{{b{FKb}}{b{FKb}}}C`}{{{b{FKd}}{b{FKd}}}C`}{{{b{FKf}}{b{FKf}}}C`}{{{b{DEl}}{b{DEl}}}C`}{{{b{FKh}}{b{FKh}}}C`}{{{b{FKj}}{b{FKj}}}C`}{{{b{FKl}}{b{FKl}}}C`}{{{b{FKn}}{b{FKn}}}C`}{{{b{FL`}}{b{FL`}}}C`}{{{b{FLb}}{b{FLb}}}C`}{{{b{FLd}}{b{FLd}}}C`}{{{b{DEn}}{b{DEn}}}C`}{{{b{FLf}}{b{FLf}}}C`}{{{b{DF`}}{b{DF`}}}C`}{{{b{FLh}}{b{FLh}}}C`}{{{b{FLj}}{b{FLj}}}C`}{{{b{FLl}}{b{FLl}}}C`}{{{b{FLn}}{b{FLn}}}C`}{{{b{DFb}}{b{DFb}}}C`}{{{b{FM`}}{b{FM`}}}C`}{{{b{FMb}}{b{FMb}}}C`}{{{b{FMd}}{b{FMd}}}C`}{{{b{DFd}}{b{DFd}}}C`}{{{b{FMf}}{b{FMf}}}C`}{{{b{DFf}}{b{DFf}}}C`}{{{b{FMh}}{b{FMh}}}C`}{{{b{FMj}}{b{FMj}}}C`}{{{b{FMl}}{b{FMl}}}C`}{{{b{FMn}}{b{FMn}}}C`}{{{b{FN`}}{b{FN`}}}C`}{{{b{FNb}}{b{FNb}}}C`}{{{b{FNd}}{b{FNd}}}C`}{{{b{FNf}}{b{FNf}}}C`}{{{b{FNh}}{b{FNh}}}C`}{{{b{FNj}}{b{FNj}}}C`}{{{b{FNl}}{b{FNl}}}C`}{{{b{FNn}}{b{FNn}}}C`}{{{b{FO`}}{b{FO`}}}C`}{{{b{FOb}}{b{FOb}}}C`}{{{b{FOd}}{b{FOd}}}C`}{{{b{DFh}}{b{DFh}}}C`}{{{b{FOf}}{b{FOf}}}C`}{{{b{FOh}}{b{FOh}}}C`}{{{b{DFj}}{b{DFj}}}C`}{{{b{FOj}}{b{FOj}}}C`}{{{b{FOl}}{b{FOl}}}C`}{{{b{DFl}}{b{DFl}}}C`}{{{b{DFn}}{b{DFn}}}C`}{{{b{FOn}}{b{FOn}}}C`}{{{b{G@`}}{b{G@`}}}C`}{{{b{G@b}}{b{G@b}}}C`}{{{b{G@d}}{b{G@d}}}C`}{{{b{DG`}}{b{DG`}}}C`}{{{b{G@f}}{b{G@f}}}C`}{{{b{G@h}}{b{G@h}}}C`}{{{b{G@j}}{b{G@j}}}C`}{{{b{G@l}}{b{G@l}}}C`}`````````````{{{b{dDD`}}c}Aj{{DBf{}{{DBd{DD`}}}}}}{{{b{dDDb}}c}Aj{{DBf{}{{DBd{DDb}}}}}}{{{b{dDDd}}c}Aj{{DBf{}{{DBd{DDd}}}}}}{{{b{dDDf}}c}Aj{{DBf{}{{DBd{DDf}}}}}}{{{b{dDDh}}c}Aj{{DBf{}{{DBd{DDh}}}}}}{{{b{dDDj}}c}Aj{{DBf{}{{DBd{DDj}}}}}}{{{b{dDDl}}c}Aj{{DBf{}{{DBd{DDl}}}}}}{{{b{dDDn}}c}Aj{{DBf{}{{DBd{DDn}}}}}}{{{b{dDE`}}c}Aj{{DBf{}{{DBd{DE`}}}}}}{{{b{dDEb}}c}Aj{{DBf{}{{DBd{DEb}}}}}}{{{b{dDEd}}c}Aj{{DBf{}{{DBd{DEd}}}}}}{{{b{dDEf}}c}Aj{{DBf{}{{DBd{DEf}}}}}}{{{b{dDEh}}c}Aj{{DBf{}{{DBd{DEh}}}}}}{{{b{dDEj}}c}Aj{{DBf{}{{DBd{DEj}}}}}}{{{b{dDEl}}c}Aj{{DBf{}{{DBd{DEl}}}}}}{{{b{dDEn}}c}Aj{{DBf{}{{DBd{DEn}}}}}}{{{b{dDF`}}c}Aj{{DBf{}{{DBd{DF`}}}}}}{{{b{dDFb}}c}Aj{{DBf{}{{DBd{DFb}}}}}}{{{b{dDFd}}c}Aj{{DBf{}{{DBd{DFd}}}}}}{{{b{dDFf}}c}Aj{{DBf{}{{DBd{DFf}}}}}}{{{b{dDFh}}c}Aj{{DBf{}{{DBd{DFh}}}}}}{{{b{dDFj}}c}Aj{{DBf{}{{DBd{DFj}}}}}}{{{b{dDFl}}c}Aj{{DBf{}{{DBd{DFl}}}}}}{{{b{dDFn}}c}Aj{{DBf{}{{DBd{DFn}}}}}}{{{b{dDG`}}c}Aj{{DBf{}{{DBd{DG`}}}}}}{Bff}`````````````````````````````````````````````````{{{b{DGb}}{b{dCb}}}DBh}{{{b{DGd}}{b{dCb}}}DBh}{{{b{DGf}}{b{dCb}}}DBh}{{{b{DGh}}{b{dCb}}}DBh}{{{b{DGj}}{b{dCb}}}DBh}{{{b{DGl}}{b{dCb}}}DBh}{{{b{DGn}}{b{dCb}}}DBh}{{{b{DH`}}{b{dCb}}}DBh}{{{b{DHb}}{b{dCb}}}DBh}{{{b{DHd}}{b{dCb}}}DBh}{{{b{DHf}}{b{dCb}}}DBh}{{{b{DHh}}{b{dCb}}}DBh}{{{b{DHj}}{b{dCb}}}DBh}{{{b{DHl}}{b{dCb}}}DBh}{{{b{DHn}}{b{dCb}}}DBh}{{{b{DI`}}{b{dCb}}}DBh}{{{b{DIb}}{b{dCb}}}DBh}{{{b{DId}}{b{dCb}}}DBh}{{{b{DIf}}{b{dCb}}}DBh}{{{b{DIh}}{b{dCb}}}DBh}{{{b{DIj}}{b{dCb}}}DBh}{{{b{DIl}}{b{dCb}}}DBh}{{{b{DIn}}{b{dCb}}}DBh}{{{b{DJ`}}{b{dCb}}}DBh}{{{b{DJb}}{b{dCb}}}DBh}{{{b{DJd}}{b{dCb}}}DBh}{{{b{DJf}}{b{dCb}}}DBh}{{{b{DJh}}{b{dCb}}}DBh}{{{b{DJj}}{b{dCb}}}DBh}{{{b{DJl}}{b{dCb}}}DBh}{{{b{DJn}}{b{dCb}}}DBh}{{{b{DK`}}{b{dCb}}}DBh}{{{b{DKb}}{b{dCb}}}DBh}{{{b{DKd}}{b{dCb}}}DBh}{{{b{DKf}}{b{dCb}}}DBh}{{{b{DKh}}{b{dCb}}}DBh}{{{b{DKj}}{b{dCb}}}DBh}{{{b{DKl}}{b{dCb}}}DBh}{{{b{DKn}}{b{dCb}}}DBh}{{{b{DL`}}{b{dCb}}}DBh}{{{b{DLb}}{b{dCb}}}DBh}{{{b{DLd}}{b{dCb}}}DBh}{{{b{DLf}}{b{dCb}}}DBh}{{{b{DLh}}{b{dCb}}}DBh}{{{b{DLj}}{b{dCb}}}DBh}{{{b{DLl}}{b{dCb}}}DBh}{{{b{DLn}}{b{dCb}}}DBh}{{{b{DM`}}{b{dCb}}}DBh}{{{b{DMb}}{b{dCb}}}DBh}{{{b{DMd}}{b{dCb}}}DBh}{{{b{DMf}}{b{dCb}}}DBh}{{{b{DMh}}{b{dCb}}}DBh}{{{b{DMj}}{b{dCb}}}DBh}{{{b{DMl}}{b{dCb}}}DBh}{{{b{DMn}}{b{dCb}}}DBh}{{{b{DN`}}{b{dCb}}}DBh}{{{b{DNb}}{b{dCb}}}DBh}{{{b{DNd}}{b{dCb}}}DBh}{{{b{DNf}}{b{dCb}}}DBh}{{{b{DNh}}{b{dCb}}}DBh}{{{b{DNj}}{b{dCb}}}DBh}{{{b{DNl}}{b{dCb}}}DBh}{{{b{DNn}}{b{dCb}}}DBh}{{{b{DO`}}{b{dCb}}}DBh}{{{b{DOb}}{b{dCb}}}DBh}{{{b{DOd}}{b{dCb}}}DBh}{{{b{DOf}}{b{dCb}}}DBh}{{{b{DOh}}{b{dCb}}}DBh}{{{b{DOj}}{b{dCb}}}DBh}{{{b{DOl}}{b{dCb}}}DBh}{{{b{DOn}}{b{dCb}}}DBh}{{{b{E@`}}{b{dCb}}}DBh}{{{b{E@b}}{b{dCb}}}DBh}{{{b{E@d}}{b{dCb}}}DBh}{{{b{E@f}}{b{dCb}}}DBh}{{{b{E@h}}{b{dCb}}}DBh}{{{b{E@j}}{b{dCb}}}DBh}{{{b{E@l}}{b{dCb}}}DBh}{{{b{E@n}}{b{dCb}}}DBh}{{{b{EA`}}{b{dCb}}}DBh}{{{b{EAb}}{b{dCb}}}DBh}{{{b{EAd}}{b{dCb}}}DBh}{{{b{EAf}}{b{dCb}}}DBh}{{{b{EAh}}{b{dCb}}}DBh}{{{b{EAj}}{b{dCb}}}DBh}{{{b{EAl}}{b{dCb}}}DBh}{{{b{EAn}}{b{dCb}}}DBh}{{{b{EB`}}{b{dCb}}}DBh}{{{b{EBb}}{b{dCb}}}DBh}{{{b{EBd}}{b{dCb}}}DBh}{{{b{EBf}}{b{dCb}}}DBh}{{{b{EBh}}{b{dCb}}}DBh}{{{b{EBj}}{b{dCb}}}DBh}{{{b{EBl}}{b{dCb}}}DBh}{{{b{EBn}}{b{dCb}}}DBh}{{{b{EC`}}{b{dCb}}}DBh}{{{b{ECb}}{b{dCb}}}DBh}{{{b{ECd}}{b{dCb}}}DBh}{{{b{ECf}}{b{dCb}}}DBh}{{{b{ECh}}{b{dCb}}}DBh}{{{b{ECj}}{b{dCb}}}DBh}{{{b{ECl}}{b{dCb}}}DBh}{{{b{ECn}}{b{dCb}}}DBh}{{{b{ED`}}{b{dCb}}}DBh}{{{b{EDb}}{b{dCb}}}DBh}{{{b{EDd}}{b{dCb}}}DBh}{{{b{EDf}}{b{dCb}}}DBh}{{{b{EDh}}{b{dCb}}}DBh}{{{b{EDj}}{b{dCb}}}DBh}{{{b{EDl}}{b{dCb}}}DBh}{{{b{EDn}}{b{dCb}}}DBh}{{{b{EE`}}{b{dCb}}}DBh}{{{b{EEb}}{b{dCb}}}DBh}{{{b{EEd}}{b{dCb}}}DBh}{{{b{EEf}}{b{dCb}}}DBh}{{{b{EEh}}{b{dCb}}}DBh}{{{b{EEj}}{b{dCb}}}DBh}{{{b{EEl}}{b{dCb}}}DBh}{{{b{EEn}}{b{dCb}}}DBh}{{{b{EF`}}{b{dCb}}}DBh}{{{b{EFb}}{b{dCb}}}DBh}{{{b{EFd}}{b{dCb}}}DBh}{{{b{EFf}}{b{dCb}}}DBh}{{{b{EFh}}{b{dCb}}}DBh}{{{b{EFj}}{b{dCb}}}DBh}{{{b{EFl}}{b{dCb}}}DBh}{{{b{EFn}}{b{dCb}}}DBh}{{{b{EG`}}{b{dCb}}}DBh}{{{b{EGb}}{b{dCb}}}DBh}{{{b{EGd}}{b{dCb}}}DBh}{{{b{EGf}}{b{dCb}}}DBh}{{{b{EGh}}{b{dCb}}}DBh}{{{b{EGj}}{b{dCb}}}DBh}{{{b{EGl}}{b{dCb}}}DBh}{{{b{EGn}}{b{dCb}}}DBh}{{{b{EH`}}{b{dCb}}}DBh}{{{b{EHb}}{b{dCb}}}DBh}{{{b{EHd}}{b{dCb}}}DBh}{{{b{EHf}}{b{dCb}}}DBh}{{{b{EHh}}{b{dCb}}}DBh}{{{b{EHj}}{b{dCb}}}DBh}{{{b{EHl}}{b{dCb}}}DBh}{{{b{EHn}}{b{dCb}}}DBh}{{{b{EI`}}{b{dCb}}}DBh}{{{b{EIb}}{b{dCb}}}DBh}{{{b{EId}}{b{dCb}}}DBh}{{{b{EIf}}{b{dCb}}}DBh}{{{b{EIh}}{b{dCb}}}DBh}{{{b{EIj}}{b{dCb}}}DBh}{{{b{EIl}}{b{dCb}}}DBh}{{{b{EIn}}{b{dCb}}}DBh}{{{b{EJ`}}{b{dCb}}}DBh}{{{b{EJb}}{b{dCb}}}DBh}{{{b{EJd}}{b{dCb}}}DBh}{{{b{EJf}}{b{dCb}}}DBh}{{{b{EJh}}{b{dCb}}}DBh}{{{b{EJj}}{b{dCb}}}DBh}{{{b{EJl}}{b{dCb}}}DBh}{{{b{EJn}}{b{dCb}}}DBh}{{{b{EK`}}{b{dCb}}}DBh}{{{b{EKb}}{b{dCb}}}DBh}{{{b{EKd}}{b{dCb}}}DBh}{{{b{EKf}}{b{dCb}}}DBh}{{{b{EKh}}{b{dCb}}}DBh}{{{b{EKj}}{b{dCb}}}DBh}{{{b{EKl}}{b{dCb}}}DBh}{{{b{EKn}}{b{dCb}}}DBh}{{{b{EL`}}{b{dCb}}}DBh}{{{b{ELb}}{b{dCb}}}DBh}{{{b{ELd}}{b{dCb}}}DBh}{{{b{ELf}}{b{dCb}}}DBh}{{{b{ELh}}{b{dCb}}}DBh}{{{b{ELj}}{b{dCb}}}DBh}{{{b{ELl}}{b{dCb}}}DBh}{{{b{ELn}}{b{dCb}}}DBh}{{{b{EM`}}{b{dCb}}}DBh}{{{b{EMb}}{b{dCb}}}DBh}{{{b{EMd}}{b{dCb}}}DBh}{{{b{EMf}}{b{dCb}}}DBh}{{{b{EMh}}{b{dCb}}}DBh}{{{b{EMj}}{b{dCb}}}DBh}{{{b{EMl}}{b{dCb}}}DBh}{{{b{EMn}}{b{dCb}}}DBh}{{{b{EN`}}{b{dCb}}}DBh}{{{b{ENb}}{b{dCb}}}DBh}{{{b{ENd}}{b{dCb}}}DBh}{{{b{ENf}}{b{dCb}}}DBh}{{{b{ENh}}{b{dCb}}}DBh}{{{b{ENj}}{b{dCb}}}DBh}{{{b{ENl}}{b{dCb}}}DBh}{{{b{ENn}}{b{dCb}}}DBh}{{{b{EO`}}{b{dCb}}}DBh}{{{b{EOb}}{b{dCb}}}DBh}{{{b{EOd}}{b{dCb}}}DBh}{{{b{EOf}}{b{dCb}}}DBh}{{{b{EOh}}{b{dCb}}}DBh}{{{b{EOj}}{b{dCb}}}DBh}{{{b{EOl}}{b{dCb}}}DBh}{{{b{EOn}}{b{dCb}}}DBh}{{{b{F@`}}{b{dCb}}}DBh}{{{b{F@b}}{b{dCb}}}DBh}{{{b{F@d}}{b{dCb}}}DBh}{{{b{F@f}}{b{dCb}}}DBh}{{{b{F@h}}{b{dCb}}}DBh}{{{b{F@j}}{b{dCb}}}DBh}{{{b{F@l}}{b{dCb}}}DBh}{{{b{F@n}}{b{dCb}}}DBh}{{{b{FA`}}{b{dCb}}}DBh}{{{b{FAb}}{b{dCb}}}DBh}{{{b{FAd}}{b{dCb}}}DBh}{{{b{FAf}}{b{dCb}}}DBh}{{{b{FAh}}{b{dCb}}}DBh}{{{b{FAj}}{b{dCb}}}DBh}{{{b{FAl}}{b{dCb}}}DBh}{{{b{FAn}}{b{dCb}}}DBh}{{{b{FB`}}{b{dCb}}}DBh}{{{b{FBb}}{b{dCb}}}DBh}{{{b{FBd}}{b{dCb}}}DBh}{{{b{FBf}}{b{dCb}}}DBh}{{{b{FBh}}{b{dCb}}}DBh}{{{b{FBj}}{b{dCb}}}DBh}{{{b{FBl}}{b{dCb}}}DBh}{{{b{FBn}}{b{dCb}}}DBh}{{{b{FC`}}{b{dCb}}}DBh}{{{b{DD`}}{b{dCb}}}DBh}0000{{{b{FCb}}{b{dCb}}}DBh}{{{b{DDb}}{b{dCb}}}DBh}0000{{{b{FCd}}{b{dCb}}}DBh}{{{b{FCf}}{b{dCb}}}DBh}{{{b{FCh}}{b{dCb}}}DBh}{{{b{FCj}}{b{dCb}}}DBh}{{{b{FCl}}{b{dCb}}}DBh}{{{b{FCn}}{b{dCb}}}DBh}{{{b{FD`}}{b{dCb}}}DBh}{{{b{DDd}}{b{dCb}}}DBh}0000{{{b{FDb}}{b{dCb}}}DBh}{{{b{FDd}}{b{dCb}}}DBh}{{{b{FDf}}{b{dCb}}}DBh}{{{b{FDh}}{b{dCb}}}DBh}{{{b{FDj}}{b{dCb}}}DBh}{{{b{FDl}}{b{dCb}}}DBh}{{{b{DDf}}{b{dCb}}}DBh}0000{{{b{FDn}}{b{dCb}}}DBh}{{{b{FE`}}{b{dCb}}}DBh}{{{b{FEb}}{b{dCb}}}DBh}{{{b{FEd}}{b{dCb}}}DBh}{{{b{DDh}}{b{dCb}}}DBh}0000{{{b{DDj}}{b{dCb}}}DBh}0000{{{b{DDl}}{b{dCb}}}DBh}0000{{{b{FEf}}{b{dCb}}}DBh}{{{b{FEh}}{b{dCb}}}DBh}{{{b{FEj}}{b{dCb}}}DBh}{{{b{FEl}}{b{dCb}}}DBh}{{{b{FEn}}{b{dCb}}}DBh}{{{b{FF`}}{b{dCb}}}DBh}{{{b{FFb}}{b{dCb}}}DBh}{{{b{FFd}}{b{dCb}}}DBh}{{{b{FFf}}{b{dCb}}}DBh}{{{b{DDn}}{b{dCb}}}DBh}0000{{{b{FFh}}{b{dCb}}}DBh}{{{b{FFj}}{b{dCb}}}DBh}{{{b{FFl}}{b{dCb}}}DBh}{{{b{FFn}}{b{dCb}}}DBh}{{{b{FG`}}{b{dCb}}}DBh}{{{b{FGb}}{b{dCb}}}DBh}{{{b{FGd}}{b{dCb}}}DBh}{{{b{DE`}}{b{dCb}}}DBh}0000{{{b{FGf}}{b{dCb}}}DBh}{{{b{FGh}}{b{dCb}}}DBh}{{{b{FGj}}{b{dCb}}}DBh}{{{b{FGl}}{b{dCb}}}DBh}{{{b{FGn}}{b{dCb}}}DBh}{{{b{FH`}}{b{dCb}}}DBh}{{{b{FHb}}{b{dCb}}}DBh}{{{b{FHd}}{b{dCb}}}DBh}{{{b{FHf}}{b{dCb}}}DBh}{{{b{FHh}}{b{dCb}}}DBh}{{{b{DEb}}{b{dCb}}}DBh}0000{{{b{FHj}}{b{dCb}}}DBh}{{{b{DEd}}{b{dCb}}}DBh}0000{{{b{FHl}}{b{dCb}}}DBh}{{{b{FHn}}{b{dCb}}}DBh}{{{b{FI`}}{b{dCb}}}DBh}{{{b{DEf}}{b{dCb}}}DBh}0000{{{b{FIb}}{b{dCb}}}DBh}{{{b{FId}}{b{dCb}}}DBh}{{{b{FIf}}{b{dCb}}}DBh}{{{b{FIh}}{b{dCb}}}DBh}{{{b{FIj}}{b{dCb}}}DBh}{{{b{FIl}}{b{dCb}}}DBh}{{{b{FIn}}{b{dCb}}}DBh}{{{b{FJ`}}{b{dCb}}}DBh}{{{b{FJb}}{b{dCb}}}DBh}{{{b{FJd}}{b{dCb}}}DBh}{{{b{FJf}}{b{dCb}}}DBh}{{{b{DEh}}{b{dCb}}}DBh}0000{{{b{FJh}}{b{dCb}}}DBh}{{{b{FJj}}{b{dCb}}}DBh}{{{b{DEj}}{b{dCb}}}DBh}0000{{{b{FJl}}{b{dCb}}}DBh}{{{b{FJn}}{b{dCb}}}DBh}{{{b{FK`}}{b{dCb}}}DBh}{{{b{FKb}}{b{dCb}}}DBh}{{{b{FKd}}{b{dCb}}}DBh}{{{b{FKf}}{b{dCb}}}DBh}{{{b{DEl}}{b{dCb}}}DBh}0000{{{b{FKh}}{b{dCb}}}DBh}{{{b{FKj}}{b{dCb}}}DBh}{{{b{FKl}}{b{dCb}}}DBh}{{{b{FKn}}{b{dCb}}}DBh}{{{b{FL`}}{b{dCb}}}DBh}{{{b{FLb}}{b{dCb}}}DBh}{{{b{FLd}}{b{dCb}}}DBh}{{{b{DEn}}{b{dCb}}}DBh}0000{{{b{FLf}}{b{dCb}}}DBh}{{{b{DF`}}{b{dCb}}}DBh}0000{{{b{FLh}}{b{dCb}}}DBh}{{{b{FLj}}{b{dCb}}}DBh}{{{b{FLl}}{b{dCb}}}DBh}{{{b{FLn}}{b{dCb}}}DBh}{{{b{DFb}}{b{dCb}}}DBh}0000{{{b{FM`}}{b{dCb}}}DBh}{{{b{FMb}}{b{dCb}}}DBh}{{{b{FMd}}{b{dCb}}}DBh}{{{b{DFd}}{b{dCb}}}DBh}0000{{{b{FMf}}{b{dCb}}}DBh}{{{b{DFf}}{b{dCb}}}DBh}0000{{{b{FMh}}{b{dCb}}}DBh}{{{b{FMj}}{b{dCb}}}DBh}{{{b{FMl}}{b{dCb}}}DBh}{{{b{FMn}}{b{dCb}}}DBh}{{{b{FN`}}{b{dCb}}}DBh}{{{b{FNb}}{b{dCb}}}DBh}{{{b{FNd}}{b{dCb}}}DBh}{{{b{FNf}}{b{dCb}}}DBh}{{{b{FNh}}{b{dCb}}}DBh}{{{b{FNj}}{b{dCb}}}DBh}{{{b{FNl}}{b{dCb}}}DBh}{{{b{FNn}}{b{dCb}}}DBh}{{{b{FO`}}{b{dCb}}}DBh}{{{b{FOb}}{b{dCb}}}DBh}{{{b{FOd}}{b{dCb}}}DBh}{{{b{DFh}}{b{dCb}}}DBh}0000{{{b{FOf}}{b{dCb}}}DBh}{{{b{FOh}}{b{dCb}}}DBh}{{{b{DFj}}{b{dCb}}}DBh}0000{{{b{FOj}}{b{dCb}}}DBh}{{{b{FOl}}{b{dCb}}}DBh}{{{b{DFl}}{b{dCb}}}DBh}0000{{{b{DFn}}{b{dCb}}}DBh}0000{{{b{FOn}}{b{dCb}}}DBh}{{{b{G@`}}{b{dCb}}}DBh}{{{b{G@b}}{b{dCb}}}DBh}{{{b{G@d}}{b{dCb}}}DBh}{{{b{DG`}}{b{dCb}}}DBh}0000{{{b{G@f}}{b{dCb}}}DBh}{{{b{G@h}}{b{dCb}}}DBh}{{{b{G@j}}{b{dCb}}}DBh}{{{b{G@l}}{b{dCb}}}DBh}``````````````{cc{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{j{{DBj{DD`}}}}{Bf{{DBj{DDb}}}}{j{{DBj{DDd}}}}{Bf{{DBj{DDf}}}}{j{{DBj{DDh}}}}{j{{DBj{DDj}}}}{f{{DBj{DDl}}}}{f{{DBj{DDn}}}}{j{{DBj{DE`}}}}{f{{DBj{DEb}}}}{Hl{{DBj{DEd}}}}{Bf{{DBj{DEf}}}}{Hl{{DBj{DEh}}}}{j{{DBj{DEj}}}}{j{{DBj{DEl}}}}{f{{DBj{DEn}}}}{Bf{{DBj{DF`}}}}{f{{DBj{DFb}}}}{Bf{{DBj{DFd}}}}{j{{DBj{DFf}}}}{Bf{{DBj{DFh}}}}{j{{DBj{DFj}}}}{j{{DBj{DFl}}}}{Bf{{DBj{DFn}}}}{j{{DBj{DG`}}}}{jDD`}{BfDDb}{jDDd}{BfDDf}{jDDh}{jDDj}{fDDl}{fDDn}{jDE`}{fDEb}{HlDEd}{BfDEf}{HlDEh}{jDEj}{jDEl}{fDEn}{BfDF`}{fDFb}{BfDFd}{jDFf}{BfDFh}{jDFj}{jDFl}{BfDFn}{jDG`}{jDD`}{BfDDb}{jDDd}{BfDDf}{jDDh}{jDDj}{fDDl}{fDDn}{jDE`}{fDEb}{HlDEd}{BfDEf}{HlDEh}{jDEj}{jDEl}{fDEn}{BfDF`}{fDFb}{BfDFd}{jDFf}{BfDFh}{jDFj}{jDFl}{BfDFn}{jDG`}{DBl{{DBj{FBn}}}}{DBl{{DBj{FC`}}}}{DBl{{DBj{FCb}}}}{DBl{{DBj{FCd}}}}{DBl{{DBj{FCf}}}}{DBl{{DBj{FCh}}}}{DBl{{DBj{FCj}}}}{DBl{{DBj{FCl}}}}{DBl{{DBj{FCn}}}}{DBl{{DBj{FD`}}}}{DBl{{DBj{FDb}}}}{DBl{{DBj{FDd}}}}{DBl{{DBj{FDf}}}}{DBl{{DBj{FDh}}}}{DBl{{DBj{FDj}}}}{DBl{{DBj{FDl}}}}{DBl{{DBj{FDn}}}}{DBl{{DBj{FE`}}}}{DBl{{DBj{FEb}}}}{DBl{{DBj{FEd}}}}{DBl{{DBj{FEf}}}}{DBl{{DBj{FEh}}}}{DBl{{DBj{FEj}}}}{DBl{{DBj{FEl}}}}{DBl{{DBj{FEn}}}}{DBl{{DBj{FF`}}}}{DBl{{DBj{FFb}}}}{DBl{{DBj{FFd}}}}{DBl{{DBj{FFf}}}}{DBl{{DBj{FFh}}}}{DBl{{DBj{FFj}}}}{DBl{{DBj{FFl}}}}{DBl{{DBj{FFn}}}}{DBl{{DBj{FG`}}}}{DBl{{DBj{FGb}}}}{DBl{{DBj{FGd}}}}{DBl{{DBj{FGf}}}}{DBl{{DBj{FGh}}}}{DBl{{DBj{FGj}}}}{DBl{{DBj{FGl}}}}{DBl{{DBj{FGn}}}}{DBl{{DBj{FH`}}}}{DBl{{DBj{FHb}}}}{DBl{{DBj{FHd}}}}{DBl{{DBj{FHf}}}}{DBl{{DBj{FHh}}}}{DBl{{DBj{FHj}}}}{DBl{{DBj{FHl}}}}{DBl{{DBj{FHn}}}}{DBl{{DBj{FI`}}}}{DBl{{DBj{FIb}}}}{DBl{{DBj{FId}}}}{DBl{{DBj{FIf}}}}{DBl{{DBj{FIh}}}}{DBl{{DBj{FIj}}}}{DBl{{DBj{FIl}}}}{DBl{{DBj{FIn}}}}{DBl{{DBj{FJ`}}}}{DBl{{DBj{FJb}}}}{DBl{{DBj{FJd}}}}{DBl{{DBj{FJf}}}}{DBl{{DBj{FJh}}}}{DBl{{DBj{FJj}}}}{DBl{{DBj{FJl}}}}{DBl{{DBj{FJn}}}}{DBl{{DBj{FK`}}}}{DBl{{DBj{FKb}}}}{DBl{{DBj{FKd}}}}{DBl{{DBj{FKf}}}}{DBl{{DBj{FKh}}}}{DBl{{DBj{FKj}}}}{DBl{{DBj{FKl}}}}{DBl{{DBj{FKn}}}}{DBl{{DBj{FL`}}}}{DBl{{DBj{FLb}}}}{DBl{{DBj{FLd}}}}{DBl{{DBj{FLf}}}}{DBl{{DBj{FLh}}}}{DBl{{DBj{FLj}}}}{DBl{{DBj{FLl}}}}{DBl{{DBj{FLn}}}}{DBl{{DBj{FM`}}}}{DBl{{DBj{FMb}}}}{DBl{{DBj{FMd}}}}{DBl{{DBj{FMf}}}}{DBl{{DBj{FMh}}}}{DBl{{DBj{FMj}}}}{DBl{{DBj{FMl}}}}{DBl{{DBj{FMn}}}}{DBl{{DBj{FN`}}}}{DBl{{DBj{FNb}}}}{DBl{{DBj{FNd}}}}{DBl{{DBj{FNf}}}}{DBl{{DBj{FNh}}}}{DBl{{DBj{FNj}}}}{DBl{{DBj{FNl}}}}{DBl{{DBj{FNn}}}}{DBl{{DBj{FO`}}}}{DBl{{DBj{FOb}}}}{DBl{{DBj{FOd}}}}{DBl{{DBj{FOf}}}}{DBl{{DBj{FOh}}}}{DBl{{DBj{FOj}}}}{DBl{{DBj{FOl}}}}{DBl{{DBj{FOn}}}}{DBl{{DBj{G@`}}}}{DBl{{DBj{G@b}}}}{DBl{{DBj{G@d}}}}{DBl{{DBj{G@f}}}}{DBl{{DBj{G@h}}}}{DBl{{DBj{G@j}}}}{DBl{{DBj{G@l}}}}{cDD`{{DBf{}{{DBd{DD`}}}}}}{cDDb{{DBf{}{{DBd{DDb}}}}}}{cDDd{{DBf{}{{DBd{DDd}}}}}}{cDDf{{DBf{}{{DBd{DDf}}}}}}{cDDh{{DBf{}{{DBd{DDh}}}}}}{cDDj{{DBf{}{{DBd{DDj}}}}}}{cDDl{{DBf{}{{DBd{DDl}}}}}}{cDDn{{DBf{}{{DBd{DDn}}}}}}{cDE`{{DBf{}{{DBd{DE`}}}}}}{cDEb{{DBf{}{{DBd{DEb}}}}}}{cDEd{{DBf{}{{DBd{DEd}}}}}}{cDEf{{DBf{}{{DBd{DEf}}}}}}{cDEh{{DBf{}{{DBd{DEh}}}}}}{cDEj{{DBf{}{{DBd{DEj}}}}}}{cDEl{{DBf{}{{DBd{DEl}}}}}}{cDEn{{DBf{}{{DBd{DEn}}}}}}{cDF`{{DBf{}{{DBd{DF`}}}}}}{cDFb{{DBf{}{{DBd{DFb}}}}}}{cDFd{{DBf{}{{DBd{DFd}}}}}}{cDFf{{DBf{}{{DBd{DFf}}}}}}{cDFh{{DBf{}{{DBd{DFh}}}}}}{cDFj{{DBf{}{{DBd{DFj}}}}}}{cDFl{{DBf{}{{DBd{DFl}}}}}}{cDFn{{DBf{}{{DBd{DFn}}}}}}{cDG`{{DBf{}{{DBd{DG`}}}}}}{Hl{{DBj{FBn}}}}{Hl{{DBj{FC`}}}}{Hl{{DBj{FCb}}}}{Hl{{DBj{FCd}}}}{Hl{{DBj{FCf}}}}{Hl{{DBj{FCh}}}}{Hl{{DBj{FCj}}}}{Hl{{DBj{FCl}}}}{Hl{{DBj{FCn}}}}{Hl{{DBj{FD`}}}}{Hl{{DBj{FDb}}}}{Hl{{DBj{FDd}}}}{Hl{{DBj{FDf}}}}{Hl{{DBj{FDh}}}}{Hl{{DBj{FDj}}}}{Hl{{DBj{FDl}}}}{Hl{{DBj{FDn}}}}{Hl{{DBj{FE`}}}}{Hl{{DBj{FEb}}}}{Hl{{DBj{FEd}}}}{Hl{{DBj{FEf}}}}{Hl{{DBj{FEh}}}}{Hl{{DBj{FEj}}}}{Hl{{DBj{FEl}}}}{Hl{{DBj{FEn}}}}{Hl{{DBj{FF`}}}}{Hl{{DBj{FFb}}}}{Hl{{DBj{FFd}}}}{Hl{{DBj{FFf}}}}{Hl{{DBj{FFh}}}}{Hl{{DBj{FFj}}}}{Hl{{DBj{FFl}}}}{Hl{{DBj{FFn}}}}{Hl{{DBj{FG`}}}}{Hl{{DBj{FGb}}}}{Hl{{DBj{FGd}}}}{Hl{{DBj{FGf}}}}{Hl{{DBj{FGh}}}}{Hl{{DBj{FGj}}}}{Hl{{DBj{FGl}}}}{Hl{{DBj{FGn}}}}{Hl{{DBj{FH`}}}}{Hl{{DBj{FHb}}}}{Hl{{DBj{FHd}}}}{Hl{{DBj{FHf}}}}{Hl{{DBj{FHh}}}}{Hl{{DBj{FHj}}}}{Hl{{DBj{FHl}}}}{Hl{{DBj{FHn}}}}{Hl{{DBj{FI`}}}}{Hl{{DBj{FIb}}}}{Hl{{DBj{FId}}}}{Hl{{DBj{FIf}}}}{Hl{{DBj{FIh}}}}{Hl{{DBj{FIj}}}}{Hl{{DBj{FIl}}}}{Hl{{DBj{FIn}}}}{Hl{{DBj{FJ`}}}}{Hl{{DBj{FJb}}}}{Hl{{DBj{FJd}}}}{Hl{{DBj{FJf}}}}{Hl{{DBj{FJh}}}}{Hl{{DBj{FJj}}}}{Hl{{DBj{FJl}}}}{Hl{{DBj{FJn}}}}{Hl{{DBj{FK`}}}}{Hl{{DBj{FKb}}}}{Hl{{DBj{FKd}}}}{Hl{{DBj{FKf}}}}{Hl{{DBj{FKh}}}}{Hl{{DBj{FKj}}}}{Hl{{DBj{FKl}}}}{Hl{{DBj{FKn}}}}{Hl{{DBj{FL`}}}}{Hl{{DBj{FLb}}}}{Hl{{DBj{FLd}}}}{Hl{{DBj{FLf}}}}{Hl{{DBj{FLh}}}}{Hl{{DBj{FLj}}}}{Hl{{DBj{FLl}}}}{Hl{{DBj{FLn}}}}{Hl{{DBj{FM`}}}}{Hl{{DBj{FMb}}}}{Hl{{DBj{FMd}}}}{Hl{{DBj{FMf}}}}{Hl{{DBj{FMh}}}}{Hl{{DBj{FMj}}}}{Hl{{DBj{FMl}}}}{Hl{{DBj{FMn}}}}{Hl{{DBj{FN`}}}}{Hl{{DBj{FNb}}}}{Hl{{DBj{FNd}}}}{Hl{{DBj{FNf}}}}{Hl{{DBj{FNh}}}}{Hl{{DBj{FNj}}}}{Hl{{DBj{FNl}}}}{Hl{{DBj{FNn}}}}{Hl{{DBj{FO`}}}}{Hl{{DBj{FOb}}}}{Hl{{DBj{FOd}}}}{Hl{{DBj{FOf}}}}{Hl{{DBj{FOh}}}}{Hl{{DBj{FOj}}}}{Hl{{DBj{FOl}}}}{Hl{{DBj{FOn}}}}{Hl{{DBj{G@`}}}}{Hl{{DBj{G@b}}}}{Hl{{DBj{G@d}}}}{Hl{{DBj{G@f}}}}{Hl{{DBj{G@h}}}}{Hl{{DBj{G@j}}}}{Hl{{DBj{G@l}}}}``````````````````````````````{{{b{DD`}}{b{dc}}}AjDBn}{{{b{DDb}}{b{dc}}}AjDBn}{{{b{DDd}}{b{dc}}}AjDBn}{{{b{DDf}}{b{dc}}}AjDBn}{{{b{DDh}}{b{dc}}}AjDBn}{{{b{DDj}}{b{dc}}}AjDBn}{{{b{DDl}}{b{dc}}}AjDBn}{{{b{DDn}}{b{dc}}}AjDBn}{{{b{DE`}}{b{dc}}}AjDBn}{{{b{DEb}}{b{dc}}}AjDBn}{{{b{DEd}}{b{dc}}}AjDBn}{{{b{DEf}}{b{dc}}}AjDBn}{{{b{DEh}}{b{dc}}}AjDBn}{{{b{DEj}}{b{dc}}}AjDBn}{{{b{DEl}}{b{dc}}}AjDBn}{{{b{DEn}}{b{dc}}}AjDBn}{{{b{DF`}}{b{dc}}}AjDBn}{{{b{DFb}}{b{dc}}}AjDBn}{{{b{DFd}}{b{dc}}}AjDBn}{{{b{DFf}}{b{dc}}}AjDBn}{{{b{DFh}}{b{dc}}}AjDBn}{{{b{DFj}}{b{dc}}}AjDBn}{{{b{DFl}}{b{dc}}}AjDBn}{{{b{DFn}}{b{dc}}}AjDBn}{{{b{DG`}}{b{dc}}}AjDBn}```````````````````````````````````````````````````````````````{{{b{dDD`}}DD`}Aj}{{{b{dDDb}}DDb}Aj}{{{b{dDDd}}DDd}Aj}{{{b{dDDf}}DDf}Aj}{{{b{dDDh}}DDh}Aj}{{{b{dDDj}}DDj}Aj}{{{b{dDDl}}DDl}Aj}{{{b{dDDn}}DDn}Aj}{{{b{dDE`}}DE`}Aj}{{{b{dDEb}}DEb}Aj}{{{b{dDEd}}DEd}Aj}{{{b{dDEf}}DEf}Aj}{{{b{dDEh}}DEh}Aj}{{{b{dDEj}}DEj}Aj}{{{b{dDEl}}DEl}Aj}{{{b{dDEn}}DEn}Aj}{{{b{dDF`}}DF`}Aj}{{{b{dDFb}}DFb}Aj}{{{b{dDFd}}DFd}Aj}{{{b{dDFf}}DFf}Aj}{{{b{dDFh}}DFh}Aj}{{{b{dDFj}}DFj}Aj}{{{b{dDFl}}DFl}Aj}{{{b{dDFn}}DFn}Aj}{{{b{dDG`}}DG`}Aj}``````````````{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}{{{b{DD`}}DD`}C`}{{{b{DDb}}DDb}C`}{{{b{DDd}}DDd}C`}{{{b{DDf}}DDf}C`}{{{b{DDh}}DDh}C`}{{{b{DDj}}DDj}C`}{{{b{DDl}}DDl}C`}{{{b{DDn}}DDn}C`}{{{b{DE`}}DE`}C`}{{{b{DEb}}DEb}C`}{{{b{DEd}}DEd}C`}{{{b{DEf}}DEf}C`}{{{b{DEh}}DEh}C`}{{{b{DEj}}DEj}C`}{{{b{DEl}}DEl}C`}{{{b{DEn}}DEn}C`}{{{b{DF`}}DF`}C`}{{{b{DFb}}DFb}C`}{{{b{DFd}}DFd}C`}{{{b{DFf}}DFf}C`}{{{b{DFh}}DFh}C`}{{{b{DFj}}DFj}C`}{{{b{DFl}}DFl}C`}{{{b{DFn}}DFn}C`}{{{b{DG`}}DG`}C`}`{ce{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{DD`}}}C`}{{{b{DDb}}}C`}{{{b{DDd}}}C`}{{{b{DDf}}}C`}{{{b{DDh}}}C`}{{{b{DDj}}}C`}{{{b{DDl}}}C`}{{{b{DDn}}}C`}{{{b{DE`}}}C`}{{{b{DEb}}}C`}{{{b{DEd}}}C`}{{{b{DEf}}}C`}{{{b{DEh}}}C`}{{{b{DEj}}}C`}{{{b{DEl}}}C`}{{{b{DEn}}}C`}{{{b{DF`}}}C`}{{{b{DFb}}}C`}{{{b{DFd}}}C`}{{{b{DFf}}}C`}{{{b{DFh}}}C`}{{{b{DFj}}}C`}{{{b{DFl}}}C`}{{{b{DFn}}}C`}{{{b{DG`}}}C`}{{{b{DD`}}}C`}{{{b{DDb}}}C`}{{{b{DDd}}}C`}{{{b{DDf}}}C`}{{{b{DDh}}}C`}{{{b{DDj}}}C`}{{{b{DDl}}}C`}{{{b{DDn}}}C`}{{{b{DE`}}}C`}{{{b{DEb}}}C`}{{{b{DEd}}}C`}{{{b{DEf}}}C`}{{{b{DEh}}}C`}{{{b{DEj}}}C`}{{{b{DEl}}}C`}{{{b{DEn}}}C`}{{{b{DF`}}}C`}{{{b{DFb}}}C`}{{{b{DFd}}}C`}{{{b{DFf}}}C`}{{{b{DFh}}}C`}{{{b{DFj}}}C`}{{{b{DFl}}}C`}{{{b{DFn}}}C`}{{{b{DG`}}}C`}```````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{DGb}}}Bf}`{{{b{Al}}}{{Bd{Bf{b{Al}}}}}}{{{b{DGb}}}{{b{Al}}}}```````````````````````````````````````{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}{DFnDFn}{DG`DG`}```````````````````````````````````````````````````````````````````````````````````````````{{AbBf{b{{h{f}}}}}{{Bd{DGbBl}}}}{{{b{DD`}}{b{DD`}}}{{DBj{DBb}}}}{{{b{DDb}}{b{DDb}}}{{DBj{DBb}}}}{{{b{DDd}}{b{DDd}}}{{DBj{DBb}}}}{{{b{DDf}}{b{DDf}}}{{DBj{DBb}}}}{{{b{DDh}}{b{DDh}}}{{DBj{DBb}}}}{{{b{DDj}}{b{DDj}}}{{DBj{DBb}}}}{{{b{DDl}}{b{DDl}}}{{DBj{DBb}}}}{{{b{DDn}}{b{DDn}}}{{DBj{DBb}}}}{{{b{DE`}}{b{DE`}}}{{DBj{DBb}}}}{{{b{DEb}}{b{DEb}}}{{DBj{DBb}}}}{{{b{DEd}}{b{DEd}}}{{DBj{DBb}}}}{{{b{DEf}}{b{DEf}}}{{DBj{DBb}}}}{{{b{DEh}}{b{DEh}}}{{DBj{DBb}}}}{{{b{DEj}}{b{DEj}}}{{DBj{DBb}}}}{{{b{DEl}}{b{DEl}}}{{DBj{DBb}}}}{{{b{DEn}}{b{DEn}}}{{DBj{DBb}}}}{{{b{DF`}}{b{DF`}}}{{DBj{DBb}}}}{{{b{DFb}}{b{DFb}}}{{DBj{DBb}}}}{{{b{DFd}}{b{DFd}}}{{DBj{DBb}}}}{{{b{DFf}}{b{DFf}}}{{DBj{DBb}}}}{{{b{DFh}}{b{DFh}}}{{DBj{DBb}}}}{{{b{DFj}}{b{DFj}}}{{DBj{DBb}}}}{{{b{DFl}}{b{DFl}}}{{DBj{DBb}}}}{{{b{DFn}}{b{DFn}}}{{DBj{DBb}}}}{{{b{DG`}}{b{DG`}}}{{DBj{DBb}}}}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{dDD`}}DD`}Aj}{{{b{dDDb}}DDb}Aj}{{{b{dDDd}}DDd}Aj}{{{b{dDDf}}DDf}Aj}{{{b{dDDh}}DDh}Aj}{{{b{dDDj}}DDj}Aj}{{{b{dDDl}}DDl}Aj}{{{b{dDDn}}DDn}Aj}{{{b{dDE`}}DE`}Aj}{{{b{dDEb}}DEb}Aj}{{{b{dDEd}}DEd}Aj}{{{b{dDEf}}DEf}Aj}{{{b{dDEh}}DEh}Aj}{{{b{dDEj}}DEj}Aj}{{{b{dDEl}}DEl}Aj}{{{b{dDEn}}DEn}Aj}{{{b{dDF`}}DF`}Aj}{{{b{dDFb}}DFb}Aj}{{{b{dDFd}}DFd}Aj}{{{b{dDFf}}DFf}Aj}{{{b{dDFh}}DFh}Aj}{{{b{dDFj}}DFj}Aj}{{{b{dDFl}}DFl}Aj}{{{b{dDFn}}DFn}Aj}{{{b{dDG`}}DG`}Aj}`````````````````````````````````````````````````````````````````````````````````````````````````{{{b{DGb}}Ab{b{d{h{f}}}}}D`}{{{b{DGd}}Ab{b{d{h{f}}}}}D`}{{{b{DGf}}Ab{b{d{h{f}}}}}D`}{{{b{DGh}}Ab{b{d{h{f}}}}}D`}{{{b{DGj}}Ab{b{d{h{f}}}}}D`}{{{b{DGl}}Ab{b{d{h{f}}}}}D`}{{{b{DGn}}Ab{b{d{h{f}}}}}D`}{{{b{DH`}}Ab{b{d{h{f}}}}}D`}{{{b{DHb}}Ab{b{d{h{f}}}}}D`}{{{b{DHd}}Ab{b{d{h{f}}}}}D`}{{{b{DHf}}Ab{b{d{h{f}}}}}D`}{{{b{DHh}}Ab{b{d{h{f}}}}}D`}{{{b{DHj}}Ab{b{d{h{f}}}}}D`}{{{b{DHl}}Ab{b{d{h{f}}}}}D`}{{{b{DHn}}Ab{b{d{h{f}}}}}D`}{{{b{DI`}}Ab{b{d{h{f}}}}}D`}{{{b{DIb}}Ab{b{d{h{f}}}}}D`}{{{b{DId}}Ab{b{d{h{f}}}}}D`}{{{b{DIf}}Ab{b{d{h{f}}}}}D`}{{{b{DIh}}Ab{b{d{h{f}}}}}D`}{{{b{DIj}}Ab{b{d{h{f}}}}}D`}{{{b{DIl}}Ab{b{d{h{f}}}}}D`}{{{b{DIn}}Ab{b{d{h{f}}}}}D`}{{{b{DJ`}}Ab{b{d{h{f}}}}}D`}{{{b{DJb}}Ab{b{d{h{f}}}}}D`}{{{b{DJd}}Ab{b{d{h{f}}}}}D`}{{{b{DJf}}Ab{b{d{h{f}}}}}D`}{{{b{DJh}}Ab{b{d{h{f}}}}}D`}{{{b{DJj}}Ab{b{d{h{f}}}}}D`}{{{b{DJl}}Ab{b{d{h{f}}}}}D`}{{{b{DJn}}Ab{b{d{h{f}}}}}D`}{{{b{DK`}}Ab{b{d{h{f}}}}}D`}{{{b{DKb}}Ab{b{d{h{f}}}}}D`}{{{b{DKd}}Ab{b{d{h{f}}}}}D`}{{{b{DKf}}Ab{b{d{h{f}}}}}D`}{{{b{DKh}}Ab{b{d{h{f}}}}}D`}{{{b{DKj}}Ab{b{d{h{f}}}}}D`}{{{b{DKl}}Ab{b{d{h{f}}}}}D`}{{{b{DKn}}Ab{b{d{h{f}}}}}D`}{{{b{DL`}}Ab{b{d{h{f}}}}}D`}{{{b{DLb}}Ab{b{d{h{f}}}}}D`}{{{b{DLd}}Ab{b{d{h{f}}}}}D`}{{{b{DLf}}Ab{b{d{h{f}}}}}D`}{{{b{DLh}}Ab{b{d{h{f}}}}}D`}{{{b{DLj}}Ab{b{d{h{f}}}}}D`}{{{b{DLl}}Ab{b{d{h{f}}}}}D`}{{{b{DLn}}Ab{b{d{h{f}}}}}D`}{{{b{DM`}}Ab{b{d{h{f}}}}}D`}{{{b{DMb}}Ab{b{d{h{f}}}}}D`}{{{b{DMd}}Ab{b{d{h{f}}}}}D`}{{{b{DMf}}Ab{b{d{h{f}}}}}D`}{{{b{DMh}}Ab{b{d{h{f}}}}}D`}{{{b{DMj}}Ab{b{d{h{f}}}}}D`}{{{b{DMl}}Ab{b{d{h{f}}}}}D`}{{{b{DMn}}Ab{b{d{h{f}}}}}D`}{{{b{DN`}}Ab{b{d{h{f}}}}}D`}{{{b{DNb}}Ab{b{d{h{f}}}}}D`}{{{b{DNd}}Ab{b{d{h{f}}}}}D`}{{{b{DNf}}Ab{b{d{h{f}}}}}D`}{{{b{DNh}}Ab{b{d{h{f}}}}}D`}{{{b{DNj}}Ab{b{d{h{f}}}}}D`}{{{b{DNl}}Ab{b{d{h{f}}}}}D`}{{{b{DNn}}Ab{b{d{h{f}}}}}D`}{{{b{DO`}}Ab{b{d{h{f}}}}}D`}{{{b{DOb}}Ab{b{d{h{f}}}}}D`}{{{b{DOd}}Ab{b{d{h{f}}}}}D`}{{{b{DOf}}Ab{b{d{h{f}}}}}D`}{{{b{DOh}}Ab{b{d{h{f}}}}}D`}{{{b{DOj}}Ab{b{d{h{f}}}}}D`}{{{b{DOl}}Ab{b{d{h{f}}}}}D`}{{{b{DOn}}Ab{b{d{h{f}}}}}D`}{{{b{E@`}}Ab{b{d{h{f}}}}}D`}{{{b{E@b}}Ab{b{d{h{f}}}}}D`}{{{b{E@d}}Ab{b{d{h{f}}}}}D`}{{{b{E@f}}Ab{b{d{h{f}}}}}D`}{{{b{E@h}}Ab{b{d{h{f}}}}}D`}{{{b{E@j}}Ab{b{d{h{f}}}}}D`}{{{b{E@l}}Ab{b{d{h{f}}}}}D`}{{{b{E@n}}Ab{b{d{h{f}}}}}D`}{{{b{EA`}}Ab{b{d{h{f}}}}}D`}{{{b{EAb}}Ab{b{d{h{f}}}}}D`}{{{b{EAd}}Ab{b{d{h{f}}}}}D`}{{{b{EAf}}Ab{b{d{h{f}}}}}D`}{{{b{EAh}}Ab{b{d{h{f}}}}}D`}{{{b{EAj}}Ab{b{d{h{f}}}}}D`}{{{b{EAl}}Ab{b{d{h{f}}}}}D`}{{{b{EAn}}Ab{b{d{h{f}}}}}D`}{{{b{EB`}}Ab{b{d{h{f}}}}}D`}{{{b{EBb}}Ab{b{d{h{f}}}}}D`}{{{b{EBd}}Ab{b{d{h{f}}}}}D`}{{{b{EBf}}Ab{b{d{h{f}}}}}D`}{{{b{EBh}}Ab{b{d{h{f}}}}}D`}{{{b{EBj}}Ab{b{d{h{f}}}}}D`}{{{b{EBl}}Ab{b{d{h{f}}}}}D`}{{{b{EBn}}Ab{b{d{h{f}}}}}D`}{{{b{EC`}}Ab{b{d{h{f}}}}}D`}{{{b{ECb}}Ab{b{d{h{f}}}}}D`}{{{b{ECd}}Ab{b{d{h{f}}}}}D`}{{{b{ECf}}Ab{b{d{h{f}}}}}D`}{{{b{ECh}}Ab{b{d{h{f}}}}}D`}{{{b{ECj}}Ab{b{d{h{f}}}}}D`}{{{b{ECl}}Ab{b{d{h{f}}}}}D`}{{{b{ECn}}Ab{b{d{h{f}}}}}D`}{{{b{ED`}}Ab{b{d{h{f}}}}}D`}{{{b{EDb}}Ab{b{d{h{f}}}}}D`}{{{b{EDd}}Ab{b{d{h{f}}}}}D`}{{{b{EDf}}Ab{b{d{h{f}}}}}D`}{{{b{EDh}}Ab{b{d{h{f}}}}}D`}{{{b{EDj}}Ab{b{d{h{f}}}}}D`}{{{b{EDl}}Ab{b{d{h{f}}}}}D`}{{{b{EDn}}Ab{b{d{h{f}}}}}D`}{{{b{EE`}}Ab{b{d{h{f}}}}}D`}{{{b{EEb}}Ab{b{d{h{f}}}}}D`}{{{b{EEd}}Ab{b{d{h{f}}}}}D`}{{{b{EEf}}Ab{b{d{h{f}}}}}D`}{{{b{EEh}}Ab{b{d{h{f}}}}}D`}{{{b{EEj}}Ab{b{d{h{f}}}}}D`}{{{b{EEl}}Ab{b{d{h{f}}}}}D`}{{{b{EEn}}Ab{b{d{h{f}}}}}D`}{{{b{EF`}}Ab{b{d{h{f}}}}}D`}{{{b{EFb}}Ab{b{d{h{f}}}}}D`}{{{b{EFd}}Ab{b{d{h{f}}}}}D`}{{{b{EFf}}Ab{b{d{h{f}}}}}D`}{{{b{EFh}}Ab{b{d{h{f}}}}}D`}{{{b{EFj}}Ab{b{d{h{f}}}}}D`}{{{b{EFl}}Ab{b{d{h{f}}}}}D`}{{{b{EFn}}Ab{b{d{h{f}}}}}D`}{{{b{EG`}}Ab{b{d{h{f}}}}}D`}{{{b{EGb}}Ab{b{d{h{f}}}}}D`}{{{b{EGd}}Ab{b{d{h{f}}}}}D`}{{{b{EGf}}Ab{b{d{h{f}}}}}D`}{{{b{EGh}}Ab{b{d{h{f}}}}}D`}{{{b{EGj}}Ab{b{d{h{f}}}}}D`}{{{b{EGl}}Ab{b{d{h{f}}}}}D`}{{{b{EGn}}Ab{b{d{h{f}}}}}D`}{{{b{EH`}}Ab{b{d{h{f}}}}}D`}{{{b{EHb}}Ab{b{d{h{f}}}}}D`}{{{b{EHd}}Ab{b{d{h{f}}}}}D`}{{{b{EHf}}Ab{b{d{h{f}}}}}D`}{{{b{EHh}}Ab{b{d{h{f}}}}}D`}{{{b{EHj}}Ab{b{d{h{f}}}}}D`}{{{b{EHl}}Ab{b{d{h{f}}}}}D`}{{{b{EHn}}Ab{b{d{h{f}}}}}D`}{{{b{EI`}}Ab{b{d{h{f}}}}}D`}{{{b{EIb}}Ab{b{d{h{f}}}}}D`}{{{b{EId}}Ab{b{d{h{f}}}}}D`}{{{b{EIf}}Ab{b{d{h{f}}}}}D`}{{{b{EIh}}Ab{b{d{h{f}}}}}D`}{{{b{EIj}}Ab{b{d{h{f}}}}}D`}{{{b{EIl}}Ab{b{d{h{f}}}}}D`}{{{b{EIn}}Ab{b{d{h{f}}}}}D`}{{{b{EJ`}}Ab{b{d{h{f}}}}}D`}{{{b{EJb}}Ab{b{d{h{f}}}}}D`}{{{b{EJd}}Ab{b{d{h{f}}}}}D`}{{{b{EJf}}Ab{b{d{h{f}}}}}D`}{{{b{EJh}}Ab{b{d{h{f}}}}}D`}{{{b{EJj}}Ab{b{d{h{f}}}}}D`}{{{b{EJl}}Ab{b{d{h{f}}}}}D`}{{{b{EJn}}Ab{b{d{h{f}}}}}D`}{{{b{EK`}}Ab{b{d{h{f}}}}}D`}{{{b{EKb}}Ab{b{d{h{f}}}}}D`}{{{b{EKd}}Ab{b{d{h{f}}}}}D`}{{{b{EKf}}Ab{b{d{h{f}}}}}D`}{{{b{EKh}}Ab{b{d{h{f}}}}}D`}{{{b{EKj}}Ab{b{d{h{f}}}}}D`}{{{b{EKl}}Ab{b{d{h{f}}}}}D`}{{{b{EKn}}Ab{b{d{h{f}}}}}D`}{{{b{EL`}}Ab{b{d{h{f}}}}}D`}{{{b{ELb}}Ab{b{d{h{f}}}}}D`}{{{b{ELd}}Ab{b{d{h{f}}}}}D`}{{{b{ELf}}Ab{b{d{h{f}}}}}D`}{{{b{ELh}}Ab{b{d{h{f}}}}}D`}{{{b{ELj}}Ab{b{d{h{f}}}}}D`}{{{b{ELl}}Ab{b{d{h{f}}}}}D`}{{{b{ELn}}Ab{b{d{h{f}}}}}D`}{{{b{EM`}}Ab{b{d{h{f}}}}}D`}{{{b{EMb}}Ab{b{d{h{f}}}}}D`}{{{b{EMd}}Ab{b{d{h{f}}}}}D`}{{{b{EMf}}Ab{b{d{h{f}}}}}D`}{{{b{EMh}}Ab{b{d{h{f}}}}}D`}{{{b{EMj}}Ab{b{d{h{f}}}}}D`}{{{b{EMl}}Ab{b{d{h{f}}}}}D`}{{{b{EMn}}Ab{b{d{h{f}}}}}D`}{{{b{EN`}}Ab{b{d{h{f}}}}}D`}{{{b{ENb}}Ab{b{d{h{f}}}}}D`}{{{b{ENd}}Ab{b{d{h{f}}}}}D`}{{{b{ENf}}Ab{b{d{h{f}}}}}D`}{{{b{ENh}}Ab{b{d{h{f}}}}}D`}{{{b{ENj}}Ab{b{d{h{f}}}}}D`}{{{b{ENl}}Ab{b{d{h{f}}}}}D`}{{{b{ENn}}Ab{b{d{h{f}}}}}D`}{{{b{EO`}}Ab{b{d{h{f}}}}}D`}{{{b{EOb}}Ab{b{d{h{f}}}}}D`}{{{b{EOd}}Ab{b{d{h{f}}}}}D`}{{{b{EOf}}Ab{b{d{h{f}}}}}D`}{{{b{EOh}}Ab{b{d{h{f}}}}}D`}{{{b{EOj}}Ab{b{d{h{f}}}}}D`}{{{b{EOl}}Ab{b{d{h{f}}}}}D`}{{{b{EOn}}Ab{b{d{h{f}}}}}D`}{{{b{F@`}}Ab{b{d{h{f}}}}}D`}{{{b{F@b}}Ab{b{d{h{f}}}}}D`}{{{b{F@d}}Ab{b{d{h{f}}}}}D`}{{{b{F@f}}Ab{b{d{h{f}}}}}D`}{{{b{F@h}}Ab{b{d{h{f}}}}}D`}{{{b{F@j}}Ab{b{d{h{f}}}}}D`}{{{b{F@l}}Ab{b{d{h{f}}}}}D`}{{{b{F@n}}Ab{b{d{h{f}}}}}D`}{{{b{FA`}}Ab{b{d{h{f}}}}}D`}{{{b{FAb}}Ab{b{d{h{f}}}}}D`}{{{b{FAd}}Ab{b{d{h{f}}}}}D`}{{{b{FAf}}Ab{b{d{h{f}}}}}D`}{{{b{FAh}}Ab{b{d{h{f}}}}}D`}{{{b{FAj}}Ab{b{d{h{f}}}}}D`}{{{b{FAl}}Ab{b{d{h{f}}}}}D`}{{{b{FAn}}Ab{b{d{h{f}}}}}D`}{{{b{FB`}}Ab{b{d{h{f}}}}}D`}{{{b{FBb}}Ab{b{d{h{f}}}}}D`}{{{b{FBd}}Ab{b{d{h{f}}}}}D`}{{{b{FBf}}Ab{b{d{h{f}}}}}D`}{{{b{FBh}}Ab{b{d{h{f}}}}}D`}{{{b{FBj}}Ab{b{d{h{f}}}}}D`}{{{b{FBl}}Ab{b{d{h{f}}}}}D`}`{{{b{DGb}}c}BdDd}{{{b{DGd}}c}BdDd}{{{b{DGf}}c}BdDd}{{{b{DGh}}c}BdDd}{{{b{DGj}}c}BdDd}{{{b{DGl}}c}BdDd}{{{b{DGn}}c}BdDd}{{{b{DH`}}c}BdDd}{{{b{DHb}}c}BdDd}{{{b{DHd}}c}BdDd}{{{b{DHf}}c}BdDd}{{{b{DHh}}c}BdDd}{{{b{DHj}}c}BdDd}{{{b{DHl}}c}BdDd}{{{b{DHn}}c}BdDd}{{{b{DI`}}c}BdDd}{{{b{DIb}}c}BdDd}{{{b{DId}}c}BdDd}{{{b{DIf}}c}BdDd}{{{b{DIh}}c}BdDd}{{{b{DIj}}c}BdDd}{{{b{DIl}}c}BdDd}{{{b{DIn}}c}BdDd}{{{b{DJ`}}c}BdDd}{{{b{DJb}}c}BdDd}{{{b{DJd}}c}BdDd}{{{b{DJf}}c}BdDd}{{{b{DJh}}c}BdDd}{{{b{DJj}}c}BdDd}{{{b{DJl}}c}BdDd}{{{b{DJn}}c}BdDd}{{{b{DK`}}c}BdDd}{{{b{DKb}}c}BdDd}{{{b{DKd}}c}BdDd}{{{b{DKf}}c}BdDd}{{{b{DKh}}c}BdDd}{{{b{DKj}}c}BdDd}{{{b{DKl}}c}BdDd}{{{b{DKn}}c}BdDd}{{{b{DL`}}c}BdDd}{{{b{DLb}}c}BdDd}{{{b{DLd}}c}BdDd}{{{b{DLf}}c}BdDd}{{{b{DLh}}c}BdDd}{{{b{DLj}}c}BdDd}{{{b{DLl}}c}BdDd}{{{b{DLn}}c}BdDd}{{{b{DM`}}c}BdDd}{{{b{DMb}}c}BdDd}{{{b{DMd}}c}BdDd}{{{b{DMf}}c}BdDd}{{{b{DMh}}c}BdDd}{{{b{DMj}}c}BdDd}{{{b{DMl}}c}BdDd}{{{b{DMn}}c}BdDd}{{{b{DN`}}c}BdDd}{{{b{DNb}}c}BdDd}{{{b{DNd}}c}BdDd}{{{b{DNf}}c}BdDd}{{{b{DNh}}c}BdDd}{{{b{DNj}}c}BdDd}{{{b{DNl}}c}BdDd}{{{b{DNn}}c}BdDd}{{{b{DO`}}c}BdDd}{{{b{DOb}}c}BdDd}{{{b{DOd}}c}BdDd}{{{b{DOf}}c}BdDd}{{{b{DOh}}c}BdDd}{{{b{DOj}}c}BdDd}{{{b{DOl}}c}BdDd}{{{b{DOn}}c}BdDd}{{{b{E@`}}c}BdDd}{{{b{E@b}}c}BdDd}{{{b{E@d}}c}BdDd}{{{b{E@f}}c}BdDd}{{{b{E@h}}c}BdDd}{{{b{E@j}}c}BdDd}{{{b{E@l}}c}BdDd}{{{b{E@n}}c}BdDd}{{{b{EA`}}c}BdDd}{{{b{EAb}}c}BdDd}{{{b{EAd}}c}BdDd}{{{b{EAf}}c}BdDd}{{{b{EAh}}c}BdDd}{{{b{EAj}}c}BdDd}{{{b{EAl}}c}BdDd}{{{b{EAn}}c}BdDd}{{{b{EB`}}c}BdDd}{{{b{EBb}}c}BdDd}{{{b{EBd}}c}BdDd}{{{b{EBf}}c}BdDd}{{{b{EBh}}c}BdDd}{{{b{EBj}}c}BdDd}{{{b{EBl}}c}BdDd}{{{b{EBn}}c}BdDd}{{{b{EC`}}c}BdDd}{{{b{ECb}}c}BdDd}{{{b{ECd}}c}BdDd}{{{b{ECf}}c}BdDd}{{{b{ECh}}c}BdDd}{{{b{ECj}}c}BdDd}{{{b{ECl}}c}BdDd}{{{b{ECn}}c}BdDd}{{{b{ED`}}c}BdDd}{{{b{EDb}}c}BdDd}{{{b{EDd}}c}BdDd}{{{b{EDf}}c}BdDd}{{{b{EDh}}c}BdDd}{{{b{EDj}}c}BdDd}{{{b{EDl}}c}BdDd}{{{b{EDn}}c}BdDd}{{{b{EE`}}c}BdDd}{{{b{EEb}}c}BdDd}{{{b{EEd}}c}BdDd}{{{b{EEf}}c}BdDd}{{{b{EEh}}c}BdDd}{{{b{EEj}}c}BdDd}{{{b{EEl}}c}BdDd}{{{b{EEn}}c}BdDd}{{{b{EF`}}c}BdDd}{{{b{EFb}}c}BdDd}{{{b{EFd}}c}BdDd}{{{b{EFf}}c}BdDd}{{{b{EFh}}c}BdDd}{{{b{EFj}}c}BdDd}{{{b{EFl}}c}BdDd}{{{b{EFn}}c}BdDd}{{{b{EG`}}c}BdDd}{{{b{EGb}}c}BdDd}{{{b{EGd}}c}BdDd}{{{b{EGf}}c}BdDd}{{{b{EGh}}c}BdDd}{{{b{EGj}}c}BdDd}{{{b{EGl}}c}BdDd}{{{b{EGn}}c}BdDd}{{{b{EH`}}c}BdDd}{{{b{EHb}}c}BdDd}{{{b{EHd}}c}BdDd}{{{b{EHf}}c}BdDd}{{{b{EHh}}c}BdDd}{{{b{EHj}}c}BdDd}{{{b{EHl}}c}BdDd}{{{b{EHn}}c}BdDd}{{{b{EI`}}c}BdDd}{{{b{EIb}}c}BdDd}{{{b{EId}}c}BdDd}{{{b{EIf}}c}BdDd}{{{b{EIh}}c}BdDd}{{{b{EIj}}c}BdDd}{{{b{EIl}}c}BdDd}{{{b{EIn}}c}BdDd}{{{b{EJ`}}c}BdDd}{{{b{EJb}}c}BdDd}{{{b{EJd}}c}BdDd}{{{b{EJf}}c}BdDd}{{{b{EJh}}c}BdDd}{{{b{EJj}}c}BdDd}{{{b{EJl}}c}BdDd}{{{b{EJn}}c}BdDd}{{{b{EK`}}c}BdDd}{{{b{EKb}}c}BdDd}{{{b{EKd}}c}BdDd}{{{b{EKf}}c}BdDd}{{{b{EKh}}c}BdDd}{{{b{EKj}}c}BdDd}{{{b{EKl}}c}BdDd}{{{b{EKn}}c}BdDd}{{{b{EL`}}c}BdDd}{{{b{ELb}}c}BdDd}{{{b{ELd}}c}BdDd}{{{b{ELf}}c}BdDd}{{{b{ELh}}c}BdDd}{{{b{ELj}}c}BdDd}{{{b{ELl}}c}BdDd}{{{b{ELn}}c}BdDd}{{{b{EM`}}c}BdDd}{{{b{EMb}}c}BdDd}{{{b{EMd}}c}BdDd}{{{b{EMf}}c}BdDd}{{{b{EMh}}c}BdDd}{{{b{EMj}}c}BdDd}{{{b{EMl}}c}BdDd}{{{b{EMn}}c}BdDd}{{{b{EN`}}c}BdDd}{{{b{ENb}}c}BdDd}{{{b{ENd}}c}BdDd}{{{b{ENf}}c}BdDd}{{{b{ENh}}c}BdDd}{{{b{ENj}}c}BdDd}{{{b{ENl}}c}BdDd}{{{b{ENn}}c}BdDd}{{{b{EO`}}c}BdDd}{{{b{EOb}}c}BdDd}{{{b{EOd}}c}BdDd}{{{b{EOf}}c}BdDd}{{{b{EOh}}c}BdDd}{{{b{EOj}}c}BdDd}{{{b{EOl}}c}BdDd}{{{b{EOn}}c}BdDd}{{{b{F@`}}c}BdDd}{{{b{F@b}}c}BdDd}{{{b{F@d}}c}BdDd}{{{b{F@f}}c}BdDd}{{{b{F@h}}c}BdDd}{{{b{F@j}}c}BdDd}{{{b{F@l}}c}BdDd}{{{b{F@n}}c}BdDd}{{{b{FA`}}c}BdDd}{{{b{FAb}}c}BdDd}{{{b{FAd}}c}BdDd}{{{b{FAf}}c}BdDd}{{{b{FAh}}c}BdDd}{{{b{FAj}}c}BdDd}{{{b{FAl}}c}BdDd}{{{b{FAn}}c}BdDd}{{{b{FB`}}c}BdDd}{{{b{FBb}}c}BdDd}{{{b{FBd}}c}BdDd}{{{b{FBf}}c}BdDd}{{{b{FBh}}c}BdDd}{{{b{FBj}}c}BdDd}{{{b{FBl}}c}BdDd}{{{b{FBn}}c}BdDd}{{{b{FC`}}c}BdDd}{{{b{DD`}}c}BdDd}{{{b{FCb}}c}BdDd}{{{b{DDb}}c}BdDd}{{{b{FCd}}c}BdDd}{{{b{FCf}}c}BdDd}{{{b{FCh}}c}BdDd}{{{b{FCj}}c}BdDd}{{{b{FCl}}c}BdDd}{{{b{FCn}}c}BdDd}{{{b{FD`}}c}BdDd}{{{b{DDd}}c}BdDd}{{{b{FDb}}c}BdDd}{{{b{FDd}}c}BdDd}{{{b{FDf}}c}BdDd}{{{b{FDh}}c}BdDd}{{{b{FDj}}c}BdDd}{{{b{FDl}}c}BdDd}{{{b{DDf}}c}BdDd}{{{b{FDn}}c}BdDd}{{{b{FE`}}c}BdDd}{{{b{FEb}}c}BdDd}{{{b{FEd}}c}BdDd}{{{b{DDh}}c}BdDd}{{{b{DDj}}c}BdDd}{{{b{DDl}}c}BdDd}{{{b{FEf}}c}BdDd}{{{b{FEh}}c}BdDd}{{{b{FEj}}c}BdDd}{{{b{FEl}}c}BdDd}{{{b{FEn}}c}BdDd}{{{b{FF`}}c}BdDd}{{{b{FFb}}c}BdDd}{{{b{FFd}}c}BdDd}{{{b{FFf}}c}BdDd}{{{b{DDn}}c}BdDd}{{{b{FFh}}c}BdDd}{{{b{FFj}}c}BdDd}{{{b{FFl}}c}BdDd}{{{b{FFn}}c}BdDd}{{{b{FG`}}c}BdDd}{{{b{FGb}}c}BdDd}{{{b{FGd}}c}BdDd}{{{b{DE`}}c}BdDd}{{{b{FGf}}c}BdDd}{{{b{FGh}}c}BdDd}{{{b{FGj}}c}BdDd}{{{b{FGl}}c}BdDd}{{{b{FGn}}c}BdDd}{{{b{FH`}}c}BdDd}{{{b{FHb}}c}BdDd}{{{b{FHd}}c}BdDd}{{{b{FHf}}c}BdDd}{{{b{FHh}}c}BdDd}{{{b{DEb}}c}BdDd}{{{b{FHj}}c}BdDd}{{{b{DEd}}c}BdDd}{{{b{FHl}}c}BdDd}{{{b{FHn}}c}BdDd}{{{b{FI`}}c}BdDd}{{{b{DEf}}c}BdDd}{{{b{FIb}}c}BdDd}{{{b{FId}}c}BdDd}{{{b{FIf}}c}BdDd}{{{b{FIh}}c}BdDd}{{{b{FIj}}c}BdDd}{{{b{FIl}}c}BdDd}{{{b{FIn}}c}BdDd}{{{b{FJ`}}c}BdDd}{{{b{FJb}}c}BdDd}{{{b{FJd}}c}BdDd}{{{b{FJf}}c}BdDd}{{{b{DEh}}c}BdDd}{{{b{FJh}}c}BdDd}{{{b{FJj}}c}BdDd}{{{b{DEj}}c}BdDd}{{{b{FJl}}c}BdDd}{{{b{FJn}}c}BdDd}{{{b{FK`}}c}BdDd}{{{b{FKb}}c}BdDd}{{{b{FKd}}c}BdDd}{{{b{FKf}}c}BdDd}{{{b{DEl}}c}BdDd}{{{b{FKh}}c}BdDd}{{{b{FKj}}c}BdDd}{{{b{FKl}}c}BdDd}{{{b{FKn}}c}BdDd}{{{b{FL`}}c}BdDd}{{{b{FLb}}c}BdDd}{{{b{FLd}}c}BdDd}{{{b{DEn}}c}BdDd}{{{b{FLf}}c}BdDd}{{{b{DF`}}c}BdDd}{{{b{FLh}}c}BdDd}{{{b{FLj}}c}BdDd}{{{b{FLl}}c}BdDd}{{{b{FLn}}c}BdDd}{{{b{DFb}}c}BdDd}{{{b{FM`}}c}BdDd}{{{b{FMb}}c}BdDd}{{{b{FMd}}c}BdDd}{{{b{DFd}}c}BdDd}{{{b{FMf}}c}BdDd}{{{b{DFf}}c}BdDd}{{{b{FMh}}c}BdDd}{{{b{FMj}}c}BdDd}{{{b{FMl}}c}BdDd}{{{b{FMn}}c}BdDd}{{{b{FN`}}c}BdDd}{{{b{FNb}}c}BdDd}{{{b{FNd}}c}BdDd}{{{b{FNf}}c}BdDd}{{{b{FNh}}c}BdDd}{{{b{FNj}}c}BdDd}{{{b{FNl}}c}BdDd}{{{b{FNn}}c}BdDd}{{{b{FO`}}c}BdDd}{{{b{FOb}}c}BdDd}{{{b{FOd}}c}BdDd}{{{b{DFh}}c}BdDd}{{{b{FOf}}c}BdDd}{{{b{FOh}}c}BdDd}{{{b{DFj}}c}BdDd}{{{b{FOj}}c}BdDd}{{{b{FOl}}c}BdDd}{{{b{DFl}}c}BdDd}{{{b{DFn}}c}BdDd}{{{b{FOn}}c}BdDd}{{{b{G@`}}c}BdDd}{{{b{G@b}}c}BdDd}{{{b{G@d}}c}BdDd}{{{b{DG`}}c}BdDd}{{{b{G@f}}c}BdDd}{{{b{G@h}}c}BdDd}{{{b{G@j}}c}BdDd}{{{b{G@l}}c}BdDd}````````{{{b{dDD`}}DD`C`}Aj}{{{b{dDDb}}DDbC`}Aj}{{{b{dDDd}}DDdC`}Aj}{{{b{dDDf}}DDfC`}Aj}{{{b{dDDh}}DDhC`}Aj}{{{b{dDDj}}DDjC`}Aj}{{{b{dDDl}}DDlC`}Aj}{{{b{dDDn}}DDnC`}Aj}{{{b{dDE`}}DE`C`}Aj}{{{b{dDEb}}DEbC`}Aj}{{{b{dDEd}}DEdC`}Aj}{{{b{dDEf}}DEfC`}Aj}{{{b{dDEh}}DEhC`}Aj}{{{b{dDEj}}DEjC`}Aj}{{{b{dDEl}}DElC`}Aj}{{{b{dDEn}}DEnC`}Aj}{{{b{dDF`}}DF`C`}Aj}{{{b{dDFb}}DFbC`}Aj}{{{b{dDFd}}DFdC`}Aj}{{{b{dDFf}}DFfC`}Aj}{{{b{dDFh}}DFhC`}Aj}{{{b{dDFj}}DFjC`}Aj}{{{b{dDFl}}DFlC`}Aj}{{{b{dDFn}}DFnC`}Aj}{{{b{dDG`}}DG`C`}Aj}````````````````````````````````````````{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}{{{b{dDD`}}DD`}Aj}{{{b{dDDb}}DDb}Aj}{{{b{dDDd}}DDd}Aj}{{{b{dDDf}}DDf}Aj}{{{b{dDDh}}DDh}Aj}{{{b{dDDj}}DDj}Aj}{{{b{dDDl}}DDl}Aj}{{{b{dDDn}}DDn}Aj}{{{b{dDE`}}DE`}Aj}{{{b{dDEb}}DEb}Aj}{{{b{dDEd}}DEd}Aj}{{{b{dDEf}}DEf}Aj}{{{b{dDEh}}DEh}Aj}{{{b{dDEj}}DEj}Aj}{{{b{dDEl}}DEl}Aj}{{{b{dDEn}}DEn}Aj}{{{b{dDF`}}DF`}Aj}{{{b{dDFb}}DFb}Aj}{{{b{dDFd}}DFd}Aj}{{{b{dDFf}}DFf}Aj}{{{b{dDFh}}DFh}Aj}{{{b{dDFj}}DFj}Aj}{{{b{dDFl}}DFl}Aj}{{{b{dDFn}}DFn}Aj}{{{b{dDG`}}DG`}Aj}`````{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{FBn}}}{{DBj{DBl}}}}{{{b{FC`}}}{{DBj{DBl}}}}{{{b{FCb}}}{{DBj{DBl}}}}{{{b{FCd}}}{{DBj{DBl}}}}{{{b{FCf}}}{{DBj{DBl}}}}{{{b{FCh}}}{{DBj{DBl}}}}{{{b{FCj}}}{{DBj{DBl}}}}{{{b{FCl}}}{{DBj{DBl}}}}{{{b{FCn}}}{{DBj{DBl}}}}{{{b{FD`}}}{{DBj{DBl}}}}{{{b{FDb}}}{{DBj{DBl}}}}{{{b{FDd}}}{{DBj{DBl}}}}{{{b{FDf}}}{{DBj{DBl}}}}{{{b{FDh}}}{{DBj{DBl}}}}{{{b{FDj}}}{{DBj{DBl}}}}{{{b{FDl}}}{{DBj{DBl}}}}{{{b{FDn}}}{{DBj{DBl}}}}{{{b{FE`}}}{{DBj{DBl}}}}{{{b{FEb}}}{{DBj{DBl}}}}{{{b{FEd}}}{{DBj{DBl}}}}{{{b{FEf}}}{{DBj{DBl}}}}{{{b{FEh}}}{{DBj{DBl}}}}{{{b{FEj}}}{{DBj{DBl}}}}{{{b{FEl}}}{{DBj{DBl}}}}{{{b{FEn}}}{{DBj{DBl}}}}{{{b{FF`}}}{{DBj{DBl}}}}{{{b{FFb}}}{{DBj{DBl}}}}{{{b{FFd}}}{{DBj{DBl}}}}{{{b{FFf}}}{{DBj{DBl}}}}{{{b{FFh}}}{{DBj{DBl}}}}{{{b{FFj}}}{{DBj{DBl}}}}{{{b{FFl}}}{{DBj{DBl}}}}{{{b{FFn}}}{{DBj{DBl}}}}{{{b{FG`}}}{{DBj{DBl}}}}{{{b{FGb}}}{{DBj{DBl}}}}{{{b{FGd}}}{{DBj{DBl}}}}{{{b{FGf}}}{{DBj{DBl}}}}{{{b{FGh}}}{{DBj{DBl}}}}{{{b{FGj}}}{{DBj{DBl}}}}{{{b{FGl}}}{{DBj{DBl}}}}{{{b{FGn}}}{{DBj{DBl}}}}{{{b{FH`}}}{{DBj{DBl}}}}{{{b{FHb}}}{{DBj{DBl}}}}{{{b{FHd}}}{{DBj{DBl}}}}{{{b{FHf}}}{{DBj{DBl}}}}{{{b{FHh}}}{{DBj{DBl}}}}{{{b{FHj}}}{{DBj{DBl}}}}{{{b{FHl}}}{{DBj{DBl}}}}{{{b{FHn}}}{{DBj{DBl}}}}{{{b{FI`}}}{{DBj{DBl}}}}{{{b{FIb}}}{{DBj{DBl}}}}{{{b{FId}}}{{DBj{DBl}}}}{{{b{FIf}}}{{DBj{DBl}}}}{{{b{FIh}}}{{DBj{DBl}}}}{{{b{FIj}}}{{DBj{DBl}}}}{{{b{FIl}}}{{DBj{DBl}}}}{{{b{FIn}}}{{DBj{DBl}}}}{{{b{FJ`}}}{{DBj{DBl}}}}{{{b{FJb}}}{{DBj{DBl}}}}{{{b{FJd}}}{{DBj{DBl}}}}{{{b{FJf}}}{{DBj{DBl}}}}{{{b{FJh}}}{{DBj{DBl}}}}{{{b{FJj}}}{{DBj{DBl}}}}{{{b{FJl}}}{{DBj{DBl}}}}{{{b{FJn}}}{{DBj{DBl}}}}{{{b{FK`}}}{{DBj{DBl}}}}{{{b{FKb}}}{{DBj{DBl}}}}{{{b{FKd}}}{{DBj{DBl}}}}{{{b{FKf}}}{{DBj{DBl}}}}{{{b{FKh}}}{{DBj{DBl}}}}{{{b{FKj}}}{{DBj{DBl}}}}{{{b{FKl}}}{{DBj{DBl}}}}{{{b{FKn}}}{{DBj{DBl}}}}{{{b{FL`}}}{{DBj{DBl}}}}{{{b{FLb}}}{{DBj{DBl}}}}{{{b{FLd}}}{{DBj{DBl}}}}{{{b{FLf}}}{{DBj{DBl}}}}{{{b{FLh}}}{{DBj{DBl}}}}{{{b{FLj}}}{{DBj{DBl}}}}{{{b{FLl}}}{{DBj{DBl}}}}{{{b{FLn}}}{{DBj{DBl}}}}{{{b{FM`}}}{{DBj{DBl}}}}{{{b{FMb}}}{{DBj{DBl}}}}{{{b{FMd}}}{{DBj{DBl}}}}{{{b{FMf}}}{{DBj{DBl}}}}{{{b{FMh}}}{{DBj{DBl}}}}{{{b{FMj}}}{{DBj{DBl}}}}{{{b{FMl}}}{{DBj{DBl}}}}{{{b{FMn}}}{{DBj{DBl}}}}{{{b{FN`}}}{{DBj{DBl}}}}{{{b{FNb}}}{{DBj{DBl}}}}{{{b{FNd}}}{{DBj{DBl}}}}{{{b{FNf}}}{{DBj{DBl}}}}{{{b{FNh}}}{{DBj{DBl}}}}{{{b{FNj}}}{{DBj{DBl}}}}{{{b{FNl}}}{{DBj{DBl}}}}{{{b{FNn}}}{{DBj{DBl}}}}{{{b{FO`}}}{{DBj{DBl}}}}{{{b{FOb}}}{{DBj{DBl}}}}{{{b{FOd}}}{{DBj{DBl}}}}{{{b{FOf}}}{{DBj{DBl}}}}{{{b{FOh}}}{{DBj{DBl}}}}{{{b{FOj}}}{{DBj{DBl}}}}{{{b{FOl}}}{{DBj{DBl}}}}{{{b{FOn}}}{{DBj{DBl}}}}{{{b{G@`}}}{{DBj{DBl}}}}{{{b{G@b}}}{{DBj{DBl}}}}{{{b{G@d}}}{{DBj{DBl}}}}{{{b{G@f}}}{{DBj{DBl}}}}{{{b{G@h}}}{{DBj{DBl}}}}{{{b{G@j}}}{{DBj{DBl}}}}{{{b{G@l}}}{{DBj{DBl}}}}{{{b{c}}}e{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{FBn}}}{{DBj{Hl}}}}{{{b{FC`}}}{{DBj{Hl}}}}{{{b{FCb}}}{{DBj{Hl}}}}{{{b{FCd}}}{{DBj{Hl}}}}{{{b{FCf}}}{{DBj{Hl}}}}{{{b{FCh}}}{{DBj{Hl}}}}{{{b{FCj}}}{{DBj{Hl}}}}{{{b{FCl}}}{{DBj{Hl}}}}{{{b{FCn}}}{{DBj{Hl}}}}{{{b{FD`}}}{{DBj{Hl}}}}{{{b{FDb}}}{{DBj{Hl}}}}{{{b{FDd}}}{{DBj{Hl}}}}{{{b{FDf}}}{{DBj{Hl}}}}{{{b{FDh}}}{{DBj{Hl}}}}{{{b{FDj}}}{{DBj{Hl}}}}{{{b{FDl}}}{{DBj{Hl}}}}{{{b{FDn}}}{{DBj{Hl}}}}{{{b{FE`}}}{{DBj{Hl}}}}{{{b{FEb}}}{{DBj{Hl}}}}{{{b{FEd}}}{{DBj{Hl}}}}{{{b{FEf}}}{{DBj{Hl}}}}{{{b{FEh}}}{{DBj{Hl}}}}{{{b{FEj}}}{{DBj{Hl}}}}{{{b{FEl}}}{{DBj{Hl}}}}{{{b{FEn}}}{{DBj{Hl}}}}{{{b{FF`}}}{{DBj{Hl}}}}{{{b{FFb}}}{{DBj{Hl}}}}{{{b{FFd}}}{{DBj{Hl}}}}{{{b{FFf}}}{{DBj{Hl}}}}{{{b{FFh}}}{{DBj{Hl}}}}{{{b{FFj}}}{{DBj{Hl}}}}{{{b{FFl}}}{{DBj{Hl}}}}{{{b{FFn}}}{{DBj{Hl}}}}{{{b{FG`}}}{{DBj{Hl}}}}{{{b{FGb}}}{{DBj{Hl}}}}{{{b{FGd}}}{{DBj{Hl}}}}{{{b{FGf}}}{{DBj{Hl}}}}{{{b{FGh}}}{{DBj{Hl}}}}{{{b{FGj}}}{{DBj{Hl}}}}{{{b{FGl}}}{{DBj{Hl}}}}{{{b{FGn}}}{{DBj{Hl}}}}{{{b{FH`}}}{{DBj{Hl}}}}{{{b{FHb}}}{{DBj{Hl}}}}{{{b{FHd}}}{{DBj{Hl}}}}{{{b{FHf}}}{{DBj{Hl}}}}{{{b{FHh}}}{{DBj{Hl}}}}{{{b{FHj}}}{{DBj{Hl}}}}{{{b{FHl}}}{{DBj{Hl}}}}{{{b{FHn}}}{{DBj{Hl}}}}{{{b{FI`}}}{{DBj{Hl}}}}{{{b{FIb}}}{{DBj{Hl}}}}{{{b{FId}}}{{DBj{Hl}}}}{{{b{FIf}}}{{DBj{Hl}}}}{{{b{FIh}}}{{DBj{Hl}}}}{{{b{FIj}}}{{DBj{Hl}}}}{{{b{FIl}}}{{DBj{Hl}}}}{{{b{FIn}}}{{DBj{Hl}}}}{{{b{FJ`}}}{{DBj{Hl}}}}{{{b{FJb}}}{{DBj{Hl}}}}{{{b{FJd}}}{{DBj{Hl}}}}{{{b{FJf}}}{{DBj{Hl}}}}{{{b{FJh}}}{{DBj{Hl}}}}{{{b{FJj}}}{{DBj{Hl}}}}{{{b{FJl}}}{{DBj{Hl}}}}{{{b{FJn}}}{{DBj{Hl}}}}{{{b{FK`}}}{{DBj{Hl}}}}{{{b{FKb}}}{{DBj{Hl}}}}{{{b{FKd}}}{{DBj{Hl}}}}{{{b{FKf}}}{{DBj{Hl}}}}{{{b{FKh}}}{{DBj{Hl}}}}{{{b{FKj}}}{{DBj{Hl}}}}{{{b{FKl}}}{{DBj{Hl}}}}{{{b{FKn}}}{{DBj{Hl}}}}{{{b{FL`}}}{{DBj{Hl}}}}{{{b{FLb}}}{{DBj{Hl}}}}{{{b{FLd}}}{{DBj{Hl}}}}{{{b{FLf}}}{{DBj{Hl}}}}{{{b{FLh}}}{{DBj{Hl}}}}{{{b{FLj}}}{{DBj{Hl}}}}{{{b{FLl}}}{{DBj{Hl}}}}{{{b{FLn}}}{{DBj{Hl}}}}{{{b{FM`}}}{{DBj{Hl}}}}{{{b{FMb}}}{{DBj{Hl}}}}{{{b{FMd}}}{{DBj{Hl}}}}{{{b{FMf}}}{{DBj{Hl}}}}{{{b{FMh}}}{{DBj{Hl}}}}{{{b{FMj}}}{{DBj{Hl}}}}{{{b{FMl}}}{{DBj{Hl}}}}{{{b{FMn}}}{{DBj{Hl}}}}{{{b{FN`}}}{{DBj{Hl}}}}{{{b{FNb}}}{{DBj{Hl}}}}{{{b{FNd}}}{{DBj{Hl}}}}{{{b{FNf}}}{{DBj{Hl}}}}{{{b{FNh}}}{{DBj{Hl}}}}{{{b{FNj}}}{{DBj{Hl}}}}{{{b{FNl}}}{{DBj{Hl}}}}{{{b{FNn}}}{{DBj{Hl}}}}{{{b{FO`}}}{{DBj{Hl}}}}{{{b{FOb}}}{{DBj{Hl}}}}{{{b{FOd}}}{{DBj{Hl}}}}{{{b{FOf}}}{{DBj{Hl}}}}{{{b{FOh}}}{{DBj{Hl}}}}{{{b{FOj}}}{{DBj{Hl}}}}{{{b{FOl}}}{{DBj{Hl}}}}{{{b{FOn}}}{{DBj{Hl}}}}{{{b{G@`}}}{{DBj{Hl}}}}{{{b{G@b}}}{{DBj{Hl}}}}{{{b{G@d}}}{{DBj{Hl}}}}{{{b{G@f}}}{{DBj{Hl}}}}{{{b{G@h}}}{{DBj{Hl}}}}{{{b{G@j}}}{{DBj{Hl}}}}{{{b{G@l}}}{{DBj{Hl}}}}{{{b{dDD`}}DD`}Aj}{{{b{dDDb}}DDb}Aj}{{{b{dDDd}}DDd}Aj}{{{b{dDDf}}DDf}Aj}{{{b{dDDh}}DDh}Aj}{{{b{dDDj}}DDj}Aj}{{{b{dDDl}}DDl}Aj}{{{b{dDDn}}DDn}Aj}{{{b{dDE`}}DE`}Aj}{{{b{dDEb}}DEb}Aj}{{{b{dDEd}}DEd}Aj}{{{b{dDEf}}DEf}Aj}{{{b{dDEh}}DEh}Aj}{{{b{dDEj}}DEj}Aj}{{{b{dDEl}}DEl}Aj}{{{b{dDEn}}DEn}Aj}{{{b{dDF`}}DF`}Aj}{{{b{dDFb}}DFb}Aj}{{{b{dDFd}}DFd}Aj}{{{b{dDFf}}DFf}Aj}{{{b{dDFh}}DFh}Aj}{{{b{dDFj}}DFj}Aj}{{{b{dDFl}}DFl}Aj}{{{b{dDFn}}DFn}Aj}{{{b{dDG`}}DG`}Aj}````````{c{{Bd{e}}}{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{{{b{c}}}Dh{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{{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}{{DFnDFn}DFn}{{DG`DG`}DG`}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{{b{Bl}}{b{dCb}}}{{Bd{AjCd}}}}0{{{b{Cl}}{b{dCb}}}{{Bd{AjCd}}}}0{{{b{Db}}{b{dCb}}}{{Bd{AjCd}}}}0{cc{}}{BbCl}{BlCl}22{BbDb}{ce{}{}}00{{{b{c}}}G@n{}}00{c{{Bd{e}}}{}{}}00000{{{b{c}}}Dh{}}00```````````````````````````<<<<<;;;;;{{{b{GA`}}}GA`}{{{b{GAb}}}GAb}{{{b{GAd}}}GAd}{{{b{GAf}}}GAf}{{{b{GAh}}}GAh}{{{b{c}}{b{de}}}Aj{}{}}0000{{}GAb}{{}GAd}{{}GAf}{{}GAh}{Bf{{Bd{GA`{b{Al}}}}}}{{Ab{b{{h{f}}}}}{{Bd{GAbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GAdBl}}}}{c{{Bd{GA`}}}Bn}{c{{Bd{GAb}}}Bn}{c{{Bd{GAd}}}Bn}{c{{Bd{GAf}}}Bn}{c{{Bd{GAh}}}Bn}{{{b{GA`}}{b{GA`}}}C`}{{{b{GAb}}{b{GAb}}}C`}{{{b{GAd}}{b{GAd}}}C`}{{{b{GAf}}{b{GAf}}}C`}{{{b{GAh}}{b{GAh}}}C`}{Bff}{{{b{GA`}}{b{dCb}}}DBh}{{{b{GAb}}{b{dCb}}}DBh}{{{b{GAd}}{b{dCb}}}DBh}{{{b{GAf}}{b{dCb}}}DBh}{{{b{GAh}}{b{dCb}}}DBh}{cc{}}0000{DBl{{DBj{GAf}}}}{DBl{{DBj{GAh}}}}{Hl{{DBj{GAf}}}}{Hl{{DBj{GAh}}}}{ce{}{}}0000`````{{{b{GA`}}}Bf}{{{b{Al}}}{{Bd{Bf{b{Al}}}}}}{{{b{GA`}}}{{b{Al}}}}``````{{AbBf{b{{h{f}}}}}{{Bd{GA`Bl}}}}{{{b{GA`}}Ab{b{d{h{f}}}}}D`}{{{b{GAb}}Ab{b{d{h{f}}}}}D`}{{{b{GAd}}Ab{b{d{h{f}}}}}D`}{{{b{GA`}}c}BdDd}{{{b{GAb}}c}BdDd}{{{b{GAd}}c}BdDd}{{{b{GAf}}c}BdDd}{{{b{GAh}}c}BdDd}`{{{b{GAf}}}{{DBj{DBl}}}}{{{b{GAh}}}{{DBj{DBl}}}}{{{b{c}}}e{}{}}0000{{{b{GAf}}}{{DBj{Hl}}}}{{{b{GAh}}}{{DBj{Hl}}}}{c{{Bd{e}}}{}{}}000000000`````{{{b{c}}}Dh{}}0000`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{d{Ch{c}}}}D`}D`Cn}{cc{}}{ce{}{}}{c{{Ch{c}}}Cn}{{{b{d{Ch{c}}}}D`}{{Bd{{b{{h{f}}}}Cl}}}Cn}0{{{b{d{Ch{c}}}}}{{Bd{fCl}}}Cn}{{{b{d{Ch{c}}}}}{{b{dc}}}Cn}{{{b{d{Ch{c}}}}}{{b{c}}}Cn};;:```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{}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}{{}GDn}{{}GE`}````````````````````````````````````````````````````````````````````````````````````````````````````````{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}{{{b{dGAj}}GAj}Aj}{{{b{dGAl}}GAl}Aj}{{{b{dGAn}}GAn}Aj}{{{b{dGB`}}GB`}Aj}{{{b{dGBb}}GBb}Aj}{{{b{dGBd}}GBd}Aj}{{{b{dGBf}}GBf}Aj}{{{b{dGBh}}GBh}Aj}{{{b{dGBj}}GBj}Aj}{{{b{dGBl}}GBl}Aj}{{{b{dGBn}}GBn}Aj}{{{b{dGC`}}GC`}Aj}{{{b{dGCb}}GCb}Aj}{{{b{dGCd}}GCd}Aj}{{{b{dGCf}}GCf}Aj}{{{b{dGCh}}GCh}Aj}{{{b{dGCj}}GCj}Aj}{{{b{dGCl}}GCl}Aj}{{{b{dGCn}}GCn}Aj}{{{b{dGD`}}GD`}Aj}{{{b{dGDb}}GDb}Aj}{{{b{dGDd}}GDd}Aj}{{{b{dGDf}}GDf}Aj}{{{b{dGDh}}GDh}Aj}{{{b{dGDj}}GDj}Aj}{{{b{dGDl}}GDl}Aj}{{{b{dGDn}}GDn}Aj}{{{b{dGE`}}GE`}Aj}{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}{{{b{dGAj}}GAj}Aj}{{{b{dGAl}}GAl}Aj}{{{b{dGAn}}GAn}Aj}{{{b{dGB`}}GB`}Aj}{{{b{dGBb}}GBb}Aj}{{{b{dGBd}}GBd}Aj}{{{b{dGBf}}GBf}Aj}{{{b{dGBh}}GBh}Aj}{{{b{dGBj}}GBj}Aj}{{{b{dGBl}}GBl}Aj}{{{b{dGBn}}GBn}Aj}{{{b{dGC`}}GC`}Aj}{{{b{dGCb}}GCb}Aj}{{{b{dGCd}}GCd}Aj}{{{b{dGCf}}GCf}Aj}{{{b{dGCh}}GCh}Aj}{{{b{dGCj}}GCj}Aj}{{{b{dGCl}}GCl}Aj}{{{b{dGCn}}GCn}Aj}{{{b{dGD`}}GD`}Aj}{{{b{dGDb}}GDb}Aj}{{{b{dGDd}}GDd}Aj}{{{b{dGDf}}GDf}Aj}{{{b{dGDh}}GDh}Aj}{{{b{dGDj}}GDj}Aj}{{{b{dGDl}}GDl}Aj}{{{b{dGDn}}GDn}Aj}{{{b{dGE`}}GE`}Aj}``{{{b{GAj}}}j}{{{b{GAl}}}j}{{{b{GAn}}}f}{{{b{GB`}}}j}{{{b{GBb}}}j}{{{b{GBd}}}Bf}{{{b{GBf}}}j}{{{b{GBh}}}Hl}{{{b{GBj}}}j}{{{b{GBl}}}Bf}{{{b{GBn}}}j}{{{b{GC`}}}Bf}{{{b{GCb}}}j}{{{b{GCd}}}j}{{{b{GCf}}}Hl}{{{b{GCh}}}Bf}{{{b{GCj}}}j}{{{b{GCl}}}f}{{{b{GCn}}}f}{{{b{GD`}}}j}{{{b{GDb}}}f}{{{b{GDd}}}f}{{{b{GDf}}}Bf}{{{b{GDh}}}f}{{{b{GDj}}}Bf}{{{b{GDl}}}Bf}{{{b{GDn}}}j}{{{b{GE`}}}f}{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}{{{b{dGAj}}GAj}Aj}{{{b{dGAl}}GAl}Aj}{{{b{dGAn}}GAn}Aj}{{{b{dGB`}}GB`}Aj}{{{b{dGBb}}GBb}Aj}{{{b{dGBd}}GBd}Aj}{{{b{dGBf}}GBf}Aj}{{{b{dGBh}}GBh}Aj}{{{b{dGBj}}GBj}Aj}{{{b{dGBl}}GBl}Aj}{{{b{dGBn}}GBn}Aj}{{{b{dGC`}}GC`}Aj}{{{b{dGCb}}GCb}Aj}{{{b{dGCd}}GCd}Aj}{{{b{dGCf}}GCf}Aj}{{{b{dGCh}}GCh}Aj}{{{b{dGCj}}GCj}Aj}{{{b{dGCl}}GCl}Aj}{{{b{dGCn}}GCn}Aj}{{{b{dGD`}}GD`}Aj}{{{b{dGDb}}GDb}Aj}{{{b{dGDd}}GDd}Aj}{{{b{dGDf}}GDf}Aj}{{{b{dGDh}}GDh}Aj}{{{b{dGDj}}GDj}Aj}{{{b{dGDl}}GDl}Aj}{{{b{dGDn}}GDn}Aj}{{{b{dGE`}}GE`}Aj}```````{{{b{c}}}{{b{e}}}{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{dc}}}{{b{de}}}{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000``````````````````````````````````````````````````````````````````````````````````````````{{{b{GEb}}}GEb}{{{b{GEd}}}GEd}{{{b{GEf}}}GEf}{{{b{GEh}}}GEh}{{{b{GEj}}}GEj}{{{b{GEl}}}GEl}{{{b{GEn}}}GEn}{{{b{GF`}}}GF`}{{{b{GFb}}}GFb}{{{b{GFd}}}GFd}{{{b{GFf}}}GFf}{{{b{GFh}}}GFh}{{{b{GFj}}}GFj}{{{b{GFl}}}GFl}{{{b{GFn}}}GFn}{{{b{GG`}}}GG`}{{{b{GGb}}}GGb}{{{b{GGd}}}GGd}{{{b{GGf}}}GGf}{{{b{GGh}}}GGh}{{{b{GGj}}}GGj}{{{b{GGl}}}GGl}{{{b{GGn}}}GGn}{{{b{GH`}}}GH`}{{{b{GHb}}}GHb}{{{b{GHd}}}GHd}{{{b{GHf}}}GHf}{{{b{GHh}}}GHh}{{{b{GHj}}}GHj}{{{b{GHl}}}GHl}{{{b{GHn}}}GHn}{{{b{GI`}}}GI`}{{{b{GIb}}}GIb}{{{b{GId}}}GId}{{{b{GIf}}}GIf}{{{b{GIh}}}GIh}{{{b{GIj}}}GIj}{{{b{GIl}}}GIl}{{{b{GIn}}}GIn}{{{b{GJ`}}}GJ`}{{{b{GJb}}}GJb}{{{b{GJd}}}GJd}{{{b{GJf}}}GJf}{{{b{GJh}}}GJh}{{{b{GJj}}}GJj}{{{b{GJl}}}GJl}{{{b{GJn}}}GJn}{{{b{GK`}}}GK`}{{{b{GKb}}}GKb}{{{b{GKd}}}GKd}{{{b{GKf}}}GKf}{{{b{GKh}}}GKh}{{{b{GKj}}}GKj}{{{b{GKl}}}GKl}{{{b{GKn}}}GKn}{{{b{GL`}}}GL`}{{{b{GLb}}}GLb}{{{b{GLd}}}GLd}{{{b{GLf}}}GLf}{{{b{GLh}}}GLh}{{{b{GLj}}}GLj}{{{b{GLl}}}GLl}{{{b{GLn}}}GLn}{{{b{GM`}}}GM`}{{{b{GMb}}}GMb}{{{b{GMd}}}GMd}{{{b{GMf}}}GMf}{{{b{GMh}}}GMh}{{{b{GMj}}}GMj}{{{b{GMl}}}GMl}{{{b{GMn}}}GMn}{{{b{GN`}}}GN`}{{{b{GNb}}}GNb}{{{b{GNd}}}GNd}{{{b{GNf}}}GNf}{{{b{GNh}}}GNh}{{{b{GNj}}}GNj}{{{b{GNl}}}GNl}{{{b{GNn}}}GNn}{{{b{GO`}}}GO`}{{{b{GOb}}}GOb}{{{b{GOd}}}GOd}{{{b{GOf}}}GOf}{{{b{GOh}}}GOh}{{{b{GOj}}}GOj}{{{b{GOl}}}GOl}{{{b{GOn}}}GOn}{{{b{H@`}}}H@`}{{{b{H@b}}}H@b}{{{b{H@d}}}H@d}{{{b{H@f}}}H@f}{{{b{H@h}}}H@h}{{{b{H@j}}}H@j}{{{b{H@l}}}H@l}{{{b{H@n}}}H@n}{{{b{HA`}}}HA`}{{{b{HAb}}}HAb}{{{b{HAd}}}HAd}{{{b{HAf}}}HAf}{{{b{HAh}}}HAh}{{{b{HAj}}}HAj}{{{b{HAl}}}HAl}{{{b{HAn}}}HAn}{{{b{HB`}}}HB`}{{{b{HBb}}}HBb}{{{b{HBd}}}HBd}{{{b{HBf}}}HBf}{{{b{HBh}}}HBh}{{{b{HBj}}}HBj}{{{b{HBl}}}HBl}{{{b{HBn}}}HBn}{{{b{HC`}}}HC`}{{{b{HCb}}}HCb}{{{b{HCd}}}HCd}{{{b{HCf}}}HCf}{{{b{HCh}}}HCh}{{{b{HCj}}}HCj}{{{b{HCl}}}HCl}{{{b{HCn}}}HCn}{{{b{HD`}}}HD`}{{{b{HDb}}}HDb}{{{b{HDd}}}HDd}{{{b{HDf}}}HDf}{{{b{HDh}}}HDh}{{{b{HDj}}}HDj}{{{b{HDl}}}HDl}{{{b{HDn}}}HDn}{{{b{HE`}}}HE`}{{{b{HEb}}}HEb}{{{b{HEd}}}HEd}{{{b{HEf}}}HEf}{{{b{HEh}}}HEh}{{{b{HEj}}}HEj}{{{b{HEl}}}HEl}{{{b{HEn}}}HEn}{{{b{HF`}}}HF`}{{{b{HFb}}}HFb}{{{b{HFd}}}HFd}{{{b{HFf}}}HFf}{{{b{HFh}}}HFh}{{{b{HFj}}}HFj}{{{b{HFl}}}HFl}{{{b{HFn}}}HFn}{{{b{HG`}}}HG`}{{{b{HGb}}}HGb}{{{b{HGd}}}HGd}{{{b{HGf}}}HGf}{{{b{HGh}}}HGh}{{{b{HGj}}}HGj}{{{b{HGl}}}HGl}{{{b{HGn}}}HGn}{{{b{HH`}}}HH`}{{{b{HHb}}}HHb}{{{b{HHd}}}HHd}{{{b{HHf}}}HHf}{{{b{HHh}}}HHh}{{{b{HHj}}}HHj}{{{b{HHl}}}HHl}{{{b{HHn}}}HHn}{{{b{HI`}}}HI`}{{{b{HIb}}}HIb}{{{b{HId}}}HId}{{{b{HIf}}}HIf}{{{b{HIh}}}HIh}{{{b{HIj}}}HIj}{{{b{HIl}}}HIl}{{{b{HIn}}}HIn}{{{b{HJ`}}}HJ`}{{{b{HJb}}}HJb}{{{b{HJd}}}HJd}{{{b{HJf}}}HJf}{{{b{HJh}}}HJh}{{{b{HJj}}}HJj}{{{b{HJl}}}HJl}{{{b{HJn}}}HJn}{{{b{HK`}}}HK`}{{{b{HKb}}}HKb}{{{b{HKd}}}HKd}{{{b{HKf}}}HKf}{{{b{HKh}}}HKh}{{{b{HKj}}}HKj}{{{b{HKl}}}HKl}{{{b{HKn}}}HKn}{{{b{HL`}}}HL`}{{{b{HLb}}}HLb}{{{b{HLd}}}HLd}{{{b{HLf}}}HLf}{{{b{HLh}}}HLh}{{{b{HLj}}}HLj}{{{b{HLl}}}HLl}{{{b{HLn}}}HLn}{{{b{HM`}}}HM`}{{{b{HMb}}}HMb}{{{b{HMd}}}HMd}{{{b{HMf}}}HMf}{{{b{HMh}}}HMh}{{{b{HMj}}}HMj}{{{b{HMl}}}HMl}{{{b{HMn}}}HMn}{{{b{HN`}}}HN`}{{{b{HNb}}}HNb}{{{b{HNd}}}HNd}{{{b{HNf}}}HNf}{{{b{HNh}}}HNh}{{{b{HNj}}}HNj}{{{b{HNl}}}HNl}{{{b{HNn}}}HNn}{{{b{HO`}}}HO`}{{{b{HOb}}}HOb}{{{b{HOd}}}HOd}{{{b{HOf}}}HOf}{{{b{HOh}}}HOh}{{{b{HOj}}}HOj}{{{b{HOl}}}HOl}{{{b{HOn}}}HOn}{{{b{I@`}}}I@`}{{{b{I@b}}}I@b}{{{b{I@d}}}I@d}{{{b{I@f}}}I@f}{{{b{I@h}}}I@h}{{{b{I@j}}}I@j}{{{b{I@l}}}I@l}{{{b{I@n}}}I@n}{{{b{IA`}}}IA`}{{{b{IAb}}}IAb}{{{b{IAd}}}IAd}{{{b{IAf}}}IAf}{{{b{IAh}}}IAh}{{{b{IAj}}}IAj}{{{b{IAl}}}IAl}{{{b{IAn}}}IAn}{{{b{GAj}}}GAj}{{{b{IB`}}}IB`}{{{b{IBb}}}IBb}{{{b{GAl}}}GAl}{{{b{IBd}}}IBd}{{{b{IBf}}}IBf}{{{b{GAn}}}GAn}{{{b{IBh}}}IBh}{{{b{IBj}}}IBj}{{{b{IBl}}}IBl}{{{b{IBn}}}IBn}{{{b{IC`}}}IC`}{{{b{ICb}}}ICb}{{{b{ICd}}}ICd}{{{b{ICf}}}ICf}{{{b{ICh}}}ICh}{{{b{ICj}}}ICj}{{{b{GB`}}}GB`}{{{b{GBb}}}GBb}{{{b{ICl}}}ICl}{{{b{ICn}}}ICn}{{{b{ID`}}}ID`}{{{b{IDb}}}IDb}{{{b{IDd}}}IDd}{{{b{IDf}}}IDf}{{{b{IDh}}}IDh}{{{b{IDj}}}IDj}{{{b{GBd}}}GBd}{{{b{IDl}}}IDl}{{{b{IDn}}}IDn}{{{b{GBf}}}GBf}{{{b{IE`}}}IE`}{{{b{GBh}}}GBh}{{{b{IEb}}}IEb}{{{b{IEd}}}IEd}{{{b{IEf}}}IEf}{{{b{IEh}}}IEh}{{{b{IEj}}}IEj}{{{b{IEl}}}IEl}{{{b{IEn}}}IEn}{{{b{IF`}}}IF`}{{{b{IFb}}}IFb}{{{b{GBj}}}GBj}{{{b{IFd}}}IFd}{{{b{GBl}}}GBl}{{{b{IFf}}}IFf}{{{b{IFh}}}IFh}{{{b{GBn}}}GBn}{{{b{IFj}}}IFj}{{{b{IFl}}}IFl}{{{b{IFn}}}IFn}{{{b{IG`}}}IG`}{{{b{IGb}}}IGb}{{{b{GC`}}}GC`}{{{b{IGd}}}IGd}{{{b{IGf}}}IGf}{{{b{IGh}}}IGh}{{{b{IGj}}}IGj}{{{b{GCb}}}GCb}{{{b{IGl}}}IGl}{{{b{IGn}}}IGn}{{{b{IH`}}}IH`}{{{b{IHb}}}IHb}{{{b{GCd}}}GCd}{{{b{GCf}}}GCf}{{{b{IHd}}}IHd}{{{b{IHf}}}IHf}{{{b{IHh}}}IHh}{{{b{IHj}}}IHj}{{{b{IHl}}}IHl}{{{b{IHn}}}IHn}{{{b{GCh}}}GCh}{{{b{II`}}}II`}{{{b{IIb}}}IIb}{{{b{IId}}}IId}{{{b{IIf}}}IIf}{{{b{GCj}}}GCj}{{{b{IIh}}}IIh}{{{b{IIj}}}IIj}{{{b{IIl}}}IIl}{{{b{IIn}}}IIn}{{{b{IJ`}}}IJ`}{{{b{IJb}}}IJb}{{{b{GCl}}}GCl}{{{b{IJd}}}IJd}{{{b{GCn}}}GCn}{{{b{IJf}}}IJf}{{{b{IJh}}}IJh}{{{b{IJj}}}IJj}{{{b{IJl}}}IJl}{{{b{GD`}}}GD`}{{{b{IJn}}}IJn}{{{b{GDb}}}GDb}{{{b{IK`}}}IK`}{{{b{IKb}}}IKb}{{{b{IKd}}}IKd}{{{b{IKf}}}IKf}{{{b{IKh}}}IKh}{{{b{IKj}}}IKj}{{{b{GDd}}}GDd}{{{b{GDf}}}GDf}{{{b{IKl}}}IKl}{{{b{IKn}}}IKn}{{{b{IL`}}}IL`}{{{b{ILb}}}ILb}{{{b{ILd}}}ILd}{{{b{ILf}}}ILf}{{{b{GDh}}}GDh}{{{b{ILh}}}ILh}{{{b{ILj}}}ILj}{{{b{GDj}}}GDj}{{{b{GDl}}}GDl}{{{b{ILl}}}ILl}{{{b{GDn}}}GDn}{{{b{ILn}}}ILn}{{{b{IM`}}}IM`}{{{b{IMb}}}IMb}{{{b{IMd}}}IMd}{{{b{IMf}}}IMf}{{{b{IMh}}}IMh}{{{b{IMj}}}IMj}{{{b{IMl}}}IMl}{{{b{IMn}}}IMn}{{{b{IN`}}}IN`}{{{b{INb}}}INb}{{{b{INd}}}INd}{{{b{INf}}}INf}{{{b{INh}}}INh}{{{b{INj}}}INj}{{{b{INl}}}INl}{{{b{INn}}}INn}{{{b{IO`}}}IO`}{{{b{IOb}}}IOb}{{{b{IOd}}}IOd}{{{b{IOf}}}IOf}{{{b{GE`}}}GE`}{{{b{IOh}}}IOh}{{{b{IOj}}}IOj}{{{b{IOl}}}IOl}{{{b{c}}{b{de}}}Aj{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{GAj}}{b{GAj}}}DBb}{{{b{GAl}}{b{GAl}}}DBb}{{{b{GAn}}{b{GAn}}}DBb}{{{b{GB`}}{b{GB`}}}DBb}{{{b{GBb}}{b{GBb}}}DBb}{{{b{GBd}}{b{GBd}}}DBb}{{{b{GBf}}{b{GBf}}}DBb}{{{b{GBh}}{b{GBh}}}DBb}{{{b{GBj}}{b{GBj}}}DBb}{{{b{GBl}}{b{GBl}}}DBb}{{{b{GBn}}{b{GBn}}}DBb}{{{b{GC`}}{b{GC`}}}DBb}{{{b{GCb}}{b{GCb}}}DBb}{{{b{GCd}}{b{GCd}}}DBb}{{{b{GCf}}{b{GCf}}}DBb}{{{b{GCh}}{b{GCh}}}DBb}{{{b{GCj}}{b{GCj}}}DBb}{{{b{GCl}}{b{GCl}}}DBb}{{{b{GCn}}{b{GCn}}}DBb}{{{b{GD`}}{b{GD`}}}DBb}{{{b{GDb}}{b{GDb}}}DBb}{{{b{GDd}}{b{GDd}}}DBb}{{{b{GDf}}{b{GDf}}}DBb}{{{b{GDh}}{b{GDh}}}DBb}{{{b{GDj}}{b{GDj}}}DBb}{{{b{GDl}}{b{GDl}}}DBb}{{{b{GDn}}{b{GDn}}}DBb}{{{b{GE`}}{b{GE`}}}DBb}````````````{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}{GDnGDn}{GE`GE`}``{{{b{GAj}}GAj}C`}{{{b{GAl}}GAl}C`}{{{b{GAn}}GAn}C`}{{{b{GB`}}GB`}C`}{{{b{GBb}}GBb}C`}{{{b{GBd}}GBd}C`}{{{b{GBf}}GBf}C`}{{{b{GBh}}GBh}C`}{{{b{GBj}}GBj}C`}{{{b{GBl}}GBl}C`}{{{b{GBn}}GBn}C`}{{{b{GC`}}GC`}C`}{{{b{GCb}}GCb}C`}{{{b{GCd}}GCd}C`}{{{b{GCf}}GCf}C`}{{{b{GCh}}GCh}C`}{{{b{GCj}}GCj}C`}{{{b{GCl}}GCl}C`}{{{b{GCn}}GCn}C`}{{{b{GD`}}GD`}C`}{{{b{GDb}}GDb}C`}{{{b{GDd}}GDd}C`}{{{b{GDf}}GDf}C`}{{{b{GDh}}GDh}C`}{{{b{GDj}}GDj}C`}{{{b{GDl}}GDl}C`}{{{b{GDn}}GDn}C`}{{{b{GE`}}GE`}C`}````````````````````````````````````````````````````````{{}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}{{}IAh}{{}IAj}{{}IAl}{{}IAn}{{}GAj}{{}IB`}{{}IBb}{{}GAl}{{}IBd}{{}IBf}{{}GAn}{{}IBh}{{}IBj}{{}IBl}{{}IBn}{{}IC`}{{}ICb}{{}ICd}{{}ICf}{{}ICh}{{}ICj}{{}GB`}{{}GBb}{{}ICl}{{}ICn}{{}ID`}{{}IDb}{{}IDd}{{}IDf}{{}IDh}{{}IDj}{{}GBd}{{}IDl}{{}IDn}{{}GBf}{{}IE`}{{}GBh}{{}IEb}{{}IEd}{{}IEf}{{}IEh}{{}IEj}{{}IEl}{{}IEn}{{}IF`}{{}IFb}{{}GBj}{{}IFd}{{}GBl}{{}IFf}{{}IFh}{{}GBn}{{}IFj}{{}IFl}{{}IFn}{{}IG`}{{}IGb}{{}GC`}{{}IGd}{{}IGf}{{}IGh}{{}IGj}{{}GCb}{{}IGl}{{}IGn}{{}IH`}{{}IHb}{{}GCd}{{}GCf}{{}IHd}{{}IHf}{{}IHh}{{}IHj}{{}IHl}{{}IHn}{{}GCh}{{}II`}{{}IIb}{{}IId}{{}IIf}{{}GCj}{{}IIh}{{}IIj}{{}IIl}{{}IIn}{{}IJ`}{{}IJb}{{}GCl}{{}IJd}{{}GCn}{{}IJf}{{}IJh}{{}IJj}{{}IJl}{{}GD`}{{}IJn}{{}GDb}{{}IK`}{{}IKb}{{}IKd}{{}IKf}{{}IKh}{{}IKj}{{}GDd}{{}GDf}{{}IKl}{{}IKn}{{}IL`}{{}ILb}{{}ILd}{{}ILf}{{}GDh}{{}ILh}{{}ILj}{{}GDj}{{}GDl}{{}ILl}{{}GDn}{{}ILn}{{}IM`}{{}IMb}{{}IMd}{{}IMf}{{}IMh}{{}IMj}{{}IMl}{{}IMn}{{}IN`}{{}INb}{{}INd}{{}INf}{{}INh}{{}INj}{{}INl}{{}INn}{{}IO`}{{}IOb}{{}IOd}{{}IOf}{{}GE`}{{}IOh}{{}IOj}{{}IOl}{Bf{{Bd{GEb{b{Al}}}}}}```{{Ab{b{{h{f}}}}}{{Bd{GEdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GEfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GEhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GEjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GElBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GEnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GF`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GFbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GFdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GFfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GFhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GFjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GFlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GFnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GG`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GGbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GGdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GGfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GGhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GGjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GGlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GGnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GH`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GHbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GHdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GHfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GHhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GHjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GHlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GHnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GI`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GIbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GIdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GIfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GIhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GIjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GIlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GInBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJ`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GJnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GK`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GKbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GKdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GKfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GKhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GKjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GKlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GKnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GL`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GLbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GLdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GLfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GLhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GLjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GLlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GLnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GM`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GMbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GMdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GMfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GMhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GMjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GMlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GMnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GN`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GNbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GNdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GNfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GNhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GNjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GNlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GNnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GO`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{GObBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GOdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GOfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GOhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GOjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GOlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{GOnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@bBl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@dBl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@fBl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@hBl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@jBl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@lBl}}}}{{Ab{b{{h{f}}}}}{{Bd{H@nBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HA`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HAbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HAdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HAfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HAhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HAjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HAlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HAnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HB`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HBbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HBdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HBfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HBhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HBjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HBlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HBnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HC`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HCbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HCdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HCfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HChBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HCjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HClBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HCnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HD`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HDbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HDdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HDfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HDhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HDjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HDlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HDnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HE`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HEbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HEdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HEfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HEhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HEjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HElBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HEnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HF`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HFbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HFdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HFfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HFhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HFjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HFlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HFnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HG`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HGbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HGdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HGfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HGhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HGjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HGlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HGnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HH`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HHbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HHdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HHfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HHhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HHjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HHlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HHnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HI`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HIbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HIdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HIfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HIhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HIjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HIlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HInBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJ`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HJnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HK`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HKbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HKdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HKfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HKhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HKjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HKlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HKnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HL`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HLbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HLdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HLfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HLhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HLjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HLlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HLnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HM`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HMbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HMdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HMfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HMhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HMjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HMlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HMnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HN`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HNbBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HNdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HNfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HNhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HNjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HNlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HNnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HO`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{HObBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HOdBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HOfBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HOhBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HOjBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HOlBl}}}}{{Ab{b{{h{f}}}}}{{Bd{HOnBl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@bBl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@dBl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@fBl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@hBl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@jBl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@lBl}}}}{{Ab{b{{h{f}}}}}{{Bd{I@nBl}}}}{{Ab{b{{h{f}}}}}{{Bd{IA`Bl}}}}{{Ab{b{{h{f}}}}}{{Bd{IAbBl}}}}{c{{Bd{GEb}}}Bn}{c{{Bd{GEd}}}Bn}{c{{Bd{GEf}}}Bn}{c{{Bd{GEh}}}Bn}{c{{Bd{GEj}}}Bn}{c{{Bd{GEl}}}Bn}{c{{Bd{GEn}}}Bn}{c{{Bd{GF`}}}Bn}{c{{Bd{GFb}}}Bn}{c{{Bd{GFd}}}Bn}{c{{Bd{GFf}}}Bn}{c{{Bd{GFh}}}Bn}{c{{Bd{GFj}}}Bn}{c{{Bd{GFl}}}Bn}{c{{Bd{GFn}}}Bn}{c{{Bd{GG`}}}Bn}{c{{Bd{GGb}}}Bn}{c{{Bd{GGd}}}Bn}{c{{Bd{GGf}}}Bn}{c{{Bd{GGh}}}Bn}{c{{Bd{GGj}}}Bn}{c{{Bd{GGl}}}Bn}{c{{Bd{GGn}}}Bn}{c{{Bd{GH`}}}Bn}{c{{Bd{GHb}}}Bn}{c{{Bd{GHd}}}Bn}{c{{Bd{GHf}}}Bn}{c{{Bd{GHh}}}Bn}{c{{Bd{GHj}}}Bn}{c{{Bd{GHl}}}Bn}{c{{Bd{GHn}}}Bn}{c{{Bd{GI`}}}Bn}{c{{Bd{GIb}}}Bn}{c{{Bd{GId}}}Bn}{c{{Bd{GIf}}}Bn}{c{{Bd{GIh}}}Bn}{c{{Bd{GIj}}}Bn}{c{{Bd{GIl}}}Bn}{c{{Bd{GIn}}}Bn}{c{{Bd{GJ`}}}Bn}{c{{Bd{GJb}}}Bn}{c{{Bd{GJd}}}Bn}{c{{Bd{GJf}}}Bn}{c{{Bd{GJh}}}Bn}{c{{Bd{GJj}}}Bn}{c{{Bd{GJl}}}Bn}{c{{Bd{GJn}}}Bn}{c{{Bd{GK`}}}Bn}{c{{Bd{GKb}}}Bn}{c{{Bd{GKd}}}Bn}{c{{Bd{GKf}}}Bn}{c{{Bd{GKh}}}Bn}{c{{Bd{GKj}}}Bn}{c{{Bd{GKl}}}Bn}{c{{Bd{GKn}}}Bn}{c{{Bd{GL`}}}Bn}{c{{Bd{GLb}}}Bn}{c{{Bd{GLd}}}Bn}{c{{Bd{GLf}}}Bn}{c{{Bd{GLh}}}Bn}{c{{Bd{GLj}}}Bn}{c{{Bd{GLl}}}Bn}{c{{Bd{GLn}}}Bn}{c{{Bd{GM`}}}Bn}{c{{Bd{GMb}}}Bn}{c{{Bd{GMd}}}Bn}{c{{Bd{GMf}}}Bn}{c{{Bd{GMh}}}Bn}{c{{Bd{GMj}}}Bn}{c{{Bd{GMl}}}Bn}{c{{Bd{GMn}}}Bn}{c{{Bd{GN`}}}Bn}{c{{Bd{GNb}}}Bn}{c{{Bd{GNd}}}Bn}{c{{Bd{GNf}}}Bn}{c{{Bd{GNh}}}Bn}{c{{Bd{GNj}}}Bn}{c{{Bd{GNl}}}Bn}{c{{Bd{GNn}}}Bn}{c{{Bd{GO`}}}Bn}{c{{Bd{GOb}}}Bn}{c{{Bd{GOd}}}Bn}{c{{Bd{GOf}}}Bn}{c{{Bd{GOh}}}Bn}{c{{Bd{GOj}}}Bn}{c{{Bd{GOl}}}Bn}{c{{Bd{GOn}}}Bn}{c{{Bd{H@`}}}Bn}{c{{Bd{H@b}}}Bn}{c{{Bd{H@d}}}Bn}{c{{Bd{H@f}}}Bn}{c{{Bd{H@h}}}Bn}{c{{Bd{H@j}}}Bn}{c{{Bd{H@l}}}Bn}{c{{Bd{H@n}}}Bn}{c{{Bd{HA`}}}Bn}{c{{Bd{HAb}}}Bn}{c{{Bd{HAd}}}Bn}{c{{Bd{HAf}}}Bn}{c{{Bd{HAh}}}Bn}{c{{Bd{HAj}}}Bn}{c{{Bd{HAl}}}Bn}{c{{Bd{HAn}}}Bn}{c{{Bd{HB`}}}Bn}{c{{Bd{HBb}}}Bn}{c{{Bd{HBd}}}Bn}{c{{Bd{HBf}}}Bn}{c{{Bd{HBh}}}Bn}{c{{Bd{HBj}}}Bn}{c{{Bd{HBl}}}Bn}{c{{Bd{HBn}}}Bn}{c{{Bd{HC`}}}Bn}{c{{Bd{HCb}}}Bn}{c{{Bd{HCd}}}Bn}{c{{Bd{HCf}}}Bn}{c{{Bd{HCh}}}Bn}{c{{Bd{HCj}}}Bn}{c{{Bd{HCl}}}Bn}{c{{Bd{HCn}}}Bn}{c{{Bd{HD`}}}Bn}{c{{Bd{HDb}}}Bn}{c{{Bd{HDd}}}Bn}{c{{Bd{HDf}}}Bn}{c{{Bd{HDh}}}Bn}{c{{Bd{HDj}}}Bn}{c{{Bd{HDl}}}Bn}{c{{Bd{HDn}}}Bn}{c{{Bd{HE`}}}Bn}{c{{Bd{HEb}}}Bn}{c{{Bd{HEd}}}Bn}{c{{Bd{HEf}}}Bn}{c{{Bd{HEh}}}Bn}{c{{Bd{HEj}}}Bn}{c{{Bd{HEl}}}Bn}{c{{Bd{HEn}}}Bn}{c{{Bd{HF`}}}Bn}{c{{Bd{HFb}}}Bn}{c{{Bd{HFd}}}Bn}{c{{Bd{HFf}}}Bn}{c{{Bd{HFh}}}Bn}{c{{Bd{HFj}}}Bn}{c{{Bd{HFl}}}Bn}{c{{Bd{HFn}}}Bn}{c{{Bd{HG`}}}Bn}{c{{Bd{HGb}}}Bn}{c{{Bd{HGd}}}Bn}{c{{Bd{HGf}}}Bn}{c{{Bd{HGh}}}Bn}{c{{Bd{HGj}}}Bn}{c{{Bd{HGl}}}Bn}{c{{Bd{HGn}}}Bn}{c{{Bd{HH`}}}Bn}{c{{Bd{HHb}}}Bn}{c{{Bd{HHd}}}Bn}{c{{Bd{HHf}}}Bn}{c{{Bd{HHh}}}Bn}{c{{Bd{HHj}}}Bn}{c{{Bd{HHl}}}Bn}{c{{Bd{HHn}}}Bn}{c{{Bd{HI`}}}Bn}{c{{Bd{HIb}}}Bn}{c{{Bd{HId}}}Bn}{c{{Bd{HIf}}}Bn}{c{{Bd{HIh}}}Bn}{c{{Bd{HIj}}}Bn}{c{{Bd{HIl}}}Bn}{c{{Bd{HIn}}}Bn}{c{{Bd{HJ`}}}Bn}{c{{Bd{HJb}}}Bn}{c{{Bd{HJd}}}Bn}{c{{Bd{HJf}}}Bn}{c{{Bd{HJh}}}Bn}{c{{Bd{HJj}}}Bn}{c{{Bd{HJl}}}Bn}{c{{Bd{HJn}}}Bn}{c{{Bd{HK`}}}Bn}{c{{Bd{HKb}}}Bn}{c{{Bd{HKd}}}Bn}{c{{Bd{HKf}}}Bn}{c{{Bd{HKh}}}Bn}{c{{Bd{HKj}}}Bn}{c{{Bd{HKl}}}Bn}{c{{Bd{HKn}}}Bn}{c{{Bd{HL`}}}Bn}{c{{Bd{HLb}}}Bn}{c{{Bd{HLd}}}Bn}{c{{Bd{HLf}}}Bn}{c{{Bd{HLh}}}Bn}{c{{Bd{HLj}}}Bn}{c{{Bd{HLl}}}Bn}{c{{Bd{HLn}}}Bn}{c{{Bd{HM`}}}Bn}{c{{Bd{HMb}}}Bn}{c{{Bd{HMd}}}Bn}{c{{Bd{HMf}}}Bn}{c{{Bd{HMh}}}Bn}{c{{Bd{HMj}}}Bn}{c{{Bd{HMl}}}Bn}{c{{Bd{HMn}}}Bn}{c{{Bd{HN`}}}Bn}{c{{Bd{HNb}}}Bn}{c{{Bd{HNd}}}Bn}{c{{Bd{HNf}}}Bn}{c{{Bd{HNh}}}Bn}{c{{Bd{HNj}}}Bn}{c{{Bd{HNl}}}Bn}{c{{Bd{HNn}}}Bn}{c{{Bd{HO`}}}Bn}{c{{Bd{HOb}}}Bn}{c{{Bd{HOd}}}Bn}{c{{Bd{HOf}}}Bn}{c{{Bd{HOh}}}Bn}{c{{Bd{HOj}}}Bn}{c{{Bd{HOl}}}Bn}{c{{Bd{HOn}}}Bn}{c{{Bd{I@`}}}Bn}{c{{Bd{I@b}}}Bn}{c{{Bd{I@d}}}Bn}{c{{Bd{I@f}}}Bn}{c{{Bd{I@h}}}Bn}{c{{Bd{I@j}}}Bn}{c{{Bd{I@l}}}Bn}{c{{Bd{I@n}}}Bn}{c{{Bd{IA`}}}Bn}{c{{Bd{IAb}}}Bn}{c{{Bd{IAd}}}Bn}{c{{Bd{IAf}}}Bn}{c{{Bd{IAh}}}Bn}{c{{Bd{IAj}}}Bn}{c{{Bd{IAl}}}Bn}{c{{Bd{IAn}}}Bn}{c{{Bd{GAj}}}Bn}{c{{Bd{IB`}}}Bn}{c{{Bd{IBb}}}Bn}{c{{Bd{GAl}}}Bn}{c{{Bd{IBd}}}Bn}{c{{Bd{IBf}}}Bn}{c{{Bd{GAn}}}Bn}{c{{Bd{IBh}}}Bn}{c{{Bd{IBj}}}Bn}{c{{Bd{IBl}}}Bn}{c{{Bd{IBn}}}Bn}{c{{Bd{IC`}}}Bn}{c{{Bd{ICb}}}Bn}{c{{Bd{ICd}}}Bn}{c{{Bd{ICf}}}Bn}{c{{Bd{ICh}}}Bn}{c{{Bd{ICj}}}Bn}{c{{Bd{GB`}}}Bn}{c{{Bd{GBb}}}Bn}{c{{Bd{ICl}}}Bn}{c{{Bd{ICn}}}Bn}{c{{Bd{ID`}}}Bn}{c{{Bd{IDb}}}Bn}{c{{Bd{IDd}}}Bn}{c{{Bd{IDf}}}Bn}{c{{Bd{IDh}}}Bn}{c{{Bd{IDj}}}Bn}{c{{Bd{GBd}}}Bn}{c{{Bd{IDl}}}Bn}{c{{Bd{IDn}}}Bn}{c{{Bd{GBf}}}Bn}{c{{Bd{IE`}}}Bn}{c{{Bd{GBh}}}Bn}{c{{Bd{IEb}}}Bn}{c{{Bd{IEd}}}Bn}{c{{Bd{IEf}}}Bn}{c{{Bd{IEh}}}Bn}{c{{Bd{IEj}}}Bn}{c{{Bd{IEl}}}Bn}{c{{Bd{IEn}}}Bn}{c{{Bd{IF`}}}Bn}{c{{Bd{IFb}}}Bn}{c{{Bd{GBj}}}Bn}{c{{Bd{IFd}}}Bn}{c{{Bd{GBl}}}Bn}{c{{Bd{IFf}}}Bn}{c{{Bd{IFh}}}Bn}{c{{Bd{GBn}}}Bn}{c{{Bd{IFj}}}Bn}{c{{Bd{IFl}}}Bn}{c{{Bd{IFn}}}Bn}{c{{Bd{IG`}}}Bn}{c{{Bd{IGb}}}Bn}{c{{Bd{GC`}}}Bn}{c{{Bd{IGd}}}Bn}{c{{Bd{IGf}}}Bn}{c{{Bd{IGh}}}Bn}{c{{Bd{IGj}}}Bn}{c{{Bd{GCb}}}Bn}{c{{Bd{IGl}}}Bn}{c{{Bd{IGn}}}Bn}{c{{Bd{IH`}}}Bn}{c{{Bd{IHb}}}Bn}{c{{Bd{GCd}}}Bn}{c{{Bd{GCf}}}Bn}{c{{Bd{IHd}}}Bn}{c{{Bd{IHf}}}Bn}{c{{Bd{IHh}}}Bn}{c{{Bd{IHj}}}Bn}{c{{Bd{IHl}}}Bn}{c{{Bd{IHn}}}Bn}{c{{Bd{GCh}}}Bn}{c{{Bd{II`}}}Bn}{c{{Bd{IIb}}}Bn}{c{{Bd{IId}}}Bn}{c{{Bd{IIf}}}Bn}{c{{Bd{GCj}}}Bn}{c{{Bd{IIh}}}Bn}{c{{Bd{IIj}}}Bn}{c{{Bd{IIl}}}Bn}{c{{Bd{IIn}}}Bn}{c{{Bd{IJ`}}}Bn}{c{{Bd{IJb}}}Bn}{c{{Bd{GCl}}}Bn}{c{{Bd{IJd}}}Bn}{c{{Bd{GCn}}}Bn}{c{{Bd{IJf}}}Bn}{c{{Bd{IJh}}}Bn}{c{{Bd{IJj}}}Bn}{c{{Bd{IJl}}}Bn}{c{{Bd{GD`}}}Bn}{c{{Bd{IJn}}}Bn}{c{{Bd{GDb}}}Bn}{c{{Bd{IK`}}}Bn}{c{{Bd{IKb}}}Bn}{c{{Bd{IKd}}}Bn}{c{{Bd{IKf}}}Bn}{c{{Bd{IKh}}}Bn}{c{{Bd{IKj}}}Bn}{c{{Bd{GDd}}}Bn}{c{{Bd{GDf}}}Bn}{c{{Bd{IKl}}}Bn}{c{{Bd{IKn}}}Bn}{c{{Bd{IL`}}}Bn}{c{{Bd{ILb}}}Bn}{c{{Bd{ILd}}}Bn}{c{{Bd{ILf}}}Bn}{c{{Bd{GDh}}}Bn}{c{{Bd{ILh}}}Bn}{c{{Bd{ILj}}}Bn}{c{{Bd{GDj}}}Bn}{c{{Bd{GDl}}}Bn}{c{{Bd{ILl}}}Bn}{c{{Bd{GDn}}}Bn}{c{{Bd{ILn}}}Bn}{c{{Bd{IM`}}}Bn}{c{{Bd{IMb}}}Bn}{c{{Bd{IMd}}}Bn}{c{{Bd{IMf}}}Bn}{c{{Bd{IMh}}}Bn}{c{{Bd{IMj}}}Bn}{c{{Bd{IMl}}}Bn}{c{{Bd{IMn}}}Bn}{c{{Bd{IN`}}}Bn}{c{{Bd{INb}}}Bn}{c{{Bd{INd}}}Bn}{c{{Bd{INf}}}Bn}{c{{Bd{INh}}}Bn}{c{{Bd{INj}}}Bn}{c{{Bd{INl}}}Bn}{c{{Bd{INn}}}Bn}{c{{Bd{IO`}}}Bn}{c{{Bd{IOb}}}Bn}{c{{Bd{IOd}}}Bn}{c{{Bd{IOf}}}Bn}{c{{Bd{GE`}}}Bn}{c{{Bd{IOh}}}Bn}{c{{Bd{IOj}}}Bn}{c{{Bd{IOl}}}Bn}```````````{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}`````````````````{{}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}{{}GDn}{{}GE`}```````````````{{{b{GEb}}{b{GEb}}}C`}{{{b{GEd}}{b{GEd}}}C`}{{{b{GEf}}{b{GEf}}}C`}{{{b{GEh}}{b{GEh}}}C`}{{{b{GEj}}{b{GEj}}}C`}{{{b{GEl}}{b{GEl}}}C`}{{{b{GEn}}{b{GEn}}}C`}{{{b{GF`}}{b{GF`}}}C`}{{{b{GFb}}{b{GFb}}}C`}{{{b{GFd}}{b{GFd}}}C`}{{{b{GFf}}{b{GFf}}}C`}{{{b{GFh}}{b{GFh}}}C`}{{{b{GFj}}{b{GFj}}}C`}{{{b{GFl}}{b{GFl}}}C`}{{{b{GFn}}{b{GFn}}}C`}{{{b{GG`}}{b{GG`}}}C`}{{{b{GGb}}{b{GGb}}}C`}{{{b{GGd}}{b{GGd}}}C`}{{{b{GGf}}{b{GGf}}}C`}{{{b{GGh}}{b{GGh}}}C`}{{{b{GGj}}{b{GGj}}}C`}{{{b{GGl}}{b{GGl}}}C`}{{{b{GGn}}{b{GGn}}}C`}{{{b{GH`}}{b{GH`}}}C`}{{{b{GHb}}{b{GHb}}}C`}{{{b{GHd}}{b{GHd}}}C`}{{{b{GHf}}{b{GHf}}}C`}{{{b{GHh}}{b{GHh}}}C`}{{{b{GHj}}{b{GHj}}}C`}{{{b{GHl}}{b{GHl}}}C`}{{{b{GHn}}{b{GHn}}}C`}{{{b{GI`}}{b{GI`}}}C`}{{{b{GIb}}{b{GIb}}}C`}{{{b{GId}}{b{GId}}}C`}{{{b{GIf}}{b{GIf}}}C`}{{{b{GIh}}{b{GIh}}}C`}{{{b{GIj}}{b{GIj}}}C`}{{{b{GIl}}{b{GIl}}}C`}{{{b{GIn}}{b{GIn}}}C`}{{{b{GJ`}}{b{GJ`}}}C`}{{{b{GJb}}{b{GJb}}}C`}{{{b{GJd}}{b{GJd}}}C`}{{{b{GJf}}{b{GJf}}}C`}{{{b{GJh}}{b{GJh}}}C`}{{{b{GJj}}{b{GJj}}}C`}{{{b{GJl}}{b{GJl}}}C`}{{{b{GJn}}{b{GJn}}}C`}{{{b{GK`}}{b{GK`}}}C`}{{{b{GKb}}{b{GKb}}}C`}{{{b{GKd}}{b{GKd}}}C`}{{{b{GKf}}{b{GKf}}}C`}{{{b{GKh}}{b{GKh}}}C`}{{{b{GKj}}{b{GKj}}}C`}{{{b{GKl}}{b{GKl}}}C`}{{{b{GKn}}{b{GKn}}}C`}{{{b{GL`}}{b{GL`}}}C`}{{{b{GLb}}{b{GLb}}}C`}{{{b{GLd}}{b{GLd}}}C`}{{{b{GLf}}{b{GLf}}}C`}{{{b{GLh}}{b{GLh}}}C`}{{{b{GLj}}{b{GLj}}}C`}{{{b{GLl}}{b{GLl}}}C`}{{{b{GLn}}{b{GLn}}}C`}{{{b{GM`}}{b{GM`}}}C`}{{{b{GMb}}{b{GMb}}}C`}{{{b{GMd}}{b{GMd}}}C`}{{{b{GMf}}{b{GMf}}}C`}{{{b{GMh}}{b{GMh}}}C`}{{{b{GMj}}{b{GMj}}}C`}{{{b{GMl}}{b{GMl}}}C`}{{{b{GMn}}{b{GMn}}}C`}{{{b{GN`}}{b{GN`}}}C`}{{{b{GNb}}{b{GNb}}}C`}{{{b{GNd}}{b{GNd}}}C`}{{{b{GNf}}{b{GNf}}}C`}{{{b{GNh}}{b{GNh}}}C`}{{{b{GNj}}{b{GNj}}}C`}{{{b{GNl}}{b{GNl}}}C`}{{{b{GNn}}{b{GNn}}}C`}{{{b{GO`}}{b{GO`}}}C`}{{{b{GOb}}{b{GOb}}}C`}{{{b{GOd}}{b{GOd}}}C`}{{{b{GOf}}{b{GOf}}}C`}{{{b{GOh}}{b{GOh}}}C`}{{{b{GOj}}{b{GOj}}}C`}{{{b{GOl}}{b{GOl}}}C`}{{{b{GOn}}{b{GOn}}}C`}{{{b{H@`}}{b{H@`}}}C`}{{{b{H@b}}{b{H@b}}}C`}{{{b{H@d}}{b{H@d}}}C`}{{{b{H@f}}{b{H@f}}}C`}{{{b{H@h}}{b{H@h}}}C`}{{{b{H@j}}{b{H@j}}}C`}{{{b{H@l}}{b{H@l}}}C`}{{{b{H@n}}{b{H@n}}}C`}{{{b{HA`}}{b{HA`}}}C`}{{{b{HAb}}{b{HAb}}}C`}{{{b{HAd}}{b{HAd}}}C`}{{{b{HAf}}{b{HAf}}}C`}{{{b{HAh}}{b{HAh}}}C`}{{{b{HAj}}{b{HAj}}}C`}{{{b{HAl}}{b{HAl}}}C`}{{{b{HAn}}{b{HAn}}}C`}{{{b{HB`}}{b{HB`}}}C`}{{{b{HBb}}{b{HBb}}}C`}{{{b{HBd}}{b{HBd}}}C`}{{{b{HBf}}{b{HBf}}}C`}{{{b{HBh}}{b{HBh}}}C`}{{{b{HBj}}{b{HBj}}}C`}{{{b{HBl}}{b{HBl}}}C`}{{{b{HBn}}{b{HBn}}}C`}{{{b{HC`}}{b{HC`}}}C`}{{{b{HCb}}{b{HCb}}}C`}{{{b{HCd}}{b{HCd}}}C`}{{{b{HCf}}{b{HCf}}}C`}{{{b{HCh}}{b{HCh}}}C`}{{{b{HCj}}{b{HCj}}}C`}{{{b{HCl}}{b{HCl}}}C`}{{{b{HCn}}{b{HCn}}}C`}{{{b{HD`}}{b{HD`}}}C`}{{{b{HDb}}{b{HDb}}}C`}{{{b{HDd}}{b{HDd}}}C`}{{{b{HDf}}{b{HDf}}}C`}{{{b{HDh}}{b{HDh}}}C`}{{{b{HDj}}{b{HDj}}}C`}{{{b{HDl}}{b{HDl}}}C`}{{{b{HDn}}{b{HDn}}}C`}{{{b{HE`}}{b{HE`}}}C`}{{{b{HEb}}{b{HEb}}}C`}{{{b{HEd}}{b{HEd}}}C`}{{{b{HEf}}{b{HEf}}}C`}{{{b{HEh}}{b{HEh}}}C`}{{{b{HEj}}{b{HEj}}}C`}{{{b{HEl}}{b{HEl}}}C`}{{{b{HEn}}{b{HEn}}}C`}{{{b{HF`}}{b{HF`}}}C`}{{{b{HFb}}{b{HFb}}}C`}{{{b{HFd}}{b{HFd}}}C`}{{{b{HFf}}{b{HFf}}}C`}{{{b{HFh}}{b{HFh}}}C`}{{{b{HFj}}{b{HFj}}}C`}{{{b{HFl}}{b{HFl}}}C`}{{{b{HFn}}{b{HFn}}}C`}{{{b{HG`}}{b{HG`}}}C`}{{{b{HGb}}{b{HGb}}}C`}{{{b{HGd}}{b{HGd}}}C`}{{{b{HGf}}{b{HGf}}}C`}{{{b{HGh}}{b{HGh}}}C`}{{{b{HGj}}{b{HGj}}}C`}{{{b{HGl}}{b{HGl}}}C`}{{{b{HGn}}{b{HGn}}}C`}{{{b{HH`}}{b{HH`}}}C`}{{{b{HHb}}{b{HHb}}}C`}{{{b{HHd}}{b{HHd}}}C`}{{{b{HHf}}{b{HHf}}}C`}{{{b{HHh}}{b{HHh}}}C`}{{{b{HHj}}{b{HHj}}}C`}{{{b{HHl}}{b{HHl}}}C`}{{{b{HHn}}{b{HHn}}}C`}{{{b{HI`}}{b{HI`}}}C`}{{{b{HIb}}{b{HIb}}}C`}{{{b{HId}}{b{HId}}}C`}{{{b{HIf}}{b{HIf}}}C`}{{{b{HIh}}{b{HIh}}}C`}{{{b{HIj}}{b{HIj}}}C`}{{{b{HIl}}{b{HIl}}}C`}{{{b{HIn}}{b{HIn}}}C`}{{{b{HJ`}}{b{HJ`}}}C`}{{{b{HJb}}{b{HJb}}}C`}{{{b{HJd}}{b{HJd}}}C`}{{{b{HJf}}{b{HJf}}}C`}{{{b{HJh}}{b{HJh}}}C`}{{{b{HJj}}{b{HJj}}}C`}{{{b{HJl}}{b{HJl}}}C`}{{{b{HJn}}{b{HJn}}}C`}{{{b{HK`}}{b{HK`}}}C`}{{{b{HKb}}{b{HKb}}}C`}{{{b{HKd}}{b{HKd}}}C`}{{{b{HKf}}{b{HKf}}}C`}{{{b{HKh}}{b{HKh}}}C`}{{{b{HKj}}{b{HKj}}}C`}{{{b{HKl}}{b{HKl}}}C`}{{{b{HKn}}{b{HKn}}}C`}{{{b{HL`}}{b{HL`}}}C`}{{{b{HLb}}{b{HLb}}}C`}{{{b{HLd}}{b{HLd}}}C`}{{{b{HLf}}{b{HLf}}}C`}{{{b{HLh}}{b{HLh}}}C`}{{{b{HLj}}{b{HLj}}}C`}{{{b{HLl}}{b{HLl}}}C`}{{{b{HLn}}{b{HLn}}}C`}{{{b{HM`}}{b{HM`}}}C`}{{{b{HMb}}{b{HMb}}}C`}{{{b{HMd}}{b{HMd}}}C`}{{{b{HMf}}{b{HMf}}}C`}{{{b{HMh}}{b{HMh}}}C`}{{{b{HMj}}{b{HMj}}}C`}{{{b{HMl}}{b{HMl}}}C`}{{{b{HMn}}{b{HMn}}}C`}{{{b{HN`}}{b{HN`}}}C`}{{{b{HNb}}{b{HNb}}}C`}{{{b{HNd}}{b{HNd}}}C`}{{{b{HNf}}{b{HNf}}}C`}{{{b{HNh}}{b{HNh}}}C`}{{{b{HNj}}{b{HNj}}}C`}{{{b{HNl}}{b{HNl}}}C`}{{{b{HNn}}{b{HNn}}}C`}{{{b{HO`}}{b{HO`}}}C`}{{{b{HOb}}{b{HOb}}}C`}{{{b{HOd}}{b{HOd}}}C`}{{{b{HOf}}{b{HOf}}}C`}{{{b{HOh}}{b{HOh}}}C`}{{{b{HOj}}{b{HOj}}}C`}{{{b{HOl}}{b{HOl}}}C`}{{{b{HOn}}{b{HOn}}}C`}{{{b{I@`}}{b{I@`}}}C`}{{{b{I@b}}{b{I@b}}}C`}{{{b{I@d}}{b{I@d}}}C`}{{{b{I@f}}{b{I@f}}}C`}{{{b{I@h}}{b{I@h}}}C`}{{{b{I@j}}{b{I@j}}}C`}{{{b{I@l}}{b{I@l}}}C`}{{{b{I@n}}{b{I@n}}}C`}{{{b{IA`}}{b{IA`}}}C`}{{{b{IAb}}{b{IAb}}}C`}{{{b{IAd}}{b{IAd}}}C`}{{{b{IAf}}{b{IAf}}}C`}{{{b{IAh}}{b{IAh}}}C`}{{{b{IAj}}{b{IAj}}}C`}{{{b{IAl}}{b{IAl}}}C`}{{{b{IAn}}{b{IAn}}}C`}{{{b{GAj}}{b{GAj}}}C`}{{{b{IB`}}{b{IB`}}}C`}{{{b{IBb}}{b{IBb}}}C`}{{{b{GAl}}{b{GAl}}}C`}{{{b{IBd}}{b{IBd}}}C`}{{{b{IBf}}{b{IBf}}}C`}{{{b{GAn}}{b{GAn}}}C`}{{{b{IBh}}{b{IBh}}}C`}{{{b{IBj}}{b{IBj}}}C`}{{{b{IBl}}{b{IBl}}}C`}{{{b{IBn}}{b{IBn}}}C`}{{{b{IC`}}{b{IC`}}}C`}{{{b{ICb}}{b{ICb}}}C`}{{{b{ICd}}{b{ICd}}}C`}{{{b{ICf}}{b{ICf}}}C`}{{{b{ICh}}{b{ICh}}}C`}{{{b{ICj}}{b{ICj}}}C`}{{{b{GB`}}{b{GB`}}}C`}{{{b{GBb}}{b{GBb}}}C`}{{{b{ICl}}{b{ICl}}}C`}{{{b{ICn}}{b{ICn}}}C`}{{{b{ID`}}{b{ID`}}}C`}{{{b{IDb}}{b{IDb}}}C`}{{{b{IDd}}{b{IDd}}}C`}{{{b{IDf}}{b{IDf}}}C`}{{{b{IDh}}{b{IDh}}}C`}{{{b{IDj}}{b{IDj}}}C`}{{{b{GBd}}{b{GBd}}}C`}{{{b{IDl}}{b{IDl}}}C`}{{{b{IDn}}{b{IDn}}}C`}{{{b{GBf}}{b{GBf}}}C`}{{{b{IE`}}{b{IE`}}}C`}{{{b{GBh}}{b{GBh}}}C`}{{{b{IEb}}{b{IEb}}}C`}{{{b{IEd}}{b{IEd}}}C`}{{{b{IEf}}{b{IEf}}}C`}{{{b{IEh}}{b{IEh}}}C`}{{{b{IEj}}{b{IEj}}}C`}{{{b{IEl}}{b{IEl}}}C`}{{{b{IEn}}{b{IEn}}}C`}{{{b{IF`}}{b{IF`}}}C`}{{{b{IFb}}{b{IFb}}}C`}{{{b{GBj}}{b{GBj}}}C`}{{{b{IFd}}{b{IFd}}}C`}{{{b{GBl}}{b{GBl}}}C`}{{{b{IFf}}{b{IFf}}}C`}{{{b{IFh}}{b{IFh}}}C`}{{{b{GBn}}{b{GBn}}}C`}{{{b{IFj}}{b{IFj}}}C`}{{{b{IFl}}{b{IFl}}}C`}{{{b{IFn}}{b{IFn}}}C`}{{{b{IG`}}{b{IG`}}}C`}{{{b{IGb}}{b{IGb}}}C`}{{{b{GC`}}{b{GC`}}}C`}{{{b{IGd}}{b{IGd}}}C`}{{{b{IGf}}{b{IGf}}}C`}{{{b{IGh}}{b{IGh}}}C`}{{{b{IGj}}{b{IGj}}}C`}{{{b{GCb}}{b{GCb}}}C`}{{{b{IGl}}{b{IGl}}}C`}{{{b{IGn}}{b{IGn}}}C`}{{{b{IH`}}{b{IH`}}}C`}{{{b{IHb}}{b{IHb}}}C`}{{{b{GCd}}{b{GCd}}}C`}{{{b{GCf}}{b{GCf}}}C`}{{{b{IHd}}{b{IHd}}}C`}{{{b{IHf}}{b{IHf}}}C`}{{{b{IHh}}{b{IHh}}}C`}{{{b{IHj}}{b{IHj}}}C`}{{{b{IHl}}{b{IHl}}}C`}{{{b{IHn}}{b{IHn}}}C`}{{{b{GCh}}{b{GCh}}}C`}{{{b{II`}}{b{II`}}}C`}{{{b{IIb}}{b{IIb}}}C`}{{{b{IId}}{b{IId}}}C`}{{{b{IIf}}{b{IIf}}}C`}{{{b{GCj}}{b{GCj}}}C`}{{{b{IIh}}{b{IIh}}}C`}{{{b{IIj}}{b{IIj}}}C`}{{{b{IIl}}{b{IIl}}}C`}{{{b{IIn}}{b{IIn}}}C`}{{{b{IJ`}}{b{IJ`}}}C`}{{{b{IJb}}{b{IJb}}}C`}{{{b{GCl}}{b{GCl}}}C`}{{{b{IJd}}{b{IJd}}}C`}{{{b{GCn}}{b{GCn}}}C`}{{{b{IJf}}{b{IJf}}}C`}{{{b{IJh}}{b{IJh}}}C`}{{{b{IJj}}{b{IJj}}}C`}{{{b{IJl}}{b{IJl}}}C`}{{{b{GD`}}{b{GD`}}}C`}{{{b{IJn}}{b{IJn}}}C`}{{{b{GDb}}{b{GDb}}}C`}{{{b{IK`}}{b{IK`}}}C`}{{{b{IKb}}{b{IKb}}}C`}{{{b{IKd}}{b{IKd}}}C`}{{{b{IKf}}{b{IKf}}}C`}{{{b{IKh}}{b{IKh}}}C`}{{{b{IKj}}{b{IKj}}}C`}{{{b{GDd}}{b{GDd}}}C`}{{{b{GDf}}{b{GDf}}}C`}{{{b{IKl}}{b{IKl}}}C`}{{{b{IKn}}{b{IKn}}}C`}{{{b{IL`}}{b{IL`}}}C`}{{{b{ILb}}{b{ILb}}}C`}{{{b{ILd}}{b{ILd}}}C`}{{{b{ILf}}{b{ILf}}}C`}{{{b{GDh}}{b{GDh}}}C`}{{{b{ILh}}{b{ILh}}}C`}{{{b{ILj}}{b{ILj}}}C`}{{{b{GDj}}{b{GDj}}}C`}{{{b{GDl}}{b{GDl}}}C`}{{{b{ILl}}{b{ILl}}}C`}{{{b{GDn}}{b{GDn}}}C`}{{{b{ILn}}{b{ILn}}}C`}{{{b{IM`}}{b{IM`}}}C`}{{{b{IMb}}{b{IMb}}}C`}{{{b{IMd}}{b{IMd}}}C`}{{{b{IMf}}{b{IMf}}}C`}{{{b{IMh}}{b{IMh}}}C`}{{{b{IMj}}{b{IMj}}}C`}{{{b{IMl}}{b{IMl}}}C`}{{{b{IMn}}{b{IMn}}}C`}{{{b{IN`}}{b{IN`}}}C`}{{{b{INb}}{b{INb}}}C`}{{{b{INd}}{b{INd}}}C`}{{{b{INf}}{b{INf}}}C`}{{{b{INh}}{b{INh}}}C`}{{{b{INj}}{b{INj}}}C`}{{{b{INl}}{b{INl}}}C`}{{{b{INn}}{b{INn}}}C`}{{{b{IO`}}{b{IO`}}}C`}{{{b{IOb}}{b{IOb}}}C`}{{{b{IOd}}{b{IOd}}}C`}{{{b{IOf}}{b{IOf}}}C`}{{{b{GE`}}{b{GE`}}}C`}{{{b{IOh}}{b{IOh}}}C`}{{{b{IOj}}{b{IOj}}}C`}{{{b{IOl}}{b{IOl}}}C`}`````````````{{{b{dGAj}}c}Aj{{DBf{}{{DBd{GAj}}}}}}{{{b{dGAl}}c}Aj{{DBf{}{{DBd{GAl}}}}}}{{{b{dGAn}}c}Aj{{DBf{}{{DBd{GAn}}}}}}{{{b{dGB`}}c}Aj{{DBf{}{{DBd{GB`}}}}}}{{{b{dGBb}}c}Aj{{DBf{}{{DBd{GBb}}}}}}{{{b{dGBd}}c}Aj{{DBf{}{{DBd{GBd}}}}}}{{{b{dGBf}}c}Aj{{DBf{}{{DBd{GBf}}}}}}{{{b{dGBh}}c}Aj{{DBf{}{{DBd{GBh}}}}}}{{{b{dGBj}}c}Aj{{DBf{}{{DBd{GBj}}}}}}{{{b{dGBl}}c}Aj{{DBf{}{{DBd{GBl}}}}}}{{{b{dGBn}}c}Aj{{DBf{}{{DBd{GBn}}}}}}{{{b{dGC`}}c}Aj{{DBf{}{{DBd{GC`}}}}}}{{{b{dGCb}}c}Aj{{DBf{}{{DBd{GCb}}}}}}{{{b{dGCd}}c}Aj{{DBf{}{{DBd{GCd}}}}}}{{{b{dGCf}}c}Aj{{DBf{}{{DBd{GCf}}}}}}{{{b{dGCh}}c}Aj{{DBf{}{{DBd{GCh}}}}}}{{{b{dGCj}}c}Aj{{DBf{}{{DBd{GCj}}}}}}{{{b{dGCl}}c}Aj{{DBf{}{{DBd{GCl}}}}}}{{{b{dGCn}}c}Aj{{DBf{}{{DBd{GCn}}}}}}{{{b{dGD`}}c}Aj{{DBf{}{{DBd{GD`}}}}}}{{{b{dGDb}}c}Aj{{DBf{}{{DBd{GDb}}}}}}{{{b{dGDd}}c}Aj{{DBf{}{{DBd{GDd}}}}}}{{{b{dGDf}}c}Aj{{DBf{}{{DBd{GDf}}}}}}{{{b{dGDh}}c}Aj{{DBf{}{{DBd{GDh}}}}}}{{{b{dGDj}}c}Aj{{DBf{}{{DBd{GDj}}}}}}{{{b{dGDl}}c}Aj{{DBf{}{{DBd{GDl}}}}}}{{{b{dGDn}}c}Aj{{DBf{}{{DBd{GDn}}}}}}{{{b{dGE`}}c}Aj{{DBf{}{{DBd{GE`}}}}}}{Bff}`````````````````````````````````````````````````{{{b{GEb}}{b{dCb}}}DBh}{{{b{GEd}}{b{dCb}}}DBh}{{{b{GEf}}{b{dCb}}}DBh}{{{b{GEh}}{b{dCb}}}DBh}{{{b{GEj}}{b{dCb}}}DBh}{{{b{GEl}}{b{dCb}}}DBh}{{{b{GEn}}{b{dCb}}}DBh}{{{b{GF`}}{b{dCb}}}DBh}{{{b{GFb}}{b{dCb}}}DBh}{{{b{GFd}}{b{dCb}}}DBh}{{{b{GFf}}{b{dCb}}}DBh}{{{b{GFh}}{b{dCb}}}DBh}{{{b{GFj}}{b{dCb}}}DBh}{{{b{GFl}}{b{dCb}}}DBh}{{{b{GFn}}{b{dCb}}}DBh}{{{b{GG`}}{b{dCb}}}DBh}{{{b{GGb}}{b{dCb}}}DBh}{{{b{GGd}}{b{dCb}}}DBh}{{{b{GGf}}{b{dCb}}}DBh}{{{b{GGh}}{b{dCb}}}DBh}{{{b{GGj}}{b{dCb}}}DBh}{{{b{GGl}}{b{dCb}}}DBh}{{{b{GGn}}{b{dCb}}}DBh}{{{b{GH`}}{b{dCb}}}DBh}{{{b{GHb}}{b{dCb}}}DBh}{{{b{GHd}}{b{dCb}}}DBh}{{{b{GHf}}{b{dCb}}}DBh}{{{b{GHh}}{b{dCb}}}DBh}{{{b{GHj}}{b{dCb}}}DBh}{{{b{GHl}}{b{dCb}}}DBh}{{{b{GHn}}{b{dCb}}}DBh}{{{b{GI`}}{b{dCb}}}DBh}{{{b{GIb}}{b{dCb}}}DBh}{{{b{GId}}{b{dCb}}}DBh}{{{b{GIf}}{b{dCb}}}DBh}{{{b{GIh}}{b{dCb}}}DBh}{{{b{GIj}}{b{dCb}}}DBh}{{{b{GIl}}{b{dCb}}}DBh}{{{b{GIn}}{b{dCb}}}DBh}{{{b{GJ`}}{b{dCb}}}DBh}{{{b{GJb}}{b{dCb}}}DBh}{{{b{GJd}}{b{dCb}}}DBh}{{{b{GJf}}{b{dCb}}}DBh}{{{b{GJh}}{b{dCb}}}DBh}{{{b{GJj}}{b{dCb}}}DBh}{{{b{GJl}}{b{dCb}}}DBh}{{{b{GJn}}{b{dCb}}}DBh}{{{b{GK`}}{b{dCb}}}DBh}{{{b{GKb}}{b{dCb}}}DBh}{{{b{GKd}}{b{dCb}}}DBh}{{{b{GKf}}{b{dCb}}}DBh}{{{b{GKh}}{b{dCb}}}DBh}{{{b{GKj}}{b{dCb}}}DBh}{{{b{GKl}}{b{dCb}}}DBh}{{{b{GKn}}{b{dCb}}}DBh}{{{b{GL`}}{b{dCb}}}DBh}{{{b{GLb}}{b{dCb}}}DBh}{{{b{GLd}}{b{dCb}}}DBh}{{{b{GLf}}{b{dCb}}}DBh}{{{b{GLh}}{b{dCb}}}DBh}{{{b{GLj}}{b{dCb}}}DBh}{{{b{GLl}}{b{dCb}}}DBh}{{{b{GLn}}{b{dCb}}}DBh}{{{b{GM`}}{b{dCb}}}DBh}{{{b{GMb}}{b{dCb}}}DBh}{{{b{GMd}}{b{dCb}}}DBh}{{{b{GMf}}{b{dCb}}}DBh}{{{b{GMh}}{b{dCb}}}DBh}{{{b{GMj}}{b{dCb}}}DBh}{{{b{GMl}}{b{dCb}}}DBh}{{{b{GMn}}{b{dCb}}}DBh}{{{b{GN`}}{b{dCb}}}DBh}{{{b{GNb}}{b{dCb}}}DBh}{{{b{GNd}}{b{dCb}}}DBh}{{{b{GNf}}{b{dCb}}}DBh}{{{b{GNh}}{b{dCb}}}DBh}{{{b{GNj}}{b{dCb}}}DBh}{{{b{GNl}}{b{dCb}}}DBh}{{{b{GNn}}{b{dCb}}}DBh}{{{b{GO`}}{b{dCb}}}DBh}{{{b{GOb}}{b{dCb}}}DBh}{{{b{GOd}}{b{dCb}}}DBh}{{{b{GOf}}{b{dCb}}}DBh}{{{b{GOh}}{b{dCb}}}DBh}{{{b{GOj}}{b{dCb}}}DBh}{{{b{GOl}}{b{dCb}}}DBh}{{{b{GOn}}{b{dCb}}}DBh}{{{b{H@`}}{b{dCb}}}DBh}{{{b{H@b}}{b{dCb}}}DBh}{{{b{H@d}}{b{dCb}}}DBh}{{{b{H@f}}{b{dCb}}}DBh}{{{b{H@h}}{b{dCb}}}DBh}{{{b{H@j}}{b{dCb}}}DBh}{{{b{H@l}}{b{dCb}}}DBh}{{{b{H@n}}{b{dCb}}}DBh}{{{b{HA`}}{b{dCb}}}DBh}{{{b{HAb}}{b{dCb}}}DBh}{{{b{HAd}}{b{dCb}}}DBh}{{{b{HAf}}{b{dCb}}}DBh}{{{b{HAh}}{b{dCb}}}DBh}{{{b{HAj}}{b{dCb}}}DBh}{{{b{HAl}}{b{dCb}}}DBh}{{{b{HAn}}{b{dCb}}}DBh}{{{b{HB`}}{b{dCb}}}DBh}{{{b{HBb}}{b{dCb}}}DBh}{{{b{HBd}}{b{dCb}}}DBh}{{{b{HBf}}{b{dCb}}}DBh}{{{b{HBh}}{b{dCb}}}DBh}{{{b{HBj}}{b{dCb}}}DBh}{{{b{HBl}}{b{dCb}}}DBh}{{{b{HBn}}{b{dCb}}}DBh}{{{b{HC`}}{b{dCb}}}DBh}{{{b{HCb}}{b{dCb}}}DBh}{{{b{HCd}}{b{dCb}}}DBh}{{{b{HCf}}{b{dCb}}}DBh}{{{b{HCh}}{b{dCb}}}DBh}{{{b{HCj}}{b{dCb}}}DBh}{{{b{HCl}}{b{dCb}}}DBh}{{{b{HCn}}{b{dCb}}}DBh}{{{b{HD`}}{b{dCb}}}DBh}{{{b{HDb}}{b{dCb}}}DBh}{{{b{HDd}}{b{dCb}}}DBh}{{{b{HDf}}{b{dCb}}}DBh}{{{b{HDh}}{b{dCb}}}DBh}{{{b{HDj}}{b{dCb}}}DBh}{{{b{HDl}}{b{dCb}}}DBh}{{{b{HDn}}{b{dCb}}}DBh}{{{b{HE`}}{b{dCb}}}DBh}{{{b{HEb}}{b{dCb}}}DBh}{{{b{HEd}}{b{dCb}}}DBh}{{{b{HEf}}{b{dCb}}}DBh}{{{b{HEh}}{b{dCb}}}DBh}{{{b{HEj}}{b{dCb}}}DBh}{{{b{HEl}}{b{dCb}}}DBh}{{{b{HEn}}{b{dCb}}}DBh}{{{b{HF`}}{b{dCb}}}DBh}{{{b{HFb}}{b{dCb}}}DBh}{{{b{HFd}}{b{dCb}}}DBh}{{{b{HFf}}{b{dCb}}}DBh}{{{b{HFh}}{b{dCb}}}DBh}{{{b{HFj}}{b{dCb}}}DBh}{{{b{HFl}}{b{dCb}}}DBh}{{{b{HFn}}{b{dCb}}}DBh}{{{b{HG`}}{b{dCb}}}DBh}{{{b{HGb}}{b{dCb}}}DBh}{{{b{HGd}}{b{dCb}}}DBh}{{{b{HGf}}{b{dCb}}}DBh}{{{b{HGh}}{b{dCb}}}DBh}{{{b{HGj}}{b{dCb}}}DBh}{{{b{HGl}}{b{dCb}}}DBh}{{{b{HGn}}{b{dCb}}}DBh}{{{b{HH`}}{b{dCb}}}DBh}{{{b{HHb}}{b{dCb}}}DBh}{{{b{HHd}}{b{dCb}}}DBh}{{{b{HHf}}{b{dCb}}}DBh}{{{b{HHh}}{b{dCb}}}DBh}{{{b{HHj}}{b{dCb}}}DBh}{{{b{HHl}}{b{dCb}}}DBh}{{{b{HHn}}{b{dCb}}}DBh}{{{b{HI`}}{b{dCb}}}DBh}{{{b{HIb}}{b{dCb}}}DBh}{{{b{HId}}{b{dCb}}}DBh}{{{b{HIf}}{b{dCb}}}DBh}{{{b{HIh}}{b{dCb}}}DBh}{{{b{HIj}}{b{dCb}}}DBh}{{{b{HIl}}{b{dCb}}}DBh}{{{b{HIn}}{b{dCb}}}DBh}{{{b{HJ`}}{b{dCb}}}DBh}{{{b{HJb}}{b{dCb}}}DBh}{{{b{HJd}}{b{dCb}}}DBh}{{{b{HJf}}{b{dCb}}}DBh}{{{b{HJh}}{b{dCb}}}DBh}{{{b{HJj}}{b{dCb}}}DBh}{{{b{HJl}}{b{dCb}}}DBh}{{{b{HJn}}{b{dCb}}}DBh}{{{b{HK`}}{b{dCb}}}DBh}{{{b{HKb}}{b{dCb}}}DBh}{{{b{HKd}}{b{dCb}}}DBh}{{{b{HKf}}{b{dCb}}}DBh}{{{b{HKh}}{b{dCb}}}DBh}{{{b{HKj}}{b{dCb}}}DBh}{{{b{HKl}}{b{dCb}}}DBh}{{{b{HKn}}{b{dCb}}}DBh}{{{b{HL`}}{b{dCb}}}DBh}{{{b{HLb}}{b{dCb}}}DBh}{{{b{HLd}}{b{dCb}}}DBh}{{{b{HLf}}{b{dCb}}}DBh}{{{b{HLh}}{b{dCb}}}DBh}{{{b{HLj}}{b{dCb}}}DBh}{{{b{HLl}}{b{dCb}}}DBh}{{{b{HLn}}{b{dCb}}}DBh}{{{b{HM`}}{b{dCb}}}DBh}{{{b{HMb}}{b{dCb}}}DBh}{{{b{HMd}}{b{dCb}}}DBh}{{{b{HMf}}{b{dCb}}}DBh}{{{b{HMh}}{b{dCb}}}DBh}{{{b{HMj}}{b{dCb}}}DBh}{{{b{HMl}}{b{dCb}}}DBh}{{{b{HMn}}{b{dCb}}}DBh}{{{b{HN`}}{b{dCb}}}DBh}{{{b{HNb}}{b{dCb}}}DBh}{{{b{HNd}}{b{dCb}}}DBh}{{{b{HNf}}{b{dCb}}}DBh}{{{b{HNh}}{b{dCb}}}DBh}{{{b{HNj}}{b{dCb}}}DBh}{{{b{HNl}}{b{dCb}}}DBh}{{{b{HNn}}{b{dCb}}}DBh}{{{b{HO`}}{b{dCb}}}DBh}{{{b{HOb}}{b{dCb}}}DBh}{{{b{HOd}}{b{dCb}}}DBh}{{{b{HOf}}{b{dCb}}}DBh}{{{b{HOh}}{b{dCb}}}DBh}{{{b{HOj}}{b{dCb}}}DBh}{{{b{HOl}}{b{dCb}}}DBh}{{{b{HOn}}{b{dCb}}}DBh}{{{b{I@`}}{b{dCb}}}DBh}{{{b{I@b}}{b{dCb}}}DBh}{{{b{I@d}}{b{dCb}}}DBh}{{{b{I@f}}{b{dCb}}}DBh}{{{b{I@h}}{b{dCb}}}DBh}{{{b{I@j}}{b{dCb}}}DBh}{{{b{I@l}}{b{dCb}}}DBh}{{{b{I@n}}{b{dCb}}}DBh}{{{b{IA`}}{b{dCb}}}DBh}{{{b{IAb}}{b{dCb}}}DBh}{{{b{IAd}}{b{dCb}}}DBh}{{{b{IAf}}{b{dCb}}}DBh}{{{b{IAh}}{b{dCb}}}DBh}{{{b{IAj}}{b{dCb}}}DBh}{{{b{IAl}}{b{dCb}}}DBh}{{{b{IAn}}{b{dCb}}}DBh}{{{b{GAj}}{b{dCb}}}DBh}0000{{{b{IB`}}{b{dCb}}}DBh}{{{b{IBb}}{b{dCb}}}DBh}{{{b{GAl}}{b{dCb}}}DBh}0000{{{b{IBd}}{b{dCb}}}DBh}{{{b{IBf}}{b{dCb}}}DBh}{{{b{GAn}}{b{dCb}}}DBh}0000{{{b{IBh}}{b{dCb}}}DBh}{{{b{IBj}}{b{dCb}}}DBh}{{{b{IBl}}{b{dCb}}}DBh}{{{b{IBn}}{b{dCb}}}DBh}{{{b{IC`}}{b{dCb}}}DBh}{{{b{ICb}}{b{dCb}}}DBh}{{{b{ICd}}{b{dCb}}}DBh}{{{b{ICf}}{b{dCb}}}DBh}{{{b{ICh}}{b{dCb}}}DBh}{{{b{ICj}}{b{dCb}}}DBh}{{{b{GB`}}{b{dCb}}}DBh}0000{{{b{GBb}}{b{dCb}}}DBh}0000{{{b{ICl}}{b{dCb}}}DBh}{{{b{ICn}}{b{dCb}}}DBh}{{{b{ID`}}{b{dCb}}}DBh}{{{b{IDb}}{b{dCb}}}DBh}{{{b{IDd}}{b{dCb}}}DBh}{{{b{IDf}}{b{dCb}}}DBh}{{{b{IDh}}{b{dCb}}}DBh}{{{b{IDj}}{b{dCb}}}DBh}{{{b{GBd}}{b{dCb}}}DBh}0000{{{b{IDl}}{b{dCb}}}DBh}{{{b{IDn}}{b{dCb}}}DBh}{{{b{GBf}}{b{dCb}}}DBh}0000{{{b{IE`}}{b{dCb}}}DBh}{{{b{GBh}}{b{dCb}}}DBh}0000{{{b{IEb}}{b{dCb}}}DBh}{{{b{IEd}}{b{dCb}}}DBh}{{{b{IEf}}{b{dCb}}}DBh}{{{b{IEh}}{b{dCb}}}DBh}{{{b{IEj}}{b{dCb}}}DBh}{{{b{IEl}}{b{dCb}}}DBh}{{{b{IEn}}{b{dCb}}}DBh}{{{b{IF`}}{b{dCb}}}DBh}{{{b{IFb}}{b{dCb}}}DBh}{{{b{GBj}}{b{dCb}}}DBh}0000{{{b{IFd}}{b{dCb}}}DBh}{{{b{GBl}}{b{dCb}}}DBh}0000{{{b{IFf}}{b{dCb}}}DBh}{{{b{IFh}}{b{dCb}}}DBh}{{{b{GBn}}{b{dCb}}}DBh}0000{{{b{IFj}}{b{dCb}}}DBh}{{{b{IFl}}{b{dCb}}}DBh}{{{b{IFn}}{b{dCb}}}DBh}{{{b{IG`}}{b{dCb}}}DBh}{{{b{IGb}}{b{dCb}}}DBh}{{{b{GC`}}{b{dCb}}}DBh}0000{{{b{IGd}}{b{dCb}}}DBh}{{{b{IGf}}{b{dCb}}}DBh}{{{b{IGh}}{b{dCb}}}DBh}{{{b{IGj}}{b{dCb}}}DBh}{{{b{GCb}}{b{dCb}}}DBh}0000{{{b{IGl}}{b{dCb}}}DBh}{{{b{IGn}}{b{dCb}}}DBh}{{{b{IH`}}{b{dCb}}}DBh}{{{b{IHb}}{b{dCb}}}DBh}{{{b{GCd}}{b{dCb}}}DBh}0000{{{b{GCf}}{b{dCb}}}DBh}0000{{{b{IHd}}{b{dCb}}}DBh}{{{b{IHf}}{b{dCb}}}DBh}{{{b{IHh}}{b{dCb}}}DBh}{{{b{IHj}}{b{dCb}}}DBh}{{{b{IHl}}{b{dCb}}}DBh}{{{b{IHn}}{b{dCb}}}DBh}{{{b{GCh}}{b{dCb}}}DBh}0000{{{b{II`}}{b{dCb}}}DBh}{{{b{IIb}}{b{dCb}}}DBh}{{{b{IId}}{b{dCb}}}DBh}{{{b{IIf}}{b{dCb}}}DBh}{{{b{GCj}}{b{dCb}}}DBh}0000{{{b{IIh}}{b{dCb}}}DBh}{{{b{IIj}}{b{dCb}}}DBh}{{{b{IIl}}{b{dCb}}}DBh}{{{b{IIn}}{b{dCb}}}DBh}{{{b{IJ`}}{b{dCb}}}DBh}{{{b{IJb}}{b{dCb}}}DBh}{{{b{GCl}}{b{dCb}}}DBh}0000{{{b{IJd}}{b{dCb}}}DBh}{{{b{GCn}}{b{dCb}}}DBh}0000{{{b{IJf}}{b{dCb}}}DBh}{{{b{IJh}}{b{dCb}}}DBh}{{{b{IJj}}{b{dCb}}}DBh}{{{b{IJl}}{b{dCb}}}DBh}{{{b{GD`}}{b{dCb}}}DBh}0000{{{b{IJn}}{b{dCb}}}DBh}{{{b{GDb}}{b{dCb}}}DBh}0000{{{b{IK`}}{b{dCb}}}DBh}{{{b{IKb}}{b{dCb}}}DBh}{{{b{IKd}}{b{dCb}}}DBh}{{{b{IKf}}{b{dCb}}}DBh}{{{b{IKh}}{b{dCb}}}DBh}{{{b{IKj}}{b{dCb}}}DBh}{{{b{GDd}}{b{dCb}}}DBh}0000{{{b{GDf}}{b{dCb}}}DBh}0000{{{b{IKl}}{b{dCb}}}DBh}{{{b{IKn}}{b{dCb}}}DBh}{{{b{IL`}}{b{dCb}}}DBh}{{{b{ILb}}{b{dCb}}}DBh}{{{b{ILd}}{b{dCb}}}DBh}{{{b{ILf}}{b{dCb}}}DBh}{{{b{GDh}}{b{dCb}}}DBh}0000{{{b{ILh}}{b{dCb}}}DBh}{{{b{ILj}}{b{dCb}}}DBh}{{{b{GDj}}{b{dCb}}}DBh}0000{{{b{GDl}}{b{dCb}}}DBh}0000{{{b{ILl}}{b{dCb}}}DBh}{{{b{GDn}}{b{dCb}}}DBh}0000{{{b{ILn}}{b{dCb}}}DBh}{{{b{IM`}}{b{dCb}}}DBh}{{{b{IMb}}{b{dCb}}}DBh}{{{b{IMd}}{b{dCb}}}DBh}{{{b{IMf}}{b{dCb}}}DBh}{{{b{IMh}}{b{dCb}}}DBh}{{{b{IMj}}{b{dCb}}}DBh}{{{b{IMl}}{b{dCb}}}DBh}{{{b{IMn}}{b{dCb}}}DBh}{{{b{IN`}}{b{dCb}}}DBh}{{{b{INb}}{b{dCb}}}DBh}{{{b{INd}}{b{dCb}}}DBh}{{{b{INf}}{b{dCb}}}DBh}{{{b{INh}}{b{dCb}}}DBh}{{{b{INj}}{b{dCb}}}DBh}{{{b{INl}}{b{dCb}}}DBh}{{{b{INn}}{b{dCb}}}DBh}{{{b{IO`}}{b{dCb}}}DBh}{{{b{IOb}}{b{dCb}}}DBh}{{{b{IOd}}{b{dCb}}}DBh}{{{b{IOf}}{b{dCb}}}DBh}{{{b{GE`}}{b{dCb}}}DBh}0000{{{b{IOh}}{b{dCb}}}DBh}{{{b{IOj}}{b{dCb}}}DBh}{{{b{IOl}}{b{dCb}}}DBh}``````````````{cc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{j{{DBj{GAj}}}}{j{{DBj{GAl}}}}{f{{DBj{GAn}}}}{j{{DBj{GB`}}}}{j{{DBj{GBb}}}}{Bf{{DBj{GBd}}}}{j{{DBj{GBf}}}}{Hl{{DBj{GBh}}}}{j{{DBj{GBj}}}}{Bf{{DBj{GBl}}}}{j{{DBj{GBn}}}}{Bf{{DBj{GC`}}}}{j{{DBj{GCb}}}}{j{{DBj{GCd}}}}{Hl{{DBj{GCf}}}}{Bf{{DBj{GCh}}}}{j{{DBj{GCj}}}}{f{{DBj{GCl}}}}{f{{DBj{GCn}}}}{j{{DBj{GD`}}}}{f{{DBj{GDb}}}}{f{{DBj{GDd}}}}{Bf{{DBj{GDf}}}}{f{{DBj{GDh}}}}{Bf{{DBj{GDj}}}}{Bf{{DBj{GDl}}}}{j{{DBj{GDn}}}}{f{{DBj{GE`}}}}{jGAj}{jGAl}{fGAn}{jGB`}{jGBb}{BfGBd}{jGBf}{HlGBh}{jGBj}{BfGBl}{jGBn}{BfGC`}{jGCb}{jGCd}{HlGCf}{BfGCh}{jGCj}{fGCl}{fGCn}{jGD`}{fGDb}{fGDd}{BfGDf}{fGDh}{BfGDj}{BfGDl}{jGDn}{fGE`}{jGAj}{jGAl}{fGAn}{jGB`}{jGBb}{BfGBd}{jGBf}{HlGBh}{jGBj}{BfGBl}{jGBn}{BfGC`}{jGCb}{jGCd}{HlGCf}{BfGCh}{jGCj}{fGCl}{fGCn}{jGD`}{fGDb}{fGDd}{BfGDf}{fGDh}{BfGDj}{BfGDl}{jGDn}{fGE`}{DBl{{DBj{IAd}}}}{DBl{{DBj{IAf}}}}{DBl{{DBj{IAh}}}}{DBl{{DBj{IAj}}}}{DBl{{DBj{IAl}}}}{DBl{{DBj{IAn}}}}{DBl{{DBj{IB`}}}}{DBl{{DBj{IBb}}}}{DBl{{DBj{IBd}}}}{DBl{{DBj{IBf}}}}{DBl{{DBj{IBh}}}}{DBl{{DBj{IBj}}}}{DBl{{DBj{IBl}}}}{DBl{{DBj{IBn}}}}{DBl{{DBj{IC`}}}}{DBl{{DBj{ICb}}}}{DBl{{DBj{ICd}}}}{DBl{{DBj{ICf}}}}{DBl{{DBj{ICh}}}}{DBl{{DBj{ICj}}}}{DBl{{DBj{ICl}}}}{DBl{{DBj{ICn}}}}{DBl{{DBj{ID`}}}}{DBl{{DBj{IDb}}}}{DBl{{DBj{IDd}}}}{DBl{{DBj{IDf}}}}{DBl{{DBj{IDh}}}}{DBl{{DBj{IDj}}}}{DBl{{DBj{IDl}}}}{DBl{{DBj{IDn}}}}{DBl{{DBj{IE`}}}}{DBl{{DBj{IEb}}}}{DBl{{DBj{IEd}}}}{DBl{{DBj{IEf}}}}{DBl{{DBj{IEh}}}}{DBl{{DBj{IEj}}}}{DBl{{DBj{IEl}}}}{DBl{{DBj{IEn}}}}{DBl{{DBj{IF`}}}}{DBl{{DBj{IFb}}}}{DBl{{DBj{IFd}}}}{DBl{{DBj{IFf}}}}{DBl{{DBj{IFh}}}}{DBl{{DBj{IFj}}}}{DBl{{DBj{IFl}}}}{DBl{{DBj{IFn}}}}{DBl{{DBj{IG`}}}}{DBl{{DBj{IGb}}}}{DBl{{DBj{IGd}}}}{DBl{{DBj{IGf}}}}{DBl{{DBj{IGh}}}}{DBl{{DBj{IGj}}}}{DBl{{DBj{IGl}}}}{DBl{{DBj{IGn}}}}{DBl{{DBj{IH`}}}}{DBl{{DBj{IHb}}}}{DBl{{DBj{IHd}}}}{DBl{{DBj{IHf}}}}{DBl{{DBj{IHh}}}}{DBl{{DBj{IHj}}}}{DBl{{DBj{IHl}}}}{DBl{{DBj{IHn}}}}{DBl{{DBj{II`}}}}{DBl{{DBj{IIb}}}}{DBl{{DBj{IId}}}}{DBl{{DBj{IIf}}}}{DBl{{DBj{IIh}}}}{DBl{{DBj{IIj}}}}{DBl{{DBj{IIl}}}}{DBl{{DBj{IIn}}}}{DBl{{DBj{IJ`}}}}{DBl{{DBj{IJb}}}}{DBl{{DBj{IJd}}}}{DBl{{DBj{IJf}}}}{DBl{{DBj{IJh}}}}{DBl{{DBj{IJj}}}}{DBl{{DBj{IJl}}}}{DBl{{DBj{IJn}}}}{DBl{{DBj{IK`}}}}{DBl{{DBj{IKb}}}}{DBl{{DBj{IKd}}}}{DBl{{DBj{IKf}}}}{DBl{{DBj{IKh}}}}{DBl{{DBj{IKj}}}}{DBl{{DBj{IKl}}}}{DBl{{DBj{IKn}}}}{DBl{{DBj{IL`}}}}{DBl{{DBj{ILb}}}}{DBl{{DBj{ILd}}}}{DBl{{DBj{ILf}}}}{DBl{{DBj{ILh}}}}{DBl{{DBj{ILj}}}}{DBl{{DBj{ILl}}}}{DBl{{DBj{ILn}}}}{DBl{{DBj{IM`}}}}{DBl{{DBj{IMb}}}}{DBl{{DBj{IMd}}}}{DBl{{DBj{IMf}}}}{DBl{{DBj{IMh}}}}{DBl{{DBj{IMj}}}}{DBl{{DBj{IMl}}}}{DBl{{DBj{IMn}}}}{DBl{{DBj{IN`}}}}{DBl{{DBj{INb}}}}{DBl{{DBj{INd}}}}{DBl{{DBj{INf}}}}{DBl{{DBj{INh}}}}{DBl{{DBj{INj}}}}{DBl{{DBj{INl}}}}{DBl{{DBj{INn}}}}{DBl{{DBj{IO`}}}}{DBl{{DBj{IOb}}}}{DBl{{DBj{IOd}}}}{DBl{{DBj{IOf}}}}{DBl{{DBj{IOh}}}}{DBl{{DBj{IOj}}}}{DBl{{DBj{IOl}}}}{cGAj{{DBf{}{{DBd{GAj}}}}}}{cGAl{{DBf{}{{DBd{GAl}}}}}}{cGAn{{DBf{}{{DBd{GAn}}}}}}{cGB`{{DBf{}{{DBd{GB`}}}}}}{cGBb{{DBf{}{{DBd{GBb}}}}}}{cGBd{{DBf{}{{DBd{GBd}}}}}}{cGBf{{DBf{}{{DBd{GBf}}}}}}{cGBh{{DBf{}{{DBd{GBh}}}}}}{cGBj{{DBf{}{{DBd{GBj}}}}}}{cGBl{{DBf{}{{DBd{GBl}}}}}}{cGBn{{DBf{}{{DBd{GBn}}}}}}{cGC`{{DBf{}{{DBd{GC`}}}}}}{cGCb{{DBf{}{{DBd{GCb}}}}}}{cGCd{{DBf{}{{DBd{GCd}}}}}}{cGCf{{DBf{}{{DBd{GCf}}}}}}{cGCh{{DBf{}{{DBd{GCh}}}}}}{cGCj{{DBf{}{{DBd{GCj}}}}}}{cGCl{{DBf{}{{DBd{GCl}}}}}}{cGCn{{DBf{}{{DBd{GCn}}}}}}{cGD`{{DBf{}{{DBd{GD`}}}}}}{cGDb{{DBf{}{{DBd{GDb}}}}}}{cGDd{{DBf{}{{DBd{GDd}}}}}}{cGDf{{DBf{}{{DBd{GDf}}}}}}{cGDh{{DBf{}{{DBd{GDh}}}}}}{cGDj{{DBf{}{{DBd{GDj}}}}}}{cGDl{{DBf{}{{DBd{GDl}}}}}}{cGDn{{DBf{}{{DBd{GDn}}}}}}{cGE`{{DBf{}{{DBd{GE`}}}}}}{Hl{{DBj{IAd}}}}{Hl{{DBj{IAf}}}}{Hl{{DBj{IAh}}}}{Hl{{DBj{IAj}}}}{Hl{{DBj{IAl}}}}{Hl{{DBj{IAn}}}}{Hl{{DBj{IB`}}}}{Hl{{DBj{IBb}}}}{Hl{{DBj{IBd}}}}{Hl{{DBj{IBf}}}}{Hl{{DBj{IBh}}}}{Hl{{DBj{IBj}}}}{Hl{{DBj{IBl}}}}{Hl{{DBj{IBn}}}}{Hl{{DBj{IC`}}}}{Hl{{DBj{ICb}}}}{Hl{{DBj{ICd}}}}{Hl{{DBj{ICf}}}}{Hl{{DBj{ICh}}}}{Hl{{DBj{ICj}}}}{Hl{{DBj{ICl}}}}{Hl{{DBj{ICn}}}}{Hl{{DBj{ID`}}}}{Hl{{DBj{IDb}}}}{Hl{{DBj{IDd}}}}{Hl{{DBj{IDf}}}}{Hl{{DBj{IDh}}}}{Hl{{DBj{IDj}}}}{Hl{{DBj{IDl}}}}{Hl{{DBj{IDn}}}}{Hl{{DBj{IE`}}}}{Hl{{DBj{IEb}}}}{Hl{{DBj{IEd}}}}{Hl{{DBj{IEf}}}}{Hl{{DBj{IEh}}}}{Hl{{DBj{IEj}}}}{Hl{{DBj{IEl}}}}{Hl{{DBj{IEn}}}}{Hl{{DBj{IF`}}}}{Hl{{DBj{IFb}}}}{Hl{{DBj{IFd}}}}{Hl{{DBj{IFf}}}}{Hl{{DBj{IFh}}}}{Hl{{DBj{IFj}}}}{Hl{{DBj{IFl}}}}{Hl{{DBj{IFn}}}}{Hl{{DBj{IG`}}}}{Hl{{DBj{IGb}}}}{Hl{{DBj{IGd}}}}{Hl{{DBj{IGf}}}}{Hl{{DBj{IGh}}}}{Hl{{DBj{IGj}}}}{Hl{{DBj{IGl}}}}{Hl{{DBj{IGn}}}}{Hl{{DBj{IH`}}}}{Hl{{DBj{IHb}}}}{Hl{{DBj{IHd}}}}{Hl{{DBj{IHf}}}}{Hl{{DBj{IHh}}}}{Hl{{DBj{IHj}}}}{Hl{{DBj{IHl}}}}{Hl{{DBj{IHn}}}}{Hl{{DBj{II`}}}}{Hl{{DBj{IIb}}}}{Hl{{DBj{IId}}}}{Hl{{DBj{IIf}}}}{Hl{{DBj{IIh}}}}{Hl{{DBj{IIj}}}}{Hl{{DBj{IIl}}}}{Hl{{DBj{IIn}}}}{Hl{{DBj{IJ`}}}}{Hl{{DBj{IJb}}}}{Hl{{DBj{IJd}}}}{Hl{{DBj{IJf}}}}{Hl{{DBj{IJh}}}}{Hl{{DBj{IJj}}}}{Hl{{DBj{IJl}}}}{Hl{{DBj{IJn}}}}{Hl{{DBj{IK`}}}}{Hl{{DBj{IKb}}}}{Hl{{DBj{IKd}}}}{Hl{{DBj{IKf}}}}{Hl{{DBj{IKh}}}}{Hl{{DBj{IKj}}}}{Hl{{DBj{IKl}}}}{Hl{{DBj{IKn}}}}{Hl{{DBj{IL`}}}}{Hl{{DBj{ILb}}}}{Hl{{DBj{ILd}}}}{Hl{{DBj{ILf}}}}{Hl{{DBj{ILh}}}}{Hl{{DBj{ILj}}}}{Hl{{DBj{ILl}}}}{Hl{{DBj{ILn}}}}{Hl{{DBj{IM`}}}}{Hl{{DBj{IMb}}}}{Hl{{DBj{IMd}}}}{Hl{{DBj{IMf}}}}{Hl{{DBj{IMh}}}}{Hl{{DBj{IMj}}}}{Hl{{DBj{IMl}}}}{Hl{{DBj{IMn}}}}{Hl{{DBj{IN`}}}}{Hl{{DBj{INb}}}}{Hl{{DBj{INd}}}}{Hl{{DBj{INf}}}}{Hl{{DBj{INh}}}}{Hl{{DBj{INj}}}}{Hl{{DBj{INl}}}}{Hl{{DBj{INn}}}}{Hl{{DBj{IO`}}}}{Hl{{DBj{IOb}}}}{Hl{{DBj{IOd}}}}{Hl{{DBj{IOf}}}}{Hl{{DBj{IOh}}}}{Hl{{DBj{IOj}}}}{Hl{{DBj{IOl}}}}````````````````````````````````````{{{b{GAj}}{b{dc}}}AjDBn}{{{b{GAl}}{b{dc}}}AjDBn}{{{b{GAn}}{b{dc}}}AjDBn}{{{b{GB`}}{b{dc}}}AjDBn}{{{b{GBb}}{b{dc}}}AjDBn}{{{b{GBd}}{b{dc}}}AjDBn}{{{b{GBf}}{b{dc}}}AjDBn}{{{b{GBh}}{b{dc}}}AjDBn}{{{b{GBj}}{b{dc}}}AjDBn}{{{b{GBl}}{b{dc}}}AjDBn}{{{b{GBn}}{b{dc}}}AjDBn}{{{b{GC`}}{b{dc}}}AjDBn}{{{b{GCb}}{b{dc}}}AjDBn}{{{b{GCd}}{b{dc}}}AjDBn}{{{b{GCf}}{b{dc}}}AjDBn}{{{b{GCh}}{b{dc}}}AjDBn}{{{b{GCj}}{b{dc}}}AjDBn}{{{b{GCl}}{b{dc}}}AjDBn}{{{b{GCn}}{b{dc}}}AjDBn}{{{b{GD`}}{b{dc}}}AjDBn}{{{b{GDb}}{b{dc}}}AjDBn}{{{b{GDd}}{b{dc}}}AjDBn}{{{b{GDf}}{b{dc}}}AjDBn}{{{b{GDh}}{b{dc}}}AjDBn}{{{b{GDj}}{b{dc}}}AjDBn}{{{b{GDl}}{b{dc}}}AjDBn}{{{b{GDn}}{b{dc}}}AjDBn}{{{b{GE`}}{b{dc}}}AjDBn}```````````````````````````````````````````````````````````````{{{b{dGAj}}GAj}Aj}{{{b{dGAl}}GAl}Aj}{{{b{dGAn}}GAn}Aj}{{{b{dGB`}}GB`}Aj}{{{b{dGBb}}GBb}Aj}{{{b{dGBd}}GBd}Aj}{{{b{dGBf}}GBf}Aj}{{{b{dGBh}}GBh}Aj}{{{b{dGBj}}GBj}Aj}{{{b{dGBl}}GBl}Aj}{{{b{dGBn}}GBn}Aj}{{{b{dGC`}}GC`}Aj}{{{b{dGCb}}GCb}Aj}{{{b{dGCd}}GCd}Aj}{{{b{dGCf}}GCf}Aj}{{{b{dGCh}}GCh}Aj}{{{b{dGCj}}GCj}Aj}{{{b{dGCl}}GCl}Aj}{{{b{dGCn}}GCn}Aj}{{{b{dGD`}}GD`}Aj}{{{b{dGDb}}GDb}Aj}{{{b{dGDd}}GDd}Aj}{{{b{dGDf}}GDf}Aj}{{{b{dGDh}}GDh}Aj}{{{b{dGDj}}GDj}Aj}{{{b{dGDl}}GDl}Aj}{{{b{dGDn}}GDn}Aj}{{{b{dGE`}}GE`}Aj}``````````````{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}{{{b{GAj}}GAj}C`}{{{b{GAl}}GAl}C`}{{{b{GAn}}GAn}C`}{{{b{GB`}}GB`}C`}{{{b{GBb}}GBb}C`}{{{b{GBd}}GBd}C`}{{{b{GBf}}GBf}C`}{{{b{GBh}}GBh}C`}{{{b{GBj}}GBj}C`}{{{b{GBl}}GBl}C`}{{{b{GBn}}GBn}C`}{{{b{GC`}}GC`}C`}{{{b{GCb}}GCb}C`}{{{b{GCd}}GCd}C`}{{{b{GCf}}GCf}C`}{{{b{GCh}}GCh}C`}{{{b{GCj}}GCj}C`}{{{b{GCl}}GCl}C`}{{{b{GCn}}GCn}C`}{{{b{GD`}}GD`}C`}{{{b{GDb}}GDb}C`}{{{b{GDd}}GDd}C`}{{{b{GDf}}GDf}C`}{{{b{GDh}}GDh}C`}{{{b{GDj}}GDj}C`}{{{b{GDl}}GDl}C`}{{{b{GDn}}GDn}C`}{{{b{GE`}}GE`}C`}`{ce{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{GAj}}}C`}{{{b{GAl}}}C`}{{{b{GAn}}}C`}{{{b{GB`}}}C`}{{{b{GBb}}}C`}{{{b{GBd}}}C`}{{{b{GBf}}}C`}{{{b{GBh}}}C`}{{{b{GBj}}}C`}{{{b{GBl}}}C`}{{{b{GBn}}}C`}{{{b{GC`}}}C`}{{{b{GCb}}}C`}{{{b{GCd}}}C`}{{{b{GCf}}}C`}{{{b{GCh}}}C`}{{{b{GCj}}}C`}{{{b{GCl}}}C`}{{{b{GCn}}}C`}{{{b{GD`}}}C`}{{{b{GDb}}}C`}{{{b{GDd}}}C`}{{{b{GDf}}}C`}{{{b{GDh}}}C`}{{{b{GDj}}}C`}{{{b{GDl}}}C`}{{{b{GDn}}}C`}{{{b{GE`}}}C`}{{{b{GAj}}}C`}{{{b{GAl}}}C`}{{{b{GAn}}}C`}{{{b{GB`}}}C`}{{{b{GBb}}}C`}{{{b{GBd}}}C`}{{{b{GBf}}}C`}{{{b{GBh}}}C`}{{{b{GBj}}}C`}{{{b{GBl}}}C`}{{{b{GBn}}}C`}{{{b{GC`}}}C`}{{{b{GCb}}}C`}{{{b{GCd}}}C`}{{{b{GCf}}}C`}{{{b{GCh}}}C`}{{{b{GCj}}}C`}{{{b{GCl}}}C`}{{{b{GCn}}}C`}{{{b{GD`}}}C`}{{{b{GDb}}}C`}{{{b{GDd}}}C`}{{{b{GDf}}}C`}{{{b{GDh}}}C`}{{{b{GDj}}}C`}{{{b{GDl}}}C`}{{{b{GDn}}}C`}{{{b{GE`}}}C`}```````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{GEb}}}Bf}`{{{b{Al}}}{{Bd{Bf{b{Al}}}}}}{{{b{GEb}}}{{b{Al}}}}```````````````````````````````````````{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}{GDnGDn}{GE`GE`}````````````````````````````````````````````````````````````````````````````````````````````{{AbBf{b{{h{f}}}}}{{Bd{GEbBl}}}}{{{b{GAj}}{b{GAj}}}{{DBj{DBb}}}}{{{b{GAl}}{b{GAl}}}{{DBj{DBb}}}}{{{b{GAn}}{b{GAn}}}{{DBj{DBb}}}}{{{b{GB`}}{b{GB`}}}{{DBj{DBb}}}}{{{b{GBb}}{b{GBb}}}{{DBj{DBb}}}}{{{b{GBd}}{b{GBd}}}{{DBj{DBb}}}}{{{b{GBf}}{b{GBf}}}{{DBj{DBb}}}}{{{b{GBh}}{b{GBh}}}{{DBj{DBb}}}}{{{b{GBj}}{b{GBj}}}{{DBj{DBb}}}}{{{b{GBl}}{b{GBl}}}{{DBj{DBb}}}}{{{b{GBn}}{b{GBn}}}{{DBj{DBb}}}}{{{b{GC`}}{b{GC`}}}{{DBj{DBb}}}}{{{b{GCb}}{b{GCb}}}{{DBj{DBb}}}}{{{b{GCd}}{b{GCd}}}{{DBj{DBb}}}}{{{b{GCf}}{b{GCf}}}{{DBj{DBb}}}}{{{b{GCh}}{b{GCh}}}{{DBj{DBb}}}}{{{b{GCj}}{b{GCj}}}{{DBj{DBb}}}}{{{b{GCl}}{b{GCl}}}{{DBj{DBb}}}}{{{b{GCn}}{b{GCn}}}{{DBj{DBb}}}}{{{b{GD`}}{b{GD`}}}{{DBj{DBb}}}}{{{b{GDb}}{b{GDb}}}{{DBj{DBb}}}}{{{b{GDd}}{b{GDd}}}{{DBj{DBb}}}}{{{b{GDf}}{b{GDf}}}{{DBj{DBb}}}}{{{b{GDh}}{b{GDh}}}{{DBj{DBb}}}}{{{b{GDj}}{b{GDj}}}{{DBj{DBb}}}}{{{b{GDl}}{b{GDl}}}{{DBj{DBb}}}}{{{b{GDn}}{b{GDn}}}{{DBj{DBb}}}}{{{b{GE`}}{b{GE`}}}{{DBj{DBb}}}}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{dGAj}}GAj}Aj}{{{b{dGAl}}GAl}Aj}{{{b{dGAn}}GAn}Aj}{{{b{dGB`}}GB`}Aj}{{{b{dGBb}}GBb}Aj}{{{b{dGBd}}GBd}Aj}{{{b{dGBf}}GBf}Aj}{{{b{dGBh}}GBh}Aj}{{{b{dGBj}}GBj}Aj}{{{b{dGBl}}GBl}Aj}{{{b{dGBn}}GBn}Aj}{{{b{dGC`}}GC`}Aj}{{{b{dGCb}}GCb}Aj}{{{b{dGCd}}GCd}Aj}{{{b{dGCf}}GCf}Aj}{{{b{dGCh}}GCh}Aj}{{{b{dGCj}}GCj}Aj}{{{b{dGCl}}GCl}Aj}{{{b{dGCn}}GCn}Aj}{{{b{dGD`}}GD`}Aj}{{{b{dGDb}}GDb}Aj}{{{b{dGDd}}GDd}Aj}{{{b{dGDf}}GDf}Aj}{{{b{dGDh}}GDh}Aj}{{{b{dGDj}}GDj}Aj}{{{b{dGDl}}GDl}Aj}{{{b{dGDn}}GDn}Aj}{{{b{dGE`}}GE`}Aj}```````````````````````````````````````````````````````````````````````````````````````````````````{{{b{GEb}}Ab{b{d{h{f}}}}}D`}{{{b{GEd}}Ab{b{d{h{f}}}}}D`}{{{b{GEf}}Ab{b{d{h{f}}}}}D`}{{{b{GEh}}Ab{b{d{h{f}}}}}D`}{{{b{GEj}}Ab{b{d{h{f}}}}}D`}{{{b{GEl}}Ab{b{d{h{f}}}}}D`}{{{b{GEn}}Ab{b{d{h{f}}}}}D`}{{{b{GF`}}Ab{b{d{h{f}}}}}D`}{{{b{GFb}}Ab{b{d{h{f}}}}}D`}{{{b{GFd}}Ab{b{d{h{f}}}}}D`}{{{b{GFf}}Ab{b{d{h{f}}}}}D`}{{{b{GFh}}Ab{b{d{h{f}}}}}D`}{{{b{GFj}}Ab{b{d{h{f}}}}}D`}{{{b{GFl}}Ab{b{d{h{f}}}}}D`}{{{b{GFn}}Ab{b{d{h{f}}}}}D`}{{{b{GG`}}Ab{b{d{h{f}}}}}D`}{{{b{GGb}}Ab{b{d{h{f}}}}}D`}{{{b{GGd}}Ab{b{d{h{f}}}}}D`}{{{b{GGf}}Ab{b{d{h{f}}}}}D`}{{{b{GGh}}Ab{b{d{h{f}}}}}D`}{{{b{GGj}}Ab{b{d{h{f}}}}}D`}{{{b{GGl}}Ab{b{d{h{f}}}}}D`}{{{b{GGn}}Ab{b{d{h{f}}}}}D`}{{{b{GH`}}Ab{b{d{h{f}}}}}D`}{{{b{GHb}}Ab{b{d{h{f}}}}}D`}{{{b{GHd}}Ab{b{d{h{f}}}}}D`}{{{b{GHf}}Ab{b{d{h{f}}}}}D`}{{{b{GHh}}Ab{b{d{h{f}}}}}D`}{{{b{GHj}}Ab{b{d{h{f}}}}}D`}{{{b{GHl}}Ab{b{d{h{f}}}}}D`}{{{b{GHn}}Ab{b{d{h{f}}}}}D`}{{{b{GI`}}Ab{b{d{h{f}}}}}D`}{{{b{GIb}}Ab{b{d{h{f}}}}}D`}{{{b{GId}}Ab{b{d{h{f}}}}}D`}{{{b{GIf}}Ab{b{d{h{f}}}}}D`}{{{b{GIh}}Ab{b{d{h{f}}}}}D`}{{{b{GIj}}Ab{b{d{h{f}}}}}D`}{{{b{GIl}}Ab{b{d{h{f}}}}}D`}{{{b{GIn}}Ab{b{d{h{f}}}}}D`}{{{b{GJ`}}Ab{b{d{h{f}}}}}D`}{{{b{GJb}}Ab{b{d{h{f}}}}}D`}{{{b{GJd}}Ab{b{d{h{f}}}}}D`}{{{b{GJf}}Ab{b{d{h{f}}}}}D`}{{{b{GJh}}Ab{b{d{h{f}}}}}D`}{{{b{GJj}}Ab{b{d{h{f}}}}}D`}{{{b{GJl}}Ab{b{d{h{f}}}}}D`}{{{b{GJn}}Ab{b{d{h{f}}}}}D`}{{{b{GK`}}Ab{b{d{h{f}}}}}D`}{{{b{GKb}}Ab{b{d{h{f}}}}}D`}{{{b{GKd}}Ab{b{d{h{f}}}}}D`}{{{b{GKf}}Ab{b{d{h{f}}}}}D`}{{{b{GKh}}Ab{b{d{h{f}}}}}D`}{{{b{GKj}}Ab{b{d{h{f}}}}}D`}{{{b{GKl}}Ab{b{d{h{f}}}}}D`}{{{b{GKn}}Ab{b{d{h{f}}}}}D`}{{{b{GL`}}Ab{b{d{h{f}}}}}D`}{{{b{GLb}}Ab{b{d{h{f}}}}}D`}{{{b{GLd}}Ab{b{d{h{f}}}}}D`}{{{b{GLf}}Ab{b{d{h{f}}}}}D`}{{{b{GLh}}Ab{b{d{h{f}}}}}D`}{{{b{GLj}}Ab{b{d{h{f}}}}}D`}{{{b{GLl}}Ab{b{d{h{f}}}}}D`}{{{b{GLn}}Ab{b{d{h{f}}}}}D`}{{{b{GM`}}Ab{b{d{h{f}}}}}D`}{{{b{GMb}}Ab{b{d{h{f}}}}}D`}{{{b{GMd}}Ab{b{d{h{f}}}}}D`}{{{b{GMf}}Ab{b{d{h{f}}}}}D`}{{{b{GMh}}Ab{b{d{h{f}}}}}D`}{{{b{GMj}}Ab{b{d{h{f}}}}}D`}{{{b{GMl}}Ab{b{d{h{f}}}}}D`}{{{b{GMn}}Ab{b{d{h{f}}}}}D`}{{{b{GN`}}Ab{b{d{h{f}}}}}D`}{{{b{GNb}}Ab{b{d{h{f}}}}}D`}{{{b{GNd}}Ab{b{d{h{f}}}}}D`}{{{b{GNf}}Ab{b{d{h{f}}}}}D`}{{{b{GNh}}Ab{b{d{h{f}}}}}D`}{{{b{GNj}}Ab{b{d{h{f}}}}}D`}{{{b{GNl}}Ab{b{d{h{f}}}}}D`}{{{b{GNn}}Ab{b{d{h{f}}}}}D`}{{{b{GO`}}Ab{b{d{h{f}}}}}D`}{{{b{GOb}}Ab{b{d{h{f}}}}}D`}{{{b{GOd}}Ab{b{d{h{f}}}}}D`}{{{b{GOf}}Ab{b{d{h{f}}}}}D`}{{{b{GOh}}Ab{b{d{h{f}}}}}D`}{{{b{GOj}}Ab{b{d{h{f}}}}}D`}{{{b{GOl}}Ab{b{d{h{f}}}}}D`}{{{b{GOn}}Ab{b{d{h{f}}}}}D`}{{{b{H@`}}Ab{b{d{h{f}}}}}D`}{{{b{H@b}}Ab{b{d{h{f}}}}}D`}{{{b{H@d}}Ab{b{d{h{f}}}}}D`}{{{b{H@f}}Ab{b{d{h{f}}}}}D`}{{{b{H@h}}Ab{b{d{h{f}}}}}D`}{{{b{H@j}}Ab{b{d{h{f}}}}}D`}{{{b{H@l}}Ab{b{d{h{f}}}}}D`}{{{b{H@n}}Ab{b{d{h{f}}}}}D`}{{{b{HA`}}Ab{b{d{h{f}}}}}D`}{{{b{HAb}}Ab{b{d{h{f}}}}}D`}{{{b{HAd}}Ab{b{d{h{f}}}}}D`}{{{b{HAf}}Ab{b{d{h{f}}}}}D`}{{{b{HAh}}Ab{b{d{h{f}}}}}D`}{{{b{HAj}}Ab{b{d{h{f}}}}}D`}{{{b{HAl}}Ab{b{d{h{f}}}}}D`}{{{b{HAn}}Ab{b{d{h{f}}}}}D`}{{{b{HB`}}Ab{b{d{h{f}}}}}D`}{{{b{HBb}}Ab{b{d{h{f}}}}}D`}{{{b{HBd}}Ab{b{d{h{f}}}}}D`}{{{b{HBf}}Ab{b{d{h{f}}}}}D`}{{{b{HBh}}Ab{b{d{h{f}}}}}D`}{{{b{HBj}}Ab{b{d{h{f}}}}}D`}{{{b{HBl}}Ab{b{d{h{f}}}}}D`}{{{b{HBn}}Ab{b{d{h{f}}}}}D`}{{{b{HC`}}Ab{b{d{h{f}}}}}D`}{{{b{HCb}}Ab{b{d{h{f}}}}}D`}{{{b{HCd}}Ab{b{d{h{f}}}}}D`}{{{b{HCf}}Ab{b{d{h{f}}}}}D`}{{{b{HCh}}Ab{b{d{h{f}}}}}D`}{{{b{HCj}}Ab{b{d{h{f}}}}}D`}{{{b{HCl}}Ab{b{d{h{f}}}}}D`}{{{b{HCn}}Ab{b{d{h{f}}}}}D`}{{{b{HD`}}Ab{b{d{h{f}}}}}D`}{{{b{HDb}}Ab{b{d{h{f}}}}}D`}{{{b{HDd}}Ab{b{d{h{f}}}}}D`}{{{b{HDf}}Ab{b{d{h{f}}}}}D`}{{{b{HDh}}Ab{b{d{h{f}}}}}D`}{{{b{HDj}}Ab{b{d{h{f}}}}}D`}{{{b{HDl}}Ab{b{d{h{f}}}}}D`}{{{b{HDn}}Ab{b{d{h{f}}}}}D`}{{{b{HE`}}Ab{b{d{h{f}}}}}D`}{{{b{HEb}}Ab{b{d{h{f}}}}}D`}{{{b{HEd}}Ab{b{d{h{f}}}}}D`}{{{b{HEf}}Ab{b{d{h{f}}}}}D`}{{{b{HEh}}Ab{b{d{h{f}}}}}D`}{{{b{HEj}}Ab{b{d{h{f}}}}}D`}{{{b{HEl}}Ab{b{d{h{f}}}}}D`}{{{b{HEn}}Ab{b{d{h{f}}}}}D`}{{{b{HF`}}Ab{b{d{h{f}}}}}D`}{{{b{HFb}}Ab{b{d{h{f}}}}}D`}{{{b{HFd}}Ab{b{d{h{f}}}}}D`}{{{b{HFf}}Ab{b{d{h{f}}}}}D`}{{{b{HFh}}Ab{b{d{h{f}}}}}D`}{{{b{HFj}}Ab{b{d{h{f}}}}}D`}{{{b{HFl}}Ab{b{d{h{f}}}}}D`}{{{b{HFn}}Ab{b{d{h{f}}}}}D`}{{{b{HG`}}Ab{b{d{h{f}}}}}D`}{{{b{HGb}}Ab{b{d{h{f}}}}}D`}{{{b{HGd}}Ab{b{d{h{f}}}}}D`}{{{b{HGf}}Ab{b{d{h{f}}}}}D`}{{{b{HGh}}Ab{b{d{h{f}}}}}D`}{{{b{HGj}}Ab{b{d{h{f}}}}}D`}{{{b{HGl}}Ab{b{d{h{f}}}}}D`}{{{b{HGn}}Ab{b{d{h{f}}}}}D`}{{{b{HH`}}Ab{b{d{h{f}}}}}D`}{{{b{HHb}}Ab{b{d{h{f}}}}}D`}{{{b{HHd}}Ab{b{d{h{f}}}}}D`}{{{b{HHf}}Ab{b{d{h{f}}}}}D`}{{{b{HHh}}Ab{b{d{h{f}}}}}D`}{{{b{HHj}}Ab{b{d{h{f}}}}}D`}{{{b{HHl}}Ab{b{d{h{f}}}}}D`}{{{b{HHn}}Ab{b{d{h{f}}}}}D`}{{{b{HI`}}Ab{b{d{h{f}}}}}D`}{{{b{HIb}}Ab{b{d{h{f}}}}}D`}{{{b{HId}}Ab{b{d{h{f}}}}}D`}{{{b{HIf}}Ab{b{d{h{f}}}}}D`}{{{b{HIh}}Ab{b{d{h{f}}}}}D`}{{{b{HIj}}Ab{b{d{h{f}}}}}D`}{{{b{HIl}}Ab{b{d{h{f}}}}}D`}{{{b{HIn}}Ab{b{d{h{f}}}}}D`}{{{b{HJ`}}Ab{b{d{h{f}}}}}D`}{{{b{HJb}}Ab{b{d{h{f}}}}}D`}{{{b{HJd}}Ab{b{d{h{f}}}}}D`}{{{b{HJf}}Ab{b{d{h{f}}}}}D`}{{{b{HJh}}Ab{b{d{h{f}}}}}D`}{{{b{HJj}}Ab{b{d{h{f}}}}}D`}{{{b{HJl}}Ab{b{d{h{f}}}}}D`}{{{b{HJn}}Ab{b{d{h{f}}}}}D`}{{{b{HK`}}Ab{b{d{h{f}}}}}D`}{{{b{HKb}}Ab{b{d{h{f}}}}}D`}{{{b{HKd}}Ab{b{d{h{f}}}}}D`}{{{b{HKf}}Ab{b{d{h{f}}}}}D`}{{{b{HKh}}Ab{b{d{h{f}}}}}D`}{{{b{HKj}}Ab{b{d{h{f}}}}}D`}{{{b{HKl}}Ab{b{d{h{f}}}}}D`}{{{b{HKn}}Ab{b{d{h{f}}}}}D`}{{{b{HL`}}Ab{b{d{h{f}}}}}D`}{{{b{HLb}}Ab{b{d{h{f}}}}}D`}{{{b{HLd}}Ab{b{d{h{f}}}}}D`}{{{b{HLf}}Ab{b{d{h{f}}}}}D`}{{{b{HLh}}Ab{b{d{h{f}}}}}D`}{{{b{HLj}}Ab{b{d{h{f}}}}}D`}{{{b{HLl}}Ab{b{d{h{f}}}}}D`}{{{b{HLn}}Ab{b{d{h{f}}}}}D`}{{{b{HM`}}Ab{b{d{h{f}}}}}D`}{{{b{HMb}}Ab{b{d{h{f}}}}}D`}{{{b{HMd}}Ab{b{d{h{f}}}}}D`}{{{b{HMf}}Ab{b{d{h{f}}}}}D`}{{{b{HMh}}Ab{b{d{h{f}}}}}D`}{{{b{HMj}}Ab{b{d{h{f}}}}}D`}{{{b{HMl}}Ab{b{d{h{f}}}}}D`}{{{b{HMn}}Ab{b{d{h{f}}}}}D`}{{{b{HN`}}Ab{b{d{h{f}}}}}D`}{{{b{HNb}}Ab{b{d{h{f}}}}}D`}{{{b{HNd}}Ab{b{d{h{f}}}}}D`}{{{b{HNf}}Ab{b{d{h{f}}}}}D`}{{{b{HNh}}Ab{b{d{h{f}}}}}D`}{{{b{HNj}}Ab{b{d{h{f}}}}}D`}{{{b{HNl}}Ab{b{d{h{f}}}}}D`}{{{b{HNn}}Ab{b{d{h{f}}}}}D`}{{{b{HO`}}Ab{b{d{h{f}}}}}D`}{{{b{HOb}}Ab{b{d{h{f}}}}}D`}{{{b{HOd}}Ab{b{d{h{f}}}}}D`}{{{b{HOf}}Ab{b{d{h{f}}}}}D`}{{{b{HOh}}Ab{b{d{h{f}}}}}D`}{{{b{HOj}}Ab{b{d{h{f}}}}}D`}{{{b{HOl}}Ab{b{d{h{f}}}}}D`}{{{b{HOn}}Ab{b{d{h{f}}}}}D`}{{{b{I@`}}Ab{b{d{h{f}}}}}D`}{{{b{I@b}}Ab{b{d{h{f}}}}}D`}{{{b{I@d}}Ab{b{d{h{f}}}}}D`}{{{b{I@f}}Ab{b{d{h{f}}}}}D`}{{{b{I@h}}Ab{b{d{h{f}}}}}D`}{{{b{I@j}}Ab{b{d{h{f}}}}}D`}{{{b{I@l}}Ab{b{d{h{f}}}}}D`}{{{b{I@n}}Ab{b{d{h{f}}}}}D`}{{{b{IA`}}Ab{b{d{h{f}}}}}D`}{{{b{IAb}}Ab{b{d{h{f}}}}}D`}`{{{b{GEb}}c}BdDd}{{{b{GEd}}c}BdDd}{{{b{GEf}}c}BdDd}{{{b{GEh}}c}BdDd}{{{b{GEj}}c}BdDd}{{{b{GEl}}c}BdDd}{{{b{GEn}}c}BdDd}{{{b{GF`}}c}BdDd}{{{b{GFb}}c}BdDd}{{{b{GFd}}c}BdDd}{{{b{GFf}}c}BdDd}{{{b{GFh}}c}BdDd}{{{b{GFj}}c}BdDd}{{{b{GFl}}c}BdDd}{{{b{GFn}}c}BdDd}{{{b{GG`}}c}BdDd}{{{b{GGb}}c}BdDd}{{{b{GGd}}c}BdDd}{{{b{GGf}}c}BdDd}{{{b{GGh}}c}BdDd}{{{b{GGj}}c}BdDd}{{{b{GGl}}c}BdDd}{{{b{GGn}}c}BdDd}{{{b{GH`}}c}BdDd}{{{b{GHb}}c}BdDd}{{{b{GHd}}c}BdDd}{{{b{GHf}}c}BdDd}{{{b{GHh}}c}BdDd}{{{b{GHj}}c}BdDd}{{{b{GHl}}c}BdDd}{{{b{GHn}}c}BdDd}{{{b{GI`}}c}BdDd}{{{b{GIb}}c}BdDd}{{{b{GId}}c}BdDd}{{{b{GIf}}c}BdDd}{{{b{GIh}}c}BdDd}{{{b{GIj}}c}BdDd}{{{b{GIl}}c}BdDd}{{{b{GIn}}c}BdDd}{{{b{GJ`}}c}BdDd}{{{b{GJb}}c}BdDd}{{{b{GJd}}c}BdDd}{{{b{GJf}}c}BdDd}{{{b{GJh}}c}BdDd}{{{b{GJj}}c}BdDd}{{{b{GJl}}c}BdDd}{{{b{GJn}}c}BdDd}{{{b{GK`}}c}BdDd}{{{b{GKb}}c}BdDd}{{{b{GKd}}c}BdDd}{{{b{GKf}}c}BdDd}{{{b{GKh}}c}BdDd}{{{b{GKj}}c}BdDd}{{{b{GKl}}c}BdDd}{{{b{GKn}}c}BdDd}{{{b{GL`}}c}BdDd}{{{b{GLb}}c}BdDd}{{{b{GLd}}c}BdDd}{{{b{GLf}}c}BdDd}{{{b{GLh}}c}BdDd}{{{b{GLj}}c}BdDd}{{{b{GLl}}c}BdDd}{{{b{GLn}}c}BdDd}{{{b{GM`}}c}BdDd}{{{b{GMb}}c}BdDd}{{{b{GMd}}c}BdDd}{{{b{GMf}}c}BdDd}{{{b{GMh}}c}BdDd}{{{b{GMj}}c}BdDd}{{{b{GMl}}c}BdDd}{{{b{GMn}}c}BdDd}{{{b{GN`}}c}BdDd}{{{b{GNb}}c}BdDd}{{{b{GNd}}c}BdDd}{{{b{GNf}}c}BdDd}{{{b{GNh}}c}BdDd}{{{b{GNj}}c}BdDd}{{{b{GNl}}c}BdDd}{{{b{GNn}}c}BdDd}{{{b{GO`}}c}BdDd}{{{b{GOb}}c}BdDd}{{{b{GOd}}c}BdDd}{{{b{GOf}}c}BdDd}{{{b{GOh}}c}BdDd}{{{b{GOj}}c}BdDd}{{{b{GOl}}c}BdDd}{{{b{GOn}}c}BdDd}{{{b{H@`}}c}BdDd}{{{b{H@b}}c}BdDd}{{{b{H@d}}c}BdDd}{{{b{H@f}}c}BdDd}{{{b{H@h}}c}BdDd}{{{b{H@j}}c}BdDd}{{{b{H@l}}c}BdDd}{{{b{H@n}}c}BdDd}{{{b{HA`}}c}BdDd}{{{b{HAb}}c}BdDd}{{{b{HAd}}c}BdDd}{{{b{HAf}}c}BdDd}{{{b{HAh}}c}BdDd}{{{b{HAj}}c}BdDd}{{{b{HAl}}c}BdDd}{{{b{HAn}}c}BdDd}{{{b{HB`}}c}BdDd}{{{b{HBb}}c}BdDd}{{{b{HBd}}c}BdDd}{{{b{HBf}}c}BdDd}{{{b{HBh}}c}BdDd}{{{b{HBj}}c}BdDd}{{{b{HBl}}c}BdDd}{{{b{HBn}}c}BdDd}{{{b{HC`}}c}BdDd}{{{b{HCb}}c}BdDd}{{{b{HCd}}c}BdDd}{{{b{HCf}}c}BdDd}{{{b{HCh}}c}BdDd}{{{b{HCj}}c}BdDd}{{{b{HCl}}c}BdDd}{{{b{HCn}}c}BdDd}{{{b{HD`}}c}BdDd}{{{b{HDb}}c}BdDd}{{{b{HDd}}c}BdDd}{{{b{HDf}}c}BdDd}{{{b{HDh}}c}BdDd}{{{b{HDj}}c}BdDd}{{{b{HDl}}c}BdDd}{{{b{HDn}}c}BdDd}{{{b{HE`}}c}BdDd}{{{b{HEb}}c}BdDd}{{{b{HEd}}c}BdDd}{{{b{HEf}}c}BdDd}{{{b{HEh}}c}BdDd}{{{b{HEj}}c}BdDd}{{{b{HEl}}c}BdDd}{{{b{HEn}}c}BdDd}{{{b{HF`}}c}BdDd}{{{b{HFb}}c}BdDd}{{{b{HFd}}c}BdDd}{{{b{HFf}}c}BdDd}{{{b{HFh}}c}BdDd}{{{b{HFj}}c}BdDd}{{{b{HFl}}c}BdDd}{{{b{HFn}}c}BdDd}{{{b{HG`}}c}BdDd}{{{b{HGb}}c}BdDd}{{{b{HGd}}c}BdDd}{{{b{HGf}}c}BdDd}{{{b{HGh}}c}BdDd}{{{b{HGj}}c}BdDd}{{{b{HGl}}c}BdDd}{{{b{HGn}}c}BdDd}{{{b{HH`}}c}BdDd}{{{b{HHb}}c}BdDd}{{{b{HHd}}c}BdDd}{{{b{HHf}}c}BdDd}{{{b{HHh}}c}BdDd}{{{b{HHj}}c}BdDd}{{{b{HHl}}c}BdDd}{{{b{HHn}}c}BdDd}{{{b{HI`}}c}BdDd}{{{b{HIb}}c}BdDd}{{{b{HId}}c}BdDd}{{{b{HIf}}c}BdDd}{{{b{HIh}}c}BdDd}{{{b{HIj}}c}BdDd}{{{b{HIl}}c}BdDd}{{{b{HIn}}c}BdDd}{{{b{HJ`}}c}BdDd}{{{b{HJb}}c}BdDd}{{{b{HJd}}c}BdDd}{{{b{HJf}}c}BdDd}{{{b{HJh}}c}BdDd}{{{b{HJj}}c}BdDd}{{{b{HJl}}c}BdDd}{{{b{HJn}}c}BdDd}{{{b{HK`}}c}BdDd}{{{b{HKb}}c}BdDd}{{{b{HKd}}c}BdDd}{{{b{HKf}}c}BdDd}{{{b{HKh}}c}BdDd}{{{b{HKj}}c}BdDd}{{{b{HKl}}c}BdDd}{{{b{HKn}}c}BdDd}{{{b{HL`}}c}BdDd}{{{b{HLb}}c}BdDd}{{{b{HLd}}c}BdDd}{{{b{HLf}}c}BdDd}{{{b{HLh}}c}BdDd}{{{b{HLj}}c}BdDd}{{{b{HLl}}c}BdDd}{{{b{HLn}}c}BdDd}{{{b{HM`}}c}BdDd}{{{b{HMb}}c}BdDd}{{{b{HMd}}c}BdDd}{{{b{HMf}}c}BdDd}{{{b{HMh}}c}BdDd}{{{b{HMj}}c}BdDd}{{{b{HMl}}c}BdDd}{{{b{HMn}}c}BdDd}{{{b{HN`}}c}BdDd}{{{b{HNb}}c}BdDd}{{{b{HNd}}c}BdDd}{{{b{HNf}}c}BdDd}{{{b{HNh}}c}BdDd}{{{b{HNj}}c}BdDd}{{{b{HNl}}c}BdDd}{{{b{HNn}}c}BdDd}{{{b{HO`}}c}BdDd}{{{b{HOb}}c}BdDd}{{{b{HOd}}c}BdDd}{{{b{HOf}}c}BdDd}{{{b{HOh}}c}BdDd}{{{b{HOj}}c}BdDd}{{{b{HOl}}c}BdDd}{{{b{HOn}}c}BdDd}{{{b{I@`}}c}BdDd}{{{b{I@b}}c}BdDd}{{{b{I@d}}c}BdDd}{{{b{I@f}}c}BdDd}{{{b{I@h}}c}BdDd}{{{b{I@j}}c}BdDd}{{{b{I@l}}c}BdDd}{{{b{I@n}}c}BdDd}{{{b{IA`}}c}BdDd}{{{b{IAb}}c}BdDd}{{{b{IAd}}c}BdDd}{{{b{IAf}}c}BdDd}{{{b{IAh}}c}BdDd}{{{b{IAj}}c}BdDd}{{{b{IAl}}c}BdDd}{{{b{IAn}}c}BdDd}{{{b{GAj}}c}BdDd}{{{b{IB`}}c}BdDd}{{{b{IBb}}c}BdDd}{{{b{GAl}}c}BdDd}{{{b{IBd}}c}BdDd}{{{b{IBf}}c}BdDd}{{{b{GAn}}c}BdDd}{{{b{IBh}}c}BdDd}{{{b{IBj}}c}BdDd}{{{b{IBl}}c}BdDd}{{{b{IBn}}c}BdDd}{{{b{IC`}}c}BdDd}{{{b{ICb}}c}BdDd}{{{b{ICd}}c}BdDd}{{{b{ICf}}c}BdDd}{{{b{ICh}}c}BdDd}{{{b{ICj}}c}BdDd}{{{b{GB`}}c}BdDd}{{{b{GBb}}c}BdDd}{{{b{ICl}}c}BdDd}{{{b{ICn}}c}BdDd}{{{b{ID`}}c}BdDd}{{{b{IDb}}c}BdDd}{{{b{IDd}}c}BdDd}{{{b{IDf}}c}BdDd}{{{b{IDh}}c}BdDd}{{{b{IDj}}c}BdDd}{{{b{GBd}}c}BdDd}{{{b{IDl}}c}BdDd}{{{b{IDn}}c}BdDd}{{{b{GBf}}c}BdDd}{{{b{IE`}}c}BdDd}{{{b{GBh}}c}BdDd}{{{b{IEb}}c}BdDd}{{{b{IEd}}c}BdDd}{{{b{IEf}}c}BdDd}{{{b{IEh}}c}BdDd}{{{b{IEj}}c}BdDd}{{{b{IEl}}c}BdDd}{{{b{IEn}}c}BdDd}{{{b{IF`}}c}BdDd}{{{b{IFb}}c}BdDd}{{{b{GBj}}c}BdDd}{{{b{IFd}}c}BdDd}{{{b{GBl}}c}BdDd}{{{b{IFf}}c}BdDd}{{{b{IFh}}c}BdDd}{{{b{GBn}}c}BdDd}{{{b{IFj}}c}BdDd}{{{b{IFl}}c}BdDd}{{{b{IFn}}c}BdDd}{{{b{IG`}}c}BdDd}{{{b{IGb}}c}BdDd}{{{b{GC`}}c}BdDd}{{{b{IGd}}c}BdDd}{{{b{IGf}}c}BdDd}{{{b{IGh}}c}BdDd}{{{b{IGj}}c}BdDd}{{{b{GCb}}c}BdDd}{{{b{IGl}}c}BdDd}{{{b{IGn}}c}BdDd}{{{b{IH`}}c}BdDd}{{{b{IHb}}c}BdDd}{{{b{GCd}}c}BdDd}{{{b{GCf}}c}BdDd}{{{b{IHd}}c}BdDd}{{{b{IHf}}c}BdDd}{{{b{IHh}}c}BdDd}{{{b{IHj}}c}BdDd}{{{b{IHl}}c}BdDd}{{{b{IHn}}c}BdDd}{{{b{GCh}}c}BdDd}{{{b{II`}}c}BdDd}{{{b{IIb}}c}BdDd}{{{b{IId}}c}BdDd}{{{b{IIf}}c}BdDd}{{{b{GCj}}c}BdDd}{{{b{IIh}}c}BdDd}{{{b{IIj}}c}BdDd}{{{b{IIl}}c}BdDd}{{{b{IIn}}c}BdDd}{{{b{IJ`}}c}BdDd}{{{b{IJb}}c}BdDd}{{{b{GCl}}c}BdDd}{{{b{IJd}}c}BdDd}{{{b{GCn}}c}BdDd}{{{b{IJf}}c}BdDd}{{{b{IJh}}c}BdDd}{{{b{IJj}}c}BdDd}{{{b{IJl}}c}BdDd}{{{b{GD`}}c}BdDd}{{{b{IJn}}c}BdDd}{{{b{GDb}}c}BdDd}{{{b{IK`}}c}BdDd}{{{b{IKb}}c}BdDd}{{{b{IKd}}c}BdDd}{{{b{IKf}}c}BdDd}{{{b{IKh}}c}BdDd}{{{b{IKj}}c}BdDd}{{{b{GDd}}c}BdDd}{{{b{GDf}}c}BdDd}{{{b{IKl}}c}BdDd}{{{b{IKn}}c}BdDd}{{{b{IL`}}c}BdDd}{{{b{ILb}}c}BdDd}{{{b{ILd}}c}BdDd}{{{b{ILf}}c}BdDd}{{{b{GDh}}c}BdDd}{{{b{ILh}}c}BdDd}{{{b{ILj}}c}BdDd}{{{b{GDj}}c}BdDd}{{{b{GDl}}c}BdDd}{{{b{ILl}}c}BdDd}{{{b{GDn}}c}BdDd}{{{b{ILn}}c}BdDd}{{{b{IM`}}c}BdDd}{{{b{IMb}}c}BdDd}{{{b{IMd}}c}BdDd}{{{b{IMf}}c}BdDd}{{{b{IMh}}c}BdDd}{{{b{IMj}}c}BdDd}{{{b{IMl}}c}BdDd}{{{b{IMn}}c}BdDd}{{{b{IN`}}c}BdDd}{{{b{INb}}c}BdDd}{{{b{INd}}c}BdDd}{{{b{INf}}c}BdDd}{{{b{INh}}c}BdDd}{{{b{INj}}c}BdDd}{{{b{INl}}c}BdDd}{{{b{INn}}c}BdDd}{{{b{IO`}}c}BdDd}{{{b{IOb}}c}BdDd}{{{b{IOd}}c}BdDd}{{{b{IOf}}c}BdDd}{{{b{GE`}}c}BdDd}{{{b{IOh}}c}BdDd}{{{b{IOj}}c}BdDd}{{{b{IOl}}c}BdDd}````````{{{b{dGAj}}GAjC`}Aj}{{{b{dGAl}}GAlC`}Aj}{{{b{dGAn}}GAnC`}Aj}{{{b{dGB`}}GB`C`}Aj}{{{b{dGBb}}GBbC`}Aj}{{{b{dGBd}}GBdC`}Aj}{{{b{dGBf}}GBfC`}Aj}{{{b{dGBh}}GBhC`}Aj}{{{b{dGBj}}GBjC`}Aj}{{{b{dGBl}}GBlC`}Aj}{{{b{dGBn}}GBnC`}Aj}{{{b{dGC`}}GC`C`}Aj}{{{b{dGCb}}GCbC`}Aj}{{{b{dGCd}}GCdC`}Aj}{{{b{dGCf}}GCfC`}Aj}{{{b{dGCh}}GChC`}Aj}{{{b{dGCj}}GCjC`}Aj}{{{b{dGCl}}GClC`}Aj}{{{b{dGCn}}GCnC`}Aj}{{{b{dGD`}}GD`C`}Aj}{{{b{dGDb}}GDbC`}Aj}{{{b{dGDd}}GDdC`}Aj}{{{b{dGDf}}GDfC`}Aj}{{{b{dGDh}}GDhC`}Aj}{{{b{dGDj}}GDjC`}Aj}{{{b{dGDl}}GDlC`}Aj}{{{b{dGDn}}GDnC`}Aj}{{{b{dGE`}}GE`C`}Aj}```````````````````````````````````````````{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}{{{b{dGAj}}GAj}Aj}{{{b{dGAl}}GAl}Aj}{{{b{dGAn}}GAn}Aj}{{{b{dGB`}}GB`}Aj}{{{b{dGBb}}GBb}Aj}{{{b{dGBd}}GBd}Aj}{{{b{dGBf}}GBf}Aj}{{{b{dGBh}}GBh}Aj}{{{b{dGBj}}GBj}Aj}{{{b{dGBl}}GBl}Aj}{{{b{dGBn}}GBn}Aj}{{{b{dGC`}}GC`}Aj}{{{b{dGCb}}GCb}Aj}{{{b{dGCd}}GCd}Aj}{{{b{dGCf}}GCf}Aj}{{{b{dGCh}}GCh}Aj}{{{b{dGCj}}GCj}Aj}{{{b{dGCl}}GCl}Aj}{{{b{dGCn}}GCn}Aj}{{{b{dGD`}}GD`}Aj}{{{b{dGDb}}GDb}Aj}{{{b{dGDd}}GDd}Aj}{{{b{dGDf}}GDf}Aj}{{{b{dGDh}}GDh}Aj}{{{b{dGDj}}GDj}Aj}{{{b{dGDl}}GDl}Aj}{{{b{dGDn}}GDn}Aj}{{{b{dGE`}}GE`}Aj}`````{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{IAd}}}{{DBj{DBl}}}}{{{b{IAf}}}{{DBj{DBl}}}}{{{b{IAh}}}{{DBj{DBl}}}}{{{b{IAj}}}{{DBj{DBl}}}}{{{b{IAl}}}{{DBj{DBl}}}}{{{b{IAn}}}{{DBj{DBl}}}}{{{b{IB`}}}{{DBj{DBl}}}}{{{b{IBb}}}{{DBj{DBl}}}}{{{b{IBd}}}{{DBj{DBl}}}}{{{b{IBf}}}{{DBj{DBl}}}}{{{b{IBh}}}{{DBj{DBl}}}}{{{b{IBj}}}{{DBj{DBl}}}}{{{b{IBl}}}{{DBj{DBl}}}}{{{b{IBn}}}{{DBj{DBl}}}}{{{b{IC`}}}{{DBj{DBl}}}}{{{b{ICb}}}{{DBj{DBl}}}}{{{b{ICd}}}{{DBj{DBl}}}}{{{b{ICf}}}{{DBj{DBl}}}}{{{b{ICh}}}{{DBj{DBl}}}}{{{b{ICj}}}{{DBj{DBl}}}}{{{b{ICl}}}{{DBj{DBl}}}}{{{b{ICn}}}{{DBj{DBl}}}}{{{b{ID`}}}{{DBj{DBl}}}}{{{b{IDb}}}{{DBj{DBl}}}}{{{b{IDd}}}{{DBj{DBl}}}}{{{b{IDf}}}{{DBj{DBl}}}}{{{b{IDh}}}{{DBj{DBl}}}}{{{b{IDj}}}{{DBj{DBl}}}}{{{b{IDl}}}{{DBj{DBl}}}}{{{b{IDn}}}{{DBj{DBl}}}}{{{b{IE`}}}{{DBj{DBl}}}}{{{b{IEb}}}{{DBj{DBl}}}}{{{b{IEd}}}{{DBj{DBl}}}}{{{b{IEf}}}{{DBj{DBl}}}}{{{b{IEh}}}{{DBj{DBl}}}}{{{b{IEj}}}{{DBj{DBl}}}}{{{b{IEl}}}{{DBj{DBl}}}}{{{b{IEn}}}{{DBj{DBl}}}}{{{b{IF`}}}{{DBj{DBl}}}}{{{b{IFb}}}{{DBj{DBl}}}}{{{b{IFd}}}{{DBj{DBl}}}}{{{b{IFf}}}{{DBj{DBl}}}}{{{b{IFh}}}{{DBj{DBl}}}}{{{b{IFj}}}{{DBj{DBl}}}}{{{b{IFl}}}{{DBj{DBl}}}}{{{b{IFn}}}{{DBj{DBl}}}}{{{b{IG`}}}{{DBj{DBl}}}}{{{b{IGb}}}{{DBj{DBl}}}}{{{b{IGd}}}{{DBj{DBl}}}}{{{b{IGf}}}{{DBj{DBl}}}}{{{b{IGh}}}{{DBj{DBl}}}}{{{b{IGj}}}{{DBj{DBl}}}}{{{b{IGl}}}{{DBj{DBl}}}}{{{b{IGn}}}{{DBj{DBl}}}}{{{b{IH`}}}{{DBj{DBl}}}}{{{b{IHb}}}{{DBj{DBl}}}}{{{b{IHd}}}{{DBj{DBl}}}}{{{b{IHf}}}{{DBj{DBl}}}}{{{b{IHh}}}{{DBj{DBl}}}}{{{b{IHj}}}{{DBj{DBl}}}}{{{b{IHl}}}{{DBj{DBl}}}}{{{b{IHn}}}{{DBj{DBl}}}}{{{b{II`}}}{{DBj{DBl}}}}{{{b{IIb}}}{{DBj{DBl}}}}{{{b{IId}}}{{DBj{DBl}}}}{{{b{IIf}}}{{DBj{DBl}}}}{{{b{IIh}}}{{DBj{DBl}}}}{{{b{IIj}}}{{DBj{DBl}}}}{{{b{IIl}}}{{DBj{DBl}}}}{{{b{IIn}}}{{DBj{DBl}}}}{{{b{IJ`}}}{{DBj{DBl}}}}{{{b{IJb}}}{{DBj{DBl}}}}{{{b{IJd}}}{{DBj{DBl}}}}{{{b{IJf}}}{{DBj{DBl}}}}{{{b{IJh}}}{{DBj{DBl}}}}{{{b{IJj}}}{{DBj{DBl}}}}{{{b{IJl}}}{{DBj{DBl}}}}{{{b{IJn}}}{{DBj{DBl}}}}{{{b{IK`}}}{{DBj{DBl}}}}{{{b{IKb}}}{{DBj{DBl}}}}{{{b{IKd}}}{{DBj{DBl}}}}{{{b{IKf}}}{{DBj{DBl}}}}{{{b{IKh}}}{{DBj{DBl}}}}{{{b{IKj}}}{{DBj{DBl}}}}{{{b{IKl}}}{{DBj{DBl}}}}{{{b{IKn}}}{{DBj{DBl}}}}{{{b{IL`}}}{{DBj{DBl}}}}{{{b{ILb}}}{{DBj{DBl}}}}{{{b{ILd}}}{{DBj{DBl}}}}{{{b{ILf}}}{{DBj{DBl}}}}{{{b{ILh}}}{{DBj{DBl}}}}{{{b{ILj}}}{{DBj{DBl}}}}{{{b{ILl}}}{{DBj{DBl}}}}{{{b{ILn}}}{{DBj{DBl}}}}{{{b{IM`}}}{{DBj{DBl}}}}{{{b{IMb}}}{{DBj{DBl}}}}{{{b{IMd}}}{{DBj{DBl}}}}{{{b{IMf}}}{{DBj{DBl}}}}{{{b{IMh}}}{{DBj{DBl}}}}{{{b{IMj}}}{{DBj{DBl}}}}{{{b{IMl}}}{{DBj{DBl}}}}{{{b{IMn}}}{{DBj{DBl}}}}{{{b{IN`}}}{{DBj{DBl}}}}{{{b{INb}}}{{DBj{DBl}}}}{{{b{INd}}}{{DBj{DBl}}}}{{{b{INf}}}{{DBj{DBl}}}}{{{b{INh}}}{{DBj{DBl}}}}{{{b{INj}}}{{DBj{DBl}}}}{{{b{INl}}}{{DBj{DBl}}}}{{{b{INn}}}{{DBj{DBl}}}}{{{b{IO`}}}{{DBj{DBl}}}}{{{b{IOb}}}{{DBj{DBl}}}}{{{b{IOd}}}{{DBj{DBl}}}}{{{b{IOf}}}{{DBj{DBl}}}}{{{b{IOh}}}{{DBj{DBl}}}}{{{b{IOj}}}{{DBj{DBl}}}}{{{b{IOl}}}{{DBj{DBl}}}}{{{b{c}}}e{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{IAd}}}{{DBj{Hl}}}}{{{b{IAf}}}{{DBj{Hl}}}}{{{b{IAh}}}{{DBj{Hl}}}}{{{b{IAj}}}{{DBj{Hl}}}}{{{b{IAl}}}{{DBj{Hl}}}}{{{b{IAn}}}{{DBj{Hl}}}}{{{b{IB`}}}{{DBj{Hl}}}}{{{b{IBb}}}{{DBj{Hl}}}}{{{b{IBd}}}{{DBj{Hl}}}}{{{b{IBf}}}{{DBj{Hl}}}}{{{b{IBh}}}{{DBj{Hl}}}}{{{b{IBj}}}{{DBj{Hl}}}}{{{b{IBl}}}{{DBj{Hl}}}}{{{b{IBn}}}{{DBj{Hl}}}}{{{b{IC`}}}{{DBj{Hl}}}}{{{b{ICb}}}{{DBj{Hl}}}}{{{b{ICd}}}{{DBj{Hl}}}}{{{b{ICf}}}{{DBj{Hl}}}}{{{b{ICh}}}{{DBj{Hl}}}}{{{b{ICj}}}{{DBj{Hl}}}}{{{b{ICl}}}{{DBj{Hl}}}}{{{b{ICn}}}{{DBj{Hl}}}}{{{b{ID`}}}{{DBj{Hl}}}}{{{b{IDb}}}{{DBj{Hl}}}}{{{b{IDd}}}{{DBj{Hl}}}}{{{b{IDf}}}{{DBj{Hl}}}}{{{b{IDh}}}{{DBj{Hl}}}}{{{b{IDj}}}{{DBj{Hl}}}}{{{b{IDl}}}{{DBj{Hl}}}}{{{b{IDn}}}{{DBj{Hl}}}}{{{b{IE`}}}{{DBj{Hl}}}}{{{b{IEb}}}{{DBj{Hl}}}}{{{b{IEd}}}{{DBj{Hl}}}}{{{b{IEf}}}{{DBj{Hl}}}}{{{b{IEh}}}{{DBj{Hl}}}}{{{b{IEj}}}{{DBj{Hl}}}}{{{b{IEl}}}{{DBj{Hl}}}}{{{b{IEn}}}{{DBj{Hl}}}}{{{b{IF`}}}{{DBj{Hl}}}}{{{b{IFb}}}{{DBj{Hl}}}}{{{b{IFd}}}{{DBj{Hl}}}}{{{b{IFf}}}{{DBj{Hl}}}}{{{b{IFh}}}{{DBj{Hl}}}}{{{b{IFj}}}{{DBj{Hl}}}}{{{b{IFl}}}{{DBj{Hl}}}}{{{b{IFn}}}{{DBj{Hl}}}}{{{b{IG`}}}{{DBj{Hl}}}}{{{b{IGb}}}{{DBj{Hl}}}}{{{b{IGd}}}{{DBj{Hl}}}}{{{b{IGf}}}{{DBj{Hl}}}}{{{b{IGh}}}{{DBj{Hl}}}}{{{b{IGj}}}{{DBj{Hl}}}}{{{b{IGl}}}{{DBj{Hl}}}}{{{b{IGn}}}{{DBj{Hl}}}}{{{b{IH`}}}{{DBj{Hl}}}}{{{b{IHb}}}{{DBj{Hl}}}}{{{b{IHd}}}{{DBj{Hl}}}}{{{b{IHf}}}{{DBj{Hl}}}}{{{b{IHh}}}{{DBj{Hl}}}}{{{b{IHj}}}{{DBj{Hl}}}}{{{b{IHl}}}{{DBj{Hl}}}}{{{b{IHn}}}{{DBj{Hl}}}}{{{b{II`}}}{{DBj{Hl}}}}{{{b{IIb}}}{{DBj{Hl}}}}{{{b{IId}}}{{DBj{Hl}}}}{{{b{IIf}}}{{DBj{Hl}}}}{{{b{IIh}}}{{DBj{Hl}}}}{{{b{IIj}}}{{DBj{Hl}}}}{{{b{IIl}}}{{DBj{Hl}}}}{{{b{IIn}}}{{DBj{Hl}}}}{{{b{IJ`}}}{{DBj{Hl}}}}{{{b{IJb}}}{{DBj{Hl}}}}{{{b{IJd}}}{{DBj{Hl}}}}{{{b{IJf}}}{{DBj{Hl}}}}{{{b{IJh}}}{{DBj{Hl}}}}{{{b{IJj}}}{{DBj{Hl}}}}{{{b{IJl}}}{{DBj{Hl}}}}{{{b{IJn}}}{{DBj{Hl}}}}{{{b{IK`}}}{{DBj{Hl}}}}{{{b{IKb}}}{{DBj{Hl}}}}{{{b{IKd}}}{{DBj{Hl}}}}{{{b{IKf}}}{{DBj{Hl}}}}{{{b{IKh}}}{{DBj{Hl}}}}{{{b{IKj}}}{{DBj{Hl}}}}{{{b{IKl}}}{{DBj{Hl}}}}{{{b{IKn}}}{{DBj{Hl}}}}{{{b{IL`}}}{{DBj{Hl}}}}{{{b{ILb}}}{{DBj{Hl}}}}{{{b{ILd}}}{{DBj{Hl}}}}{{{b{ILf}}}{{DBj{Hl}}}}{{{b{ILh}}}{{DBj{Hl}}}}{{{b{ILj}}}{{DBj{Hl}}}}{{{b{ILl}}}{{DBj{Hl}}}}{{{b{ILn}}}{{DBj{Hl}}}}{{{b{IM`}}}{{DBj{Hl}}}}{{{b{IMb}}}{{DBj{Hl}}}}{{{b{IMd}}}{{DBj{Hl}}}}{{{b{IMf}}}{{DBj{Hl}}}}{{{b{IMh}}}{{DBj{Hl}}}}{{{b{IMj}}}{{DBj{Hl}}}}{{{b{IMl}}}{{DBj{Hl}}}}{{{b{IMn}}}{{DBj{Hl}}}}{{{b{IN`}}}{{DBj{Hl}}}}{{{b{INb}}}{{DBj{Hl}}}}{{{b{INd}}}{{DBj{Hl}}}}{{{b{INf}}}{{DBj{Hl}}}}{{{b{INh}}}{{DBj{Hl}}}}{{{b{INj}}}{{DBj{Hl}}}}{{{b{INl}}}{{DBj{Hl}}}}{{{b{INn}}}{{DBj{Hl}}}}{{{b{IO`}}}{{DBj{Hl}}}}{{{b{IOb}}}{{DBj{Hl}}}}{{{b{IOd}}}{{DBj{Hl}}}}{{{b{IOf}}}{{DBj{Hl}}}}{{{b{IOh}}}{{DBj{Hl}}}}{{{b{IOj}}}{{DBj{Hl}}}}{{{b{IOl}}}{{DBj{Hl}}}}{{{b{dGAj}}GAj}Aj}{{{b{dGAl}}GAl}Aj}{{{b{dGAn}}GAn}Aj}{{{b{dGB`}}GB`}Aj}{{{b{dGBb}}GBb}Aj}{{{b{dGBd}}GBd}Aj}{{{b{dGBf}}GBf}Aj}{{{b{dGBh}}GBh}Aj}{{{b{dGBj}}GBj}Aj}{{{b{dGBl}}GBl}Aj}{{{b{dGBn}}GBn}Aj}{{{b{dGC`}}GC`}Aj}{{{b{dGCb}}GCb}Aj}{{{b{dGCd}}GCd}Aj}{{{b{dGCf}}GCf}Aj}{{{b{dGCh}}GCh}Aj}{{{b{dGCj}}GCj}Aj}{{{b{dGCl}}GCl}Aj}{{{b{dGCn}}GCn}Aj}{{{b{dGD`}}GD`}Aj}{{{b{dGDb}}GDb}Aj}{{{b{dGDd}}GDd}Aj}{{{b{dGDf}}GDf}Aj}{{{b{dGDh}}GDh}Aj}{{{b{dGDj}}GDj}Aj}{{{b{dGDl}}GDl}Aj}{{{b{dGDn}}GDn}Aj}{{{b{dGE`}}GE`}Aj}````````{c{{Bd{e}}}{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{{{b{c}}}Dh{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{{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}{{GDnGDn}GDn}{{GE`GE`}GE`}````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{b{{h{f}}}}}D`}{{}IOn}","D":"AHCfMOj","p":[[1,"reference"],[0,"mut"],[1,"u8"],[1,"slice"],[1,"u16"],[5,"MAVLinkV1MessageRaw",0,39179],[5,"MAVLinkV2MessageRaw",0,39179],[5,"MavHeader",0,39179],[6,"MavlinkVersion",0,39179],[5,"MavFrame",0,39179],[10,"Clone",39180],[10,"Message",0,39179],[1,"unit"],[1,"str"],[10,"MavConnection",0,39181],[5,"Box",39182],[5,"Error",39183],[6,"Result",39184],[1,"u32"],[17,"Message"],[10,"MessageData",0,39179],[6,"ParserError",27062,39185],[10,"Deserializer",39186],[1,"bool"],[5,"Formatter",39187],[5,"Error",39187],[10,"Debug",39187],[5,"PeekReader",27241,39188],[1,"tuple"],[6,"MessageReadError",27062,39185],[10,"Read",39189],[1,"usize"],[6,"MessageWriteError",27062,39185],[10,"Serializer",39190],[10,"Serialize",39190],[5,"TypeId",39191],[10,"Write",39189],[5,"TuneFormat",158],[5,"EscFailureFlags",158],[5,"UavionixAdsbOutDynamicState",158],[5,"RallyFlags",158],[5,"LimitModule",158],[5,"UavionixAdsbOutRfSelect",158],[5,"AttitudeTargetTypemask",158],[5,"GimbalDeviceCapFlags",158],[5,"MavSysStatusSensor",158],[5,"EstimatorStatusFlags",158],[5,"AdsbFlags",158],[5,"MavProtocolCapability",158],[5,"MavPowerStatus",158],[5,"MavEventCurrentSequenceFlags",158],[5,"HlFailureFlag",158],[5,"CameraCapFlags",158],[5,"GoproHeartbeatFlags",158],[5,"UtmDataAvailFlags",158],[5,"PositionTargetTypemask",158],[5,"GimbalDeviceErrorFlags",158],[5,"MavGeneratorStatusFlag",158],[5,"EkfStatusFlags",158],[5,"MavModeFlag",158],[5,"UavionixAdsbRfHealth",158],[5,"MavWinchStatusFlag",158],[5,"GimbalDeviceFlags",158],[5,"HighresImuUpdatedFlags",158],[5,"GimbalManagerCapFlags",158],[5,"GpsInputIgnoreFlags",158],[5,"SerialControlFlag",158],[5,"AisFlags",158],[5,"HilSensorUpdatedFlags",158],[1,"u64"],[6,"MavMessage",158],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",158],[5,"EKF_STATUS_REPORT_DATA",158],[5,"UAVCAN_NODE_STATUS_DATA",158],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",158],[5,"ATTITUDE_TARGET_DATA",158],[5,"MAG_CAL_PROGRESS_DATA",158],[5,"MEMORY_VECT_DATA",158],[5,"ENCAPSULATED_DATA_DATA",158],[5,"OPEN_DRONE_ID_SELF_ID_DATA",158],[5,"AHRS_DATA",158],[5,"SENSOR_OFFSETS_DATA",158],[5,"PARAM_MAP_RC_DATA",158],[5,"RAW_RPM_DATA",158],[5,"AHRS2_DATA",158],[5,"UAVIONIX_ADSB_OUT_CFG_DATA",158],[5,"PARAM_REQUEST_LIST_DATA",158],[5,"AHRS3_DATA",158],[5,"MOUNT_CONTROL_DATA",158],[5,"CONTROL_SYSTEM_STATE_DATA",158],[5,"COMPONENT_METADATA_DATA",158],[5,"EVENT_DATA",158],[5,"PROTOCOL_VERSION_DATA",158],[5,"FENCE_STATUS_DATA",158],[5,"GPS_INJECT_DATA_DATA",158],[5,"SIM_STATE_DATA",158],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",158],[5,"EFI_STATUS_DATA",158],[5,"BUTTON_CHANGE_DATA",158],[5,"ALTITUDE_DATA",158],[5,"HWSTATUS_DATA",158],[5,"LOGGING_ACK_DATA",158],[5,"MISSION_COUNT_DATA",158],[5,"CAMERA_IMAGE_CAPTURED_DATA",158],[5,"VISION_SPEED_ESTIMATE_DATA",158],[5,"VISION_POSITION_DELTA_DATA",158],[5,"ESC_TELEMETRY_9_TO_12_DATA",158],[5,"FENCE_FETCH_POINT_DATA",158],[5,"AIRSPEED_AUTOCAL_DATA",158],[5,"HIL_SENSOR_DATA",158],[5,"HIGH_LATENCY_DATA",158],[5,"ATT_POS_MOCAP_DATA",158],[5,"SMART_BATTERY_INFO_DATA",158],[5,"CUBEPILOT_FIRMWARE_UPDATE_START_DATA",158],[5,"ODOMETRY_DATA",158],[5,"VFR_HUD_DATA",158],[5,"WINCH_STATUS_DATA",158],[5,"OPEN_DRONE_ID_SYSTEM_DATA",158],[5,"AOA_SSA_DATA",158],[5,"SET_MODE_DATA",158],[5,"HEARTBEAT_DATA",158],[5,"CAN_FRAME_DATA",158],[5,"RAW_PRESSURE_DATA",158],[5,"NAMED_VALUE_FLOAT_DATA",158],[5,"RC_CHANNELS_SCALED_DATA",158],[5,"MCU_STATUS_DATA",158],[5,"GIMBAL_DEVICE_INFORMATION_DATA",158],[5,"WIND_DATA",158],[5,"VICON_POSITION_ESTIMATE_DATA",158],[5,"CELLULAR_STATUS_DATA",158],[5,"FLIGHT_INFORMATION_DATA",158],[5,"MISSION_REQUEST_INT_DATA",158],[5,"HERELINK_TELEM_DATA",158],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",158],[5,"LOCAL_POSITION_NED_COV_DATA",158],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",158],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",158],[5,"DATA64_DATA",158],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",158],[5,"MOUNT_STATUS_DATA",158],[5,"MISSION_ITEM_INT_DATA",158],[5,"MEMINFO_DATA",158],[5,"LOGGING_DATA_DATA",158],[5,"SCALED_IMU_DATA",158],[5,"MANUAL_CONTROL_DATA",158],[5,"CAMERA_FOV_STATUS_DATA",158],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",158],[5,"PID_TUNING_DATA",158],[5,"HERELINK_VIDEO_STREAM_INFORMATION_DATA",158],[5,"GPS_GLOBAL_ORIGIN_DATA",158],[5,"OBSTACLE_DISTANCE_3D_DATA",158],[5,"PARAM_EXT_VALUE_DATA",158],[5,"LANDING_TARGET_DATA",158],[5,"LOG_ERASE_DATA",158],[5,"SCALED_PRESSURE2_DATA",158],[5,"SYSTEM_TIME_DATA",158],[5,"GIMBAL_MANAGER_INFORMATION_DATA",158],[5,"VIDEO_STREAM_STATUS_DATA",158],[5,"DEBUG_VECT_DATA",158],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",158],[5,"TUNNEL_DATA",158],[5,"SYS_STATUS_DATA",158],[5,"RC_CHANNELS_RAW_DATA",158],[5,"OSD_PARAM_SHOW_CONFIG_REPLY_DATA",158],[5,"RC_CHANNELS_OVERRIDE_DATA",158],[5,"LOG_REQUEST_DATA_DATA",158],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",158],[5,"UAVCAN_NODE_INFO_DATA",158],[5,"HIL_ACTUATOR_CONTROLS_DATA",158],[5,"DIGICAM_CONTROL_DATA",158],[5,"GIMBAL_REPORT_DATA",158],[5,"CAMERA_SETTINGS_DATA",158],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",158],[5,"LOG_REQUEST_END_DATA",158],[5,"WIND_COV_DATA",158],[5,"LOG_REQUEST_LIST_DATA",158],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",158],[5,"SCALED_PRESSURE_DATA",158],[5,"NAV_CONTROLLER_OUTPUT_DATA",158],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",158],[5,"GOPRO_GET_REQUEST_DATA",158],[5,"RPM_DATA",158],[5,"MOUNT_CONFIGURE_DATA",158],[5,"HYGROMETER_SENSOR_DATA",158],[5,"GPS_RAW_INT_DATA",158],[5,"DATA_STREAM_DATA",158],[5,"CURRENT_EVENT_SEQUENCE_DATA",158],[5,"HIL_OPTICAL_FLOW_DATA",158],[5,"RANGEFINDER_DATA",158],[5,"SIMSTATE_DATA",158],[5,"ESTIMATOR_STATUS_DATA",158],[5,"SETUP_SIGNING_DATA",158],[5,"PLAY_TUNE_V2_DATA",158],[5,"GIMBAL_CONTROL_DATA",158],[5,"AUTOPILOT_VERSION_DATA",158],[5,"ATTITUDE_QUATERNION_COV_DATA",158],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",158],[5,"SUPPORTED_TUNES_DATA",158],[5,"REMOTE_LOG_BLOCK_STATUS_DATA",158],[5,"REMOTE_LOG_DATA_BLOCK_DATA",158],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",158],[5,"COLLISION_DATA",158],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",158],[5,"RALLY_POINT_DATA",158],[5,"PARAM_EXT_ACK_DATA",158],[5,"ESC_STATUS_DATA",158],[5,"ISBD_LINK_STATUS_DATA",158],[5,"GOPRO_GET_RESPONSE_DATA",158],[5,"EXTENDED_SYS_STATE_DATA",158],[5,"LOCAL_POSITION_NED_DATA",158],[5,"CELLULAR_CONFIG_DATA",158],[5,"TIMESYNC_DATA",158],[5,"VISION_POSITION_ESTIMATE_DATA",158],[5,"LIMITS_STATUS_DATA",158],[5,"CANFD_FRAME_DATA",158],[5,"ADSB_VEHICLE_DATA",158],[5,"MISSION_CLEAR_ALL_DATA",158],[5,"HOME_POSITION_DATA",158],[5,"SERVO_OUTPUT_RAW_DATA",158],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",158],[5,"DATA96_DATA",158],[5,"GPS_RTK_DATA",158],[5,"BATTERY2_DATA",158],[5,"TERRAIN_CHECK_DATA",158],[5,"GPS_STATUS_DATA",158],[5,"ONBOARD_COMPUTER_STATUS_DATA",158],[5,"VIBRATION_DATA",158],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",158],[5,"MAG_CAL_REPORT_DATA",158],[5,"MISSION_REQUEST_DATA",158],[5,"HIL_STATE_DATA",158],[5,"HIL_STATE_QUATERNION_DATA",158],[5,"CAN_FILTER_MODIFY_DATA",158],[5,"OBSTACLE_DISTANCE_DATA",158],[5,"LOG_DATA_DATA",158],[5,"DEEPSTALL_DATA",158],[5,"SERIAL_CONTROL_DATA",158],[5,"SAFETY_SET_ALLOWED_AREA_DATA",158],[5,"HIL_CONTROLS_DATA",158],[5,"POWER_STATUS_DATA",158],[5,"PING_DATA",158],[5,"SCALED_IMU2_DATA",158],[5,"MISSION_ITEM_REACHED_DATA",158],[5,"OSD_PARAM_CONFIG_REPLY_DATA",158],[5,"PARAM_EXT_REQUEST_READ_DATA",158],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",158],[5,"ATTITUDE_DATA",158],[5,"RADIO_DATA",158],[5,"PARAM_EXT_SET_DATA",158],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",158],[5,"WIFI_CONFIG_AP_DATA",158],[5,"OPTICAL_FLOW_RAD_DATA",158],[5,"RESPONSE_EVENT_ERROR_DATA",158],[5,"LED_CONTROL_DATA",158],[5,"NAMED_VALUE_INT_DATA",158],[5,"DISTANCE_SENSOR_DATA",158],[5,"SAFETY_ALLOWED_AREA_DATA",158],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",158],[5,"RAW_IMU_DATA",158],[5,"DATA16_DATA",158],[5,"GIMBAL_TORQUE_CMD_REPORT_DATA",158],[5,"RESOURCE_REQUEST_DATA",158],[5,"DEBUG_FLOAT_ARRAY_DATA",158],[5,"ICAROUS_KINEMATIC_BANDS_DATA",158],[5,"OPEN_DRONE_ID_LOCATION_DATA",158],[5,"WATER_DEPTH_DATA",158],[5,"DEVICE_OP_READ_REPLY_DATA",158],[5,"TIME_ESTIMATE_TO_TARGET_DATA",158],[5,"GENERATOR_STATUS_DATA",158],[5,"GOPRO_SET_RESPONSE_DATA",158],[5,"CHANGE_OPERATOR_CONTROL_DATA",158],[5,"COMMAND_ACK_DATA",158],[5,"REQUEST_EVENT_DATA",158],[5,"GPS2_RAW_DATA",158],[5,"TERRAIN_REPORT_DATA",158],[5,"OPTICAL_FLOW_DATA",158],[5,"ICAROUS_HEARTBEAT_DATA",158],[5,"POSITION_TARGET_LOCAL_NED_DATA",158],[5,"DEVICE_OP_WRITE_REPLY_DATA",158],[5,"CAMERA_STATUS_DATA",158],[5,"DEVICE_OP_WRITE_DATA",158],[5,"MISSION_REQUEST_LIST_DATA",158],[5,"COMMAND_LONG_DATA",158],[5,"LOG_ENTRY_DATA",158],[5,"MOUNT_ORIENTATION_DATA",158],[5,"ESC_TELEMETRY_5_TO_8_DATA",158],[5,"UAVIONIX_ADSB_OUT_DYNAMIC_DATA",158],[5,"SET_MAG_OFFSETS_DATA",158],[5,"AIS_VESSEL_DATA",158],[5,"STATUSTEXT_DATA",158],[5,"CUBEPILOT_RAW_RC_DATA",158],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",158],[5,"HIL_GPS_DATA",158],[5,"SET_ATTITUDE_TARGET_DATA",158],[5,"ORBIT_EXECUTION_STATUS_DATA",158],[5,"ACTUATOR_CONTROL_TARGET_DATA",158],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",158],[5,"GPS2_RTK_DATA",158],[5,"MESSAGE_INTERVAL_DATA",158],[5,"ESC_INFO_DATA",158],[5,"MISSION_ITEM_DATA",158],[5,"TERRAIN_REQUEST_DATA",158],[5,"PARAM_VALUE_DATA",158],[5,"MISSION_CURRENT_DATA",158],[5,"BATTERY_STATUS_DATA",158],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",158],[5,"COMMAND_CANCEL_DATA",158],[5,"DEVICE_OP_READ_DATA",158],[5,"GOPRO_HEARTBEAT_DATA",158],[5,"RC_CHANNELS_DATA",158],[5,"AP_ADC_DATA",158],[5,"PARAM_EXT_REQUEST_LIST_DATA",158],[5,"GLOBAL_POSITION_INT_DATA",158],[5,"PARAM_REQUEST_READ_DATA",158],[5,"FILE_TRANSFER_PROTOCOL_DATA",158],[5,"VIDEO_STREAM_INFORMATION_DATA",158],[5,"SET_HOME_POSITION_DATA",158],[5,"AUTOPILOT_VERSION_REQUEST_DATA",158],[5,"COMMAND_INT_DATA",158],[5,"FOLLOW_TARGET_DATA",158],[5,"LOGGING_DATA_ACKED_DATA",158],[5,"HIGH_LATENCY2_DATA",158],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",158],[5,"COMPASSMOT_STATUS_DATA",158],[5,"RALLY_FETCH_POINT_DATA",158],[5,"HIL_RC_INPUTS_RAW_DATA",158],[5,"TERRAIN_DATA_DATA",158],[5,"DIGICAM_CONFIGURE_DATA",158],[5,"MANUAL_SETPOINT_DATA",158],[5,"OSD_PARAM_CONFIG_DATA",158],[5,"LINK_NODE_STATUS_DATA",158],[5,"ESC_TELEMETRY_1_TO_4_DATA",158],[5,"V2_EXTENSION_DATA",158],[5,"MISSION_SET_CURRENT_DATA",158],[5,"GOPRO_SET_REQUEST_DATA",158],[5,"REQUEST_DATA_STREAM_DATA",158],[5,"SCALED_PRESSURE3_DATA",158],[5,"STORAGE_INFORMATION_DATA",158],[5,"POSITION_TARGET_GLOBAL_INT_DATA",158],[5,"CAMERA_CAPTURE_STATUS_DATA",158],[5,"SCALED_IMU3_DATA",158],[5,"PLAY_TUNE_DATA",158],[5,"MISSION_ACK_DATA",158],[5,"ACTUATOR_OUTPUT_STATUS_DATA",158],[5,"UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA",158],[5,"COMPONENT_INFORMATION_DATA",158],[5,"GPS_RTCM_DATA_DATA",158],[5,"DATA32_DATA",158],[5,"ATTITUDE_QUATERNION_DATA",158],[5,"HIGHRES_IMU_DATA",158],[5,"GIMBAL_MANAGER_STATUS_DATA",158],[5,"UTM_GLOBAL_POSITION_DATA",158],[5,"OSD_PARAM_SHOW_CONFIG_DATA",158],[5,"ADAP_TUNING_DATA",158],[5,"FENCE_POINT_DATA",158],[5,"DEBUG_DATA",158],[5,"RADIO_STATUS_DATA",158],[5,"CAMERA_INFORMATION_DATA",158],[5,"CAMERA_TRIGGER_DATA",158],[5,"CAMERA_FEEDBACK_DATA",158],[5,"CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA",158],[5,"GLOBAL_POSITION_INT_COV_DATA",158],[5,"GPS_INPUT_DATA",158],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",158],[5,"AUTH_KEY_DATA",158],[5,"WHEEL_DISTANCE_DATA",158],[5,"PARAM_SET_DATA",158],[6,"FenceBreach",158],[6,"EscConnectionType",158],[6,"MavCmd",158],[6,"SetFocusType",158],[6,"RcType",158],[6,"MavVtolState",158],[6,"MavOdidSpeedAcc",158],[6,"CellularConfigResponse",158],[6,"ActuatorConfiguration",158],[6,"DeviceOpBustype",158],[6,"CopterMode",158],[6,"UavionixAdsbEmergencyStatus",158],[6,"MavBatteryMode",158],[6,"MavOdidHorAcc",158],[6,"MavModeFlagDecodePosition",158],[6,"RoverMode",158],[6,"CanFilterOp",158],[6,"PlaneMode",158],[6,"DeepstallStage",158],[6,"MavRemoteLogDataBlockStatuses",158],[6,"MavRemoteLogDataBlockCommands",158],[6,"LedControlPattern",158],[6,"GoproVideoSettingsFlags",158],[6,"GoproProtuneGain",158],[6,"MavState",158],[6,"LimitsState",158],[6,"MavOdidDescType",158],[6,"CameraTrackingTargetData",158],[6,"MavOdidCategoryEu",158],[6,"GimbalAxis",158],[6,"GoproPhotoResolution",158],[6,"MavFtpOpcode",158],[6,"CellularStatusFlag",158],[6,"MavDoRepositionFlags",158],[6,"CompMetadataType",158],[6,"MavMode",158],[6,"StorageUsageFlag",158],[6,"ActuatorOutputFunction",158],[6,"MavFrame",158],[6,"MavLandedState",158],[6,"RtkBaselineCoordinateSystem",158],[6,"MotorTestOrder",158],[6,"MavAutopilot",158],[6,"MavSysStatusSensorExtended",158],[6,"FirmwareVersionType",158],[6,"AutotuneAxis",158],[6,"FailureType",158],[6,"MavOdidClassEu",158],[6,"MavOdidHeightRef",158],[6,"MavCmdAck",158],[6,"IcarousTrackBandTypes",158],[6,"IcarousFmsState",158],[6,"GripperActions",158],[6,"OrbitYawBehaviour",158],[6,"CameraZoomType",158],[6,"FailureUnit",158],[6,"FenceAction",158],[6,"MavEventErrorReason",158],[6,"GoproCaptureMode",158],[6,"MavOdidOperatorLocationType",158],[6,"FenceMitigate",158],[6,"MotorTestThrottleType",158],[6,"MavType",158],[6,"MissionState",158],[6,"AdsbAltitudeType",158],[6,"UtmFlightState",158],[6,"StorageStatus",158],[6,"OsdParamConfigError",158],[6,"HeadingType",158],[6,"MavMissionResult",158],[6,"ParamAck",158],[6,"GimbalAxisCalibrationRequired",158],[6,"CellularNetworkFailedReason",158],[6,"CameraStatusTypes",158],[6,"MavOdidVerAcc",158],[6,"GoproHeartbeatStatus",158],[6,"MavOdidAuthType",158],[6,"GimbalManagerFlags",158],[6,"SpeedType",158],[6,"AccelcalVehiclePos",158],[6,"MavBatteryFunction",158],[6,"MavCollisionThreatLevel",158],[6,"MavDistanceSensor",158],[6,"MavParamExtType",158],[6,"MagCalStatus",158],[6,"MavBatteryChargeState",158],[6,"CameraMode",158],[6,"GoproFrameRate",158],[6,"GoproCommand",158],[6,"StorageType",158],[6,"UavcanNodeMode",158],[6,"GoproFieldOfView",158],[6,"MavComponent",158],[6,"VtolTransitionHeading",158],[6,"MavOdidTimeAcc",158],[6,"MavBatteryType",158],[6,"MavMountMode",158],[6,"MavOdidClassificationType",158],[6,"GpsFixType",158],[6,"GoproProtuneColour",158],[6,"PrecisionLandMode",158],[6,"SubMode",158],[6,"GoproProtuneWhiteBalance",158],[6,"MavSensorOrientation",158],[6,"MavOdidUaType",158],[6,"LandingTargetType",158],[6,"MavParamType",158],[6,"UavcanNodeHealth",158],[6,"WifiConfigApResponse",158],[6,"ParachuteAction",158],[6,"OsdParamConfigType",158],[6,"PreflightStorageMissionAction",158],[6,"MavCollisionSrc",158],[6,"MavBatteryFault",158],[6,"SerialControlDev",158],[6,"GoproCharging",158],[6,"GimbalAxisCalibrationStatus",158],[6,"WifiConfigApMode",158],[6,"MavOdidIdType",158],[6,"AisNavStatus",158],[6,"MavResult",158],[6,"MavOdidOperatorIdType",158],[6,"AisType",158],[6,"UavionixAdsbOutCfgGpsOffsetLon",158],[6,"WinchActions",158],[6,"MavFtpErr",158],[6,"UavionixAdsbOutDynamicGpsFix",158],[6,"MavDataStream",158],[6,"CameraTrackingStatusFlags",158],[6,"NavVtolLandOptions",158],[6,"MavArmAuthDeniedReason",158],[6,"MavCollisionAction",158],[6,"CameraTrackingMode",158],[6,"MavRoi",158],[6,"VideoStreamStatusFlags",158],[6,"ScriptingCmd",158],[6,"GoproProtuneSharpness",158],[6,"GoproBurstRate",158],[6,"CameraFeedbackFlags",158],[6,"AdsbEmitterType",158],[6,"MavMissionType",158],[6,"GoproModel",158],[6,"GoproProtuneExposure",158],[6,"UavionixAdsbOutCfgAircraftSize",158],[6,"MavOdidStatus",158],[6,"MavModeGimbal",158],[6,"MavCmdDoAuxFunctionSwitchLevel",158],[6,"GoproResolution",158],[6,"MavGoto",158],[6,"MavlinkDataStreamType",158],[6,"PidTuningAxis",158],[6,"VideoStreamType",158],[6,"GoproRequestStatus",158],[6,"UavionixAdsbOutCfgGpsOffsetLat",158],[6,"MavTunnelPayloadType",158],[6,"MavSeverity",158],[6,"MavOdidArmStatus",158],[6,"TrackerMode",158],[6,"CellularNetworkRadioType",158],[6,"MavEstimatorType",158],[6,"PreflightStorageParameterAction",158],[6,"Ordering",39192],[17,"Item"],[10,"IntoIterator",39193],[8,"Result",39187],[6,"Option",39194],[1,"i64"],[10,"Hasher",39195],[5,"Bytes",15500,39196],[1,"array"],[1,"f32"],[1,"f64"],[1,"i16"],[1,"i32"],[1,"i8"],[5,"BytesMut",15524,39197],[5,"MavPowerStatus",15549],[5,"TuneFormat",15549],[5,"AisFlags",15549],[5,"MavWinchStatusFlag",15549],[5,"GimbalDeviceFlags",15549],[5,"GpsInputIgnoreFlags",15549],[5,"SerialControlFlag",15549],[5,"MavEventCurrentSequenceFlags",15549],[5,"EstimatorStatusFlags",15549],[5,"UtmDataAvailFlags",15549],[5,"MavProtocolCapability",15549],[5,"MavSysStatusSensor",15549],[5,"MavGeneratorStatusFlag",15549],[5,"PositionTargetTypemask",15549],[5,"EscFailureFlags",15549],[5,"MavModeFlag",15549],[5,"GimbalManagerCapFlags",15549],[5,"AttitudeTargetTypemask",15549],[5,"CameraCapFlags",15549],[5,"HighresImuUpdatedFlags",15549],[5,"GimbalDeviceErrorFlags",15549],[5,"HlFailureFlag",15549],[5,"GimbalDeviceCapFlags",15549],[5,"HilSensorUpdatedFlags",15549],[5,"AdsbFlags",15549],[6,"MavMessage",15549],[5,"FLIGHT_INFORMATION_DATA",15549],[5,"ESTIMATOR_STATUS_DATA",15549],[5,"COMMAND_INT_DATA",15549],[5,"PROTOCOL_VERSION_DATA",15549],[5,"PING_DATA",15549],[5,"SAFETY_SET_ALLOWED_AREA_DATA",15549],[5,"GPS_RTK_DATA",15549],[5,"GPS_RAW_INT_DATA",15549],[5,"VISION_POSITION_ESTIMATE_DATA",15549],[5,"LOG_REQUEST_LIST_DATA",15549],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",15549],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",15549],[5,"GPS_INPUT_DATA",15549],[5,"GIMBAL_MANAGER_STATUS_DATA",15549],[5,"CONTROL_SYSTEM_STATE_DATA",15549],[5,"ODOMETRY_DATA",15549],[5,"CAMERA_FOV_STATUS_DATA",15549],[5,"ALTITUDE_DATA",15549],[5,"MAG_CAL_REPORT_DATA",15549],[5,"MISSION_ITEM_INT_DATA",15549],[5,"CHANGE_OPERATOR_CONTROL_DATA",15549],[5,"ORBIT_EXECUTION_STATUS_DATA",15549],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",15549],[5,"CAN_FILTER_MODIFY_DATA",15549],[5,"GPS_INJECT_DATA_DATA",15549],[5,"GENERATOR_STATUS_DATA",15549],[5,"UAVCAN_NODE_INFO_DATA",15549],[5,"MOUNT_ORIENTATION_DATA",15549],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",15549],[5,"COLLISION_DATA",15549],[5,"REQUEST_EVENT_DATA",15549],[5,"EXTENDED_SYS_STATE_DATA",15549],[5,"HIL_ACTUATOR_CONTROLS_DATA",15549],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",15549],[5,"SET_HOME_POSITION_DATA",15549],[5,"HIL_OPTICAL_FLOW_DATA",15549],[5,"MISSION_CURRENT_DATA",15549],[5,"CELLULAR_CONFIG_DATA",15549],[5,"VIDEO_STREAM_INFORMATION_DATA",15549],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",15549],[5,"GPS_STATUS_DATA",15549],[5,"CAMERA_SETTINGS_DATA",15549],[5,"HIL_GPS_DATA",15549],[5,"HEARTBEAT_DATA",15549],[5,"SCALED_IMU2_DATA",15549],[5,"LANDING_TARGET_DATA",15549],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",15549],[5,"SERVO_OUTPUT_RAW_DATA",15549],[5,"SMART_BATTERY_INFO_DATA",15549],[5,"PARAM_REQUEST_LIST_DATA",15549],[5,"NAMED_VALUE_INT_DATA",15549],[5,"ENCAPSULATED_DATA_DATA",15549],[5,"PARAM_VALUE_DATA",15549],[5,"ISBD_LINK_STATUS_DATA",15549],[5,"ACTUATOR_OUTPUT_STATUS_DATA",15549],[5,"MISSION_CLEAR_ALL_DATA",15549],[5,"OPEN_DRONE_ID_SELF_ID_DATA",15549],[5,"DEBUG_FLOAT_ARRAY_DATA",15549],[5,"MISSION_REQUEST_INT_DATA",15549],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",15549],[5,"SET_ATTITUDE_TARGET_DATA",15549],[5,"SCALED_PRESSURE2_DATA",15549],[5,"LOG_ERASE_DATA",15549],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",15549],[5,"AUTH_KEY_DATA",15549],[5,"OPEN_DRONE_ID_LOCATION_DATA",15549],[5,"OPEN_DRONE_ID_SYSTEM_DATA",15549],[5,"MANUAL_SETPOINT_DATA",15549],[5,"RESPONSE_EVENT_ERROR_DATA",15549],[5,"EVENT_DATA",15549],[5,"DISTANCE_SENSOR_DATA",15549],[5,"RAW_RPM_DATA",15549],[5,"WHEEL_DISTANCE_DATA",15549],[5,"CAN_FRAME_DATA",15549],[5,"CANFD_FRAME_DATA",15549],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",15549],[5,"WIND_COV_DATA",15549],[5,"LOG_REQUEST_END_DATA",15549],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",15549],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",15549],[5,"COMMAND_ACK_DATA",15549],[5,"DATA_STREAM_DATA",15549],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",15549],[5,"LOG_DATA_DATA",15549],[5,"LOGGING_DATA_DATA",15549],[5,"RC_CHANNELS_SCALED_DATA",15549],[5,"GPS_RTCM_DATA_DATA",15549],[5,"ESC_INFO_DATA",15549],[5,"OPTICAL_FLOW_RAD_DATA",15549],[5,"MESSAGE_INTERVAL_DATA",15549],[5,"HIL_STATE_DATA",15549],[5,"FENCE_STATUS_DATA",15549],[5,"LOG_REQUEST_DATA_DATA",15549],[5,"VFR_HUD_DATA",15549],[5,"MISSION_REQUEST_DATA",15549],[5,"ACTUATOR_CONTROL_TARGET_DATA",15549],[5,"REQUEST_DATA_STREAM_DATA",15549],[5,"MISSION_REQUEST_LIST_DATA",15549],[5,"LINK_NODE_STATUS_DATA",15549],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",15549],[5,"TERRAIN_REPORT_DATA",15549],[5,"FILE_TRANSFER_PROTOCOL_DATA",15549],[5,"GPS_GLOBAL_ORIGIN_DATA",15549],[5,"MISSION_ITEM_DATA",15549],[5,"POSITION_TARGET_GLOBAL_INT_DATA",15549],[5,"BATTERY_STATUS_DATA",15549],[5,"NAMED_VALUE_FLOAT_DATA",15549],[5,"AUTOPILOT_VERSION_DATA",15549],[5,"PARAM_EXT_ACK_DATA",15549],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",15549],[5,"PLAY_TUNE_DATA",15549],[5,"ATTITUDE_QUATERNION_COV_DATA",15549],[5,"SET_MODE_DATA",15549],[5,"ADSB_VEHICLE_DATA",15549],[5,"LOCAL_POSITION_NED_COV_DATA",15549],[5,"HIL_RC_INPUTS_RAW_DATA",15549],[5,"ATT_POS_MOCAP_DATA",15549],[5,"ESC_STATUS_DATA",15549],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",15549],[5,"COMMAND_LONG_DATA",15549],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",15549],[5,"SIM_STATE_DATA",15549],[5,"VISION_SPEED_ESTIMATE_DATA",15549],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",15549],[5,"PLAY_TUNE_V2_DATA",15549],[5,"PARAM_SET_DATA",15549],[5,"RC_CHANNELS_OVERRIDE_DATA",15549],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",15549],[5,"DEBUG_DATA",15549],[5,"POSITION_TARGET_LOCAL_NED_DATA",15549],[5,"RAW_PRESSURE_DATA",15549],[5,"MEMORY_VECT_DATA",15549],[5,"HOME_POSITION_DATA",15549],[5,"SCALED_PRESSURE_DATA",15549],[5,"CAMERA_TRIGGER_DATA",15549],[5,"MANUAL_CONTROL_DATA",15549],[5,"HIGH_LATENCY2_DATA",15549],[5,"SUPPORTED_TUNES_DATA",15549],[5,"AIS_VESSEL_DATA",15549],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",15549],[5,"PARAM_EXT_REQUEST_READ_DATA",15549],[5,"CAMERA_IMAGE_CAPTURED_DATA",15549],[5,"RADIO_STATUS_DATA",15549],[5,"ATTITUDE_TARGET_DATA",15549],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",15549],[5,"SETUP_SIGNING_DATA",15549],[5,"DEBUG_VECT_DATA",15549],[5,"GLOBAL_POSITION_INT_DATA",15549],[5,"PARAM_EXT_SET_DATA",15549],[5,"PARAM_EXT_VALUE_DATA",15549],[5,"VIDEO_STREAM_STATUS_DATA",15549],[5,"SYS_STATUS_DATA",15549],[5,"VIBRATION_DATA",15549],[5,"CAMERA_CAPTURE_STATUS_DATA",15549],[5,"GPS2_RAW_DATA",15549],[5,"V2_EXTENSION_DATA",15549],[5,"ATTITUDE_DATA",15549],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",15549],[5,"MISSION_ACK_DATA",15549],[5,"TUNNEL_DATA",15549],[5,"HIGH_LATENCY_DATA",15549],[5,"HIL_STATE_QUATERNION_DATA",15549],[5,"MISSION_ITEM_REACHED_DATA",15549],[5,"MISSION_SET_CURRENT_DATA",15549],[5,"SCALED_IMU_DATA",15549],[5,"CELLULAR_STATUS_DATA",15549],[5,"WIFI_CONFIG_AP_DATA",15549],[5,"EFI_STATUS_DATA",15549],[5,"COMPONENT_INFORMATION_DATA",15549],[5,"TERRAIN_CHECK_DATA",15549],[5,"TERRAIN_DATA_DATA",15549],[5,"SAFETY_ALLOWED_AREA_DATA",15549],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",15549],[5,"ONBOARD_COMPUTER_STATUS_DATA",15549],[5,"GLOBAL_POSITION_INT_COV_DATA",15549],[5,"UAVCAN_NODE_STATUS_DATA",15549],[5,"OBSTACLE_DISTANCE_DATA",15549],[5,"HIL_SENSOR_DATA",15549],[5,"RAW_IMU_DATA",15549],[5,"PARAM_REQUEST_READ_DATA",15549],[5,"HYGROMETER_SENSOR_DATA",15549],[5,"LOGGING_DATA_ACKED_DATA",15549],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",15549],[5,"COMPONENT_METADATA_DATA",15549],[5,"ATTITUDE_QUATERNION_DATA",15549],[5,"COMMAND_CANCEL_DATA",15549],[5,"WINCH_STATUS_DATA",15549],[5,"NAV_CONTROLLER_OUTPUT_DATA",15549],[5,"UTM_GLOBAL_POSITION_DATA",15549],[5,"HIL_CONTROLS_DATA",15549],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",15549],[5,"RESOURCE_REQUEST_DATA",15549],[5,"RC_CHANNELS_DATA",15549],[5,"VICON_POSITION_ESTIMATE_DATA",15549],[5,"MISSION_COUNT_DATA",15549],[5,"LOG_ENTRY_DATA",15549],[5,"RC_CHANNELS_RAW_DATA",15549],[5,"SERIAL_CONTROL_DATA",15549],[5,"FOLLOW_TARGET_DATA",15549],[5,"OPTICAL_FLOW_DATA",15549],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",15549],[5,"CURRENT_EVENT_SEQUENCE_DATA",15549],[5,"TIME_ESTIMATE_TO_TARGET_DATA",15549],[5,"STORAGE_INFORMATION_DATA",15549],[5,"TERRAIN_REQUEST_DATA",15549],[5,"SCALED_IMU3_DATA",15549],[5,"PARAM_EXT_REQUEST_LIST_DATA",15549],[5,"SCALED_PRESSURE3_DATA",15549],[5,"LOCAL_POSITION_NED_DATA",15549],[5,"HIGHRES_IMU_DATA",15549],[5,"SYSTEM_TIME_DATA",15549],[5,"PARAM_MAP_RC_DATA",15549],[5,"CAMERA_INFORMATION_DATA",15549],[5,"GIMBAL_DEVICE_INFORMATION_DATA",15549],[5,"POWER_STATUS_DATA",15549],[5,"GIMBAL_MANAGER_INFORMATION_DATA",15549],[5,"TIMESYNC_DATA",15549],[5,"LOGGING_ACK_DATA",15549],[5,"BUTTON_CHANGE_DATA",15549],[5,"STATUSTEXT_DATA",15549],[5,"GPS2_RTK_DATA",15549],[6,"MavTunnelPayloadType",15549],[6,"MagCalStatus",15549],[6,"CameraMode",15549],[6,"MissionState",15549],[6,"PrecisionLandMode",15549],[6,"SetFocusType",15549],[6,"MavResult",15549],[6,"FenceBreach",15549],[6,"MavDistanceSensor",15549],[6,"MavlinkDataStreamType",15549],[6,"MavOdidCategoryEu",15549],[6,"MavModeFlagDecodePosition",15549],[6,"MavState",15549],[6,"MavSysStatusSensorExtended",15549],[6,"MavOdidHeightRef",15549],[6,"MavFrame",15549],[6,"MavBatteryFunction",15549],[6,"MavRoi",15549],[6,"AisNavStatus",15549],[6,"CellularNetworkFailedReason",15549],[6,"MavMissionResult",15549],[6,"MavVtolState",15549],[6,"WifiConfigApResponse",15549],[6,"StorageUsageFlag",15549],[6,"MavMissionType",15549],[6,"GripperActions",15549],[6,"PreflightStorageParameterAction",15549],[6,"MavOdidStatus",15549],[6,"MotorTestThrottleType",15549],[6,"ParachuteAction",15549],[6,"MavAutopilot",15549],[6,"MavOdidHorAcc",15549],[6,"FailureType",15549],[6,"UtmFlightState",15549],[6,"VideoStreamStatusFlags",15549],[6,"OrbitYawBehaviour",15549],[6,"WifiConfigApMode",15549],[6,"MavMode",15549],[6,"MavCollisionThreatLevel",15549],[6,"FenceMitigate",15549],[6,"MavOdidOperatorLocationType",15549],[6,"AdsbEmitterType",15549],[6,"MavOdidTimeAcc",15549],[6,"FenceAction",15549],[6,"ActuatorConfiguration",15549],[6,"AisType",15549],[6,"MavOdidAuthType",15549],[6,"MavEventErrorReason",15549],[6,"CameraTrackingStatusFlags",15549],[6,"EscConnectionType",15549],[6,"MavCmdAck",15549],[6,"MavLandedState",15549],[6,"CameraTrackingMode",15549],[6,"MotorTestOrder",15549],[6,"ActuatorOutputFunction",15549],[6,"FailureUnit",15549],[6,"RcType",15549],[6,"GpsFixType",15549],[6,"MavParamType",15549],[6,"UavcanNodeMode",15549],[6,"GimbalManagerFlags",15549],[6,"MavParamExtType",15549],[6,"PreflightStorageMissionAction",15549],[6,"MavFtpOpcode",15549],[6,"AdsbAltitudeType",15549],[6,"ParamAck",15549],[6,"CanFilterOp",15549],[6,"MavDataStream",15549],[6,"UavcanNodeHealth",15549],[6,"CameraZoomType",15549],[6,"CellularStatusFlag",15549],[6,"VideoStreamType",15549],[6,"MavCollisionAction",15549],[6,"MavMountMode",15549],[6,"NavVtolLandOptions",15549],[6,"MavOdidClassificationType",15549],[6,"MavOdidIdType",15549],[6,"MavComponent",15549],[6,"RtkBaselineCoordinateSystem",15549],[6,"WinchActions",15549],[6,"MavOdidClassEu",15549],[6,"CompMetadataType",15549],[6,"MavBatteryFault",15549],[6,"StorageStatus",15549],[6,"StorageType",15549],[6,"MavOdidDescType",15549],[6,"SerialControlDev",15549],[6,"MavCmd",15549],[6,"MavEstimatorType",15549],[6,"MavBatteryMode",15549],[6,"CellularConfigResponse",15549],[6,"MavBatteryType",15549],[6,"MavGoto",15549],[6,"MavOdidArmStatus",15549],[6,"MavDoRepositionFlags",15549],[6,"MavBatteryChargeState",15549],[6,"MavSeverity",15549],[6,"MavSensorOrientation",15549],[6,"MavArmAuthDeniedReason",15549],[6,"VtolTransitionHeading",15549],[6,"MavOdidUaType",15549],[6,"AutotuneAxis",15549],[6,"MavOdidOperatorIdType",15549],[6,"MavFtpErr",15549],[6,"MavOdidSpeedAcc",15549],[6,"CellularNetworkRadioType",15549],[6,"MavCollisionSrc",15549],[6,"CameraTrackingTargetData",15549],[6,"LandingTargetType",15549],[6,"MavOdidVerAcc",15549],[6,"FirmwareVersionType",15549],[6,"MavType",15549],[5,"String",39198],[6,"MavMessage",27109],[5,"ICAROUS_KINEMATIC_BANDS_DATA",27109],[5,"ICAROUS_HEARTBEAT_DATA",27109],[6,"IcarousTrackBandTypes",27109],[6,"IcarousFmsState",27109],[5,"EstimatorStatusFlags",27256],[5,"MavPowerStatus",27256],[5,"UavionixAdsbOutRfSelect",27256],[5,"PositionTargetTypemask",27256],[5,"AdsbFlags",27256],[5,"MavSysStatusSensor",27256],[5,"GimbalDeviceCapFlags",27256],[5,"MavProtocolCapability",27256],[5,"GpsInputIgnoreFlags",27256],[5,"MavWinchStatusFlag",27256],[5,"HlFailureFlag",27256],[5,"CameraCapFlags",27256],[5,"GimbalDeviceFlags",27256],[5,"AisFlags",27256],[5,"MavGeneratorStatusFlag",27256],[5,"HilSensorUpdatedFlags",27256],[5,"EscFailureFlags",27256],[5,"UavionixAdsbRfHealth",27256],[5,"MavModeFlag",27256],[5,"HighresImuUpdatedFlags",27256],[5,"SerialControlFlag",27256],[5,"AttitudeTargetTypemask",27256],[5,"TuneFormat",27256],[5,"UtmDataAvailFlags",27256],[5,"GimbalManagerCapFlags",27256],[5,"GimbalDeviceErrorFlags",27256],[5,"UavionixAdsbOutDynamicState",27256],[5,"MavEventCurrentSequenceFlags",27256],[6,"MavMessage",27256],[5,"LOG_DATA_DATA",27256],[5,"REQUEST_EVENT_DATA",27256],[5,"FLIGHT_INFORMATION_DATA",27256],[5,"CAMERA_INFORMATION_DATA",27256],[5,"SCALED_PRESSURE_DATA",27256],[5,"PLAY_TUNE_V2_DATA",27256],[5,"CHANGE_OPERATOR_CONTROL_DATA",27256],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",27256],[5,"SAFETY_ALLOWED_AREA_DATA",27256],[5,"SMART_BATTERY_INFO_DATA",27256],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",27256],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",27256],[5,"ATT_POS_MOCAP_DATA",27256],[5,"MISSION_ITEM_INT_DATA",27256],[5,"WIFI_CONFIG_AP_DATA",27256],[5,"OPEN_DRONE_ID_SELF_ID_DATA",27256],[5,"GPS_RTK_DATA",27256],[5,"GPS_RTCM_DATA_DATA",27256],[5,"GLOBAL_POSITION_INT_COV_DATA",27256],[5,"PROTOCOL_VERSION_DATA",27256],[5,"COMMAND_LONG_DATA",27256],[5,"FILE_TRANSFER_PROTOCOL_DATA",27256],[5,"CAN_FILTER_MODIFY_DATA",27256],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",27256],[5,"COLLISION_DATA",27256],[5,"UAVCAN_NODE_INFO_DATA",27256],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",27256],[5,"GPS2_RTK_DATA",27256],[5,"POSITION_TARGET_LOCAL_NED_DATA",27256],[5,"HYGROMETER_SENSOR_DATA",27256],[5,"OBSTACLE_DISTANCE_DATA",27256],[5,"ORBIT_EXECUTION_STATUS_DATA",27256],[5,"PARAM_VALUE_DATA",27256],[5,"VISION_SPEED_ESTIMATE_DATA",27256],[5,"LOG_ERASE_DATA",27256],[5,"UAVIONIX_ADSB_OUT_DYNAMIC_DATA",27256],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",27256],[5,"STATUSTEXT_DATA",27256],[5,"LOG_ENTRY_DATA",27256],[5,"CAMERA_CAPTURE_STATUS_DATA",27256],[5,"BUTTON_CHANGE_DATA",27256],[5,"GPS_RAW_INT_DATA",27256],[5,"OPEN_DRONE_ID_LOCATION_DATA",27256],[5,"ATTITUDE_QUATERNION_DATA",27256],[5,"PARAM_EXT_ACK_DATA",27256],[5,"AUTH_KEY_DATA",27256],[5,"CELLULAR_CONFIG_DATA",27256],[5,"ESC_INFO_DATA",27256],[5,"LOG_REQUEST_END_DATA",27256],[5,"GPS2_RAW_DATA",27256],[5,"CAMERA_TRIGGER_DATA",27256],[5,"LOG_REQUEST_DATA_DATA",27256],[5,"ESC_STATUS_DATA",27256],[5,"HIL_CONTROLS_DATA",27256],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",27256],[5,"DEBUG_FLOAT_ARRAY_DATA",27256],[5,"COMMAND_ACK_DATA",27256],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",27256],[5,"COMPONENT_METADATA_DATA",27256],[5,"LOGGING_DATA_ACKED_DATA",27256],[5,"LINK_NODE_STATUS_DATA",27256],[5,"PARAM_REQUEST_READ_DATA",27256],[5,"MISSION_ACK_DATA",27256],[5,"SCALED_IMU_DATA",27256],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",27256],[5,"ESTIMATOR_STATUS_DATA",27256],[5,"GIMBAL_MANAGER_INFORMATION_DATA",27256],[5,"ISBD_LINK_STATUS_DATA",27256],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",27256],[5,"ACTUATOR_CONTROL_TARGET_DATA",27256],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",27256],[5,"PARAM_EXT_REQUEST_LIST_DATA",27256],[5,"GPS_INPUT_DATA",27256],[5,"MANUAL_SETPOINT_DATA",27256],[5,"LOCAL_POSITION_NED_COV_DATA",27256],[5,"PARAM_EXT_REQUEST_READ_DATA",27256],[5,"HEARTBEAT_DATA",27256],[5,"GPS_GLOBAL_ORIGIN_DATA",27256],[5,"HIGHRES_IMU_DATA",27256],[5,"MISSION_SET_CURRENT_DATA",27256],[5,"SCALED_IMU3_DATA",27256],[5,"GIMBAL_MANAGER_STATUS_DATA",27256],[5,"RESPONSE_EVENT_ERROR_DATA",27256],[5,"SET_ATTITUDE_TARGET_DATA",27256],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",27256],[5,"SIM_STATE_DATA",27256],[5,"SCALED_PRESSURE2_DATA",27256],[5,"LOG_REQUEST_LIST_DATA",27256],[5,"RC_CHANNELS_SCALED_DATA",27256],[5,"RADIO_STATUS_DATA",27256],[5,"OPEN_DRONE_ID_SYSTEM_DATA",27256],[5,"RAW_PRESSURE_DATA",27256],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",27256],[5,"UAVCAN_NODE_STATUS_DATA",27256],[5,"GIMBAL_DEVICE_INFORMATION_DATA",27256],[5,"DEBUG_VECT_DATA",27256],[5,"TIMESYNC_DATA",27256],[5,"VIDEO_STREAM_STATUS_DATA",27256],[5,"TUNNEL_DATA",27256],[5,"PARAM_MAP_RC_DATA",27256],[5,"NAMED_VALUE_INT_DATA",27256],[5,"TERRAIN_DATA_DATA",27256],[5,"WIND_COV_DATA",27256],[5,"RC_CHANNELS_RAW_DATA",27256],[5,"RAW_IMU_DATA",27256],[5,"HIGH_LATENCY_DATA",27256],[5,"MISSION_CLEAR_ALL_DATA",27256],[5,"PLAY_TUNE_DATA",27256],[5,"RC_CHANNELS_DATA",27256],[5,"TERRAIN_REPORT_DATA",27256],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",27256],[5,"VISION_POSITION_ESTIMATE_DATA",27256],[5,"GPS_INJECT_DATA_DATA",27256],[5,"CANFD_FRAME_DATA",27256],[5,"FENCE_STATUS_DATA",27256],[5,"ONBOARD_COMPUTER_STATUS_DATA",27256],[5,"AUTOPILOT_VERSION_DATA",27256],[5,"MANUAL_CONTROL_DATA",27256],[5,"COMMAND_INT_DATA",27256],[5,"RAW_RPM_DATA",27256],[5,"TIME_ESTIMATE_TO_TARGET_DATA",27256],[5,"GENERATOR_STATUS_DATA",27256],[5,"GPS_STATUS_DATA",27256],[5,"HIL_ACTUATOR_CONTROLS_DATA",27256],[5,"UTM_GLOBAL_POSITION_DATA",27256],[5,"ODOMETRY_DATA",27256],[5,"HIL_SENSOR_DATA",27256],[5,"SET_HOME_POSITION_DATA",27256],[5,"MEMORY_VECT_DATA",27256],[5,"COMMAND_CANCEL_DATA",27256],[5,"CAN_FRAME_DATA",27256],[5,"WHEEL_DISTANCE_DATA",27256],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",27256],[5,"POSITION_TARGET_GLOBAL_INT_DATA",27256],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",27256],[5,"PING_DATA",27256],[5,"CELLULAR_STATUS_DATA",27256],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",27256],[5,"LOGGING_DATA_DATA",27256],[5,"SCALED_IMU2_DATA",27256],[5,"SETUP_SIGNING_DATA",27256],[5,"CAMERA_SETTINGS_DATA",27256],[5,"EFI_STATUS_DATA",27256],[5,"VFR_HUD_DATA",27256],[5,"PARAM_EXT_VALUE_DATA",27256],[5,"FOLLOW_TARGET_DATA",27256],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",27256],[5,"SERVO_OUTPUT_RAW_DATA",27256],[5,"HIL_RC_INPUTS_RAW_DATA",27256],[5,"SYS_STATUS_DATA",27256],[5,"SET_MODE_DATA",27256],[5,"MISSION_ITEM_DATA",27256],[5,"STORAGE_INFORMATION_DATA",27256],[5,"HOME_POSITION_DATA",27256],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",27256],[5,"COMPONENT_INFORMATION_DATA",27256],[5,"WINCH_STATUS_DATA",27256],[5,"MISSION_CURRENT_DATA",27256],[5,"GLOBAL_POSITION_INT_DATA",27256],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",27256],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",27256],[5,"SERIAL_CONTROL_DATA",27256],[5,"UAVIONIX_ADSB_OUT_CFG_DATA",27256],[5,"MOUNT_ORIENTATION_DATA",27256],[5,"DEBUG_DATA",27256],[5,"NAV_CONTROLLER_OUTPUT_DATA",27256],[5,"HIL_STATE_DATA",27256],[5,"AIS_VESSEL_DATA",27256],[5,"ATTITUDE_DATA",27256],[5,"DISTANCE_SENSOR_DATA",27256],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",27256],[5,"LOCAL_POSITION_NED_DATA",27256],[5,"MISSION_ITEM_REACHED_DATA",27256],[5,"RESOURCE_REQUEST_DATA",27256],[5,"V2_EXTENSION_DATA",27256],[5,"UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA",27256],[5,"OPTICAL_FLOW_RAD_DATA",27256],[5,"HIL_GPS_DATA",27256],[5,"BATTERY_STATUS_DATA",27256],[5,"CAMERA_FOV_STATUS_DATA",27256],[5,"VIDEO_STREAM_INFORMATION_DATA",27256],[5,"HIGH_LATENCY2_DATA",27256],[5,"MISSION_REQUEST_LIST_DATA",27256],[5,"ENCAPSULATED_DATA_DATA",27256],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",27256],[5,"ATTITUDE_QUATERNION_COV_DATA",27256],[5,"DATA_STREAM_DATA",27256],[5,"OPTICAL_FLOW_DATA",27256],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",27256],[5,"SAFETY_SET_ALLOWED_AREA_DATA",27256],[5,"PARAM_SET_DATA",27256],[5,"ALTITUDE_DATA",27256],[5,"MISSION_REQUEST_INT_DATA",27256],[5,"ACTUATOR_OUTPUT_STATUS_DATA",27256],[5,"MISSION_COUNT_DATA",27256],[5,"NAMED_VALUE_FLOAT_DATA",27256],[5,"CONTROL_SYSTEM_STATE_DATA",27256],[5,"REQUEST_DATA_STREAM_DATA",27256],[5,"RC_CHANNELS_OVERRIDE_DATA",27256],[5,"VICON_POSITION_ESTIMATE_DATA",27256],[5,"PARAM_REQUEST_LIST_DATA",27256],[5,"HIL_STATE_QUATERNION_DATA",27256],[5,"EVENT_DATA",27256],[5,"HIL_OPTICAL_FLOW_DATA",27256],[5,"PARAM_EXT_SET_DATA",27256],[5,"CAMERA_IMAGE_CAPTURED_DATA",27256],[5,"VIBRATION_DATA",27256],[5,"TERRAIN_REQUEST_DATA",27256],[5,"ADSB_VEHICLE_DATA",27256],[5,"LOGGING_ACK_DATA",27256],[5,"SCALED_PRESSURE3_DATA",27256],[5,"CURRENT_EVENT_SEQUENCE_DATA",27256],[5,"POWER_STATUS_DATA",27256],[5,"SYSTEM_TIME_DATA",27256],[5,"MAG_CAL_REPORT_DATA",27256],[5,"LANDING_TARGET_DATA",27256],[5,"TERRAIN_CHECK_DATA",27256],[5,"ATTITUDE_TARGET_DATA",27256],[5,"MESSAGE_INTERVAL_DATA",27256],[5,"MISSION_REQUEST_DATA",27256],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",27256],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",27256],[5,"EXTENDED_SYS_STATE_DATA",27256],[5,"SUPPORTED_TUNES_DATA",27256],[6,"WifiConfigApMode",27256],[6,"MavLandedState",27256],[6,"AdsbEmitterType",27256],[6,"StorageStatus",27256],[6,"MavResult",27256],[6,"MavState",27256],[6,"FenceMitigate",27256],[6,"MavParamExtType",27256],[6,"MavDataStream",27256],[6,"MavMountMode",27256],[6,"MavOdidTimeAcc",27256],[6,"MissionState",27256],[6,"VideoStreamType",27256],[6,"AisNavStatus",27256],[6,"MavOdidVerAcc",27256],[6,"CameraTrackingTargetData",27256],[6,"CanFilterOp",27256],[6,"MavFtpOpcode",27256],[6,"VtolTransitionHeading",27256],[6,"OrbitYawBehaviour",27256],[6,"MavOdidOperatorIdType",27256],[6,"AutotuneAxis",27256],[6,"MavParamType",27256],[6,"UavionixAdsbOutCfgGpsOffsetLat",27256],[6,"StorageType",27256],[6,"RtkBaselineCoordinateSystem",27256],[6,"UavionixAdsbOutCfgAircraftSize",27256],[6,"MavCollisionAction",27256],[6,"MavlinkDataStreamType",27256],[6,"MavOdidCategoryEu",27256],[6,"FailureType",27256],[6,"MavOdidArmStatus",27256],[6,"UavionixAdsbOutDynamicGpsFix",27256],[6,"MavDistanceSensor",27256],[6,"PrecisionLandMode",27256],[6,"MavOdidSpeedAcc",27256],[6,"CellularNetworkRadioType",27256],[6,"MavGoto",27256],[6,"FenceAction",27256],[6,"MavEventErrorReason",27256],[6,"FirmwareVersionType",27256],[6,"FenceBreach",27256],[6,"MavBatteryMode",27256],[6,"MavBatteryType",27256],[6,"ActuatorOutputFunction",27256],[6,"MavCmd",27256],[6,"MagCalStatus",27256],[6,"GimbalManagerFlags",27256],[6,"UtmFlightState",27256],[6,"UavionixAdsbEmergencyStatus",27256],[6,"MavSensorOrientation",27256],[6,"NavVtolLandOptions",27256],[6,"RcType",27256],[6,"MavOdidOperatorLocationType",27256],[6,"CameraMode",27256],[6,"MotorTestThrottleType",27256],[6,"GripperActions",27256],[6,"MavComponent",27256],[6,"StorageUsageFlag",27256],[6,"MavOdidIdType",27256],[6,"AisType",27256],[6,"MavOdidHeightRef",27256],[6,"SerialControlDev",27256],[6,"CameraTrackingMode",27256],[6,"MavTunnelPayloadType",27256],[6,"MavType",27256],[6,"MavSysStatusSensorExtended",27256],[6,"MavMissionResult",27256],[6,"MavOdidHorAcc",27256],[6,"EscConnectionType",27256],[6,"MavArmAuthDeniedReason",27256],[6,"CameraTrackingStatusFlags",27256],[6,"CompMetadataType",27256],[6,"ActuatorConfiguration",27256],[6,"MavOdidDescType",27256],[6,"UavionixAdsbOutCfgGpsOffsetLon",27256],[6,"MavRoi",27256],[6,"MavBatteryFault",27256],[6,"AdsbAltitudeType",27256],[6,"CellularNetworkFailedReason",27256],[6,"MavOdidClassEu",27256],[6,"MavOdidUaType",27256],[6,"UavcanNodeMode",27256],[6,"MavEstimatorType",27256],[6,"MavBatteryChargeState",27256],[6,"MavCollisionSrc",27256],[6,"MavCollisionThreatLevel",27256],[6,"MavDoRepositionFlags",27256],[6,"ParachuteAction",27256],[6,"UavcanNodeHealth",27256],[6,"VideoStreamStatusFlags",27256],[6,"GpsFixType",27256],[6,"MavVtolState",27256],[6,"WinchActions",27256],[6,"MavOdidStatus",27256],[6,"CameraZoomType",27256],[6,"MavFrame",27256],[6,"WifiConfigApResponse",27256],[6,"CellularStatusFlag",27256],[6,"MavModeFlagDecodePosition",27256],[6,"FailureUnit",27256],[6,"MavAutopilot",27256],[6,"MavMode",27256],[6,"MavFtpErr",27256],[6,"ParamAck",27256],[6,"MavBatteryFunction",27256],[6,"MavMissionType",27256],[6,"MavOdidClassificationType",27256],[6,"MavCmdAck",27256],[6,"LandingTargetType",27256],[6,"PreflightStorageParameterAction",27256],[6,"PreflightStorageMissionAction",27256],[6,"SetFocusType",27256],[6,"MavSeverity",27256],[6,"MotorTestOrder",27256],[6,"CellularConfigResponse",27256],[6,"MavOdidAuthType",27256],[10,"RustDefault",39176,39199],[15,"InvalidEnum",27104],[15,"InvalidFlag",27104],[15,"UnknownMessage",27104]],"r":[[3,39179],[4,39179],[5,39179],[6,39179],[7,39179],[8,39181],[9,39179],[10,39179],[11,39179],[12,39179],[14,39179],[29,39179],[30,39179],[31,39179],[49,39181],[61,39179],[100,39179],[105,39179],[106,39179],[107,39179],[108,39179],[109,39179],[154,39179],[155,39179],[156,39179],[157,39179],[15500,39196],[15524,39197],[27066,39185],[27067,39185],[27069,39185],[27241,39188],[39176,39199],[39177,39199]],"b":[[8660,"impl-Octal-for-TuneFormat"],[8661,"impl-Binary-for-TuneFormat"],[8662,"impl-UpperHex-for-TuneFormat"],[8663,"impl-Debug-for-TuneFormat"],[8664,"impl-LowerHex-for-TuneFormat"],[8679,"impl-Octal-for-EscFailureFlags"],[8680,"impl-UpperHex-for-EscFailureFlags"],[8681,"impl-Binary-for-EscFailureFlags"],[8682,"impl-LowerHex-for-EscFailureFlags"],[8683,"impl-Debug-for-EscFailureFlags"],[8691,"impl-Binary-for-UavionixAdsbOutDynamicState"],[8692,"impl-Debug-for-UavionixAdsbOutDynamicState"],[8693,"impl-LowerHex-for-UavionixAdsbOutDynamicState"],[8694,"impl-UpperHex-for-UavionixAdsbOutDynamicState"],[8695,"impl-Octal-for-UavionixAdsbOutDynamicState"],[8697,"impl-Binary-for-RallyFlags"],[8698,"impl-Debug-for-RallyFlags"],[8699,"impl-UpperHex-for-RallyFlags"],[8700,"impl-Octal-for-RallyFlags"],[8701,"impl-LowerHex-for-RallyFlags"],[8705,"impl-LowerHex-for-LimitModule"],[8706,"impl-Octal-for-LimitModule"],[8707,"impl-UpperHex-for-LimitModule"],[8708,"impl-Debug-for-LimitModule"],[8709,"impl-Binary-for-LimitModule"],[8710,"impl-UpperHex-for-UavionixAdsbOutRfSelect"],[8711,"impl-LowerHex-for-UavionixAdsbOutRfSelect"],[8712,"impl-Octal-for-UavionixAdsbOutRfSelect"],[8713,"impl-Binary-for-UavionixAdsbOutRfSelect"],[8714,"impl-Debug-for-UavionixAdsbOutRfSelect"],[8717,"impl-UpperHex-for-AttitudeTargetTypemask"],[8718,"impl-Binary-for-AttitudeTargetTypemask"],[8719,"impl-Debug-for-AttitudeTargetTypemask"],[8720,"impl-Octal-for-AttitudeTargetTypemask"],[8721,"impl-LowerHex-for-AttitudeTargetTypemask"],[8722,"impl-Debug-for-GimbalDeviceCapFlags"],[8723,"impl-Octal-for-GimbalDeviceCapFlags"],[8724,"impl-LowerHex-for-GimbalDeviceCapFlags"],[8725,"impl-UpperHex-for-GimbalDeviceCapFlags"],[8726,"impl-Binary-for-GimbalDeviceCapFlags"],[8729,"impl-LowerHex-for-MavSysStatusSensor"],[8730,"impl-UpperHex-for-MavSysStatusSensor"],[8731,"impl-Binary-for-MavSysStatusSensor"],[8732,"impl-Octal-for-MavSysStatusSensor"],[8733,"impl-Debug-for-MavSysStatusSensor"],[8737,"impl-UpperHex-for-EstimatorStatusFlags"],[8738,"impl-Binary-for-EstimatorStatusFlags"],[8739,"impl-LowerHex-for-EstimatorStatusFlags"],[8740,"impl-Octal-for-EstimatorStatusFlags"],[8741,"impl-Debug-for-EstimatorStatusFlags"],[8759,"impl-LowerHex-for-AdsbFlags"],[8760,"impl-UpperHex-for-AdsbFlags"],[8761,"impl-Octal-for-AdsbFlags"],[8762,"impl-Binary-for-AdsbFlags"],[8763,"impl-Debug-for-AdsbFlags"],[8765,"impl-Debug-for-MavProtocolCapability"],[8766,"impl-UpperHex-for-MavProtocolCapability"],[8767,"impl-Binary-for-MavProtocolCapability"],[8768,"impl-Octal-for-MavProtocolCapability"],[8769,"impl-LowerHex-for-MavProtocolCapability"],[8776,"impl-LowerHex-for-MavPowerStatus"],[8777,"impl-Debug-for-MavPowerStatus"],[8778,"impl-Octal-for-MavPowerStatus"],[8779,"impl-Binary-for-MavPowerStatus"],[8780,"impl-UpperHex-for-MavPowerStatus"],[8785,"impl-Debug-for-MavEventCurrentSequenceFlags"],[8786,"impl-Binary-for-MavEventCurrentSequenceFlags"],[8787,"impl-Octal-for-MavEventCurrentSequenceFlags"],[8788,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[8789,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[8793,"impl-Debug-for-HlFailureFlag"],[8794,"impl-Octal-for-HlFailureFlag"],[8795,"impl-Binary-for-HlFailureFlag"],[8796,"impl-LowerHex-for-HlFailureFlag"],[8797,"impl-UpperHex-for-HlFailureFlag"],[8799,"impl-UpperHex-for-CameraCapFlags"],[8800,"impl-Binary-for-CameraCapFlags"],[8801,"impl-Octal-for-CameraCapFlags"],[8802,"impl-Debug-for-CameraCapFlags"],[8803,"impl-LowerHex-for-CameraCapFlags"],[8804,"impl-UpperHex-for-GoproHeartbeatFlags"],[8805,"impl-Debug-for-GoproHeartbeatFlags"],[8806,"impl-Octal-for-GoproHeartbeatFlags"],[8807,"impl-LowerHex-for-GoproHeartbeatFlags"],[8808,"impl-Binary-for-GoproHeartbeatFlags"],[8809,"impl-LowerHex-for-UtmDataAvailFlags"],[8810,"impl-Debug-for-UtmDataAvailFlags"],[8811,"impl-UpperHex-for-UtmDataAvailFlags"],[8812,"impl-Octal-for-UtmDataAvailFlags"],[8813,"impl-Binary-for-UtmDataAvailFlags"],[8821,"impl-LowerHex-for-PositionTargetTypemask"],[8822,"impl-Debug-for-PositionTargetTypemask"],[8823,"impl-UpperHex-for-PositionTargetTypemask"],[8824,"impl-Octal-for-PositionTargetTypemask"],[8825,"impl-Binary-for-PositionTargetTypemask"],[8828,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[8829,"impl-Debug-for-GimbalDeviceErrorFlags"],[8830,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[8831,"impl-Octal-for-GimbalDeviceErrorFlags"],[8832,"impl-Binary-for-GimbalDeviceErrorFlags"],[8833,"impl-UpperHex-for-MavGeneratorStatusFlag"],[8834,"impl-LowerHex-for-MavGeneratorStatusFlag"],[8835,"impl-Octal-for-MavGeneratorStatusFlag"],[8836,"impl-Binary-for-MavGeneratorStatusFlag"],[8837,"impl-Debug-for-MavGeneratorStatusFlag"],[8853,"impl-Binary-for-EkfStatusFlags"],[8854,"impl-UpperHex-for-EkfStatusFlags"],[8855,"impl-LowerHex-for-EkfStatusFlags"],[8856,"impl-Debug-for-EkfStatusFlags"],[8857,"impl-Octal-for-EkfStatusFlags"],[8866,"impl-LowerHex-for-MavModeFlag"],[8867,"impl-Octal-for-MavModeFlag"],[8868,"impl-Debug-for-MavModeFlag"],[8869,"impl-Binary-for-MavModeFlag"],[8870,"impl-UpperHex-for-MavModeFlag"],[8876,"impl-Octal-for-UavionixAdsbRfHealth"],[8877,"impl-Debug-for-UavionixAdsbRfHealth"],[8878,"impl-UpperHex-for-UavionixAdsbRfHealth"],[8879,"impl-Binary-for-UavionixAdsbRfHealth"],[8880,"impl-LowerHex-for-UavionixAdsbRfHealth"],[8890,"impl-LowerHex-for-MavWinchStatusFlag"],[8891,"impl-UpperHex-for-MavWinchStatusFlag"],[8892,"impl-Octal-for-MavWinchStatusFlag"],[8893,"impl-Debug-for-MavWinchStatusFlag"],[8894,"impl-Binary-for-MavWinchStatusFlag"],[8896,"impl-Debug-for-GimbalDeviceFlags"],[8897,"impl-LowerHex-for-GimbalDeviceFlags"],[8898,"impl-Binary-for-GimbalDeviceFlags"],[8899,"impl-UpperHex-for-GimbalDeviceFlags"],[8900,"impl-Octal-for-GimbalDeviceFlags"],[8909,"impl-Debug-for-HighresImuUpdatedFlags"],[8910,"impl-UpperHex-for-HighresImuUpdatedFlags"],[8911,"impl-Octal-for-HighresImuUpdatedFlags"],[8912,"impl-Binary-for-HighresImuUpdatedFlags"],[8913,"impl-LowerHex-for-HighresImuUpdatedFlags"],[8922,"impl-Octal-for-GimbalManagerCapFlags"],[8923,"impl-Debug-for-GimbalManagerCapFlags"],[8924,"impl-LowerHex-for-GimbalManagerCapFlags"],[8925,"impl-UpperHex-for-GimbalManagerCapFlags"],[8926,"impl-Binary-for-GimbalManagerCapFlags"],[8932,"impl-UpperHex-for-GpsInputIgnoreFlags"],[8933,"impl-LowerHex-for-GpsInputIgnoreFlags"],[8934,"impl-Octal-for-GpsInputIgnoreFlags"],[8935,"impl-Debug-for-GpsInputIgnoreFlags"],[8936,"impl-Binary-for-GpsInputIgnoreFlags"],[8939,"impl-LowerHex-for-SerialControlFlag"],[8940,"impl-Octal-for-SerialControlFlag"],[8941,"impl-Binary-for-SerialControlFlag"],[8942,"impl-UpperHex-for-SerialControlFlag"],[8943,"impl-Debug-for-SerialControlFlag"],[8951,"impl-LowerHex-for-AisFlags"],[8952,"impl-Octal-for-AisFlags"],[8953,"impl-UpperHex-for-AisFlags"],[8954,"impl-Binary-for-AisFlags"],[8955,"impl-Debug-for-AisFlags"],[8956,"impl-LowerHex-for-HilSensorUpdatedFlags"],[8957,"impl-UpperHex-for-HilSensorUpdatedFlags"],[8958,"impl-Octal-for-HilSensorUpdatedFlags"],[8959,"impl-Binary-for-HilSensorUpdatedFlags"],[8960,"impl-Debug-for-HilSensorUpdatedFlags"],[21924,"impl-Debug-for-MavPowerStatus"],[21925,"impl-Octal-for-MavPowerStatus"],[21926,"impl-UpperHex-for-MavPowerStatus"],[21927,"impl-LowerHex-for-MavPowerStatus"],[21928,"impl-Binary-for-MavPowerStatus"],[21930,"impl-LowerHex-for-TuneFormat"],[21931,"impl-Binary-for-TuneFormat"],[21932,"impl-Debug-for-TuneFormat"],[21933,"impl-UpperHex-for-TuneFormat"],[21934,"impl-Octal-for-TuneFormat"],[21942,"impl-Debug-for-AisFlags"],[21943,"impl-Binary-for-AisFlags"],[21944,"impl-UpperHex-for-AisFlags"],[21945,"impl-LowerHex-for-AisFlags"],[21946,"impl-Octal-for-AisFlags"],[21953,"impl-Binary-for-MavWinchStatusFlag"],[21954,"impl-Octal-for-MavWinchStatusFlag"],[21955,"impl-LowerHex-for-MavWinchStatusFlag"],[21956,"impl-Debug-for-MavWinchStatusFlag"],[21957,"impl-UpperHex-for-MavWinchStatusFlag"],[21962,"impl-Debug-for-GimbalDeviceFlags"],[21963,"impl-Binary-for-GimbalDeviceFlags"],[21964,"impl-UpperHex-for-GimbalDeviceFlags"],[21965,"impl-LowerHex-for-GimbalDeviceFlags"],[21966,"impl-Octal-for-GimbalDeviceFlags"],[21967,"impl-UpperHex-for-GpsInputIgnoreFlags"],[21968,"impl-Debug-for-GpsInputIgnoreFlags"],[21969,"impl-LowerHex-for-GpsInputIgnoreFlags"],[21970,"impl-Binary-for-GpsInputIgnoreFlags"],[21971,"impl-Octal-for-GpsInputIgnoreFlags"],[21972,"impl-UpperHex-for-SerialControlFlag"],[21973,"impl-Octal-for-SerialControlFlag"],[21974,"impl-Debug-for-SerialControlFlag"],[21975,"impl-Binary-for-SerialControlFlag"],[21976,"impl-LowerHex-for-SerialControlFlag"],[21986,"impl-Binary-for-MavEventCurrentSequenceFlags"],[21987,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[21988,"impl-Debug-for-MavEventCurrentSequenceFlags"],[21989,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[21990,"impl-Octal-for-MavEventCurrentSequenceFlags"],[21998,"impl-UpperHex-for-EstimatorStatusFlags"],[21999,"impl-Octal-for-EstimatorStatusFlags"],[22000,"impl-Debug-for-EstimatorStatusFlags"],[22001,"impl-LowerHex-for-EstimatorStatusFlags"],[22002,"impl-Binary-for-EstimatorStatusFlags"],[22013,"impl-LowerHex-for-UtmDataAvailFlags"],[22014,"impl-Binary-for-UtmDataAvailFlags"],[22015,"impl-Octal-for-UtmDataAvailFlags"],[22016,"impl-Debug-for-UtmDataAvailFlags"],[22017,"impl-UpperHex-for-UtmDataAvailFlags"],[22019,"impl-UpperHex-for-MavProtocolCapability"],[22020,"impl-Binary-for-MavProtocolCapability"],[22021,"impl-LowerHex-for-MavProtocolCapability"],[22022,"impl-Debug-for-MavProtocolCapability"],[22023,"impl-Octal-for-MavProtocolCapability"],[22027,"impl-Binary-for-MavSysStatusSensor"],[22028,"impl-Debug-for-MavSysStatusSensor"],[22029,"impl-LowerHex-for-MavSysStatusSensor"],[22030,"impl-UpperHex-for-MavSysStatusSensor"],[22031,"impl-Octal-for-MavSysStatusSensor"],[22043,"impl-Binary-for-MavGeneratorStatusFlag"],[22044,"impl-LowerHex-for-MavGeneratorStatusFlag"],[22045,"impl-Octal-for-MavGeneratorStatusFlag"],[22046,"impl-Debug-for-MavGeneratorStatusFlag"],[22047,"impl-UpperHex-for-MavGeneratorStatusFlag"],[22050,"impl-LowerHex-for-PositionTargetTypemask"],[22051,"impl-Binary-for-PositionTargetTypemask"],[22052,"impl-UpperHex-for-PositionTargetTypemask"],[22053,"impl-Debug-for-PositionTargetTypemask"],[22054,"impl-Octal-for-PositionTargetTypemask"],[22061,"impl-LowerHex-for-EscFailureFlags"],[22062,"impl-UpperHex-for-EscFailureFlags"],[22063,"impl-Octal-for-EscFailureFlags"],[22064,"impl-Debug-for-EscFailureFlags"],[22065,"impl-Binary-for-EscFailureFlags"],[22073,"impl-LowerHex-for-MavModeFlag"],[22074,"impl-Octal-for-MavModeFlag"],[22075,"impl-UpperHex-for-MavModeFlag"],[22076,"impl-Debug-for-MavModeFlag"],[22077,"impl-Binary-for-MavModeFlag"],[22079,"impl-UpperHex-for-GimbalManagerCapFlags"],[22080,"impl-LowerHex-for-GimbalManagerCapFlags"],[22081,"impl-Binary-for-GimbalManagerCapFlags"],[22082,"impl-Octal-for-GimbalManagerCapFlags"],[22083,"impl-Debug-for-GimbalManagerCapFlags"],[22088,"impl-UpperHex-for-AttitudeTargetTypemask"],[22089,"impl-Debug-for-AttitudeTargetTypemask"],[22090,"impl-Binary-for-AttitudeTargetTypemask"],[22091,"impl-Octal-for-AttitudeTargetTypemask"],[22092,"impl-LowerHex-for-AttitudeTargetTypemask"],[22096,"impl-LowerHex-for-CameraCapFlags"],[22097,"impl-Debug-for-CameraCapFlags"],[22098,"impl-UpperHex-for-CameraCapFlags"],[22099,"impl-Octal-for-CameraCapFlags"],[22100,"impl-Binary-for-CameraCapFlags"],[22102,"impl-LowerHex-for-HighresImuUpdatedFlags"],[22103,"impl-Binary-for-HighresImuUpdatedFlags"],[22104,"impl-Debug-for-HighresImuUpdatedFlags"],[22105,"impl-Octal-for-HighresImuUpdatedFlags"],[22106,"impl-UpperHex-for-HighresImuUpdatedFlags"],[22122,"impl-Binary-for-GimbalDeviceErrorFlags"],[22123,"impl-Debug-for-GimbalDeviceErrorFlags"],[22124,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[22125,"impl-Octal-for-GimbalDeviceErrorFlags"],[22126,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[22129,"impl-Binary-for-HlFailureFlag"],[22130,"impl-UpperHex-for-HlFailureFlag"],[22131,"impl-Octal-for-HlFailureFlag"],[22132,"impl-LowerHex-for-HlFailureFlag"],[22133,"impl-Debug-for-HlFailureFlag"],[22136,"impl-UpperHex-for-GimbalDeviceCapFlags"],[22137,"impl-LowerHex-for-GimbalDeviceCapFlags"],[22138,"impl-Octal-for-GimbalDeviceCapFlags"],[22139,"impl-Binary-for-GimbalDeviceCapFlags"],[22140,"impl-Debug-for-GimbalDeviceCapFlags"],[22141,"impl-Binary-for-HilSensorUpdatedFlags"],[22142,"impl-Octal-for-HilSensorUpdatedFlags"],[22143,"impl-Debug-for-HilSensorUpdatedFlags"],[22144,"impl-LowerHex-for-HilSensorUpdatedFlags"],[22145,"impl-UpperHex-for-HilSensorUpdatedFlags"],[22150,"impl-Binary-for-AdsbFlags"],[22151,"impl-Debug-for-AdsbFlags"],[22152,"impl-Octal-for-AdsbFlags"],[22153,"impl-LowerHex-for-AdsbFlags"],[22154,"impl-UpperHex-for-AdsbFlags"],[27077,"impl-Display-for-ParserError"],[27078,"impl-Debug-for-ParserError"],[27079,"impl-Display-for-MessageReadError"],[27080,"impl-Debug-for-MessageReadError"],[27081,"impl-Display-for-MessageWriteError"],[27082,"impl-Debug-for-MessageWriteError"],[27084,"impl-From%3CError%3E-for-MessageReadError"],[27085,"impl-From%3CParserError%3E-for-MessageReadError"],[33850,"impl-Debug-for-EstimatorStatusFlags"],[33851,"impl-UpperHex-for-EstimatorStatusFlags"],[33852,"impl-Binary-for-EstimatorStatusFlags"],[33853,"impl-Octal-for-EstimatorStatusFlags"],[33854,"impl-LowerHex-for-EstimatorStatusFlags"],[33857,"impl-Debug-for-MavPowerStatus"],[33858,"impl-Binary-for-MavPowerStatus"],[33859,"impl-LowerHex-for-MavPowerStatus"],[33860,"impl-Octal-for-MavPowerStatus"],[33861,"impl-UpperHex-for-MavPowerStatus"],[33864,"impl-Debug-for-UavionixAdsbOutRfSelect"],[33865,"impl-Octal-for-UavionixAdsbOutRfSelect"],[33866,"impl-UpperHex-for-UavionixAdsbOutRfSelect"],[33867,"impl-Binary-for-UavionixAdsbOutRfSelect"],[33868,"impl-LowerHex-for-UavionixAdsbOutRfSelect"],[33879,"impl-Binary-for-PositionTargetTypemask"],[33880,"impl-Debug-for-PositionTargetTypemask"],[33881,"impl-Octal-for-PositionTargetTypemask"],[33882,"impl-LowerHex-for-PositionTargetTypemask"],[33883,"impl-UpperHex-for-PositionTargetTypemask"],[33884,"impl-LowerHex-for-AdsbFlags"],[33885,"impl-Octal-for-AdsbFlags"],[33886,"impl-UpperHex-for-AdsbFlags"],[33887,"impl-Binary-for-AdsbFlags"],[33888,"impl-Debug-for-AdsbFlags"],[33897,"impl-Octal-for-MavSysStatusSensor"],[33898,"impl-LowerHex-for-MavSysStatusSensor"],[33899,"impl-Binary-for-MavSysStatusSensor"],[33900,"impl-Debug-for-MavSysStatusSensor"],[33901,"impl-UpperHex-for-MavSysStatusSensor"],[33904,"impl-Octal-for-GimbalDeviceCapFlags"],[33905,"impl-LowerHex-for-GimbalDeviceCapFlags"],[33906,"impl-Debug-for-GimbalDeviceCapFlags"],[33907,"impl-UpperHex-for-GimbalDeviceCapFlags"],[33908,"impl-Binary-for-GimbalDeviceCapFlags"],[33910,"impl-Binary-for-MavProtocolCapability"],[33911,"impl-Debug-for-MavProtocolCapability"],[33912,"impl-UpperHex-for-MavProtocolCapability"],[33913,"impl-Octal-for-MavProtocolCapability"],[33914,"impl-LowerHex-for-MavProtocolCapability"],[33924,"impl-UpperHex-for-GpsInputIgnoreFlags"],[33925,"impl-LowerHex-for-GpsInputIgnoreFlags"],[33926,"impl-Debug-for-GpsInputIgnoreFlags"],[33927,"impl-Binary-for-GpsInputIgnoreFlags"],[33928,"impl-Octal-for-GpsInputIgnoreFlags"],[33930,"impl-Binary-for-MavWinchStatusFlag"],[33931,"impl-Octal-for-MavWinchStatusFlag"],[33932,"impl-LowerHex-for-MavWinchStatusFlag"],[33933,"impl-Debug-for-MavWinchStatusFlag"],[33934,"impl-UpperHex-for-MavWinchStatusFlag"],[33937,"impl-Binary-for-HlFailureFlag"],[33938,"impl-Debug-for-HlFailureFlag"],[33939,"impl-Octal-for-HlFailureFlag"],[33940,"impl-UpperHex-for-HlFailureFlag"],[33941,"impl-LowerHex-for-HlFailureFlag"],[33947,"impl-Octal-for-CameraCapFlags"],[33948,"impl-Debug-for-CameraCapFlags"],[33949,"impl-LowerHex-for-CameraCapFlags"],[33950,"impl-UpperHex-for-CameraCapFlags"],[33951,"impl-Binary-for-CameraCapFlags"],[33956,"impl-Debug-for-GimbalDeviceFlags"],[33957,"impl-UpperHex-for-GimbalDeviceFlags"],[33958,"impl-Octal-for-GimbalDeviceFlags"],[33959,"impl-LowerHex-for-GimbalDeviceFlags"],[33960,"impl-Binary-for-GimbalDeviceFlags"],[33965,"impl-Debug-for-AisFlags"],[33966,"impl-Binary-for-AisFlags"],[33967,"impl-Octal-for-AisFlags"],[33968,"impl-UpperHex-for-AisFlags"],[33969,"impl-LowerHex-for-AisFlags"],[33970,"impl-Octal-for-MavGeneratorStatusFlag"],[33971,"impl-LowerHex-for-MavGeneratorStatusFlag"],[33972,"impl-Binary-for-MavGeneratorStatusFlag"],[33973,"impl-Debug-for-MavGeneratorStatusFlag"],[33974,"impl-UpperHex-for-MavGeneratorStatusFlag"],[33981,"impl-Debug-for-HilSensorUpdatedFlags"],[33982,"impl-LowerHex-for-HilSensorUpdatedFlags"],[33983,"impl-UpperHex-for-HilSensorUpdatedFlags"],[33984,"impl-Octal-for-HilSensorUpdatedFlags"],[33985,"impl-Binary-for-HilSensorUpdatedFlags"],[33990,"impl-Binary-for-EscFailureFlags"],[33991,"impl-Debug-for-EscFailureFlags"],[33992,"impl-Octal-for-EscFailureFlags"],[33993,"impl-UpperHex-for-EscFailureFlags"],[33994,"impl-LowerHex-for-EscFailureFlags"],[34001,"impl-Octal-for-UavionixAdsbRfHealth"],[34002,"impl-LowerHex-for-UavionixAdsbRfHealth"],[34003,"impl-Binary-for-UavionixAdsbRfHealth"],[34004,"impl-Debug-for-UavionixAdsbRfHealth"],[34005,"impl-UpperHex-for-UavionixAdsbRfHealth"],[34007,"impl-LowerHex-for-MavModeFlag"],[34008,"impl-Binary-for-MavModeFlag"],[34009,"impl-Octal-for-MavModeFlag"],[34010,"impl-UpperHex-for-MavModeFlag"],[34011,"impl-Debug-for-MavModeFlag"],[34016,"impl-Binary-for-HighresImuUpdatedFlags"],[34017,"impl-LowerHex-for-HighresImuUpdatedFlags"],[34018,"impl-UpperHex-for-HighresImuUpdatedFlags"],[34019,"impl-Debug-for-HighresImuUpdatedFlags"],[34020,"impl-Octal-for-HighresImuUpdatedFlags"],[34022,"impl-Debug-for-SerialControlFlag"],[34023,"impl-LowerHex-for-SerialControlFlag"],[34024,"impl-Binary-for-SerialControlFlag"],[34025,"impl-Octal-for-SerialControlFlag"],[34026,"impl-UpperHex-for-SerialControlFlag"],[34033,"impl-Octal-for-AttitudeTargetTypemask"],[34034,"impl-UpperHex-for-AttitudeTargetTypemask"],[34035,"impl-LowerHex-for-AttitudeTargetTypemask"],[34036,"impl-Debug-for-AttitudeTargetTypemask"],[34037,"impl-Binary-for-AttitudeTargetTypemask"],[34038,"impl-Binary-for-TuneFormat"],[34039,"impl-Debug-for-TuneFormat"],[34040,"impl-Octal-for-TuneFormat"],[34041,"impl-LowerHex-for-TuneFormat"],[34042,"impl-UpperHex-for-TuneFormat"],[34049,"impl-UpperHex-for-UtmDataAvailFlags"],[34050,"impl-Octal-for-UtmDataAvailFlags"],[34051,"impl-LowerHex-for-UtmDataAvailFlags"],[34052,"impl-Debug-for-UtmDataAvailFlags"],[34053,"impl-Binary-for-UtmDataAvailFlags"],[34056,"impl-Binary-for-GimbalManagerCapFlags"],[34057,"impl-LowerHex-for-GimbalManagerCapFlags"],[34058,"impl-Debug-for-GimbalManagerCapFlags"],[34059,"impl-UpperHex-for-GimbalManagerCapFlags"],[34060,"impl-Octal-for-GimbalManagerCapFlags"],[34061,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[34062,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[34063,"impl-Debug-for-GimbalDeviceErrorFlags"],[34064,"impl-Binary-for-GimbalDeviceErrorFlags"],[34065,"impl-Octal-for-GimbalDeviceErrorFlags"],[34067,"impl-UpperHex-for-UavionixAdsbOutDynamicState"],[34068,"impl-Debug-for-UavionixAdsbOutDynamicState"],[34069,"impl-Binary-for-UavionixAdsbOutDynamicState"],[34070,"impl-LowerHex-for-UavionixAdsbOutDynamicState"],[34071,"impl-Octal-for-UavionixAdsbOutDynamicState"],[34093,"impl-Binary-for-MavEventCurrentSequenceFlags"],[34094,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[34095,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[34096,"impl-Debug-for-MavEventCurrentSequenceFlags"],[34097,"impl-Octal-for-MavEventCurrentSequenceFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPOFUwAAAAUACAAAAA0ABQAUABgALgADADMABAA5AAsASgABAE0AAgBRAAEAWAAMAGYAAwBuAAAAdAACAHgAAAB6AB8AmwAAAJ8AzA2MDnYAgw8CAOYPSwhSGAYAeRhmBQAeFwA4HuYEaSX1AX8nDwDPJwAA+inYAPMqHAEwLKED8i8+AHEwBACWMIkEQDXlBUY7SQGRPA0AoDwHAKo8lApYR2YAI0gBAHBIIAaqTgEAxU7wA89SDgD3UqYDUFhuAdhZDQAYWgAAsluZAGVc7QBsXa4CNGAnAI5gBACsYGEDJ2RSBJNoOAHNaQEA0WkAANVpUQAsagMANWo0AGtqAQB2atkKbHVnAER2AQCadlAGB30BACV9CQRLgRAAeIHLAwqHhAGriA0A8YgAAJyKmQBSi/EAYIy+AjuPKgCejwQAv492A1KTcwTilyYBC5kAAA=="}],\ ["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,3,5,3,5,3,0,0,5,3,0,5,3,0,5,3,5,3,5,0,5,5,3,5,3,5,3,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,33,34,35,36,34,35,36,33,24,24,25,25,25,24,25,25,25,25,25,24,25,24,24,24,24,0,0,0,0,0,0,0,25,25,25,25,24,24,24,24,24,25,25,20,19,20,21,22,23,24,25,19,20,21,22,23,24,25,19,20,21,22,23,24,25,19,20,21,22,23,24,25,24,19,20,21,22,23,24,20,21,22,23,23,24,20,19,23,19,20,21,22,23,24,25,0,22,19,20,21,22,23,24,25,19,20,21,22,23,24,25,0,22,19,20,21,22,23,24,25,23,23,19,20,21,22,23,21,0,24,24,24,24,24,19,20,21,22,23,24,25,19,20,21,22,23,24,25,19,20,21,22,23,24,25,19,20,21,22,23,24,25,21],"f":"`````{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{f}}}h}`{{{b{j}}{b{dl}}}n}{{{b{f}}{b{dl}}}n}2{cc{}}0{{ce}{{Ab{fA`}}}{{Af{Ad}}}{{Af{Ad}}}}{ce{}{}}0`````{c{{Ab{e}}}{}{}}000{{{b{c}}}Ah{}}0{{{Al{{b{Aj}}}}{b{dc}}}hAn}`````:9{{{b{A`}}{b{dl}}}n}064{{{b{A`}}}{{Bb{{b{B`}}}}}}{{{b{c}}}Bd{}}554````````````````````````````````````````````=======<<<<<<<{{{b{Bf}}}Bf}{{{b{Bh}}}Bh}{{{b{Bj}}}Bj}{{{b{Bl}}}Bl}{{{b{Bn}}}Bn}{{{b{C`}}}C`}{{{b{Cb}}}Cb}{{{b{c}}{b{de}}}h{}{}}000000{{{b{C`}}{b{C`}}}Cd}{{}Bf}{{}Bh}{{}Bj}{{}Bl}{{}Bn}{{}C`}`````{{{b{C`}}}Cf}```{{{b{Bf}}{b{Bf}}}Ch}{{{b{Bh}}{b{Bh}}}Ch}{{{b{Bj}}{b{Bj}}}Ch}{{{b{Bl}}{b{Bl}}}Ch}{{{b{Bn}}{b{Bn}}}Ch}{{{b{C`}}{b{C`}}}Ch}{{{b{Cb}}{b{Cb}}}Ch}{{{b{Bl}}}Cj}`{{{b{Bf}}{b{dl}}}n}{{{b{Bh}}{b{dl}}}n}{{{b{Bj}}{b{dl}}}n}{{{b{Bl}}{b{dl}}}n}{{{b{Bn}}{b{dl}}}n}{{{b{C`}}{b{dl}}}n}{{{b{Cb}}{b{dl}}}n}{cc{}}000000{{{b{Ad}}{b{Ad}}{b{dc}}}{{Ab{hA`}}}An}`{ce{}{}}000000````````{{{b{Ad}}{b{Ad}}{b{d{Cn{Cl}}}}}{{Ab{BfA`}}}}{{{b{C`}}}Bd}0{{{b{C`}}{b{Cf}}D`}Cf}10{{{b{c}}}e{}{}}000000{c{{Ab{e}}}{}{}}0000000000000{{{b{c}}}Ah{}}000000`","D":"Dh","p":[[1,"reference"],[0,"mut"],[5,"GeneratedBindings",0],[1,"unit"],[5,"GeneratedBinding",0],[5,"Formatter",210],[8,"Result",210],[6,"BindGenError",31],[6,"Result",211],[5,"Path",212],[10,"AsRef",213],[5,"TypeId",214],[1,"str"],[5,"Vec",215],[10,"Write",216],[10,"Error",217],[6,"Option",218],[5,"String",219],[5,"MavProfile",55],[5,"MavEnum",55],[5,"MavEnumEntry",55],[5,"MavMessage",55],[5,"MavField",55],[6,"MavType",55],[6,"MavXmlElement",55],[6,"Ordering",220],[5,"TokenStream",221],[1,"bool"],[1,"u8"],[5,"PathBuf",212],[5,"HashSet",222],[5,"Ident",221],[15,"CouldNotCreateRustBindingsFile",47],[15,"CouldNotReadDefinitionsDirectory",47],[15,"CouldNotReadDefinitionFile",47],[15,"CouldNotReadDirectoryEntryInDefinitionsDirectory",47]],"r":[[0,31]],"b":[[38,"impl-Display-for-BindGenError"],[39,"impl-Debug-for-BindGenError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAK4ACwAAAAkACwACABQADAAlAAMAKwAvAFwAGwB5ABUAkAAHAKAAAACoAAgAtgAcAA=="}],\ ["mavlink_core",{"t":"TTTFFSSSKFFGKRKTPPNNNNNNNNNNCCHNNNNNNNNNNNNNNNOHNNNMMNNNNNNCMNNNNNNNNNNNNNNNONNNNNNNMNNMMONNMNNNNCMONNHHHHHMNNMNNNNNNOMMNNNNNNNNNMNNONNNNNNNNNNNNNNNNNNNNCHHHFNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNPPPPGGPGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOFNNNNNNNNNNNNNNKHM","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","has_valid_crc","has_valid_crc","header","header","header","header","incompatibility_flags","incompatibility_flags_mut","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","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","serialize_message_for_signing","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","RustDefault","remove_trailing_zeroes","rust_default"],"q":[[0,"mavlink_core"],[157,"mavlink_core::bytes"],[181,"mavlink_core::bytes_mut"],[206,"mavlink_core::error"],[248,"mavlink_core::error::ParserError"],[253,"mavlink_core::peek_reader"],[268,"mavlink_core::utils"],[271,"core::clone"],[272,"mavlink_core::connection"],[273,"alloc::boxed"],[274,"std::io::error"],[275,"core::result"],[276,"serde::de"],[277,"core::fmt"],[278,"std::io"],[279,"serde::ser"],[280,"core::any"],[281,"alloc::string"]],"i":[21,21,21,0,0,0,0,0,0,0,0,0,0,21,0,21,9,9,8,9,10,6,7,8,9,10,6,7,0,0,0,6,7,8,9,10,6,7,8,9,10,6,7,7,6,7,8,0,8,6,7,12,21,10,8,8,9,6,7,0,12,8,9,10,6,7,8,9,10,6,7,6,7,10,6,7,10,7,7,8,9,10,6,7,12,6,7,12,12,10,6,7,12,6,7,6,7,0,15,10,6,7,0,0,0,0,0,15,15,15,15,15,15,15,15,6,7,8,12,21,10,8,9,10,6,7,6,7,7,15,6,7,8,8,9,10,6,7,8,9,10,6,7,8,9,10,6,7,8,9,10,6,7,0,0,0,0,0,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,0,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,22,22,30,33,0,0,30,0,22,22,30,33,22,30,33,22,22,30,30,33,33,22,30,30,30,33,33,22,30,33,22,30,33,22,30,33,22,30,33,22,30,33,51,52,53,52,51,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28,0,0,50],"f":"``````````````````{{{b{c}}}{{b{e}}}{}{}}0000{{{b{dc}}}{{b{de}}}{}{}}0000``{{{b{{h{f}}}}f}j}{{{b{l}}}j}{{{b{n}}}j}{{{b{A`}}}A`}{{{b{Ab}}}Ab}{{{b{{Ad{c}}}}}{{Ad{c}}}{AfAh}}{{{b{l}}}l}{{{b{n}}}n}{{{b{c}}{b{de}}}Aj{}{}}0000{{{b{n}}}f}{{{b{l}}}f}1`{{{b{Al}}}{{Bb{{B`{An}}}}}}{{}A`}{{}l}{{}n}{Bd{{Bf{Ah{b{Al}}}}}}{{Ab{b{{h{f}}}}}{{Bf{{Bj{}{{Bh{c}}}}Bl}}}Ah}{{Ab{b{{h{f}}}}}{{Bf{{Ad{c}}Bl}}}Ah}{c{{Bf{A`}}}Bn}{{{b{A`}}{b{A`}}}C`}{{{b{Ab}}{b{Ab}}}C`}{{{b{l}}{b{l}}}C`}{{{b{n}}{b{n}}}C`}`{Bdf}{{{b{A`}}{b{dCb}}}Cd}{{{b{Ab}}{b{dCb}}}Cd}{{{b{{Ad{c}}}}{b{dCb}}}Cd{CfAh}}{{{b{l}}{b{dCb}}}Cd}{{{b{n}}{b{dCb}}}Cd}{cc{}}0000{{{b{l}}}C`}{{{b{n}}}C`}{{{b{{Ad{c}}}}}A`Ah}{{{b{dl}}}{{b{{h{f}}}}}}{{{b{n}}}{{b{{h{f}}}}}}`{{{b{n}}}f}{{{b{dn}}}{{b{df}}}}{ce{}{}}0000{{{b{Ah}}}Bd}{{{b{l}}}f}{{{b{n}}}Bd}{{{b{Al}}}{{Bf{Bd{b{Al}}}}}}{{{b{Ah}}}{{b{Al}}}}`{{}l}{{}n}{{AbBd{b{{h{f}}}}}{{Bf{AhBl}}}}{{{b{l}}}{{b{{h{f}}}}}}<7;`{{{b{An}}}Ab}`1={{{b{d{Ch{c}}}}}{{Bf{{Cj{A`e}}Cl}}}CnAh}{{{b{d{Ch{c}}}}}{{Bf{lCl}}}Cn}1{{{b{d{Ch{c}}}}}{{Bf{nCl}}}Cn}{{{b{d{Ch{c}}}}Ab}{{Bf{{Cj{A`e}}Cl}}}CnAh}{{{b{An}}}{{Bf{{Cj{A`c}}Cl}}}Ah}{{{b{An}}}{{Bf{{Ad{c}}Cl}}}Ah}0{{{b{An}}{b{A`}}{b{c}}}{{Bf{D`Db}}}Ah}{{{b{An}}{b{c}}}{{Bf{D`Db}}}Ah}0{{{b{An}}{b{{Ad{c}}}}}{{Bf{D`Db}}}Ah}0{{{b{l}}}f}{{{b{n}}}f}`{{{b{Ah}}Ab{b{d{h{f}}}}}D`}{{{b{{Bj{}{{Bh{c}}}}}}Ab{b{d{h{f}}}}}D`Ah}{{{b{{Ad{c}}}}{b{d{h{f}}}}}D`Ah}{{{b{A`}}c}BfDd}{{{b{Ab}}c}BfDd}{{{b{{Ad{c}}}}e}Bf{DfAh}Dd}{{{b{dl}}A`{b{c}}}AjAh}{{{b{dn}}A`{b{c}}}AjAh}{{{b{dl}}A`{b{c}}}AjBj}{{{b{dn}}A`{b{c}}}AjBj}2{{{b{dAn}}Ab}Aj}<;`{{{b{c}}}e{}{}}0000{c{{Bf{e}}}{}{}}000000000{{{b{c}}}Dh{}}0000`{{{b{dc}}A`{b{e}}}{{Bf{D`Db}}}DjAh}0{{{b{dc}}AbA`{b{e}}}{{Bf{D`Db}}}DjAh}`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{cc{}}{{{b{dDl}}}{{Dn{f}}}}{{{b{dDl}}D`}{{b{{h{f}}}}}}{{{b{dDl}}}E`}{{{b{dDl}}}Eb}{{{b{dDl}}}Ed}{{{b{dDl}}}Ef}0{{{b{dDl}}}Eh}{{{b{dDl}}}Ej}{{{b{dDl}}}j}{{{b{dDl}}}Bd}0{{{b{dDl}}}El}{{{b{dDl}}}f}{ce{}{}}{{{b{{h{f}}}}}Dl}{{{b{Dl}}}{{b{{h{f}}}}}}{c{{Bf{e}}}{}{}}0{{{b{c}}}Dh{}}`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{cc{}}7{{{b{En}}}C`}{{{b{En}}}D`}{{{b{d{h{f}}}}}En}{{{b{dEn}}E`}Aj}{{{b{dEn}}Eb}Aj}{{{b{dEn}}Ed}Aj}{{{b{dEn}}Ef}Aj}0{{{b{dEn}}Eh}Aj}{{{b{dEn}}Ej}Aj}{{{b{dEn}}{b{{h{f}}}}}Aj}{{{b{dEn}}j}Aj}{{{b{dEn}}Bd}Aj}0{{{b{dEn}}El}Aj}{{{b{dEn}}f}Aj}<{c{{Bf{e}}}{}{}}0{{{b{c}}}Dh{}}`````````{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{{b{Bl}}{b{dCb}}}Cd}0{{{b{Cl}}{b{dCb}}}Cd}0{{{b{Db}}{b{dCb}}}Cd}0{cc{}}{BlCl}1{F`Cl}{F`Db}3{ce{}{}}00{{{b{c}}}Fb{}}00<<<<<<;;;``````:9{{{b{d{Ch{c}}}}D`}D`Cn}62{c{{Ch{c}}}Cn}{{{b{d{Ch{c}}}}D`}{{Bf{{b{{h{f}}}}Cl}}}Cn}0{{{b{d{Ch{c}}}}}{{Bf{fCl}}}Cn}{{{b{d{Ch{c}}}}}{{b{dc}}}Cn}{{{b{d{Ch{c}}}}}{{b{c}}}Cn}{c{{Bf{e}}}{}{}}0{{{b{c}}}Dh{}}`{{{b{{h{f}}}}}D`}{{}Fd}","D":"Gh","p":[[1,"reference"],[0,"mut"],[1,"u8"],[1,"slice"],[1,"u16"],[5,"MAVLinkV1MessageRaw",0],[5,"MAVLinkV2MessageRaw",0],[5,"MavHeader",0],[6,"MavlinkVersion",0],[5,"MavFrame",0],[10,"Clone",271],[10,"Message",0],[1,"unit"],[1,"str"],[10,"MavConnection",0,272],[5,"Box",273],[8,"Result",274],[1,"u32"],[6,"Result",275],[17,"Message"],[10,"MessageData",0],[6,"ParserError",206],[10,"Deserializer",276],[1,"bool"],[5,"Formatter",277],[8,"Result",277],[10,"Debug",277],[5,"PeekReader",253],[1,"tuple"],[6,"MessageReadError",206],[10,"Read",278],[1,"usize"],[6,"MessageWriteError",206],[10,"Serializer",279],[10,"Serialize",279],[5,"TypeId",280],[10,"Write",278],[5,"Bytes",157],[1,"array"],[1,"f32"],[1,"f64"],[1,"i16"],[1,"i32"],[1,"i64"],[1,"i8"],[1,"u64"],[5,"BytesMut",181],[5,"Error",274],[5,"String",281],[10,"RustDefault",268],[15,"InvalidEnum",248],[15,"InvalidFlag",248],[15,"UnknownMessage",248]],"r":[[8,272],[47,272]],"b":[[221,"impl-Debug-for-ParserError"],[222,"impl-Display-for-ParserError"],[223,"impl-Display-for-MessageReadError"],[224,"impl-Debug-for-MessageReadError"],[225,"impl-Debug-for-MessageWriteError"],[226,"impl-Display-for-MessageWriteError"],[228,"impl-From%3CParserError%3E-for-MessageReadError"],[230,"impl-From%3CError%3E-for-MessageReadError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAANMAFwABAAQACAAAAA0AIgAxAAQANwALAEgAAQBLAAQAVQAMAGMAAwBrAAAAdAACAHgAAAB6ACAAngACAKIADQCxAAcAuwAoAOUAAADnAAEA7QAQAP8AAQAKAQIADwEAAA=="}],\ ["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,3,4,5,3,4,5,3,4,5,3,4,5,3,3,4,5,3,4,5,3,4,5,3,4,5,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,5,3,4,5,3,4,5,3,4,5,3,4,5,3,4,5,3,4,5,3,4,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,20,21,22,23,18,19,20,21,22,23,18,19,20,21,22,23,18,19,20,21,22,23,18,19,18,18,20,22,18,20,22,18,19,20,21,22,23,18,19,20,21,22,23,18,19,20,21,22,23,19,21,23,18,20,22,18,20,22,19,21,23,19,21,23,18,20,22,18,20,22,19,21,23,18,19,20,21,22,23,18,19,20,21,22,23,18,19,20,21,22,23,18,19,20,21,22,23,0,0,0,24,25,24,25,24,25,24,25,24,24,25,24,25,25,25,24,25,24,25,24,26,24,25,24,25,24,25,24,25,25,24,25,0,0,27,28,27,28,27,28,27,28,27,27,27,28,27,28,27,28,27,28,28,28,27,28,27,28,27,28,27,28,0,29,29,29,29,29,29,29,29,29,29,0,0,30,31,30,31,30,31,30,31,30,30,31,30,31,30,31,30,31,31,30,31,30,31,30,31,30,31,0,0,0,0,0,0,0,0,0,0,32,33,34,35,36,37,32,33,34,35,36,37,32,33,34,35,36,37,32,33,34,35,36,37,32,33,32,32,34,36,32,34,36,32,33,34,35,36,37,32,33,34,35,36,37,32,33,34,35,36,37,33,35,37,32,34,36,32,34,36,32,34,36,32,34,36,33,35,37,33,35,37,32,34,36,32,34,36,33,35,37,32,33,34,35,36,37,32,33,34,35,36,37,32,33,34,35,36,37,32,33,34,35,36,37,0,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,0,0,0,0,0,0,0,0,39,40,41,42,43,44,39,40,41,42,43,44,39,40,41,42,43,44,39,40,41,42,43,44,39,40,39,39,41,43,39,41,43,39,40,41,42,43,44,39,40,41,42,43,44,39,40,41,42,43,44,40,42,44,39,41,43,39,41,43,39,41,43,39,41,43,40,42,44,40,42,44,39,41,43,39,41,43,40,42,44,39,40,41,42,43,44,39,40,41,42,43,44,39,40,41,42,43,44,39,40,41,42,43,44,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,51,0,0,0,0,0,51,0,46,47,51,52,53,46,47,48,51,52,53,46,47,48,48,48,48,51,52,53,46,47,48,51,52,53,46,47,48,51,48,0,46,0,46,51,52,53,46,47,48,51,52,53,46,47,48,51,52,53,46,47,48,52,53,52,53,46,47,46,47,46,47,48,52,53,48,0,47,0,47,52,51,52,53,46,47,48,51,52,53,46,47,48,51,52,53,46,47,48,51,52,53,46,47,48],"f":"````{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{{b{f}}}f}{{{b{h}}}h}{{{b{j}}}j}{{{b{c}}{b{de}}}l{}{}}00{fn}{{{b{f}}{b{dA`}}}Ab}{{{b{h}}{b{dA`}}}Ab}{{{b{j}}{b{dA`}}}Ab}{cc{}}00{ce{}{}}00000{{Ad{b{{Af{Ad}}}}}{{Ah{n}}}}{{AdAd{b{{Af{Ad}}}}}{{Ah{n}}}}{{AdAd{b{{Af{Ad}}}}}h}{{AdAdAd{b{{Af{Ad}}}}}{{Ah{n}}}}{{AdAdAd{b{{Af{Ad}}}}}j}{{Ad{b{{Af{Ad}}}}}f}`54{{AdAd{b{{Af{Ad}}}}}{{Aj{h}}}}3{{AdAdAd{b{{Af{Ad}}}}}{{Aj{j}}}}{{Ad{b{{Af{Ad}}}}}{{Aj{f}}}}364{{{b{df}}}{{Ah{n}}}}{{{b{dh}}}{{Ah{n}}}}{{{b{dj}}}{{Ah{n}}}}210{{{b{f}}}{{Al{n{Ah{n}}}}}}{{{b{h}}}{{Al{n{Ah{n}}}}}}{{{b{j}}}{{Al{n{Ah{n}}}}}}{{{b{c}}}e{}{}}00{c{{An{e}}}{}{}}00000{{{b{c}}}B`{}}00``{{{b{{Af{Ad}}}}{b{{Af{Ad}}}}}Bb}{{AdAdn}Bb}11```````````{{{b{c}}}{{b{e}}}{}{}}00000{{{b{dc}}}{{b{de}}}{}{}}00000{{{b{Bd}}}Bd}{{{b{Bf}}}Bf}{{{b{Bh}}}Bh}{{{b{Bj}}}Bj}{{{b{Bl}}}Bl}{{{b{Bn}}}Bn}{{{b{c}}{b{de}}}l{}{}}00000{{{b{Bd}}{b{{Af{Ad}}}}}n}{Bfn}{{{b{Bd}}AdAd}n}{{{b{Bd}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Bh}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Bl}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Bd}}AdAd}{{Ah{Ad}}}}{{{b{Bh}}AdAd}{{Ah{Ad}}}}{{{b{Bl}}AdAd}{{Ah{Ad}}}}{{{b{Bd}}{b{dA`}}}Ab}{{{b{Bf}}{b{dA`}}}Ab}{{{b{Bh}}{b{dA`}}}Ab}{{{b{Bj}}{b{dA`}}}Ab}{{{b{Bl}}{b{dA`}}}Ab}{{{b{Bn}}{b{dA`}}}Ab}{cc{}}00000{ce{}{}}00000000{{{b{Bd}}{b{{Af{Ad}}}}}Bf}{{{b{Bh}}{b{{Af{Ad}}}}}Bj}{{{b{Bl}}{b{{Af{Ad}}}}}Bn}{AdBd}{{AdAd}Bh}{{AdAdAd}Bl}{{{b{dBf}}}{{Ah{n}}}}{{{b{dBj}}}{{Ah{n}}}}{{{b{dBn}}}{{Ah{n}}}}210{{{b{Bd}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Bh}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Bl}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Bd}}AdAd}{{Ah{Ad}}}}{{{b{Bh}}AdAd}{{Ah{Ad}}}}{{{b{Bl}}AdAd}{{Ah{Ad}}}}{{{b{Bf}}}{{Al{n{Ah{n}}}}}}{{{b{Bj}}}{{Al{n{Ah{n}}}}}}{{{b{Bn}}}{{Al{n{Ah{n}}}}}}{{{b{c}}}e{}{}}00000{c{{An{e}}}{}{}}00000000000{{{b{c}}}B`{}}00000```{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{C`}}}C`}{{{b{Cb}}}Cb}{{{b{c}}{b{de}}}l{}{}}0{{{b{C`}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{C`}}{b{dA`}}}Ab}{{{b{Cb}}{b{dA`}}}Ab}{cc{}}0{{{b{Cb}}}Ad}0{ce{}{}}0{{{b{{Af{Ad}}}}}{{Ah{C`}}}}{{{b{{Af{Ad}}}}}{{Ah{Cb}}}}{{{b{C`}}}{{b{Cb}}}}{{{b{Cd}}Ad}Ad}{{{b{c}}}e{}{}}0{c{{An{e}}}{}{}}000{{{b{c}}}B`{}}0{{{b{{Af{Ad}}}}AdAd}{{Ah{Cb}}}}{{{b{{Af{Ad}}}}Cb}{{Ah{C`}}}}{{{b{{Af{Ad}}}}c}{{Ah{Cb}}}Cd}``{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{Cf}}}Cf}{{{b{Ch}}}Ch}{{{b{c}}{b{de}}}l{}{}}0{{{b{Cf}}{b{{Af{Ad}}}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Cf}}AdAdAdAd}{{Ah{Ad}}}}{{{b{Cf}}{b{dA`}}}Ab}{{{b{Ch}}{b{dA`}}}Ab}{cc{}}0{ce{}{}}0{{{b{{Af{Ad}}}}}Cf}{{{b{{Af{Ad}}}}}Ch}{{{b{Ch}}{b{{Af{Ad}}}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Ch}}AdAdAdAd}{{Ah{Ad}}}}{{{b{c}}}e{}{}}0{c{{An{e}}}{}{}}000{{{b{c}}}B`{}}0`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{Cj}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Cj}}{b{dA`}}}Ab}<;{{{b{{Af{Ad}}}}}{{Ah{Cj}}}}665``4433{{{b{Cl}}}Cl}{{{b{Cn}}}Cn}{{{b{c}}{b{de}}}l{}{}}0{{{b{Cl}}{b{{Af{Ad}}}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Cl}}{b{dA`}}}Ab}{{{b{Cn}}{b{dA`}}}Ab}{cc{}}0{ce{}{}}0{{{b{{Af{Ad}}}}}Cl}{{{b{{Af{Ad}}}}}Cn}{{{b{Cn}}{b{{Af{Ad}}}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{c}}}e{}{}}0{c{{An{e}}}{}{}}000{{{b{c}}}B`{}}0``````````{{{b{c}}}{{b{e}}}{}{}}00000{{{b{dc}}}{{b{de}}}{}{}}00000{{{b{D`}}}D`}{{{b{Db}}}Db}{{{b{Dd}}}Dd}{{{b{Df}}}Df}{{{b{Dh}}}Dh}{{{b{Dj}}}Dj}{{{b{c}}{b{de}}}l{}{}}00000{{{b{D`}}{b{{Af{Ad}}}}}n}{Dbn}{{{b{D`}}AdAd}n}{{{b{D`}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Dd}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Dh}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{D`}}AdAd}{{Ah{Ad}}}}{{{b{Dd}}AdAd}{{Ah{Ad}}}}{{{b{Dh}}AdAd}{{Ah{Ad}}}}{{{b{D`}}{b{dA`}}}Ab}{{{b{Db}}{b{dA`}}}Ab}{{{b{Dd}}{b{dA`}}}Ab}{{{b{Df}}{b{dA`}}}Ab}{{{b{Dh}}{b{dA`}}}Ab}{{{b{Dj}}{b{dA`}}}Ab}{cc{}}00000{ce{}{}}00000000{{}Bb}00{{{b{D`}}{b{{Af{Ad}}}}}Db}{{{b{Dd}}{b{{Af{Ad}}}}}Df}{{{b{Dh}}{b{{Af{Ad}}}}}Dj}{Ad{{Ah{D`}}}}{{AdAd}{{Ah{Dd}}}}{{AdAdAd}{{Ah{Dh}}}}{AdD`}{{AdAd}Dd}{{AdAdAd}Dh}{{{b{dDb}}}{{Ah{n}}}}{{{b{dDf}}}{{Ah{n}}}}{{{b{dDj}}}{{Ah{n}}}}210{{{b{D`}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Dd}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Dh}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{D`}}AdAd}{{Ah{Ad}}}}{{{b{Dd}}AdAd}{{Ah{Ad}}}}{{{b{Dh}}AdAd}{{Ah{Ad}}}}{{{b{Db}}}{{Al{n{Ah{n}}}}}}{{{b{Df}}}{{Al{n{Ah{n}}}}}}{{{b{Dj}}}{{Al{n{Ah{n}}}}}}{{{b{c}}}e{}{}}00000{c{{An{e}}}{}{}}00000000000{{{b{c}}}B`{}}00000`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{Dl}}}Dl}{{{b{c}}{b{de}}}l{}{}}{{{b{Dl}}{b{{Af{Ad}}}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Dl}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Dl}}{b{dA`}}}Ab}{cc{}}{ce{}{}}{{}Bb}{{{b{Dl}}}n}{{{b{{Af{Ad}}}}}{{Ah{Dl}}}}{{{b{Dl}}}{{b{Cb}}}}?>>={{{b{{Af{Ad}}}}Cb}{{Ah{Dl}}}}````````======<<<<<<{{{b{Dn}}}Dn}{{{b{E`}}}E`}{{{b{Eb}}}Eb}{{{b{Ed}}}Ed}{{{b{Ef}}}Ef}{{{b{Eh}}}Eh}{{{b{c}}{b{de}}}l{}{}}00000{{{b{Dn}}{b{{Af{Ad}}}}}n}{E`n}{{{b{Dn}}AdAd}n}{{{b{Dn}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Eb}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Ef}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Dn}}AdAd}{{Ah{Ad}}}}{{{b{Eb}}AdAd}{{Ah{Ad}}}}{{{b{Ef}}AdAd}{{Ah{Ad}}}}{{{b{Dn}}{b{dA`}}}Ab}{{{b{E`}}{b{dA`}}}Ab}{{{b{Eb}}{b{dA`}}}Ab}{{{b{Ed}}{b{dA`}}}Ab}{{{b{Ef}}{b{dA`}}}Ab}{{{b{Eh}}{b{dA`}}}Ab}{cc{}}00000{ce{}{}}00000000{{}Bb}00{{{b{Dn}}{b{{Af{Ad}}}}}E`}{{{b{Eb}}{b{{Af{Ad}}}}}Ed}{{{b{Ef}}{b{{Af{Ad}}}}}Eh}{Ad{{Ah{Dn}}}}{{AdAd}{{Ah{Eb}}}}{{AdAdAd}{{Ah{Ef}}}}{AdDn}{{AdAd}Eb}{{AdAdAd}Ef}{{{b{dE`}}}{{Ah{n}}}}{{{b{dEd}}}{{Ah{n}}}}{{{b{dEh}}}{{Ah{n}}}}210{{{b{Dn}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Eb}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Ef}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Dn}}AdAd}{{Ah{Ad}}}}{{{b{Eb}}AdAd}{{Ah{Ad}}}}{{{b{Ef}}AdAd}{{Ah{Ad}}}}{{{b{E`}}}{{Al{n{Ah{n}}}}}}{{{b{Ed}}}{{Al{n{Ah{n}}}}}}{{{b{Eh}}}{{Al{n{Ah{n}}}}}}{{{b{c}}}e{}{}}00000{c{{An{e}}}{}{}}00000000000{{{b{c}}}B`{}}00000`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{Ej}}}Ej}{{{b{c}}{b{de}}}l{}{}}{{{b{Ej}}{b{{Af{Ad}}}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Ej}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{Ej}}{b{dA`}}}Ab}{cc{}}{ce{}{}}{{}Bb}{{{b{Ej}}}n}{{{b{{Af{Ad}}}}}{{Ah{Ej}}}}{{{b{Ej}}}{{b{Cb}}}}?>>={{{b{{Af{Ad}}}}Cb}{{Ah{Ej}}}}````````{{{b{El}}}El}{{{b{En}}}En}??????>>>>>>{{{b{F`}}{b{c}}}El{Fb{Fd{{Af{Ad}}}}}}{{{b{F`}}c{b{e}}}ElCd{Fb{Fd{{Af{Ad}}}}}}{{{b{F`}}{b{c}}}En{Fb{Fd{{Af{Ad}}}}}}{{{b{Ff}}}Ff}{{{b{Fh}}}Fh}{{{b{Fj}}}Fj}76{{{b{F`}}}F`}{{{b{c}}{b{de}}}l{}{}}00000{{}Ff}{{}F`}{{{b{{Af{Ad}}}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{El}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{{Af{Ad}}}}{b{c}}}Fh{Fb{Fd{{Af{Ad}}}}}}{{{b{El}}{b{{Af{Ad}}}}}Fh}{{{b{Ff}}{b{dA`}}}Ab}{{{b{Fh}}{b{dA`}}}Ab}{{{b{Fj}}{b{dA`}}}Ab}{{{b{El}}{b{dA`}}}Ab}{{{b{En}}{b{dA`}}}Ab}{{{b{F`}}{b{dA`}}}Ab}{cc{}}00000{ce{}{}}0000000{FhFh}{FjFj}{ElEl}{EnEn}{{{b{El}}}{{b{{Af{Ad}}}}}}{{{b{En}}}{{b{{Af{Ad}}}}}}{{{b{c}}}El{Fb{Fd{{Af{Ad}}}}}}{{{b{c}}}En{Fb{Fd{{Af{Ad}}}}}}{{}F`}{{{b{dFh}}}{{Ah{n}}}}{{{b{dFj}}}{{Ah{n}}}}{{{b{dF`}}Ff}{{b{dF`}}}}{{{b{{Af{Ad}}}}{b{{Af{Ad}}}}}{{Ah{n}}}}{{{b{En}}c}{{Ah{n}}}{{Fd{{Af{Ad}}}}}}{{{b{{Af{Ad}}}}{b{c}}}Fj{Fb{Fd{{Af{Ad}}}}}}{{{b{En}}{b{{Af{Ad}}}}}Fj}{{{b{Fh}}}{{Al{n{Ah{n}}}}}}{{{b{c}}}e{}{}}00000{c{{An{e}}}{}{}}00000000000{{{b{c}}}B`{}}00000","D":"BBj","p":[[1,"reference"],[0,"mut"],[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-44988716d84216e2/out/ardupilotmega.rs.html b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-44988716d84216e2/out/ardupilotmega.rs.html index 9abde35b91..d3c1790550 100644 --- a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-44988716d84216e2/out/ardupilotmega.rs.html +++ b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-44988716d84216e2/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 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 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 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 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 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 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 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 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 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 LimitsState { LIMITS_INIT = 0 , LIMITS_DISABLED = 1 , LIMITS_ENABLED = 2 , LIMITS_TRIGGERED = 3 , LIMITS_RECOVERING = 4 , LIMITS_RECOVERED = 5 , } impl LimitsState { pub const DEFAULT : Self = Self :: LIMITS_INIT ; } impl Default for LimitsState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproRequestStatus { GOPRO_REQUEST_SUCCESS = 0 , GOPRO_REQUEST_FAILED = 1 , } impl GoproRequestStatus { pub const DEFAULT : Self = Self :: GOPRO_REQUEST_SUCCESS ; } impl Default for GoproRequestStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 RtkBaselineCoordinateSystem { RTK_BASELINE_COORDINATE_SYSTEM_ECEF = 0 , RTK_BASELINE_COORDINATE_SYSTEM_NED = 1 , } impl RtkBaselineCoordinateSystem { pub const DEFAULT : Self = Self :: RTK_BASELINE_COORDINATE_SYSTEM_ECEF ; } impl Default for RtkBaselineCoordinateSystem { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 MavOdidArmStatus { MAV_ODID_ARM_STATUS_GOOD_TO_ARM = 0 , MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC = 1 , } impl MavOdidArmStatus { pub const DEFAULT : Self = Self :: MAV_ODID_ARM_STATUS_GOOD_TO_ARM ; } impl Default for MavOdidArmStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PreflightStorageParameterAction { PARAM_READ_PERSISTENT = 0 , PARAM_WRITE_PERSISTENT = 1 , PARAM_RESET_CONFIG_DEFAULT = 2 , PARAM_RESET_SENSOR_DEFAULT = 3 , PARAM_RESET_ALL_DEFAULT = 4 , } impl PreflightStorageParameterAction { pub const DEFAULT : Self = Self :: PARAM_READ_PERSISTENT ; } impl Default for PreflightStorageParameterAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 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 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 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 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 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 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 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 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 ScriptingCmd { SCRIPTING_CMD_REPL_START = 0 , SCRIPTING_CMD_REPL_STOP = 1 , SCRIPTING_CMD_STOP = 2 , SCRIPTING_CMD_STOP_AND_RESTART = 3 , } impl ScriptingCmd { pub const DEFAULT : Self = Self :: SCRIPTING_CMD_REPL_START ; } impl Default for ScriptingCmd { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 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 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 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 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 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 ActuatorOutputFunction { ACTUATOR_OUTPUT_FUNCTION_NONE = 0 , ACTUATOR_OUTPUT_FUNCTION_MOTOR1 = 1 , ACTUATOR_OUTPUT_FUNCTION_MOTOR2 = 2 , ACTUATOR_OUTPUT_FUNCTION_MOTOR3 = 3 , ACTUATOR_OUTPUT_FUNCTION_MOTOR4 = 4 , ACTUATOR_OUTPUT_FUNCTION_MOTOR5 = 5 , ACTUATOR_OUTPUT_FUNCTION_MOTOR6 = 6 , ACTUATOR_OUTPUT_FUNCTION_MOTOR7 = 7 , ACTUATOR_OUTPUT_FUNCTION_MOTOR8 = 8 , ACTUATOR_OUTPUT_FUNCTION_MOTOR9 = 9 , ACTUATOR_OUTPUT_FUNCTION_MOTOR10 = 10 , ACTUATOR_OUTPUT_FUNCTION_MOTOR11 = 11 , ACTUATOR_OUTPUT_FUNCTION_MOTOR12 = 12 , ACTUATOR_OUTPUT_FUNCTION_MOTOR13 = 13 , ACTUATOR_OUTPUT_FUNCTION_MOTOR14 = 14 , ACTUATOR_OUTPUT_FUNCTION_MOTOR15 = 15 , ACTUATOR_OUTPUT_FUNCTION_MOTOR16 = 16 , ACTUATOR_OUTPUT_FUNCTION_SERVO1 = 33 , ACTUATOR_OUTPUT_FUNCTION_SERVO2 = 34 , ACTUATOR_OUTPUT_FUNCTION_SERVO3 = 35 , ACTUATOR_OUTPUT_FUNCTION_SERVO4 = 36 , ACTUATOR_OUTPUT_FUNCTION_SERVO5 = 37 , ACTUATOR_OUTPUT_FUNCTION_SERVO6 = 38 , ACTUATOR_OUTPUT_FUNCTION_SERVO7 = 39 , ACTUATOR_OUTPUT_FUNCTION_SERVO8 = 40 , ACTUATOR_OUTPUT_FUNCTION_SERVO9 = 41 , ACTUATOR_OUTPUT_FUNCTION_SERVO10 = 42 , ACTUATOR_OUTPUT_FUNCTION_SERVO11 = 43 , ACTUATOR_OUTPUT_FUNCTION_SERVO12 = 44 , ACTUATOR_OUTPUT_FUNCTION_SERVO13 = 45 , ACTUATOR_OUTPUT_FUNCTION_SERVO14 = 46 , ACTUATOR_OUTPUT_FUNCTION_SERVO15 = 47 , ACTUATOR_OUTPUT_FUNCTION_SERVO16 = 48 , } impl ActuatorOutputFunction { pub const DEFAULT : Self = Self :: ACTUATOR_OUTPUT_FUNCTION_NONE ; } impl Default for ActuatorOutputFunction { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavPowerStatus : u16 { const MAV_POWER_STATUS_BRICK_VALID = 1 ; const MAV_POWER_STATUS_SERVO_VALID = 2 ; const MAV_POWER_STATUS_USB_CONNECTED = 4 ; const MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 ; const MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 ; const MAV_POWER_STATUS_CHANGED = 32 ; } } impl MavPowerStatus { pub const DEFAULT : Self = Self :: MAV_POWER_STATUS_BRICK_VALID ; } impl Default for MavPowerStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 MavOdidTimeAcc { MAV_ODID_TIME_ACC_UNKNOWN = 0 , MAV_ODID_TIME_ACC_0_1_SECOND = 1 , MAV_ODID_TIME_ACC_0_2_SECOND = 2 , MAV_ODID_TIME_ACC_0_3_SECOND = 3 , MAV_ODID_TIME_ACC_0_4_SECOND = 4 , MAV_ODID_TIME_ACC_0_5_SECOND = 5 , MAV_ODID_TIME_ACC_0_6_SECOND = 6 , MAV_ODID_TIME_ACC_0_7_SECOND = 7 , MAV_ODID_TIME_ACC_0_8_SECOND = 8 , MAV_ODID_TIME_ACC_0_9_SECOND = 9 , MAV_ODID_TIME_ACC_1_0_SECOND = 10 , MAV_ODID_TIME_ACC_1_1_SECOND = 11 , MAV_ODID_TIME_ACC_1_2_SECOND = 12 , MAV_ODID_TIME_ACC_1_3_SECOND = 13 , MAV_ODID_TIME_ACC_1_4_SECOND = 14 , MAV_ODID_TIME_ACC_1_5_SECOND = 15 , } impl MavOdidTimeAcc { pub const DEFAULT : Self = Self :: MAV_ODID_TIME_ACC_UNKNOWN ; } impl Default for MavOdidTimeAcc { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 } } 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 MotorTestOrder { MOTOR_TEST_ORDER_DEFAULT = 0 , MOTOR_TEST_ORDER_SEQUENCE = 1 , MOTOR_TEST_ORDER_BOARD = 2 , } impl MotorTestOrder { pub const DEFAULT : Self = Self :: MOTOR_TEST_ORDER_DEFAULT ; } impl Default for MotorTestOrder { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 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 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 GoproHeartbeatStatus { GOPRO_HEARTBEAT_STATUS_DISCONNECTED = 0 , GOPRO_HEARTBEAT_STATUS_INCOMPATIBLE = 1 , GOPRO_HEARTBEAT_STATUS_CONNECTED = 2 , GOPRO_HEARTBEAT_STATUS_ERROR = 3 , } impl GoproHeartbeatStatus { pub const DEFAULT : Self = Self :: GOPRO_HEARTBEAT_STATUS_DISCONNECTED ; } impl Default for GoproHeartbeatStatus { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 } } # [derive (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 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 MavMissionType { MAV_MISSION_TYPE_MISSION = 0 , MAV_MISSION_TYPE_FENCE = 1 , MAV_MISSION_TYPE_RALLY = 2 , MAV_MISSION_TYPE_ALL = 255 , } impl MavMissionType { pub const DEFAULT : Self = Self :: MAV_MISSION_TYPE_MISSION ; } impl Default for MavMissionType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 } } 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 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 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 , 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . param5) ; __tmp . put_f32_le (self . param6) ; __tmp . put_f32_le (self . param7) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . confirmation) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_i16_le (self . temperature) ; __tmp . put_u16_le (self . humidity) ; __tmp . put_u8 (self . id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POSITION_TARGET_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_STATUS_DATA { pub satellites_visible : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_prn : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_used : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_elevation : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_azimuth : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_snr : [u8 ; 20] , } impl GPS_STATUS_DATA { pub const ENCODED_LEN : usize = 101usize ; pub const DEFAULT : Self = Self { satellites_visible : 0_u8 , satellite_prn : [0_u8 ; 20usize] , satellite_used : [0_u8 ; 20usize] , satellite_elevation : [0_u8 ; 20usize] , satellite_azimuth : [0_u8 ; 20usize] , satellite_snr : [0_u8 ; 20usize] , } ; } impl Default for GPS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 25u32 ; const NAME : & 'static str = "GPS_STATUS" ; const EXTRA_CRC : u8 = 23u8 ; const ENCODED_LEN : usize = 101usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . satellites_visible = buf . get_u8 () ; for v in & mut __struct . satellite_prn { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_used { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_elevation { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_azimuth { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_snr { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . altitude_monotonic) ; __tmp . put_f32_le (self . altitude_amsl) ; __tmp . put_f32_le (self . altitude_local) ; __tmp . put_f32_le (self . altitude_relative) ; __tmp . put_f32_le (self . altitude_terrain) ; __tmp . put_f32_le (self . bottom_clearance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . value) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u16_le (self . message_rate) ; __tmp . put_u8 (self . stream_id) ; __tmp . put_u8 (self . on_off) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . param_value0) ; __tmp . put_f32_le (self . scale) ; __tmp . put_f32_le (self . param_value_min) ; __tmp . put_f32_le (self . param_value_max) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . parameter_rc_channel_index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_REQUEST_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . hdg) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . id) ; __tmp . put_u32_le (self . event_time_boot_ms) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . destination_component) ; __tmp . put_u8 (self . destination_system) ; __tmp . put_u8 (self . log_levels) ; for val in & self . arguments { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } for val in & self . voltage { __tmp . put_u16_le (* val) ; } for val in & self . current { __tmp . put_u16_le (* val) ; } for val in & self . totalcurrent { __tmp . put_u16_le (* val) ; } for val in & self . rpm { __tmp . put_u16_le (* val) ; } for val in & self . count { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_OPTICAL_FLOW_DATA { pub time_usec : u64 , pub integration_time_us : u32 , pub integrated_x : f32 , pub integrated_y : f32 , pub integrated_xgyro : f32 , pub integrated_ygyro : f32 , pub integrated_zgyro : f32 , pub time_delta_distance_us : u32 , pub distance : f32 , pub temperature : i16 , pub sensor_id : u8 , pub quality : u8 , } impl HIL_OPTICAL_FLOW_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , integration_time_us : 0_u32 , integrated_x : 0.0_f32 , integrated_y : 0.0_f32 , integrated_xgyro : 0.0_f32 , integrated_ygyro : 0.0_f32 , integrated_zgyro : 0.0_f32 , time_delta_distance_us : 0_u32 , distance : 0.0_f32 , temperature : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for HIL_OPTICAL_FLOW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_OPTICAL_FLOW_DATA { type Message = MavMessage ; const ID : u32 = 114u32 ; const NAME : & 'static str = "HIL_OPTICAL_FLOW" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . integration_time_us = buf . get_u32_le () ; __struct . integrated_x = buf . get_f32_le () ; __struct . integrated_y = buf . get_f32_le () ; __struct . integrated_xgyro = buf . get_f32_le () ; __struct . integrated_ygyro = buf . get_f32_le () ; __struct . integrated_zgyro = buf . get_f32_le () ; __struct . time_delta_distance_us = buf . get_u32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_network) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_PARTIAL_LIST_DATA { pub start_index : i16 , pub end_index : i16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_PARTIAL_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start_index : 0_i16 , end_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_PARTIAL_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_PARTIAL_LIST_DATA { type Message = MavMessage ; const ID : u32 = 37u32 ; const NAME : & 'static str = "MISSION_REQUEST_PARTIAL_LIST" ; const EXTRA_CRC : u8 = 212u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start_index = buf . get_i16_le () ; __struct . end_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u16_le (self . current_distance) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . orientation as u8) ; __tmp . put_u8 (self . covariance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . param_value) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_unix_usec) ; __tmp . put_u32_le (self . time_boot_ms) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_SCALED_DATA { pub time_boot_ms : u32 , pub chan1_scaled : i16 , pub chan2_scaled : i16 , pub chan3_scaled : i16 , pub chan4_scaled : i16 , pub chan5_scaled : i16 , pub chan6_scaled : i16 , pub chan7_scaled : i16 , pub chan8_scaled : i16 , pub port : u8 , pub rssi : u8 , } impl RC_CHANNELS_SCALED_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_scaled : 0_i16 , chan2_scaled : 0_i16 , chan3_scaled : 0_i16 , chan4_scaled : 0_i16 , chan5_scaled : 0_i16 , chan6_scaled : 0_i16 , chan7_scaled : 0_i16 , chan8_scaled : 0_i16 , port : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_SCALED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_SCALED_DATA { type Message = MavMessage ; const ID : u32 = 34u32 ; const NAME : & 'static str = "RC_CHANNELS_SCALED" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_scaled = buf . get_i16_le () ; __struct . chan2_scaled = buf . get_i16_le () ; __struct . chan3_scaled = buf . get_i16_le () ; __struct . chan4_scaled = buf . get_i16_le () ; __struct . chan5_scaled = buf . get_i16_le () ; __struct . chan6_scaled = buf . get_i16_le () ; __struct . chan7_scaled = buf . get_i16_le () ; __struct . chan8_scaled = buf . get_i16_le () ; __struct . port = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . onboard_control_sensors_present . bits ()) ; __tmp . put_u32_le (self . onboard_control_sensors_enabled . bits ()) ; __tmp . put_u32_le (self . onboard_control_sensors_health . bits ()) ; __tmp . put_u16_le (self . load) ; __tmp . put_u16_le (self . voltage_battery) ; __tmp . put_i16_le (self . current_battery) ; __tmp . put_u16_le (self . drop_rate_comm) ; __tmp . put_u16_le (self . errors_comm) ; __tmp . put_u16_le (self . errors_count1) ; __tmp . put_u16_le (self . errors_count2) ; __tmp . put_u16_le (self . errors_count3) ; __tmp . put_u16_le (self . errors_count4) ; __tmp . put_i8 (self . battery_remaining) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x_acc) ; __tmp . put_f32_le (self . y_acc) ; __tmp . put_f32_le (self . z_acc) ; __tmp . put_f32_le (self . x_vel) ; __tmp . put_f32_le (self . y_vel) ; __tmp . put_f32_le (self . z_vel) ; __tmp . put_f32_le (self . x_pos) ; __tmp . put_f32_le (self . y_pos) ; __tmp . put_f32_le (self . z_pos) ; __tmp . put_f32_le (self . airspeed) ; for val in & self . vel_variance { __tmp . put_f32_le (* val) ; } for val in & self . pos_variance { __tmp . put_f32_le (* val) ; } for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . roll_rate) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FLIGHT_INFORMATION_DATA { pub arming_time_utc : u64 , pub takeoff_time_utc : u64 , pub flight_uuid : u64 , pub time_boot_ms : u32 , } impl FLIGHT_INFORMATION_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { arming_time_utc : 0_u64 , takeoff_time_utc : 0_u64 , flight_uuid : 0_u64 , time_boot_ms : 0_u32 , } ; } impl Default for FLIGHT_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FLIGHT_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 264u32 ; const NAME : & 'static str = "FLIGHT_INFORMATION" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . arming_time_utc = buf . get_u64_le () ; __struct . takeoff_time_utc = buf . get_u64_le () ; __struct . flight_uuid = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . firmware_version) ; __tmp . put_f32_le (self . focal_length) ; __tmp . put_f32_le (self . sensor_size_h) ; __tmp . put_f32_le (self . sensor_size_v) ; __tmp . put_u32_le (self . flags . bits ()) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . cam_definition_version) ; for val in & self . vendor_name { __tmp . put_u8 (* val) ; } for val in & self . model_name { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . lens_id) ; for val in & self . cam_definition_uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { pub flags : GimbalManagerFlags , pub pitch : f32 , pub yaw : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , pitch : 0.0_f32 , yaw : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 288u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_MANUAL_CONTROL" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . terrain_height) ; __tmp . put_f32_le (self . current_height) ; __tmp . put_u16_le (self . spacing) ; __tmp . put_u16_le (self . pending) ; __tmp . put_u16_le (self . loaded) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . mavtype) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . 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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { COMMAND_LONG (COMMAND_LONG_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , ODOMETRY (ODOMETRY_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , HEARTBEAT (HEARTBEAT_DATA) , AOA_SSA (AOA_SSA_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , GIMBAL_CONTROL (GIMBAL_CONTROL_DATA) , GOPRO_GET_RESPONSE (GOPRO_GET_RESPONSE_DATA) , RADIO (RADIO_DATA) , AHRS3 (AHRS3_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , RPM (RPM_DATA) , DEVICE_OP_WRITE_REPLY (DEVICE_OP_WRITE_REPLY_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , ESC_TELEMETRY_9_TO_12 (ESC_TELEMETRY_9_TO_12_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , FENCE_POINT (FENCE_POINT_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , RANGEFINDER (RANGEFINDER_DATA) , LED_CONTROL (LED_CONTROL_DATA) , DEVICE_OP_READ_REPLY (DEVICE_OP_READ_REPLY_DATA) , CAMERA_STATUS (CAMERA_STATUS_DATA) , GPS_INPUT (GPS_INPUT_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , GPS_STATUS (GPS_STATUS_DATA) , SCALED_IMU (SCALED_IMU_DATA) , EKF_STATUS_REPORT (EKF_STATUS_REPORT_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , DIGICAM_CONFIGURE (DIGICAM_CONFIGURE_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , MOUNT_CONFIGURE (MOUNT_CONFIGURE_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , VIBRATION (VIBRATION_DATA) , SIM_STATE (SIM_STATE_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , CUBEPILOT_FIRMWARE_UPDATE_RESP (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA) , OBSTACLE_DISTANCE_3D (OBSTACLE_DISTANCE_3D_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , ALTITUDE (ALTITUDE_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , MEMINFO (MEMINFO_DATA) , HIL_STATE (HIL_STATE_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , GIMBAL_REPORT (GIMBAL_REPORT_DATA) , DIGICAM_CONTROL (DIGICAM_CONTROL_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , DATA_STREAM (DATA_STREAM_DATA) , MISSION_ACK (MISSION_ACK_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA) , AHRS2 (AHRS2_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , TUNNEL (TUNNEL_DATA) , WIND_COV (WIND_COV_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , SIMSTATE (SIMSTATE_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , GIMBAL_TORQUE_CMD_REPORT (GIMBAL_TORQUE_CMD_REPORT_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , DEVICE_OP_WRITE (DEVICE_OP_WRITE_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , EVENT (EVENT_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , SENSOR_OFFSETS (SENSOR_OFFSETS_DATA) , AIRSPEED_AUTOCAL (AIRSPEED_AUTOCAL_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , MCU_STATUS (MCU_STATUS_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , ESC_TELEMETRY_1_TO_4 (ESC_TELEMETRY_1_TO_4_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , AUTOPILOT_VERSION_REQUEST (AUTOPILOT_VERSION_REQUEST_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , WIND (WIND_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , AP_ADC (AP_ADC_DATA) , GOPRO_SET_RESPONSE (GOPRO_SET_RESPONSE_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , SET_MAG_OFFSETS (SET_MAG_OFFSETS_DATA) , GOPRO_GET_REQUEST (GOPRO_GET_REQUEST_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , TIMESYNC (TIMESYNC_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , DEEPSTALL (DEEPSTALL_DATA) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA) , ESC_TELEMETRY_5_TO_8 (ESC_TELEMETRY_5_TO_8_DATA) , OSD_PARAM_SHOW_CONFIG_REPLY (OSD_PARAM_SHOW_CONFIG_REPLY_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , PARAM_SET (PARAM_SET_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , CAN_FRAME (CAN_FRAME_DATA) , LOG_DATA (LOG_DATA_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , CUBEPILOT_RAW_RC (CUBEPILOT_RAW_RC_DATA) , AHRS (AHRS_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , ESC_STATUS (ESC_STATUS_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , HOME_POSITION (HOME_POSITION_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , DATA96 (DATA96_DATA) , SET_MODE (SET_MODE_DATA) , VISION_POSITION_DELTA (VISION_POSITION_DELTA_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , OSD_PARAM_CONFIG (OSD_PARAM_CONFIG_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , STATUSTEXT (STATUSTEXT_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , RALLY_FETCH_POINT (RALLY_FETCH_POINT_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , LIMITS_STATUS (LIMITS_STATUS_DATA) , WATER_DEPTH (WATER_DEPTH_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , OSD_PARAM_CONFIG_REPLY (OSD_PARAM_CONFIG_REPLY_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , HWSTATUS (HWSTATUS_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , REMOTE_LOG_DATA_BLOCK (REMOTE_LOG_DATA_BLOCK_DATA) , ATTITUDE (ATTITUDE_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , RAW_RPM (RAW_RPM_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , AUTH_KEY (AUTH_KEY_DATA) , MOUNT_CONTROL (MOUNT_CONTROL_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , DATA64 (DATA64_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , GPS_RTK (GPS_RTK_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , GOPRO_HEARTBEAT (GOPRO_HEARTBEAT_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , PING (PING_DATA) , COMPASSMOT_STATUS (COMPASSMOT_STATUS_DATA) , DEVICE_OP_READ (DEVICE_OP_READ_DATA) , GPS2_RTK (GPS2_RTK_DATA) , REMOTE_LOG_BLOCK_STATUS (REMOTE_LOG_BLOCK_STATUS_DATA) , OSD_PARAM_SHOW_CONFIG (OSD_PARAM_SHOW_CONFIG_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , RAW_IMU (RAW_IMU_DATA) , EFI_STATUS (EFI_STATUS_DATA) , SYS_STATUS (SYS_STATUS_DATA) , LOG_ERASE (LOG_ERASE_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , MAG_CAL_PROGRESS (MAG_CAL_PROGRESS_DATA) , MOUNT_STATUS (MOUNT_STATUS_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , DEBUG (DEBUG_DATA) , COMMAND_INT (COMMAND_INT_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , VFR_HUD (VFR_HUD_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , ADAP_TUNING (ADAP_TUNING_DATA) , ESC_INFO (ESC_INFO_DATA) , HIL_GPS (HIL_GPS_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , GPS2_RAW (GPS2_RAW_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , HERELINK_VIDEO_STREAM_INFORMATION (HERELINK_VIDEO_STREAM_INFORMATION_DATA) , GOPRO_SET_REQUEST (GOPRO_SET_REQUEST_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , POWER_STATUS (POWER_STATUS_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , COLLISION (COLLISION_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , BATTERY2 (BATTERY2_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , PID_TUNING (PID_TUNING_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , DATA32 (DATA32_DATA) , RALLY_POINT (RALLY_POINT_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , CAMERA_FEEDBACK (CAMERA_FEEDBACK_DATA) , CUBEPILOT_FIRMWARE_UPDATE_START (CUBEPILOT_FIRMWARE_UPDATE_START_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , DATA16 (DATA16_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , HERELINK_TELEM (HERELINK_TELEM_DATA) , FENCE_FETCH_POINT (FENCE_FETCH_POINT_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , AOA_SSA_DATA :: ID => AOA_SSA_DATA :: deser (version , payload) . map (Self :: AOA_SSA) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , GIMBAL_CONTROL_DATA :: ID => GIMBAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_CONTROL) , GOPRO_GET_RESPONSE_DATA :: ID => GOPRO_GET_RESPONSE_DATA :: deser (version , payload) . map (Self :: GOPRO_GET_RESPONSE) , RADIO_DATA :: ID => RADIO_DATA :: deser (version , payload) . map (Self :: RADIO) , AHRS3_DATA :: ID => AHRS3_DATA :: deser (version , payload) . map (Self :: AHRS3) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , RPM_DATA :: ID => RPM_DATA :: deser (version , payload) . map (Self :: RPM) , DEVICE_OP_WRITE_REPLY_DATA :: ID => DEVICE_OP_WRITE_REPLY_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_WRITE_REPLY) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , ESC_TELEMETRY_9_TO_12_DATA :: ID => ESC_TELEMETRY_9_TO_12_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_9_TO_12) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , FENCE_POINT_DATA :: ID => FENCE_POINT_DATA :: deser (version , payload) . map (Self :: FENCE_POINT) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: deser (version , payload) . map (Self :: ICAROUS_KINEMATIC_BANDS) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , RANGEFINDER_DATA :: ID => RANGEFINDER_DATA :: deser (version , payload) . map (Self :: RANGEFINDER) , LED_CONTROL_DATA :: ID => LED_CONTROL_DATA :: deser (version , payload) . map (Self :: LED_CONTROL) , DEVICE_OP_READ_REPLY_DATA :: ID => DEVICE_OP_READ_REPLY_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_READ_REPLY) , CAMERA_STATUS_DATA :: ID => CAMERA_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_STATUS) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , EKF_STATUS_REPORT_DATA :: ID => EKF_STATUS_REPORT_DATA :: deser (version , payload) . map (Self :: EKF_STATUS_REPORT) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , DIGICAM_CONFIGURE_DATA :: ID => DIGICAM_CONFIGURE_DATA :: deser (version , payload) . map (Self :: DIGICAM_CONFIGURE) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , MOUNT_CONFIGURE_DATA :: ID => MOUNT_CONFIGURE_DATA :: deser (version , payload) . map (Self :: MOUNT_CONFIGURE) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , 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) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP) , OBSTACLE_DISTANCE_3D_DATA :: ID => OBSTACLE_DISTANCE_3D_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE_3D) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , MEMINFO_DATA :: ID => MEMINFO_DATA :: deser (version , payload) . map (Self :: MEMINFO) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , GIMBAL_REPORT_DATA :: ID => GIMBAL_REPORT_DATA :: deser (version , payload) . map (Self :: GIMBAL_REPORT) , DIGICAM_CONTROL_DATA :: ID => DIGICAM_CONTROL_DATA :: deser (version , payload) . map (Self :: DIGICAM_CONTROL) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , 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) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_CFG) , AHRS2_DATA :: ID => AHRS2_DATA :: deser (version , payload) . map (Self :: AHRS2) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , SIMSTATE_DATA :: ID => SIMSTATE_DATA :: deser (version , payload) . map (Self :: SIMSTATE) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => GIMBAL_TORQUE_CMD_REPORT_DATA :: deser (version , payload) . map (Self :: GIMBAL_TORQUE_CMD_REPORT) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , DEVICE_OP_WRITE_DATA :: ID => DEVICE_OP_WRITE_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_WRITE) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , 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) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , SENSOR_OFFSETS_DATA :: ID => SENSOR_OFFSETS_DATA :: deser (version , payload) . map (Self :: SENSOR_OFFSETS) , AIRSPEED_AUTOCAL_DATA :: ID => AIRSPEED_AUTOCAL_DATA :: deser (version , payload) . map (Self :: AIRSPEED_AUTOCAL) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , MCU_STATUS_DATA :: ID => MCU_STATUS_DATA :: deser (version , payload) . map (Self :: MCU_STATUS) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , ESC_TELEMETRY_1_TO_4_DATA :: ID => ESC_TELEMETRY_1_TO_4_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_1_TO_4) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , AUTOPILOT_VERSION_REQUEST_DATA :: ID => AUTOPILOT_VERSION_REQUEST_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION_REQUEST) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , WIND_DATA :: ID => WIND_DATA :: deser (version , payload) . map (Self :: WIND) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , 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) , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: ICAROUS_HEARTBEAT) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , AP_ADC_DATA :: ID => AP_ADC_DATA :: deser (version , payload) . map (Self :: AP_ADC) , GOPRO_SET_RESPONSE_DATA :: ID => GOPRO_SET_RESPONSE_DATA :: deser (version , payload) . map (Self :: GOPRO_SET_RESPONSE) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , SET_MAG_OFFSETS_DATA :: ID => SET_MAG_OFFSETS_DATA :: deser (version , payload) . map (Self :: SET_MAG_OFFSETS) , GOPRO_GET_REQUEST_DATA :: ID => GOPRO_GET_REQUEST_DATA :: deser (version , payload) . map (Self :: GOPRO_GET_REQUEST) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , DEEPSTALL_DATA :: ID => DEEPSTALL_DATA :: deser (version , payload) . map (Self :: DEEPSTALL) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT) , ESC_TELEMETRY_5_TO_8_DATA :: ID => ESC_TELEMETRY_5_TO_8_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_5_TO_8) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_SHOW_CONFIG_REPLY) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , CUBEPILOT_RAW_RC_DATA :: ID => CUBEPILOT_RAW_RC_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_RAW_RC) , AHRS_DATA :: ID => AHRS_DATA :: deser (version , payload) . map (Self :: AHRS) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , DATA96_DATA :: ID => DATA96_DATA :: deser (version , payload) . map (Self :: DATA96) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , VISION_POSITION_DELTA_DATA :: ID => VISION_POSITION_DELTA_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_DELTA) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , OSD_PARAM_CONFIG_DATA :: ID => OSD_PARAM_CONFIG_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_CONFIG) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , RALLY_FETCH_POINT_DATA :: ID => RALLY_FETCH_POINT_DATA :: deser (version , payload) . map (Self :: RALLY_FETCH_POINT) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , LIMITS_STATUS_DATA :: ID => LIMITS_STATUS_DATA :: deser (version , payload) . map (Self :: LIMITS_STATUS) , WATER_DEPTH_DATA :: ID => WATER_DEPTH_DATA :: deser (version , payload) . map (Self :: WATER_DEPTH) , 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) , OSD_PARAM_CONFIG_REPLY_DATA :: ID => OSD_PARAM_CONFIG_REPLY_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_CONFIG_REPLY) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , HWSTATUS_DATA :: ID => HWSTATUS_DATA :: deser (version , payload) . map (Self :: HWSTATUS) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , REMOTE_LOG_DATA_BLOCK_DATA :: ID => REMOTE_LOG_DATA_BLOCK_DATA :: deser (version , payload) . map (Self :: REMOTE_LOG_DATA_BLOCK) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , MOUNT_CONTROL_DATA :: ID => MOUNT_CONTROL_DATA :: deser (version , payload) . map (Self :: MOUNT_CONTROL) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , DATA64_DATA :: ID => DATA64_DATA :: deser (version , payload) . map (Self :: DATA64) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_DYNAMIC) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , GOPRO_HEARTBEAT_DATA :: ID => GOPRO_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: GOPRO_HEARTBEAT) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , COMPASSMOT_STATUS_DATA :: ID => COMPASSMOT_STATUS_DATA :: deser (version , payload) . map (Self :: COMPASSMOT_STATUS) , DEVICE_OP_READ_DATA :: ID => DEVICE_OP_READ_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_READ) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => REMOTE_LOG_BLOCK_STATUS_DATA :: deser (version , payload) . map (Self :: REMOTE_LOG_BLOCK_STATUS) , OSD_PARAM_SHOW_CONFIG_DATA :: ID => OSD_PARAM_SHOW_CONFIG_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_SHOW_CONFIG) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , 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) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , MAG_CAL_PROGRESS_DATA :: ID => MAG_CAL_PROGRESS_DATA :: deser (version , payload) . map (Self :: MAG_CAL_PROGRESS) , MOUNT_STATUS_DATA :: ID => MOUNT_STATUS_DATA :: deser (version , payload) . map (Self :: MOUNT_STATUS) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , 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) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , ADAP_TUNING_DATA :: ID => ADAP_TUNING_DATA :: deser (version , payload) . map (Self :: ADAP_TUNING) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: HERELINK_VIDEO_STREAM_INFORMATION) , GOPRO_SET_REQUEST_DATA :: ID => GOPRO_SET_REQUEST_DATA :: deser (version , payload) . map (Self :: GOPRO_SET_REQUEST) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , BATTERY2_DATA :: ID => BATTERY2_DATA :: deser (version , payload) . map (Self :: BATTERY2) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , PID_TUNING_DATA :: ID => PID_TUNING_DATA :: deser (version , payload) . map (Self :: PID_TUNING) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , 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) , DATA32_DATA :: ID => DATA32_DATA :: deser (version , payload) . map (Self :: DATA32) , RALLY_POINT_DATA :: ID => RALLY_POINT_DATA :: deser (version , payload) . map (Self :: RALLY_POINT) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , CAMERA_FEEDBACK_DATA :: ID => CAMERA_FEEDBACK_DATA :: deser (version , payload) . map (Self :: CAMERA_FEEDBACK) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_FIRMWARE_UPDATE_START) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , DATA16_DATA :: ID => DATA16_DATA :: deser (version , payload) . map (Self :: DATA16) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , HERELINK_TELEM_DATA :: ID => HERELINK_TELEM_DATA :: deser (version , payload) . map (Self :: HERELINK_TELEM) , FENCE_FETCH_POINT_DATA :: ID => FENCE_FETCH_POINT_DATA :: deser (version , payload) . map (Self :: FENCE_FETCH_POINT) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: AOA_SSA (..) => AOA_SSA_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: GIMBAL_CONTROL (..) => GIMBAL_CONTROL_DATA :: NAME , Self :: GOPRO_GET_RESPONSE (..) => GOPRO_GET_RESPONSE_DATA :: NAME , Self :: RADIO (..) => RADIO_DATA :: NAME , Self :: AHRS3 (..) => AHRS3_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: RPM (..) => RPM_DATA :: NAME , Self :: DEVICE_OP_WRITE_REPLY (..) => DEVICE_OP_WRITE_REPLY_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: ESC_TELEMETRY_9_TO_12 (..) => ESC_TELEMETRY_9_TO_12_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: FENCE_POINT (..) => FENCE_POINT_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: RANGEFINDER (..) => RANGEFINDER_DATA :: NAME , Self :: LED_CONTROL (..) => LED_CONTROL_DATA :: NAME , Self :: DEVICE_OP_READ_REPLY (..) => DEVICE_OP_READ_REPLY_DATA :: NAME , Self :: CAMERA_STATUS (..) => CAMERA_STATUS_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: EKF_STATUS_REPORT (..) => EKF_STATUS_REPORT_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: DIGICAM_CONFIGURE (..) => DIGICAM_CONFIGURE_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: MOUNT_CONFIGURE (..) => MOUNT_CONFIGURE_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (..) => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: NAME , Self :: OBSTACLE_DISTANCE_3D (..) => OBSTACLE_DISTANCE_3D_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: MEMINFO (..) => MEMINFO_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: GIMBAL_REPORT (..) => GIMBAL_REPORT_DATA :: NAME , Self :: DIGICAM_CONTROL (..) => DIGICAM_CONTROL_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: NAME , Self :: AHRS2 (..) => AHRS2_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: SIMSTATE (..) => SIMSTATE_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: GIMBAL_TORQUE_CMD_REPORT (..) => GIMBAL_TORQUE_CMD_REPORT_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: DEVICE_OP_WRITE (..) => DEVICE_OP_WRITE_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: SENSOR_OFFSETS (..) => SENSOR_OFFSETS_DATA :: NAME , Self :: AIRSPEED_AUTOCAL (..) => AIRSPEED_AUTOCAL_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: MCU_STATUS (..) => MCU_STATUS_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: ESC_TELEMETRY_1_TO_4 (..) => ESC_TELEMETRY_1_TO_4_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: AUTOPILOT_VERSION_REQUEST (..) => AUTOPILOT_VERSION_REQUEST_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: WIND (..) => WIND_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: AP_ADC (..) => AP_ADC_DATA :: NAME , Self :: GOPRO_SET_RESPONSE (..) => GOPRO_SET_RESPONSE_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: SET_MAG_OFFSETS (..) => SET_MAG_OFFSETS_DATA :: NAME , Self :: GOPRO_GET_REQUEST (..) => GOPRO_GET_REQUEST_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: DEEPSTALL (..) => DEEPSTALL_DATA :: NAME , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME , Self :: ESC_TELEMETRY_5_TO_8 (..) => ESC_TELEMETRY_5_TO_8_DATA :: NAME , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (..) => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: CUBEPILOT_RAW_RC (..) => CUBEPILOT_RAW_RC_DATA :: NAME , Self :: AHRS (..) => AHRS_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: DATA96 (..) => DATA96_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: VISION_POSITION_DELTA (..) => VISION_POSITION_DELTA_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: OSD_PARAM_CONFIG (..) => OSD_PARAM_CONFIG_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: RALLY_FETCH_POINT (..) => RALLY_FETCH_POINT_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: LIMITS_STATUS (..) => LIMITS_STATUS_DATA :: NAME , Self :: WATER_DEPTH (..) => WATER_DEPTH_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: OSD_PARAM_CONFIG_REPLY (..) => OSD_PARAM_CONFIG_REPLY_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: HWSTATUS (..) => HWSTATUS_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: REMOTE_LOG_DATA_BLOCK (..) => REMOTE_LOG_DATA_BLOCK_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: MOUNT_CONTROL (..) => MOUNT_CONTROL_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: DATA64 (..) => DATA64_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: GOPRO_HEARTBEAT (..) => GOPRO_HEARTBEAT_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: COMPASSMOT_STATUS (..) => COMPASSMOT_STATUS_DATA :: NAME , Self :: DEVICE_OP_READ (..) => DEVICE_OP_READ_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: REMOTE_LOG_BLOCK_STATUS (..) => REMOTE_LOG_BLOCK_STATUS_DATA :: NAME , Self :: OSD_PARAM_SHOW_CONFIG (..) => OSD_PARAM_SHOW_CONFIG_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: MAG_CAL_PROGRESS (..) => MAG_CAL_PROGRESS_DATA :: NAME , Self :: MOUNT_STATUS (..) => MOUNT_STATUS_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: ADAP_TUNING (..) => ADAP_TUNING_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: HERELINK_VIDEO_STREAM_INFORMATION (..) => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: GOPRO_SET_REQUEST (..) => GOPRO_SET_REQUEST_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: BATTERY2 (..) => BATTERY2_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: PID_TUNING (..) => PID_TUNING_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_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 :: DATA32 (..) => DATA32_DATA :: NAME , Self :: RALLY_POINT (..) => RALLY_POINT_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: CAMERA_FEEDBACK (..) => CAMERA_FEEDBACK_DATA :: NAME , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (..) => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: DATA16 (..) => DATA16_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: HERELINK_TELEM (..) => HERELINK_TELEM_DATA :: NAME , Self :: FENCE_FETCH_POINT (..) => FENCE_FETCH_POINT_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: AOA_SSA (..) => AOA_SSA_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: GIMBAL_CONTROL (..) => GIMBAL_CONTROL_DATA :: ID , Self :: GOPRO_GET_RESPONSE (..) => GOPRO_GET_RESPONSE_DATA :: ID , Self :: RADIO (..) => RADIO_DATA :: ID , Self :: AHRS3 (..) => AHRS3_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: RPM (..) => RPM_DATA :: ID , Self :: DEVICE_OP_WRITE_REPLY (..) => DEVICE_OP_WRITE_REPLY_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: ESC_TELEMETRY_9_TO_12 (..) => ESC_TELEMETRY_9_TO_12_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: FENCE_POINT (..) => FENCE_POINT_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: RANGEFINDER (..) => RANGEFINDER_DATA :: ID , Self :: LED_CONTROL (..) => LED_CONTROL_DATA :: ID , Self :: DEVICE_OP_READ_REPLY (..) => DEVICE_OP_READ_REPLY_DATA :: ID , Self :: CAMERA_STATUS (..) => CAMERA_STATUS_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: EKF_STATUS_REPORT (..) => EKF_STATUS_REPORT_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: DIGICAM_CONFIGURE (..) => DIGICAM_CONFIGURE_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: MOUNT_CONFIGURE (..) => MOUNT_CONFIGURE_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (..) => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID , Self :: OBSTACLE_DISTANCE_3D (..) => OBSTACLE_DISTANCE_3D_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: MEMINFO (..) => MEMINFO_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: GIMBAL_REPORT (..) => GIMBAL_REPORT_DATA :: ID , Self :: DIGICAM_CONTROL (..) => DIGICAM_CONTROL_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: ID , Self :: AHRS2 (..) => AHRS2_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: SIMSTATE (..) => SIMSTATE_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: GIMBAL_TORQUE_CMD_REPORT (..) => GIMBAL_TORQUE_CMD_REPORT_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: DEVICE_OP_WRITE (..) => DEVICE_OP_WRITE_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: SENSOR_OFFSETS (..) => SENSOR_OFFSETS_DATA :: ID , Self :: AIRSPEED_AUTOCAL (..) => AIRSPEED_AUTOCAL_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: MCU_STATUS (..) => MCU_STATUS_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: ESC_TELEMETRY_1_TO_4 (..) => ESC_TELEMETRY_1_TO_4_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: AUTOPILOT_VERSION_REQUEST (..) => AUTOPILOT_VERSION_REQUEST_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: WIND (..) => WIND_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: AP_ADC (..) => AP_ADC_DATA :: ID , Self :: GOPRO_SET_RESPONSE (..) => GOPRO_SET_RESPONSE_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: SET_MAG_OFFSETS (..) => SET_MAG_OFFSETS_DATA :: ID , Self :: GOPRO_GET_REQUEST (..) => GOPRO_GET_REQUEST_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: DEEPSTALL (..) => DEEPSTALL_DATA :: ID , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID , Self :: ESC_TELEMETRY_5_TO_8 (..) => ESC_TELEMETRY_5_TO_8_DATA :: ID , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (..) => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: CUBEPILOT_RAW_RC (..) => CUBEPILOT_RAW_RC_DATA :: ID , Self :: AHRS (..) => AHRS_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: DATA96 (..) => DATA96_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: VISION_POSITION_DELTA (..) => VISION_POSITION_DELTA_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: OSD_PARAM_CONFIG (..) => OSD_PARAM_CONFIG_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: RALLY_FETCH_POINT (..) => RALLY_FETCH_POINT_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: LIMITS_STATUS (..) => LIMITS_STATUS_DATA :: ID , Self :: WATER_DEPTH (..) => WATER_DEPTH_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: OSD_PARAM_CONFIG_REPLY (..) => OSD_PARAM_CONFIG_REPLY_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: HWSTATUS (..) => HWSTATUS_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: REMOTE_LOG_DATA_BLOCK (..) => REMOTE_LOG_DATA_BLOCK_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: MOUNT_CONTROL (..) => MOUNT_CONTROL_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: DATA64 (..) => DATA64_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: GOPRO_HEARTBEAT (..) => GOPRO_HEARTBEAT_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: COMPASSMOT_STATUS (..) => COMPASSMOT_STATUS_DATA :: ID , Self :: DEVICE_OP_READ (..) => DEVICE_OP_READ_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: REMOTE_LOG_BLOCK_STATUS (..) => REMOTE_LOG_BLOCK_STATUS_DATA :: ID , Self :: OSD_PARAM_SHOW_CONFIG (..) => OSD_PARAM_SHOW_CONFIG_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: MAG_CAL_PROGRESS (..) => MAG_CAL_PROGRESS_DATA :: ID , Self :: MOUNT_STATUS (..) => MOUNT_STATUS_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: ADAP_TUNING (..) => ADAP_TUNING_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: HERELINK_VIDEO_STREAM_INFORMATION (..) => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: GOPRO_SET_REQUEST (..) => GOPRO_SET_REQUEST_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: BATTERY2 (..) => BATTERY2_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: PID_TUNING (..) => PID_TUNING_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_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 :: DATA32 (..) => DATA32_DATA :: ID , Self :: RALLY_POINT (..) => RALLY_POINT_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: CAMERA_FEEDBACK (..) => CAMERA_FEEDBACK_DATA :: ID , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (..) => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: DATA16 (..) => DATA16_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: HERELINK_TELEM (..) => HERELINK_TELEM_DATA :: ID , Self :: FENCE_FETCH_POINT (..) => FENCE_FETCH_POINT_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , AOA_SSA_DATA :: NAME => Ok (AOA_SSA_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , GIMBAL_CONTROL_DATA :: NAME => Ok (GIMBAL_CONTROL_DATA :: ID) , GOPRO_GET_RESPONSE_DATA :: NAME => Ok (GOPRO_GET_RESPONSE_DATA :: ID) , RADIO_DATA :: NAME => Ok (RADIO_DATA :: ID) , AHRS3_DATA :: NAME => Ok (AHRS3_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , RPM_DATA :: NAME => Ok (RPM_DATA :: ID) , DEVICE_OP_WRITE_REPLY_DATA :: NAME => Ok (DEVICE_OP_WRITE_REPLY_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , ESC_TELEMETRY_9_TO_12_DATA :: NAME => Ok (ESC_TELEMETRY_9_TO_12_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , FENCE_POINT_DATA :: NAME => Ok (FENCE_POINT_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , ICAROUS_KINEMATIC_BANDS_DATA :: NAME => Ok (ICAROUS_KINEMATIC_BANDS_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , RANGEFINDER_DATA :: NAME => Ok (RANGEFINDER_DATA :: ID) , LED_CONTROL_DATA :: NAME => Ok (LED_CONTROL_DATA :: ID) , DEVICE_OP_READ_REPLY_DATA :: NAME => Ok (DEVICE_OP_READ_REPLY_DATA :: ID) , CAMERA_STATUS_DATA :: NAME => Ok (CAMERA_STATUS_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , EKF_STATUS_REPORT_DATA :: NAME => Ok (EKF_STATUS_REPORT_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , DIGICAM_CONFIGURE_DATA :: NAME => Ok (DIGICAM_CONFIGURE_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , MOUNT_CONFIGURE_DATA :: NAME => Ok (MOUNT_CONFIGURE_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: NAME => Ok (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID) , OBSTACLE_DISTANCE_3D_DATA :: NAME => Ok (OBSTACLE_DISTANCE_3D_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , MEMINFO_DATA :: NAME => Ok (MEMINFO_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , GIMBAL_REPORT_DATA :: NAME => Ok (GIMBAL_REPORT_DATA :: ID) , DIGICAM_CONTROL_DATA :: NAME => Ok (DIGICAM_CONTROL_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , UAVIONIX_ADSB_OUT_CFG_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_CFG_DATA :: ID) , AHRS2_DATA :: NAME => Ok (AHRS2_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , SIMSTATE_DATA :: NAME => Ok (SIMSTATE_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , GIMBAL_TORQUE_CMD_REPORT_DATA :: NAME => Ok (GIMBAL_TORQUE_CMD_REPORT_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , DEVICE_OP_WRITE_DATA :: NAME => Ok (DEVICE_OP_WRITE_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , SENSOR_OFFSETS_DATA :: NAME => Ok (SENSOR_OFFSETS_DATA :: ID) , AIRSPEED_AUTOCAL_DATA :: NAME => Ok (AIRSPEED_AUTOCAL_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , MCU_STATUS_DATA :: NAME => Ok (MCU_STATUS_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , ESC_TELEMETRY_1_TO_4_DATA :: NAME => Ok (ESC_TELEMETRY_1_TO_4_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , AUTOPILOT_VERSION_REQUEST_DATA :: NAME => Ok (AUTOPILOT_VERSION_REQUEST_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , WIND_DATA :: NAME => Ok (WIND_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_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) , ICAROUS_HEARTBEAT_DATA :: NAME => Ok (ICAROUS_HEARTBEAT_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , AP_ADC_DATA :: NAME => Ok (AP_ADC_DATA :: ID) , GOPRO_SET_RESPONSE_DATA :: NAME => Ok (GOPRO_SET_RESPONSE_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , SET_MAG_OFFSETS_DATA :: NAME => Ok (SET_MAG_OFFSETS_DATA :: ID) , GOPRO_GET_REQUEST_DATA :: NAME => Ok (GOPRO_GET_REQUEST_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , DEEPSTALL_DATA :: NAME => Ok (DEEPSTALL_DATA :: ID) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME => Ok (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID) , ESC_TELEMETRY_5_TO_8_DATA :: NAME => Ok (ESC_TELEMETRY_5_TO_8_DATA :: ID) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: NAME => Ok (OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , CUBEPILOT_RAW_RC_DATA :: NAME => Ok (CUBEPILOT_RAW_RC_DATA :: ID) , AHRS_DATA :: NAME => Ok (AHRS_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , DATA96_DATA :: NAME => Ok (DATA96_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , VISION_POSITION_DELTA_DATA :: NAME => Ok (VISION_POSITION_DELTA_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , OSD_PARAM_CONFIG_DATA :: NAME => Ok (OSD_PARAM_CONFIG_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , RALLY_FETCH_POINT_DATA :: NAME => Ok (RALLY_FETCH_POINT_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , LIMITS_STATUS_DATA :: NAME => Ok (LIMITS_STATUS_DATA :: ID) , WATER_DEPTH_DATA :: NAME => Ok (WATER_DEPTH_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , OSD_PARAM_CONFIG_REPLY_DATA :: NAME => Ok (OSD_PARAM_CONFIG_REPLY_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , HWSTATUS_DATA :: NAME => Ok (HWSTATUS_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , REMOTE_LOG_DATA_BLOCK_DATA :: NAME => Ok (REMOTE_LOG_DATA_BLOCK_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , MOUNT_CONTROL_DATA :: NAME => Ok (MOUNT_CONTROL_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , DATA64_DATA :: NAME => Ok (DATA64_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , GOPRO_HEARTBEAT_DATA :: NAME => Ok (GOPRO_HEARTBEAT_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , COMPASSMOT_STATUS_DATA :: NAME => Ok (COMPASSMOT_STATUS_DATA :: ID) , DEVICE_OP_READ_DATA :: NAME => Ok (DEVICE_OP_READ_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , REMOTE_LOG_BLOCK_STATUS_DATA :: NAME => Ok (REMOTE_LOG_BLOCK_STATUS_DATA :: ID) , OSD_PARAM_SHOW_CONFIG_DATA :: NAME => Ok (OSD_PARAM_SHOW_CONFIG_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , MAG_CAL_PROGRESS_DATA :: NAME => Ok (MAG_CAL_PROGRESS_DATA :: ID) , MOUNT_STATUS_DATA :: NAME => Ok (MOUNT_STATUS_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , ADAP_TUNING_DATA :: NAME => Ok (ADAP_TUNING_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID) , GOPRO_SET_REQUEST_DATA :: NAME => Ok (GOPRO_SET_REQUEST_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , BATTERY2_DATA :: NAME => Ok (BATTERY2_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , PID_TUNING_DATA :: NAME => Ok (PID_TUNING_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , 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) , DATA32_DATA :: NAME => Ok (DATA32_DATA :: ID) , RALLY_POINT_DATA :: NAME => Ok (RALLY_POINT_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , CAMERA_FEEDBACK_DATA :: NAME => Ok (CAMERA_FEEDBACK_DATA :: ID) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: NAME => Ok (CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , DATA16_DATA :: NAME => Ok (DATA16_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , HERELINK_TELEM_DATA :: NAME => Ok (HERELINK_TELEM_DATA :: ID) , FENCE_FETCH_POINT_DATA :: NAME => Ok (FENCE_FETCH_POINT_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , AOA_SSA_DATA :: ID => Ok (Self :: AOA_SSA (AOA_SSA_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , GIMBAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_CONTROL (GIMBAL_CONTROL_DATA :: default ())) , GOPRO_GET_RESPONSE_DATA :: ID => Ok (Self :: GOPRO_GET_RESPONSE (GOPRO_GET_RESPONSE_DATA :: default ())) , RADIO_DATA :: ID => Ok (Self :: RADIO (RADIO_DATA :: default ())) , AHRS3_DATA :: ID => Ok (Self :: AHRS3 (AHRS3_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , RPM_DATA :: ID => Ok (Self :: RPM (RPM_DATA :: default ())) , DEVICE_OP_WRITE_REPLY_DATA :: ID => Ok (Self :: DEVICE_OP_WRITE_REPLY (DEVICE_OP_WRITE_REPLY_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , ESC_TELEMETRY_9_TO_12_DATA :: ID => Ok (Self :: ESC_TELEMETRY_9_TO_12 (ESC_TELEMETRY_9_TO_12_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , FENCE_POINT_DATA :: ID => Ok (Self :: FENCE_POINT (FENCE_POINT_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , ICAROUS_KINEMATIC_BANDS_DATA :: ID => Ok (Self :: ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , RANGEFINDER_DATA :: ID => Ok (Self :: RANGEFINDER (RANGEFINDER_DATA :: default ())) , LED_CONTROL_DATA :: ID => Ok (Self :: LED_CONTROL (LED_CONTROL_DATA :: default ())) , DEVICE_OP_READ_REPLY_DATA :: ID => Ok (Self :: DEVICE_OP_READ_REPLY (DEVICE_OP_READ_REPLY_DATA :: default ())) , CAMERA_STATUS_DATA :: ID => Ok (Self :: CAMERA_STATUS (CAMERA_STATUS_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , EKF_STATUS_REPORT_DATA :: ID => Ok (Self :: EKF_STATUS_REPORT (EKF_STATUS_REPORT_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , DIGICAM_CONFIGURE_DATA :: ID => Ok (Self :: DIGICAM_CONFIGURE (DIGICAM_CONFIGURE_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , MOUNT_CONFIGURE_DATA :: ID => Ok (Self :: MOUNT_CONFIGURE (MOUNT_CONFIGURE_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_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 ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => Ok (Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: default ())) , OBSTACLE_DISTANCE_3D_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE_3D (OBSTACLE_DISTANCE_3D_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , MEMINFO_DATA :: ID => Ok (Self :: MEMINFO (MEMINFO_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , GIMBAL_REPORT_DATA :: ID => Ok (Self :: GIMBAL_REPORT (GIMBAL_REPORT_DATA :: default ())) , DIGICAM_CONTROL_DATA :: ID => Ok (Self :: DIGICAM_CONTROL (DIGICAM_CONTROL_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_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 ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA :: default ())) , AHRS2_DATA :: ID => Ok (Self :: AHRS2 (AHRS2_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , SIMSTATE_DATA :: ID => Ok (Self :: SIMSTATE (SIMSTATE_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => Ok (Self :: GIMBAL_TORQUE_CMD_REPORT (GIMBAL_TORQUE_CMD_REPORT_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , DEVICE_OP_WRITE_DATA :: ID => Ok (Self :: DEVICE_OP_WRITE (DEVICE_OP_WRITE_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_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 ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , SENSOR_OFFSETS_DATA :: ID => Ok (Self :: SENSOR_OFFSETS (SENSOR_OFFSETS_DATA :: default ())) , AIRSPEED_AUTOCAL_DATA :: ID => Ok (Self :: AIRSPEED_AUTOCAL (AIRSPEED_AUTOCAL_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , MCU_STATUS_DATA :: ID => Ok (Self :: MCU_STATUS (MCU_STATUS_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , ESC_TELEMETRY_1_TO_4_DATA :: ID => Ok (Self :: ESC_TELEMETRY_1_TO_4 (ESC_TELEMETRY_1_TO_4_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , AUTOPILOT_VERSION_REQUEST_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION_REQUEST (AUTOPILOT_VERSION_REQUEST_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , WIND_DATA :: ID => Ok (Self :: WIND (WIND_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_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 ())) , ICAROUS_HEARTBEAT_DATA :: ID => Ok (Self :: ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , AP_ADC_DATA :: ID => Ok (Self :: AP_ADC (AP_ADC_DATA :: default ())) , GOPRO_SET_RESPONSE_DATA :: ID => Ok (Self :: GOPRO_SET_RESPONSE (GOPRO_SET_RESPONSE_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , SET_MAG_OFFSETS_DATA :: ID => Ok (Self :: SET_MAG_OFFSETS (SET_MAG_OFFSETS_DATA :: default ())) , GOPRO_GET_REQUEST_DATA :: ID => Ok (Self :: GOPRO_GET_REQUEST (GOPRO_GET_REQUEST_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , DEEPSTALL_DATA :: ID => Ok (Self :: DEEPSTALL (DEEPSTALL_DATA :: default ())) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: default ())) , ESC_TELEMETRY_5_TO_8_DATA :: ID => Ok (Self :: ESC_TELEMETRY_5_TO_8 (ESC_TELEMETRY_5_TO_8_DATA :: default ())) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => Ok (Self :: OSD_PARAM_SHOW_CONFIG_REPLY (OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , CUBEPILOT_RAW_RC_DATA :: ID => Ok (Self :: CUBEPILOT_RAW_RC (CUBEPILOT_RAW_RC_DATA :: default ())) , AHRS_DATA :: ID => Ok (Self :: AHRS (AHRS_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , DATA96_DATA :: ID => Ok (Self :: DATA96 (DATA96_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , VISION_POSITION_DELTA_DATA :: ID => Ok (Self :: VISION_POSITION_DELTA (VISION_POSITION_DELTA_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , OSD_PARAM_CONFIG_DATA :: ID => Ok (Self :: OSD_PARAM_CONFIG (OSD_PARAM_CONFIG_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , RALLY_FETCH_POINT_DATA :: ID => Ok (Self :: RALLY_FETCH_POINT (RALLY_FETCH_POINT_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , LIMITS_STATUS_DATA :: ID => Ok (Self :: LIMITS_STATUS (LIMITS_STATUS_DATA :: default ())) , WATER_DEPTH_DATA :: ID => Ok (Self :: WATER_DEPTH (WATER_DEPTH_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 ())) , OSD_PARAM_CONFIG_REPLY_DATA :: ID => Ok (Self :: OSD_PARAM_CONFIG_REPLY (OSD_PARAM_CONFIG_REPLY_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , HWSTATUS_DATA :: ID => Ok (Self :: HWSTATUS (HWSTATUS_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , REMOTE_LOG_DATA_BLOCK_DATA :: ID => Ok (Self :: REMOTE_LOG_DATA_BLOCK (REMOTE_LOG_DATA_BLOCK_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , MOUNT_CONTROL_DATA :: ID => Ok (Self :: MOUNT_CONTROL (MOUNT_CONTROL_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , DATA64_DATA :: ID => Ok (Self :: DATA64 (DATA64_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , GOPRO_HEARTBEAT_DATA :: ID => Ok (Self :: GOPRO_HEARTBEAT (GOPRO_HEARTBEAT_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , COMPASSMOT_STATUS_DATA :: ID => Ok (Self :: COMPASSMOT_STATUS (COMPASSMOT_STATUS_DATA :: default ())) , DEVICE_OP_READ_DATA :: ID => Ok (Self :: DEVICE_OP_READ (DEVICE_OP_READ_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => Ok (Self :: REMOTE_LOG_BLOCK_STATUS (REMOTE_LOG_BLOCK_STATUS_DATA :: default ())) , OSD_PARAM_SHOW_CONFIG_DATA :: ID => Ok (Self :: OSD_PARAM_SHOW_CONFIG (OSD_PARAM_SHOW_CONFIG_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_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 ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , MAG_CAL_PROGRESS_DATA :: ID => Ok (Self :: MAG_CAL_PROGRESS (MAG_CAL_PROGRESS_DATA :: default ())) , MOUNT_STATUS_DATA :: ID => Ok (Self :: MOUNT_STATUS (MOUNT_STATUS_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_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 ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , ADAP_TUNING_DATA :: ID => Ok (Self :: ADAP_TUNING (ADAP_TUNING_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: HERELINK_VIDEO_STREAM_INFORMATION (HERELINK_VIDEO_STREAM_INFORMATION_DATA :: default ())) , GOPRO_SET_REQUEST_DATA :: ID => Ok (Self :: GOPRO_SET_REQUEST (GOPRO_SET_REQUEST_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , BATTERY2_DATA :: ID => Ok (Self :: BATTERY2 (BATTERY2_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , PID_TUNING_DATA :: ID => Ok (Self :: PID_TUNING (PID_TUNING_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , 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 ())) , DATA32_DATA :: ID => Ok (Self :: DATA32 (DATA32_DATA :: default ())) , RALLY_POINT_DATA :: ID => Ok (Self :: RALLY_POINT (RALLY_POINT_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , CAMERA_FEEDBACK_DATA :: ID => Ok (Self :: CAMERA_FEEDBACK (CAMERA_FEEDBACK_DATA :: default ())) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => Ok (Self :: CUBEPILOT_FIRMWARE_UPDATE_START (CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , DATA16_DATA :: ID => Ok (Self :: DATA16 (DATA16_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , HERELINK_TELEM_DATA :: ID => Ok (Self :: HERELINK_TELEM (HERELINK_TELEM_DATA :: default ())) , FENCE_FETCH_POINT_DATA :: ID => Ok (Self :: FENCE_FETCH_POINT (FENCE_FETCH_POINT_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: AOA_SSA (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: GIMBAL_CONTROL (body) => body . ser (version , bytes) , Self :: GOPRO_GET_RESPONSE (body) => body . ser (version , bytes) , Self :: RADIO (body) => body . ser (version , bytes) , Self :: AHRS3 (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: RPM (body) => body . ser (version , bytes) , Self :: DEVICE_OP_WRITE_REPLY (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_9_TO_12 (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: FENCE_POINT (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: ICAROUS_KINEMATIC_BANDS (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: RANGEFINDER (body) => body . ser (version , bytes) , Self :: LED_CONTROL (body) => body . ser (version , bytes) , Self :: DEVICE_OP_READ_REPLY (body) => body . ser (version , bytes) , Self :: CAMERA_STATUS (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: EKF_STATUS_REPORT (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: DIGICAM_CONFIGURE (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: MOUNT_CONFIGURE (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE_3D (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: MEMINFO (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: GIMBAL_REPORT (body) => body . ser (version , bytes) , Self :: DIGICAM_CONTROL (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_CFG (body) => body . ser (version , bytes) , Self :: AHRS2 (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: SIMSTATE (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: GIMBAL_TORQUE_CMD_REPORT (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: DEVICE_OP_WRITE (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: SENSOR_OFFSETS (body) => body . ser (version , bytes) , Self :: AIRSPEED_AUTOCAL (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: MCU_STATUS (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_1_TO_4 (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION_REQUEST (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: WIND (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (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 :: ICAROUS_HEARTBEAT (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: AP_ADC (body) => body . ser (version , bytes) , Self :: GOPRO_SET_RESPONSE (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: SET_MAG_OFFSETS (body) => body . ser (version , bytes) , Self :: GOPRO_GET_REQUEST (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: DEEPSTALL (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_5_TO_8 (body) => body . ser (version , bytes) , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: CUBEPILOT_RAW_RC (body) => body . ser (version , bytes) , Self :: AHRS (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: DATA96 (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: VISION_POSITION_DELTA (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: OSD_PARAM_CONFIG (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: RALLY_FETCH_POINT (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: LIMITS_STATUS (body) => body . ser (version , bytes) , Self :: WATER_DEPTH (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: OSD_PARAM_CONFIG_REPLY (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: HWSTATUS (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: REMOTE_LOG_DATA_BLOCK (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: MOUNT_CONTROL (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: DATA64 (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: GOPRO_HEARTBEAT (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: COMPASSMOT_STATUS (body) => body . ser (version , bytes) , Self :: DEVICE_OP_READ (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: REMOTE_LOG_BLOCK_STATUS (body) => body . ser (version , bytes) , Self :: OSD_PARAM_SHOW_CONFIG (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: MAG_CAL_PROGRESS (body) => body . ser (version , bytes) , Self :: MOUNT_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: ADAP_TUNING (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: HERELINK_VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: GOPRO_SET_REQUEST (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: BATTERY2 (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: PID_TUNING (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: DATA32 (body) => body . ser (version , bytes) , Self :: RALLY_POINT (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: CAMERA_FEEDBACK (body) => body . ser (version , bytes) , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: DATA16 (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: HERELINK_TELEM (body) => body . ser (version , bytes) , Self :: FENCE_FETCH_POINT (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , AOA_SSA_DATA :: ID => AOA_SSA_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , GIMBAL_CONTROL_DATA :: ID => GIMBAL_CONTROL_DATA :: EXTRA_CRC , GOPRO_GET_RESPONSE_DATA :: ID => GOPRO_GET_RESPONSE_DATA :: EXTRA_CRC , RADIO_DATA :: ID => RADIO_DATA :: EXTRA_CRC , AHRS3_DATA :: ID => AHRS3_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , RPM_DATA :: ID => RPM_DATA :: EXTRA_CRC , DEVICE_OP_WRITE_REPLY_DATA :: ID => DEVICE_OP_WRITE_REPLY_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , ESC_TELEMETRY_9_TO_12_DATA :: ID => ESC_TELEMETRY_9_TO_12_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , FENCE_POINT_DATA :: ID => FENCE_POINT_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , RANGEFINDER_DATA :: ID => RANGEFINDER_DATA :: EXTRA_CRC , LED_CONTROL_DATA :: ID => LED_CONTROL_DATA :: EXTRA_CRC , DEVICE_OP_READ_REPLY_DATA :: ID => DEVICE_OP_READ_REPLY_DATA :: EXTRA_CRC , CAMERA_STATUS_DATA :: ID => CAMERA_STATUS_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , EKF_STATUS_REPORT_DATA :: ID => EKF_STATUS_REPORT_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , DIGICAM_CONFIGURE_DATA :: ID => DIGICAM_CONFIGURE_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , MOUNT_CONFIGURE_DATA :: ID => MOUNT_CONFIGURE_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_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 , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_3D_DATA :: ID => OBSTACLE_DISTANCE_3D_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , MEMINFO_DATA :: ID => MEMINFO_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , GIMBAL_REPORT_DATA :: ID => GIMBAL_REPORT_DATA :: EXTRA_CRC , DIGICAM_CONTROL_DATA :: ID => DIGICAM_CONTROL_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_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 , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: EXTRA_CRC , AHRS2_DATA :: ID => AHRS2_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , SIMSTATE_DATA :: ID => SIMSTATE_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => GIMBAL_TORQUE_CMD_REPORT_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , DEVICE_OP_WRITE_DATA :: ID => DEVICE_OP_WRITE_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , SENSOR_OFFSETS_DATA :: ID => SENSOR_OFFSETS_DATA :: EXTRA_CRC , AIRSPEED_AUTOCAL_DATA :: ID => AIRSPEED_AUTOCAL_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , MCU_STATUS_DATA :: ID => MCU_STATUS_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , ESC_TELEMETRY_1_TO_4_DATA :: ID => ESC_TELEMETRY_1_TO_4_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_REQUEST_DATA :: ID => AUTOPILOT_VERSION_REQUEST_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , WIND_DATA :: ID => WIND_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_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 , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , AP_ADC_DATA :: ID => AP_ADC_DATA :: EXTRA_CRC , GOPRO_SET_RESPONSE_DATA :: ID => GOPRO_SET_RESPONSE_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , SET_MAG_OFFSETS_DATA :: ID => SET_MAG_OFFSETS_DATA :: EXTRA_CRC , GOPRO_GET_REQUEST_DATA :: ID => GOPRO_GET_REQUEST_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , DEEPSTALL_DATA :: ID => DEEPSTALL_DATA :: EXTRA_CRC , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: EXTRA_CRC , ESC_TELEMETRY_5_TO_8_DATA :: ID => ESC_TELEMETRY_5_TO_8_DATA :: EXTRA_CRC , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , CUBEPILOT_RAW_RC_DATA :: ID => CUBEPILOT_RAW_RC_DATA :: EXTRA_CRC , AHRS_DATA :: ID => AHRS_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , DATA96_DATA :: ID => DATA96_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , VISION_POSITION_DELTA_DATA :: ID => VISION_POSITION_DELTA_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , OSD_PARAM_CONFIG_DATA :: ID => OSD_PARAM_CONFIG_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , RALLY_FETCH_POINT_DATA :: ID => RALLY_FETCH_POINT_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , LIMITS_STATUS_DATA :: ID => LIMITS_STATUS_DATA :: EXTRA_CRC , WATER_DEPTH_DATA :: ID => WATER_DEPTH_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , OSD_PARAM_CONFIG_REPLY_DATA :: ID => OSD_PARAM_CONFIG_REPLY_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , HWSTATUS_DATA :: ID => HWSTATUS_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , REMOTE_LOG_DATA_BLOCK_DATA :: ID => REMOTE_LOG_DATA_BLOCK_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , MOUNT_CONTROL_DATA :: ID => MOUNT_CONTROL_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , DATA64_DATA :: ID => DATA64_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , GOPRO_HEARTBEAT_DATA :: ID => GOPRO_HEARTBEAT_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , COMPASSMOT_STATUS_DATA :: ID => COMPASSMOT_STATUS_DATA :: EXTRA_CRC , DEVICE_OP_READ_DATA :: ID => DEVICE_OP_READ_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => REMOTE_LOG_BLOCK_STATUS_DATA :: EXTRA_CRC , OSD_PARAM_SHOW_CONFIG_DATA :: ID => OSD_PARAM_SHOW_CONFIG_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , MAG_CAL_PROGRESS_DATA :: ID => MAG_CAL_PROGRESS_DATA :: EXTRA_CRC , MOUNT_STATUS_DATA :: ID => MOUNT_STATUS_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , ADAP_TUNING_DATA :: ID => ADAP_TUNING_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , GOPRO_SET_REQUEST_DATA :: ID => GOPRO_SET_REQUEST_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , BATTERY2_DATA :: ID => BATTERY2_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , PID_TUNING_DATA :: ID => PID_TUNING_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , 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 , DATA32_DATA :: ID => DATA32_DATA :: EXTRA_CRC , RALLY_POINT_DATA :: ID => RALLY_POINT_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , CAMERA_FEEDBACK_DATA :: ID => CAMERA_FEEDBACK_DATA :: EXTRA_CRC , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , DATA16_DATA :: ID => DATA16_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , HERELINK_TELEM_DATA :: ID => HERELINK_TELEM_DATA :: EXTRA_CRC , FENCE_FETCH_POINT_DATA :: ID => FENCE_FETCH_POINT_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 MavOdidStatus { MAV_ODID_STATUS_UNDECLARED = 0 , MAV_ODID_STATUS_GROUND = 1 , MAV_ODID_STATUS_AIRBORNE = 2 , MAV_ODID_STATUS_EMERGENCY = 3 , MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE = 4 , } impl MavOdidStatus { pub const DEFAULT : Self = Self :: MAV_ODID_STATUS_UNDECLARED ; } impl Default for MavOdidStatus { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SerialControlFlag : u8 { const SERIAL_CONTROL_FLAG_REPLY = 1 ; const SERIAL_CONTROL_FLAG_RESPOND = 2 ; const SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 ; const SERIAL_CONTROL_FLAG_BLOCKING = 8 ; const SERIAL_CONTROL_FLAG_MULTI = 16 ; } } impl SerialControlFlag { pub const DEFAULT : Self = Self :: SERIAL_CONTROL_FLAG_REPLY ; } impl Default for SerialControlFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (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 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 } } 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 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 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 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 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 GoproBurstRate { GOPRO_BURST_RATE_3_IN_1_SECOND = 0 , GOPRO_BURST_RATE_5_IN_1_SECOND = 1 , GOPRO_BURST_RATE_10_IN_1_SECOND = 2 , GOPRO_BURST_RATE_10_IN_2_SECOND = 3 , GOPRO_BURST_RATE_10_IN_3_SECOND = 4 , GOPRO_BURST_RATE_30_IN_1_SECOND = 5 , GOPRO_BURST_RATE_30_IN_2_SECOND = 6 , GOPRO_BURST_RATE_30_IN_3_SECOND = 7 , GOPRO_BURST_RATE_30_IN_6_SECOND = 8 , } impl GoproBurstRate { pub const DEFAULT : Self = Self :: GOPRO_BURST_RATE_3_IN_1_SECOND ; } impl Default for GoproBurstRate { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalManagerCapFlags : u32 { const GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT = 1 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL = 2 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS = 4 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW = 8 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK = 16 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS = 32 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW = 64 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK = 128 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS = 256 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW = 512 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK = 1024 ; const GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW = 2048 ; const GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME = 4096 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_RC_INPUTS = 8192 ; const GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL = 65536 ; const GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL = 131072 ; } } impl GimbalManagerCapFlags { pub const DEFAULT : Self = Self :: GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT ; } impl Default for GimbalManagerCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 ScriptingCmd { SCRIPTING_CMD_REPL_START = 0 , SCRIPTING_CMD_REPL_STOP = 1 , SCRIPTING_CMD_STOP = 2 , SCRIPTING_CMD_STOP_AND_RESTART = 3 , } impl ScriptingCmd { pub const DEFAULT : Self = Self :: SCRIPTING_CMD_REPL_START ; } impl Default for ScriptingCmd { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 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 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 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 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 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 } } # [derive (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 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 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 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 MavOdidOperatorIdType { MAV_ODID_OPERATOR_ID_TYPE_CAA = 0 , } impl MavOdidOperatorIdType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_ID_TYPE_CAA ; } impl Default for MavOdidOperatorIdType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 AisNavStatus { UNDER_WAY = 0 , AIS_NAV_ANCHORED = 1 , AIS_NAV_UN_COMMANDED = 2 , AIS_NAV_RESTRICTED_MANOEUVERABILITY = 3 , AIS_NAV_DRAUGHT_CONSTRAINED = 4 , AIS_NAV_MOORED = 5 , AIS_NAV_AGROUND = 6 , AIS_NAV_FISHING = 7 , AIS_NAV_SAILING = 8 , AIS_NAV_RESERVED_HSC = 9 , AIS_NAV_RESERVED_WIG = 10 , AIS_NAV_RESERVED_1 = 11 , AIS_NAV_RESERVED_2 = 12 , AIS_NAV_RESERVED_3 = 13 , AIS_NAV_AIS_SART = 14 , AIS_NAV_UNKNOWN = 15 , } impl AisNavStatus { pub const DEFAULT : Self = Self :: UNDER_WAY ; } impl Default for AisNavStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidIdType { MAV_ODID_ID_TYPE_NONE = 0 , MAV_ODID_ID_TYPE_SERIAL_NUMBER = 1 , MAV_ODID_ID_TYPE_CAA_REGISTRATION_ID = 2 , MAV_ODID_ID_TYPE_UTM_ASSIGNED_UUID = 3 , MAV_ODID_ID_TYPE_SPECIFIC_SESSION_ID = 4 , } impl MavOdidIdType { pub const DEFAULT : Self = Self :: MAV_ODID_ID_TYPE_NONE ; } impl Default for MavOdidIdType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 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 PreflightStorageMissionAction { MISSION_READ_PERSISTENT = 0 , MISSION_WRITE_PERSISTENT = 1 , MISSION_RESET_DEFAULT = 2 , } impl PreflightStorageMissionAction { pub const DEFAULT : Self = Self :: MISSION_READ_PERSISTENT ; } impl Default for PreflightStorageMissionAction { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 MavParamExtType { MAV_PARAM_EXT_TYPE_UINT8 = 1 , MAV_PARAM_EXT_TYPE_INT8 = 2 , MAV_PARAM_EXT_TYPE_UINT16 = 3 , MAV_PARAM_EXT_TYPE_INT16 = 4 , MAV_PARAM_EXT_TYPE_UINT32 = 5 , MAV_PARAM_EXT_TYPE_INT32 = 6 , MAV_PARAM_EXT_TYPE_UINT64 = 7 , MAV_PARAM_EXT_TYPE_INT64 = 8 , MAV_PARAM_EXT_TYPE_REAL32 = 9 , MAV_PARAM_EXT_TYPE_REAL64 = 10 , MAV_PARAM_EXT_TYPE_CUSTOM = 11 , } impl MavParamExtType { pub const DEFAULT : Self = Self :: MAV_PARAM_EXT_TYPE_UINT8 ; } impl Default for MavParamExtType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavGeneratorStatusFlag : u64 { const MAV_GENERATOR_STATUS_FLAG_OFF = 1 ; const MAV_GENERATOR_STATUS_FLAG_READY = 2 ; const MAV_GENERATOR_STATUS_FLAG_GENERATING = 4 ; const MAV_GENERATOR_STATUS_FLAG_CHARGING = 8 ; const MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER = 16 ; const MAV_GENERATOR_STATUS_FLAG_MAXPOWER = 32 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING = 64 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT = 128 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING = 256 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT = 512 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT = 1024 ; const MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT = 2048 ; const MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING = 4096 ; const MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING = 8192 ; const MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT = 16384 ; const MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT = 32768 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT = 65536 ; const MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT = 131072 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT = 262144 ; const MAV_GENERATOR_STATUS_FLAG_START_INHIBITED = 524288 ; const MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED = 1048576 ; const MAV_GENERATOR_STATUS_FLAG_WARMING_UP = 2097152 ; const MAV_GENERATOR_STATUS_FLAG_IDLE = 4194304 ; } } impl MavGeneratorStatusFlag { pub const DEFAULT : Self = Self :: MAV_GENERATOR_STATUS_FLAG_OFF ; } impl Default for MavGeneratorStatusFlag { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceErrorFlags : u32 { const GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT = 1 ; const GIMBAL_DEVICE_ERROR_FLAGS_AT_PITCH_LIMIT = 2 ; const GIMBAL_DEVICE_ERROR_FLAGS_AT_YAW_LIMIT = 4 ; const GIMBAL_DEVICE_ERROR_FLAGS_ENCODER_ERROR = 8 ; const GIMBAL_DEVICE_ERROR_FLAGS_POWER_ERROR = 16 ; const GIMBAL_DEVICE_ERROR_FLAGS_MOTOR_ERROR = 32 ; const GIMBAL_DEVICE_ERROR_FLAGS_SOFTWARE_ERROR = 64 ; const GIMBAL_DEVICE_ERROR_FLAGS_COMMS_ERROR = 128 ; const GIMBAL_DEVICE_ERROR_FLAGS_CALIBRATION_RUNNING = 256 ; const GIMBAL_DEVICE_ERROR_FLAGS_NO_MANAGER = 512 ; } } impl GimbalDeviceErrorFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT ; } impl Default for GimbalDeviceErrorFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDistanceSensor { MAV_DISTANCE_SENSOR_LASER = 0 , MAV_DISTANCE_SENSOR_ULTRASOUND = 1 , MAV_DISTANCE_SENSOR_INFRARED = 2 , MAV_DISTANCE_SENSOR_RADAR = 3 , MAV_DISTANCE_SENSOR_UNKNOWN = 4 , } impl MavDistanceSensor { pub const DEFAULT : Self = Self :: MAV_DISTANCE_SENSOR_LASER ; } impl Default for MavDistanceSensor { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 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 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 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 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 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 } } 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 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 } } 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 CameraStatusTypes { CAMERA_STATUS_TYPE_HEARTBEAT = 0 , CAMERA_STATUS_TYPE_TRIGGER = 1 , CAMERA_STATUS_TYPE_DISCONNECT = 2 , CAMERA_STATUS_TYPE_ERROR = 3 , CAMERA_STATUS_TYPE_LOWBATT = 4 , CAMERA_STATUS_TYPE_LOWSTORE = 5 , CAMERA_STATUS_TYPE_LOWSTOREV = 6 , } impl CameraStatusTypes { pub const DEFAULT : Self = Self :: CAMERA_STATUS_TYPE_HEARTBEAT ; } impl Default for CameraStatusTypes { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 ParamAck { PARAM_ACK_ACCEPTED = 0 , PARAM_ACK_VALUE_UNSUPPORTED = 1 , PARAM_ACK_FAILED = 2 , PARAM_ACK_IN_PROGRESS = 3 , } impl ParamAck { pub const DEFAULT : Self = Self :: PARAM_ACK_ACCEPTED ; } impl Default for ParamAck { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 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 FenceMitigate { FENCE_MITIGATE_UNKNOWN = 0 , FENCE_MITIGATE_NONE = 1 , FENCE_MITIGATE_VEL_LIMIT = 2 , } impl FenceMitigate { pub const DEFAULT : Self = Self :: FENCE_MITIGATE_UNKNOWN ; } impl Default for FenceMitigate { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 MavOdidOperatorLocationType { MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF = 0 , MAV_ODID_OPERATOR_LOCATION_TYPE_LIVE_GNSS = 1 , MAV_ODID_OPERATOR_LOCATION_TYPE_FIXED = 2 , } impl MavOdidOperatorLocationType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF ; } impl Default for MavOdidOperatorLocationType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 , 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 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 MavOdidClassEu { MAV_ODID_CLASS_EU_UNDECLARED = 0 , MAV_ODID_CLASS_EU_CLASS_0 = 1 , MAV_ODID_CLASS_EU_CLASS_1 = 2 , MAV_ODID_CLASS_EU_CLASS_2 = 3 , MAV_ODID_CLASS_EU_CLASS_3 = 4 , MAV_ODID_CLASS_EU_CLASS_4 = 5 , MAV_ODID_CLASS_EU_CLASS_5 = 6 , MAV_ODID_CLASS_EU_CLASS_6 = 7 , } impl MavOdidClassEu { pub const DEFAULT : Self = Self :: MAV_ODID_CLASS_EU_UNDECLARED ; } impl Default for MavOdidClassEu { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FailureType { FAILURE_TYPE_OK = 0 , FAILURE_TYPE_OFF = 1 , FAILURE_TYPE_STUCK = 2 , FAILURE_TYPE_GARBAGE = 3 , FAILURE_TYPE_WRONG = 4 , FAILURE_TYPE_SLOW = 5 , FAILURE_TYPE_DELAYED = 6 , FAILURE_TYPE_INTERMITTENT = 7 , } impl FailureType { pub const DEFAULT : Self = Self :: FAILURE_TYPE_OK ; } impl Default for FailureType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 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 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 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 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 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 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 ActuatorOutputFunction { ACTUATOR_OUTPUT_FUNCTION_NONE = 0 , ACTUATOR_OUTPUT_FUNCTION_MOTOR1 = 1 , ACTUATOR_OUTPUT_FUNCTION_MOTOR2 = 2 , ACTUATOR_OUTPUT_FUNCTION_MOTOR3 = 3 , ACTUATOR_OUTPUT_FUNCTION_MOTOR4 = 4 , ACTUATOR_OUTPUT_FUNCTION_MOTOR5 = 5 , ACTUATOR_OUTPUT_FUNCTION_MOTOR6 = 6 , ACTUATOR_OUTPUT_FUNCTION_MOTOR7 = 7 , ACTUATOR_OUTPUT_FUNCTION_MOTOR8 = 8 , ACTUATOR_OUTPUT_FUNCTION_MOTOR9 = 9 , ACTUATOR_OUTPUT_FUNCTION_MOTOR10 = 10 , ACTUATOR_OUTPUT_FUNCTION_MOTOR11 = 11 , ACTUATOR_OUTPUT_FUNCTION_MOTOR12 = 12 , ACTUATOR_OUTPUT_FUNCTION_MOTOR13 = 13 , ACTUATOR_OUTPUT_FUNCTION_MOTOR14 = 14 , ACTUATOR_OUTPUT_FUNCTION_MOTOR15 = 15 , ACTUATOR_OUTPUT_FUNCTION_MOTOR16 = 16 , ACTUATOR_OUTPUT_FUNCTION_SERVO1 = 33 , ACTUATOR_OUTPUT_FUNCTION_SERVO2 = 34 , ACTUATOR_OUTPUT_FUNCTION_SERVO3 = 35 , ACTUATOR_OUTPUT_FUNCTION_SERVO4 = 36 , ACTUATOR_OUTPUT_FUNCTION_SERVO5 = 37 , ACTUATOR_OUTPUT_FUNCTION_SERVO6 = 38 , ACTUATOR_OUTPUT_FUNCTION_SERVO7 = 39 , ACTUATOR_OUTPUT_FUNCTION_SERVO8 = 40 , ACTUATOR_OUTPUT_FUNCTION_SERVO9 = 41 , ACTUATOR_OUTPUT_FUNCTION_SERVO10 = 42 , ACTUATOR_OUTPUT_FUNCTION_SERVO11 = 43 , ACTUATOR_OUTPUT_FUNCTION_SERVO12 = 44 , ACTUATOR_OUTPUT_FUNCTION_SERVO13 = 45 , ACTUATOR_OUTPUT_FUNCTION_SERVO14 = 46 , ACTUATOR_OUTPUT_FUNCTION_SERVO15 = 47 , ACTUATOR_OUTPUT_FUNCTION_SERVO16 = 48 , } impl ActuatorOutputFunction { pub const DEFAULT : Self = Self :: ACTUATOR_OUTPUT_FUNCTION_NONE ; } impl Default for ActuatorOutputFunction { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceCapFlags : u16 { const GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT = 1 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL = 2 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS = 4 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW = 8 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK = 16 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS = 32 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW = 64 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK = 128 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS = 256 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW = 512 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK = 1024 ; const GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW = 2048 ; const GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME = 4096 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS = 8192 ; } } impl GimbalDeviceCapFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT ; } impl Default for GimbalDeviceCapFlags { fn default () -> Self { Self :: DEFAULT } } 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 CopterMode { COPTER_MODE_STABILIZE = 0 , COPTER_MODE_ACRO = 1 , COPTER_MODE_ALT_HOLD = 2 , COPTER_MODE_AUTO = 3 , COPTER_MODE_GUIDED = 4 , COPTER_MODE_LOITER = 5 , COPTER_MODE_RTL = 6 , COPTER_MODE_CIRCLE = 7 , COPTER_MODE_LAND = 9 , COPTER_MODE_DRIFT = 11 , COPTER_MODE_SPORT = 13 , COPTER_MODE_FLIP = 14 , COPTER_MODE_AUTOTUNE = 15 , COPTER_MODE_POSHOLD = 16 , COPTER_MODE_BRAKE = 17 , COPTER_MODE_THROW = 18 , COPTER_MODE_AVOID_ADSB = 19 , COPTER_MODE_GUIDED_NOGPS = 20 , COPTER_MODE_SMART_RTL = 21 , COPTER_MODE_FLOWHOLD = 22 , COPTER_MODE_FOLLOW = 23 , COPTER_MODE_ZIGZAG = 24 , COPTER_MODE_SYSTEMID = 25 , COPTER_MODE_AUTOROTATE = 26 , COPTER_MODE_AUTO_RTL = 27 , } impl CopterMode { pub const DEFAULT : Self = Self :: COPTER_MODE_STABILIZE ; } impl Default for CopterMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 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 , 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REQUEST_DATA_STREAM_DATA { pub req_message_rate : u16 , pub target_system : u8 , pub target_component : u8 , pub req_stream_id : u8 , pub start_stop : u8 , } impl REQUEST_DATA_STREAM_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { req_message_rate : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , req_stream_id : 0_u8 , start_stop : 0_u8 , } ; } impl Default for REQUEST_DATA_STREAM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REQUEST_DATA_STREAM_DATA { type Message = MavMessage ; const ID : u32 = 66u32 ; const NAME : & 'static str = "REQUEST_DATA_STREAM" ; const EXTRA_CRC : u8 = 148u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . req_message_rate = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . req_stream_id = buf . get_u8 () ; __struct . start_stop = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . param_value) ; __tmp . put_u16_le (self . param_count) ; __tmp . put_u16_le (self . param_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_REQUEST_DATA { pub mask : u64 , pub lat : i32 , pub lon : i32 , pub grid_spacing : u16 , } impl TERRAIN_REQUEST_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { mask : 0_u64 , lat : 0_i32 , lon : 0_i32 , grid_spacing : 0_u16 , } ; } impl Default for TERRAIN_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 133u32 ; const NAME : & 'static str = "TERRAIN_REQUEST" ; const EXTRA_CRC : u8 = 6u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mask = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . grid_spacing = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . group_mlx) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ORBIT_EXECUTION_STATUS_DATA { pub time_usec : u64 , pub radius : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub frame : MavFrame , } impl ORBIT_EXECUTION_STATUS_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , radius : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , frame : MavFrame :: DEFAULT , } ; } impl Default for ORBIT_EXECUTION_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ORBIT_EXECUTION_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 360u32 ; const NAME : & 'static str = "ORBIT_EXECUTION_STATUS" ; const EXTRA_CRC : u8 = 11u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . radius = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . body_roll_rate) ; __tmp . put_f32_le (self . body_pitch_rate) ; __tmp . put_f32_le (self . body_yaw_rate) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . type_mask . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_GPS_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub vn : i16 , pub ve : i16 , pub vd : i16 , pub cog : u16 , pub fix_type : u8 , pub satellites_visible : u8 , } impl HIL_GPS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , vn : 0_i16 , ve : 0_i16 , vd : 0_i16 , cog : 0_u16 , fix_type : 0_u8 , satellites_visible : 0_u8 , } ; } impl Default for HIL_GPS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_GPS_DATA { type Message = MavMessage ; const ID : u32 = 113u32 ; const NAME : & 'static str = "HIL_GPS" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . vn = buf . get_i16_le () ; __struct . ve = buf . get_i16_le () ; __struct . vd = buf . get_i16_le () ; __struct . cog = buf . get_u16_le () ; __struct . fix_type = buf . get_u8 () ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } for val in & self . voltage { __tmp . put_u16_le (* val) ; } for val in & self . current { __tmp . put_u16_le (* val) ; } for val in & self . totalcurrent { __tmp . put_u16_le (* val) ; } for val in & self . rpm { __tmp . put_u16_le (* val) ; } for val in & self . count { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MOUNT_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CHANGE_OPERATOR_CONTROL_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } for val in & self . ssid { __tmp . put_u8 (* val) ; } for val in & self . password { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub time_boot_us : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub q_estimated_delay_us : u32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub v_estimated_delay_us : u32 , pub feed_forward_angular_velocity_z : f32 , pub estimator_status : EstimatorStatusFlags , pub target_system : u8 , pub target_component : u8 , pub landed_state : MavLandedState , } impl AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_us : 0_u64 , q : [0.0_f32 ; 4usize] , q_estimated_delay_us : 0_u32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , v_estimated_delay_us : 0_u32 , feed_forward_angular_velocity_z : 0.0_f32 , estimator_status : EstimatorStatusFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , landed_state : MavLandedState :: DEFAULT , } ; } impl Default for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { type Message = MavMessage ; const ID : u32 = 286u32 ; const NAME : & 'static str = "AUTOPILOT_STATE_FOR_GIMBAL_DEVICE" ; const EXTRA_CRC : u8 = 210u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_us = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . q_estimated_delay_us = buf . get_u32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . v_estimated_delay_us = buf . get_u32_le () ; __struct . feed_forward_angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . estimator_status = EstimatorStatusFlags :: from_bits (tmp & EstimatorStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EstimatorStatusFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u16_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU2_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU2_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU2_DATA { type Message = MavMessage ; const ID : u32 = 116u32 ; const NAME : & 'static str = "SCALED_IMU2" ; const EXTRA_CRC : u8 = 76u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; for val in & self . distances { __tmp . put_u16_le (* val) ; } __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u8 (self . sensor_type as u8) ; __tmp . put_u8 (self . increment) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAN_FILTER_MODIFY_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub ids : [u16 ; 16] , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub operation : CanFilterOp , pub num_ids : u8 , } impl CAN_FILTER_MODIFY_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { ids : [0_u16 ; 16usize] , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , operation : CanFilterOp :: DEFAULT , num_ids : 0_u8 , } ; } impl Default for CAN_FILTER_MODIFY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAN_FILTER_MODIFY_DATA { type Message = MavMessage ; const ID : u32 = 388u32 ; const NAME : & 'static str = "CAN_FILTER_MODIFY" ; const EXTRA_CRC : u8 = 8u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . ids { let val = buf . get_u16_le () ; * v = val ; } __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . operation = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CanFilterOp" , value : tmp as u32 }) ? ; __struct . num_ids = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } for val in & self . ids { __tmp . put_u16_le (* val) ; } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . operation as u8) ; __tmp . put_u8 (self . num_ids) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u8 (self . mode_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; __tmp . put_u64_le (self . flags) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . mode . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVCAN_NODE_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_INFORMATION_DATA { pub time_boot_ms : u32 , pub cap_flags : GimbalManagerCapFlags , pub roll_min : f32 , pub roll_max : f32 , pub pitch_min : f32 , pub pitch_max : f32 , pub yaw_min : f32 , pub yaw_max : f32 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_INFORMATION_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , cap_flags : GimbalManagerCapFlags :: DEFAULT , roll_min : 0.0_f32 , roll_max : 0.0_f32 , pitch_min : 0.0_f32 , pitch_max : 0.0_f32 , yaw_min : 0.0_f32 , yaw_max : 0.0_f32 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 280u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_INFORMATION" ; const EXTRA_CRC : u8 = 70u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u32_le () ; __struct . cap_flags = GimbalManagerCapFlags :: from_bits (tmp & GimbalManagerCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalManagerCapFlags" , value : tmp as u32 }) ? ; __struct . roll_min = buf . get_f32_le () ; __struct . roll_max = buf . get_f32_le () ; __struct . pitch_min = buf . get_f32_le () ; __struct . pitch_max = buf . get_f32_le () ; __struct . yaw_min = buf . get_f32_le () ; __struct . yaw_max = buf . get_f32_le () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FLIGHT_INFORMATION_DATA { pub arming_time_utc : u64 , pub takeoff_time_utc : u64 , pub flight_uuid : u64 , pub time_boot_ms : u32 , } impl FLIGHT_INFORMATION_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { arming_time_utc : 0_u64 , takeoff_time_utc : 0_u64 , flight_uuid : 0_u64 , time_boot_ms : 0_u32 , } ; } impl Default for FLIGHT_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FLIGHT_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 264u32 ; const NAME : & 'static str = "FLIGHT_INFORMATION" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . arming_time_utc = buf . get_u64_le () ; __struct . takeoff_time_utc = buf . get_u64_le () ; __struct . flight_uuid = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . idx) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_TELEMETRY_9_TO_12_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltage : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub current : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub totalcurrent : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rpm : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub count : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature : [u8 ; 4] , } impl ESC_TELEMETRY_9_TO_12_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { voltage : [0_u16 ; 4usize] , current : [0_u16 ; 4usize] , totalcurrent : [0_u16 ; 4usize] , rpm : [0_u16 ; 4usize] , count : [0_u16 ; 4usize] , temperature : [0_u8 ; 4usize] , } ; } impl Default for ESC_TELEMETRY_9_TO_12_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_TELEMETRY_9_TO_12_DATA { type Message = MavMessage ; const ID : u32 = 11032u32 ; const NAME : & 'static str = "ESC_TELEMETRY_9_TO_12" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . voltage { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . current { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . totalcurrent { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . rpm { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . count { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . temperature { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . omegaIx) ; __tmp . put_f32_le (self . omegaIy) ; __tmp . put_f32_le (self . omegaIz) ; __tmp . put_f32_le (self . accel_weight) ; __tmp . put_f32_le (self . renorm_val) ; __tmp . put_f32_le (self . error_rp) ; __tmp . put_f32_le (self . error_yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { PARAM_SET (PARAM_SET_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , AUTH_KEY (AUTH_KEY_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , GPS_INPUT (GPS_INPUT_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , CUBEPILOT_FIRMWARE_UPDATE_RESP (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA) , CAMERA_FEEDBACK (CAMERA_FEEDBACK_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , DEBUG (DEBUG_DATA) , FENCE_POINT (FENCE_POINT_DATA) , ADAP_TUNING (ADAP_TUNING_DATA) , OSD_PARAM_SHOW_CONFIG (OSD_PARAM_SHOW_CONFIG_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , DATA32 (DATA32_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , MISSION_ACK (MISSION_ACK_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , GOPRO_SET_REQUEST (GOPRO_SET_REQUEST_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , ESC_TELEMETRY_1_TO_4 (ESC_TELEMETRY_1_TO_4_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , OSD_PARAM_CONFIG (OSD_PARAM_CONFIG_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , DIGICAM_CONFIGURE (DIGICAM_CONFIGURE_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , RALLY_FETCH_POINT (RALLY_FETCH_POINT_DATA) , COMPASSMOT_STATUS (COMPASSMOT_STATUS_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , COMMAND_INT (COMMAND_INT_DATA) , AUTOPILOT_VERSION_REQUEST (AUTOPILOT_VERSION_REQUEST_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , AP_ADC (AP_ADC_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , GOPRO_HEARTBEAT (GOPRO_HEARTBEAT_DATA) , DEVICE_OP_READ (DEVICE_OP_READ_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , ESC_INFO (ESC_INFO_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , GPS2_RTK (GPS2_RTK_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , HIL_GPS (HIL_GPS_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , CUBEPILOT_RAW_RC (CUBEPILOT_RAW_RC_DATA) , STATUSTEXT (STATUSTEXT_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , SET_MAG_OFFSETS (SET_MAG_OFFSETS_DATA) , UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA) , ESC_TELEMETRY_5_TO_8 (ESC_TELEMETRY_5_TO_8_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , DEVICE_OP_WRITE (DEVICE_OP_WRITE_DATA) , CAMERA_STATUS (CAMERA_STATUS_DATA) , DEVICE_OP_WRITE_REPLY (DEVICE_OP_WRITE_REPLY_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , GPS2_RAW (GPS2_RAW_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , GOPRO_SET_RESPONSE (GOPRO_SET_RESPONSE_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , DEVICE_OP_READ_REPLY (DEVICE_OP_READ_REPLY_DATA) , WATER_DEPTH (WATER_DEPTH_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , GIMBAL_TORQUE_CMD_REPORT (GIMBAL_TORQUE_CMD_REPORT_DATA) , DATA16 (DATA16_DATA) , RAW_IMU (RAW_IMU_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , LED_CONTROL (LED_CONTROL_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , RADIO (RADIO_DATA) , ATTITUDE (ATTITUDE_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , OSD_PARAM_CONFIG_REPLY (OSD_PARAM_CONFIG_REPLY_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , PING (PING_DATA) , POWER_STATUS (POWER_STATUS_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , DEEPSTALL (DEEPSTALL_DATA) , LOG_DATA (LOG_DATA_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , HIL_STATE (HIL_STATE_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , VIBRATION (VIBRATION_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , GPS_STATUS (GPS_STATUS_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , BATTERY2 (BATTERY2_DATA) , GPS_RTK (GPS_RTK_DATA) , DATA96 (DATA96_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , HOME_POSITION (HOME_POSITION_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , LIMITS_STATUS (LIMITS_STATUS_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , TIMESYNC (TIMESYNC_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , GOPRO_GET_RESPONSE (GOPRO_GET_RESPONSE_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , ESC_STATUS (ESC_STATUS_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , RALLY_POINT (RALLY_POINT_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , COLLISION (COLLISION_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , REMOTE_LOG_DATA_BLOCK (REMOTE_LOG_DATA_BLOCK_DATA) , REMOTE_LOG_BLOCK_STATUS (REMOTE_LOG_BLOCK_STATUS_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , GIMBAL_CONTROL (GIMBAL_CONTROL_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , SIMSTATE (SIMSTATE_DATA) , RANGEFINDER (RANGEFINDER_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , DATA_STREAM (DATA_STREAM_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , MOUNT_CONFIGURE (MOUNT_CONFIGURE_DATA) , RPM (RPM_DATA) , GOPRO_GET_REQUEST (GOPRO_GET_REQUEST_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , WIND_COV (WIND_COV_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , GIMBAL_REPORT (GIMBAL_REPORT_DATA) , DIGICAM_CONTROL (DIGICAM_CONTROL_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , OSD_PARAM_SHOW_CONFIG_REPLY (OSD_PARAM_SHOW_CONFIG_REPLY_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , SYS_STATUS (SYS_STATUS_DATA) , TUNNEL (TUNNEL_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , LOG_ERASE (LOG_ERASE_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , OBSTACLE_DISTANCE_3D (OBSTACLE_DISTANCE_3D_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , HERELINK_VIDEO_STREAM_INFORMATION (HERELINK_VIDEO_STREAM_INFORMATION_DATA) , PID_TUNING (PID_TUNING_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , SCALED_IMU (SCALED_IMU_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , MEMINFO (MEMINFO_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , MOUNT_STATUS (MOUNT_STATUS_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , DATA64 (DATA64_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , HERELINK_TELEM (HERELINK_TELEM_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , WIND (WIND_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , MCU_STATUS (MCU_STATUS_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , CAN_FRAME (CAN_FRAME_DATA) , HEARTBEAT (HEARTBEAT_DATA) , SET_MODE (SET_MODE_DATA) , AOA_SSA (AOA_SSA_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , VFR_HUD (VFR_HUD_DATA) , ODOMETRY (ODOMETRY_DATA) , CUBEPILOT_FIRMWARE_UPDATE_START (CUBEPILOT_FIRMWARE_UPDATE_START_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , AIRSPEED_AUTOCAL (AIRSPEED_AUTOCAL_DATA) , FENCE_FETCH_POINT (FENCE_FETCH_POINT_DATA) , ESC_TELEMETRY_9_TO_12 (ESC_TELEMETRY_9_TO_12_DATA) , VISION_POSITION_DELTA (VISION_POSITION_DELTA_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , HWSTATUS (HWSTATUS_DATA) , ALTITUDE (ALTITUDE_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , EFI_STATUS (EFI_STATUS_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , SIM_STATE (SIM_STATE_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , EVENT (EVENT_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , MOUNT_CONTROL (MOUNT_CONTROL_DATA) , AHRS3 (AHRS3_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA) , AHRS2 (AHRS2_DATA) , RAW_RPM (RAW_RPM_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , SENSOR_OFFSETS (SENSOR_OFFSETS_DATA) , AHRS (AHRS_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , MAG_CAL_PROGRESS (MAG_CAL_PROGRESS_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , EKF_STATUS_REPORT (EKF_STATUS_REPORT_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP) , CAMERA_FEEDBACK_DATA :: ID => CAMERA_FEEDBACK_DATA :: deser (version , payload) . map (Self :: CAMERA_FEEDBACK) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , 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) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , FENCE_POINT_DATA :: ID => FENCE_POINT_DATA :: deser (version , payload) . map (Self :: FENCE_POINT) , ADAP_TUNING_DATA :: ID => ADAP_TUNING_DATA :: deser (version , payload) . map (Self :: ADAP_TUNING) , OSD_PARAM_SHOW_CONFIG_DATA :: ID => OSD_PARAM_SHOW_CONFIG_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_SHOW_CONFIG) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , DATA32_DATA :: ID => DATA32_DATA :: deser (version , payload) . map (Self :: DATA32) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , GOPRO_SET_REQUEST_DATA :: ID => GOPRO_SET_REQUEST_DATA :: deser (version , payload) . map (Self :: GOPRO_SET_REQUEST) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , ESC_TELEMETRY_1_TO_4_DATA :: ID => ESC_TELEMETRY_1_TO_4_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_1_TO_4) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , OSD_PARAM_CONFIG_DATA :: ID => OSD_PARAM_CONFIG_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_CONFIG) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , DIGICAM_CONFIGURE_DATA :: ID => DIGICAM_CONFIGURE_DATA :: deser (version , payload) . map (Self :: DIGICAM_CONFIGURE) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , RALLY_FETCH_POINT_DATA :: ID => RALLY_FETCH_POINT_DATA :: deser (version , payload) . map (Self :: RALLY_FETCH_POINT) , COMPASSMOT_STATUS_DATA :: ID => COMPASSMOT_STATUS_DATA :: deser (version , payload) . map (Self :: COMPASSMOT_STATUS) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , AUTOPILOT_VERSION_REQUEST_DATA :: ID => AUTOPILOT_VERSION_REQUEST_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION_REQUEST) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , AP_ADC_DATA :: ID => AP_ADC_DATA :: deser (version , payload) . map (Self :: AP_ADC) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , GOPRO_HEARTBEAT_DATA :: ID => GOPRO_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: GOPRO_HEARTBEAT) , DEVICE_OP_READ_DATA :: ID => DEVICE_OP_READ_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_READ) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , CUBEPILOT_RAW_RC_DATA :: ID => CUBEPILOT_RAW_RC_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_RAW_RC) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , SET_MAG_OFFSETS_DATA :: ID => SET_MAG_OFFSETS_DATA :: deser (version , payload) . map (Self :: SET_MAG_OFFSETS) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_DYNAMIC) , ESC_TELEMETRY_5_TO_8_DATA :: ID => ESC_TELEMETRY_5_TO_8_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_5_TO_8) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , DEVICE_OP_WRITE_DATA :: ID => DEVICE_OP_WRITE_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_WRITE) , CAMERA_STATUS_DATA :: ID => CAMERA_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_STATUS) , DEVICE_OP_WRITE_REPLY_DATA :: ID => DEVICE_OP_WRITE_REPLY_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_WRITE_REPLY) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: ICAROUS_HEARTBEAT) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , GOPRO_SET_RESPONSE_DATA :: ID => GOPRO_SET_RESPONSE_DATA :: deser (version , payload) . map (Self :: GOPRO_SET_RESPONSE) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , DEVICE_OP_READ_REPLY_DATA :: ID => DEVICE_OP_READ_REPLY_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_READ_REPLY) , WATER_DEPTH_DATA :: ID => WATER_DEPTH_DATA :: deser (version , payload) . map (Self :: WATER_DEPTH) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: deser (version , payload) . map (Self :: ICAROUS_KINEMATIC_BANDS) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , 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) , DATA16_DATA :: ID => DATA16_DATA :: deser (version , payload) . map (Self :: DATA16) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , LED_CONTROL_DATA :: ID => LED_CONTROL_DATA :: deser (version , payload) . map (Self :: LED_CONTROL) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , RADIO_DATA :: ID => RADIO_DATA :: deser (version , payload) . map (Self :: RADIO) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , OSD_PARAM_CONFIG_REPLY_DATA :: ID => OSD_PARAM_CONFIG_REPLY_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_CONFIG_REPLY) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , 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) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , DEEPSTALL_DATA :: ID => DEEPSTALL_DATA :: deser (version , payload) . map (Self :: DEEPSTALL) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , BATTERY2_DATA :: ID => BATTERY2_DATA :: deser (version , payload) . map (Self :: BATTERY2) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , DATA96_DATA :: ID => DATA96_DATA :: deser (version , payload) . map (Self :: DATA96) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , LIMITS_STATUS_DATA :: ID => LIMITS_STATUS_DATA :: deser (version , payload) . map (Self :: LIMITS_STATUS) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , GOPRO_GET_RESPONSE_DATA :: ID => GOPRO_GET_RESPONSE_DATA :: deser (version , payload) . map (Self :: GOPRO_GET_RESPONSE) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , RALLY_POINT_DATA :: ID => RALLY_POINT_DATA :: deser (version , payload) . map (Self :: RALLY_POINT) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , REMOTE_LOG_DATA_BLOCK_DATA :: ID => REMOTE_LOG_DATA_BLOCK_DATA :: deser (version , payload) . map (Self :: REMOTE_LOG_DATA_BLOCK) , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => REMOTE_LOG_BLOCK_STATUS_DATA :: deser (version , payload) . map (Self :: REMOTE_LOG_BLOCK_STATUS) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , GIMBAL_CONTROL_DATA :: ID => GIMBAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_CONTROL) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , SIMSTATE_DATA :: ID => SIMSTATE_DATA :: deser (version , payload) . map (Self :: SIMSTATE) , RANGEFINDER_DATA :: ID => RANGEFINDER_DATA :: deser (version , payload) . map (Self :: RANGEFINDER) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , MOUNT_CONFIGURE_DATA :: ID => MOUNT_CONFIGURE_DATA :: deser (version , payload) . map (Self :: MOUNT_CONFIGURE) , RPM_DATA :: ID => RPM_DATA :: deser (version , payload) . map (Self :: RPM) , GOPRO_GET_REQUEST_DATA :: ID => GOPRO_GET_REQUEST_DATA :: deser (version , payload) . map (Self :: GOPRO_GET_REQUEST) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , GIMBAL_REPORT_DATA :: ID => GIMBAL_REPORT_DATA :: deser (version , payload) . map (Self :: GIMBAL_REPORT) , DIGICAM_CONTROL_DATA :: ID => DIGICAM_CONTROL_DATA :: deser (version , payload) . map (Self :: DIGICAM_CONTROL) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , 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) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_SHOW_CONFIG_REPLY) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , OBSTACLE_DISTANCE_3D_DATA :: ID => OBSTACLE_DISTANCE_3D_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE_3D) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: HERELINK_VIDEO_STREAM_INFORMATION) , PID_TUNING_DATA :: ID => PID_TUNING_DATA :: deser (version , payload) . map (Self :: PID_TUNING) , 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) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , MEMINFO_DATA :: ID => MEMINFO_DATA :: deser (version , payload) . map (Self :: MEMINFO) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , MOUNT_STATUS_DATA :: ID => MOUNT_STATUS_DATA :: deser (version , payload) . map (Self :: MOUNT_STATUS) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , DATA64_DATA :: ID => DATA64_DATA :: deser (version , payload) . map (Self :: DATA64) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , HERELINK_TELEM_DATA :: ID => HERELINK_TELEM_DATA :: deser (version , payload) . map (Self :: HERELINK_TELEM) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , 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) , WIND_DATA :: ID => WIND_DATA :: deser (version , payload) . map (Self :: WIND) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , MCU_STATUS_DATA :: ID => MCU_STATUS_DATA :: deser (version , payload) . map (Self :: MCU_STATUS) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , AOA_SSA_DATA :: ID => AOA_SSA_DATA :: deser (version , payload) . map (Self :: AOA_SSA) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_FIRMWARE_UPDATE_START) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , AIRSPEED_AUTOCAL_DATA :: ID => AIRSPEED_AUTOCAL_DATA :: deser (version , payload) . map (Self :: AIRSPEED_AUTOCAL) , FENCE_FETCH_POINT_DATA :: ID => FENCE_FETCH_POINT_DATA :: deser (version , payload) . map (Self :: FENCE_FETCH_POINT) , ESC_TELEMETRY_9_TO_12_DATA :: ID => ESC_TELEMETRY_9_TO_12_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_9_TO_12) , VISION_POSITION_DELTA_DATA :: ID => VISION_POSITION_DELTA_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_DELTA) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , HWSTATUS_DATA :: ID => HWSTATUS_DATA :: deser (version , payload) . map (Self :: HWSTATUS) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , MOUNT_CONTROL_DATA :: ID => MOUNT_CONTROL_DATA :: deser (version , payload) . map (Self :: MOUNT_CONTROL) , AHRS3_DATA :: ID => AHRS3_DATA :: deser (version , payload) . map (Self :: AHRS3) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_CFG) , AHRS2_DATA :: ID => AHRS2_DATA :: deser (version , payload) . map (Self :: AHRS2) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , SENSOR_OFFSETS_DATA :: ID => SENSOR_OFFSETS_DATA :: deser (version , payload) . map (Self :: SENSOR_OFFSETS) , AHRS_DATA :: ID => AHRS_DATA :: deser (version , payload) . map (Self :: AHRS) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , MAG_CAL_PROGRESS_DATA :: ID => MAG_CAL_PROGRESS_DATA :: deser (version , payload) . map (Self :: MAG_CAL_PROGRESS) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , EKF_STATUS_REPORT_DATA :: ID => EKF_STATUS_REPORT_DATA :: deser (version , payload) . map (Self :: EKF_STATUS_REPORT) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (..) => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: NAME , Self :: CAMERA_FEEDBACK (..) => CAMERA_FEEDBACK_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: FENCE_POINT (..) => FENCE_POINT_DATA :: NAME , Self :: ADAP_TUNING (..) => ADAP_TUNING_DATA :: NAME , Self :: OSD_PARAM_SHOW_CONFIG (..) => OSD_PARAM_SHOW_CONFIG_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: DATA32 (..) => DATA32_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: GOPRO_SET_REQUEST (..) => GOPRO_SET_REQUEST_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: ESC_TELEMETRY_1_TO_4 (..) => ESC_TELEMETRY_1_TO_4_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: OSD_PARAM_CONFIG (..) => OSD_PARAM_CONFIG_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: DIGICAM_CONFIGURE (..) => DIGICAM_CONFIGURE_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: RALLY_FETCH_POINT (..) => RALLY_FETCH_POINT_DATA :: NAME , Self :: COMPASSMOT_STATUS (..) => COMPASSMOT_STATUS_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: AUTOPILOT_VERSION_REQUEST (..) => AUTOPILOT_VERSION_REQUEST_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: AP_ADC (..) => AP_ADC_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: GOPRO_HEARTBEAT (..) => GOPRO_HEARTBEAT_DATA :: NAME , Self :: DEVICE_OP_READ (..) => DEVICE_OP_READ_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: CUBEPILOT_RAW_RC (..) => CUBEPILOT_RAW_RC_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: SET_MAG_OFFSETS (..) => SET_MAG_OFFSETS_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME , Self :: ESC_TELEMETRY_5_TO_8 (..) => ESC_TELEMETRY_5_TO_8_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: DEVICE_OP_WRITE (..) => DEVICE_OP_WRITE_DATA :: NAME , Self :: CAMERA_STATUS (..) => CAMERA_STATUS_DATA :: NAME , Self :: DEVICE_OP_WRITE_REPLY (..) => DEVICE_OP_WRITE_REPLY_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: GOPRO_SET_RESPONSE (..) => GOPRO_SET_RESPONSE_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: DEVICE_OP_READ_REPLY (..) => DEVICE_OP_READ_REPLY_DATA :: NAME , Self :: WATER_DEPTH (..) => WATER_DEPTH_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: GIMBAL_TORQUE_CMD_REPORT (..) => GIMBAL_TORQUE_CMD_REPORT_DATA :: NAME , Self :: DATA16 (..) => DATA16_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: LED_CONTROL (..) => LED_CONTROL_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: RADIO (..) => RADIO_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: OSD_PARAM_CONFIG_REPLY (..) => OSD_PARAM_CONFIG_REPLY_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: DEEPSTALL (..) => DEEPSTALL_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: BATTERY2 (..) => BATTERY2_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: DATA96 (..) => DATA96_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: LIMITS_STATUS (..) => LIMITS_STATUS_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: GOPRO_GET_RESPONSE (..) => GOPRO_GET_RESPONSE_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: RALLY_POINT (..) => RALLY_POINT_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: REMOTE_LOG_DATA_BLOCK (..) => REMOTE_LOG_DATA_BLOCK_DATA :: NAME , Self :: REMOTE_LOG_BLOCK_STATUS (..) => REMOTE_LOG_BLOCK_STATUS_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: GIMBAL_CONTROL (..) => GIMBAL_CONTROL_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: SIMSTATE (..) => SIMSTATE_DATA :: NAME , Self :: RANGEFINDER (..) => RANGEFINDER_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: MOUNT_CONFIGURE (..) => MOUNT_CONFIGURE_DATA :: NAME , Self :: RPM (..) => RPM_DATA :: NAME , Self :: GOPRO_GET_REQUEST (..) => GOPRO_GET_REQUEST_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: GIMBAL_REPORT (..) => GIMBAL_REPORT_DATA :: NAME , Self :: DIGICAM_CONTROL (..) => DIGICAM_CONTROL_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (..) => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: OBSTACLE_DISTANCE_3D (..) => OBSTACLE_DISTANCE_3D_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: HERELINK_VIDEO_STREAM_INFORMATION (..) => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: PID_TUNING (..) => PID_TUNING_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: MEMINFO (..) => MEMINFO_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: MOUNT_STATUS (..) => MOUNT_STATUS_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: DATA64 (..) => DATA64_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: HERELINK_TELEM (..) => HERELINK_TELEM_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: WIND (..) => WIND_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: MCU_STATUS (..) => MCU_STATUS_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: AOA_SSA (..) => AOA_SSA_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (..) => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: AIRSPEED_AUTOCAL (..) => AIRSPEED_AUTOCAL_DATA :: NAME , Self :: FENCE_FETCH_POINT (..) => FENCE_FETCH_POINT_DATA :: NAME , Self :: ESC_TELEMETRY_9_TO_12 (..) => ESC_TELEMETRY_9_TO_12_DATA :: NAME , Self :: VISION_POSITION_DELTA (..) => VISION_POSITION_DELTA_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: HWSTATUS (..) => HWSTATUS_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: MOUNT_CONTROL (..) => MOUNT_CONTROL_DATA :: NAME , Self :: AHRS3 (..) => AHRS3_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: NAME , Self :: AHRS2 (..) => AHRS2_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: SENSOR_OFFSETS (..) => SENSOR_OFFSETS_DATA :: NAME , Self :: AHRS (..) => AHRS_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: MAG_CAL_PROGRESS (..) => MAG_CAL_PROGRESS_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: EKF_STATUS_REPORT (..) => EKF_STATUS_REPORT_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (..) => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID , Self :: CAMERA_FEEDBACK (..) => CAMERA_FEEDBACK_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: FENCE_POINT (..) => FENCE_POINT_DATA :: ID , Self :: ADAP_TUNING (..) => ADAP_TUNING_DATA :: ID , Self :: OSD_PARAM_SHOW_CONFIG (..) => OSD_PARAM_SHOW_CONFIG_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: DATA32 (..) => DATA32_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: GOPRO_SET_REQUEST (..) => GOPRO_SET_REQUEST_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: ESC_TELEMETRY_1_TO_4 (..) => ESC_TELEMETRY_1_TO_4_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: OSD_PARAM_CONFIG (..) => OSD_PARAM_CONFIG_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: DIGICAM_CONFIGURE (..) => DIGICAM_CONFIGURE_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: RALLY_FETCH_POINT (..) => RALLY_FETCH_POINT_DATA :: ID , Self :: COMPASSMOT_STATUS (..) => COMPASSMOT_STATUS_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: AUTOPILOT_VERSION_REQUEST (..) => AUTOPILOT_VERSION_REQUEST_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: AP_ADC (..) => AP_ADC_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: GOPRO_HEARTBEAT (..) => GOPRO_HEARTBEAT_DATA :: ID , Self :: DEVICE_OP_READ (..) => DEVICE_OP_READ_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: CUBEPILOT_RAW_RC (..) => CUBEPILOT_RAW_RC_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: SET_MAG_OFFSETS (..) => SET_MAG_OFFSETS_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID , Self :: ESC_TELEMETRY_5_TO_8 (..) => ESC_TELEMETRY_5_TO_8_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: DEVICE_OP_WRITE (..) => DEVICE_OP_WRITE_DATA :: ID , Self :: CAMERA_STATUS (..) => CAMERA_STATUS_DATA :: ID , Self :: DEVICE_OP_WRITE_REPLY (..) => DEVICE_OP_WRITE_REPLY_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: GOPRO_SET_RESPONSE (..) => GOPRO_SET_RESPONSE_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: DEVICE_OP_READ_REPLY (..) => DEVICE_OP_READ_REPLY_DATA :: ID , Self :: WATER_DEPTH (..) => WATER_DEPTH_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: GIMBAL_TORQUE_CMD_REPORT (..) => GIMBAL_TORQUE_CMD_REPORT_DATA :: ID , Self :: DATA16 (..) => DATA16_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: LED_CONTROL (..) => LED_CONTROL_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: RADIO (..) => RADIO_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: OSD_PARAM_CONFIG_REPLY (..) => OSD_PARAM_CONFIG_REPLY_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: DEEPSTALL (..) => DEEPSTALL_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: BATTERY2 (..) => BATTERY2_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: DATA96 (..) => DATA96_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: LIMITS_STATUS (..) => LIMITS_STATUS_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: GOPRO_GET_RESPONSE (..) => GOPRO_GET_RESPONSE_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: RALLY_POINT (..) => RALLY_POINT_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: REMOTE_LOG_DATA_BLOCK (..) => REMOTE_LOG_DATA_BLOCK_DATA :: ID , Self :: REMOTE_LOG_BLOCK_STATUS (..) => REMOTE_LOG_BLOCK_STATUS_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: GIMBAL_CONTROL (..) => GIMBAL_CONTROL_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: SIMSTATE (..) => SIMSTATE_DATA :: ID , Self :: RANGEFINDER (..) => RANGEFINDER_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: MOUNT_CONFIGURE (..) => MOUNT_CONFIGURE_DATA :: ID , Self :: RPM (..) => RPM_DATA :: ID , Self :: GOPRO_GET_REQUEST (..) => GOPRO_GET_REQUEST_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: GIMBAL_REPORT (..) => GIMBAL_REPORT_DATA :: ID , Self :: DIGICAM_CONTROL (..) => DIGICAM_CONTROL_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (..) => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: OBSTACLE_DISTANCE_3D (..) => OBSTACLE_DISTANCE_3D_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: HERELINK_VIDEO_STREAM_INFORMATION (..) => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: PID_TUNING (..) => PID_TUNING_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: MEMINFO (..) => MEMINFO_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: MOUNT_STATUS (..) => MOUNT_STATUS_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: DATA64 (..) => DATA64_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: HERELINK_TELEM (..) => HERELINK_TELEM_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: WIND (..) => WIND_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: MCU_STATUS (..) => MCU_STATUS_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: AOA_SSA (..) => AOA_SSA_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (..) => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: AIRSPEED_AUTOCAL (..) => AIRSPEED_AUTOCAL_DATA :: ID , Self :: FENCE_FETCH_POINT (..) => FENCE_FETCH_POINT_DATA :: ID , Self :: ESC_TELEMETRY_9_TO_12 (..) => ESC_TELEMETRY_9_TO_12_DATA :: ID , Self :: VISION_POSITION_DELTA (..) => VISION_POSITION_DELTA_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: HWSTATUS (..) => HWSTATUS_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: MOUNT_CONTROL (..) => MOUNT_CONTROL_DATA :: ID , Self :: AHRS3 (..) => AHRS3_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: ID , Self :: AHRS2 (..) => AHRS2_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: SENSOR_OFFSETS (..) => SENSOR_OFFSETS_DATA :: ID , Self :: AHRS (..) => AHRS_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: MAG_CAL_PROGRESS (..) => MAG_CAL_PROGRESS_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: EKF_STATUS_REPORT (..) => EKF_STATUS_REPORT_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: NAME => Ok (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID) , CAMERA_FEEDBACK_DATA :: NAME => Ok (CAMERA_FEEDBACK_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , FENCE_POINT_DATA :: NAME => Ok (FENCE_POINT_DATA :: ID) , ADAP_TUNING_DATA :: NAME => Ok (ADAP_TUNING_DATA :: ID) , OSD_PARAM_SHOW_CONFIG_DATA :: NAME => Ok (OSD_PARAM_SHOW_CONFIG_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , DATA32_DATA :: NAME => Ok (DATA32_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME => Ok (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , GOPRO_SET_REQUEST_DATA :: NAME => Ok (GOPRO_SET_REQUEST_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , ESC_TELEMETRY_1_TO_4_DATA :: NAME => Ok (ESC_TELEMETRY_1_TO_4_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , OSD_PARAM_CONFIG_DATA :: NAME => Ok (OSD_PARAM_CONFIG_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , DIGICAM_CONFIGURE_DATA :: NAME => Ok (DIGICAM_CONFIGURE_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , RALLY_FETCH_POINT_DATA :: NAME => Ok (RALLY_FETCH_POINT_DATA :: ID) , COMPASSMOT_STATUS_DATA :: NAME => Ok (COMPASSMOT_STATUS_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , AUTOPILOT_VERSION_REQUEST_DATA :: NAME => Ok (AUTOPILOT_VERSION_REQUEST_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , AP_ADC_DATA :: NAME => Ok (AP_ADC_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , GOPRO_HEARTBEAT_DATA :: NAME => Ok (GOPRO_HEARTBEAT_DATA :: ID) , DEVICE_OP_READ_DATA :: NAME => Ok (DEVICE_OP_READ_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , CUBEPILOT_RAW_RC_DATA :: NAME => Ok (CUBEPILOT_RAW_RC_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , SET_MAG_OFFSETS_DATA :: NAME => Ok (SET_MAG_OFFSETS_DATA :: ID) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID) , ESC_TELEMETRY_5_TO_8_DATA :: NAME => Ok (ESC_TELEMETRY_5_TO_8_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , DEVICE_OP_WRITE_DATA :: NAME => Ok (DEVICE_OP_WRITE_DATA :: ID) , CAMERA_STATUS_DATA :: NAME => Ok (CAMERA_STATUS_DATA :: ID) , DEVICE_OP_WRITE_REPLY_DATA :: NAME => Ok (DEVICE_OP_WRITE_REPLY_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , ICAROUS_HEARTBEAT_DATA :: NAME => Ok (ICAROUS_HEARTBEAT_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , GOPRO_SET_RESPONSE_DATA :: NAME => Ok (GOPRO_SET_RESPONSE_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , DEVICE_OP_READ_REPLY_DATA :: NAME => Ok (DEVICE_OP_READ_REPLY_DATA :: ID) , WATER_DEPTH_DATA :: NAME => Ok (WATER_DEPTH_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , ICAROUS_KINEMATIC_BANDS_DATA :: NAME => Ok (ICAROUS_KINEMATIC_BANDS_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , GIMBAL_TORQUE_CMD_REPORT_DATA :: NAME => Ok (GIMBAL_TORQUE_CMD_REPORT_DATA :: ID) , DATA16_DATA :: NAME => Ok (DATA16_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , LED_CONTROL_DATA :: NAME => Ok (LED_CONTROL_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , RADIO_DATA :: NAME => Ok (RADIO_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , OSD_PARAM_CONFIG_REPLY_DATA :: NAME => Ok (OSD_PARAM_CONFIG_REPLY_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , DEEPSTALL_DATA :: NAME => Ok (DEEPSTALL_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , BATTERY2_DATA :: NAME => Ok (BATTERY2_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , DATA96_DATA :: NAME => Ok (DATA96_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , LIMITS_STATUS_DATA :: NAME => Ok (LIMITS_STATUS_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , GOPRO_GET_RESPONSE_DATA :: NAME => Ok (GOPRO_GET_RESPONSE_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , RALLY_POINT_DATA :: NAME => Ok (RALLY_POINT_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , REMOTE_LOG_DATA_BLOCK_DATA :: NAME => Ok (REMOTE_LOG_DATA_BLOCK_DATA :: ID) , REMOTE_LOG_BLOCK_STATUS_DATA :: NAME => Ok (REMOTE_LOG_BLOCK_STATUS_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , GIMBAL_CONTROL_DATA :: NAME => Ok (GIMBAL_CONTROL_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , SIMSTATE_DATA :: NAME => Ok (SIMSTATE_DATA :: ID) , RANGEFINDER_DATA :: NAME => Ok (RANGEFINDER_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , MOUNT_CONFIGURE_DATA :: NAME => Ok (MOUNT_CONFIGURE_DATA :: ID) , RPM_DATA :: NAME => Ok (RPM_DATA :: ID) , GOPRO_GET_REQUEST_DATA :: NAME => Ok (GOPRO_GET_REQUEST_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , GIMBAL_REPORT_DATA :: NAME => Ok (GIMBAL_REPORT_DATA :: ID) , DIGICAM_CONTROL_DATA :: NAME => Ok (DIGICAM_CONTROL_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: NAME => Ok (OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , OBSTACLE_DISTANCE_3D_DATA :: NAME => Ok (OBSTACLE_DISTANCE_3D_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID) , PID_TUNING_DATA :: NAME => Ok (PID_TUNING_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , MEMINFO_DATA :: NAME => Ok (MEMINFO_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , MOUNT_STATUS_DATA :: NAME => Ok (MOUNT_STATUS_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , DATA64_DATA :: NAME => Ok (DATA64_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , HERELINK_TELEM_DATA :: NAME => Ok (HERELINK_TELEM_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , WIND_DATA :: NAME => Ok (WIND_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , MCU_STATUS_DATA :: NAME => Ok (MCU_STATUS_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , AOA_SSA_DATA :: NAME => Ok (AOA_SSA_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: NAME => Ok (CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , AIRSPEED_AUTOCAL_DATA :: NAME => Ok (AIRSPEED_AUTOCAL_DATA :: ID) , FENCE_FETCH_POINT_DATA :: NAME => Ok (FENCE_FETCH_POINT_DATA :: ID) , ESC_TELEMETRY_9_TO_12_DATA :: NAME => Ok (ESC_TELEMETRY_9_TO_12_DATA :: ID) , VISION_POSITION_DELTA_DATA :: NAME => Ok (VISION_POSITION_DELTA_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , HWSTATUS_DATA :: NAME => Ok (HWSTATUS_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , MOUNT_CONTROL_DATA :: NAME => Ok (MOUNT_CONTROL_DATA :: ID) , AHRS3_DATA :: NAME => Ok (AHRS3_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , UAVIONIX_ADSB_OUT_CFG_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_CFG_DATA :: ID) , AHRS2_DATA :: NAME => Ok (AHRS2_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , SENSOR_OFFSETS_DATA :: NAME => Ok (SENSOR_OFFSETS_DATA :: ID) , AHRS_DATA :: NAME => Ok (AHRS_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , MAG_CAL_PROGRESS_DATA :: NAME => Ok (MAG_CAL_PROGRESS_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , EKF_STATUS_REPORT_DATA :: NAME => Ok (EKF_STATUS_REPORT_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => Ok (Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: default ())) , CAMERA_FEEDBACK_DATA :: ID => Ok (Self :: CAMERA_FEEDBACK (CAMERA_FEEDBACK_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_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 ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , FENCE_POINT_DATA :: ID => Ok (Self :: FENCE_POINT (FENCE_POINT_DATA :: default ())) , ADAP_TUNING_DATA :: ID => Ok (Self :: ADAP_TUNING (ADAP_TUNING_DATA :: default ())) , OSD_PARAM_SHOW_CONFIG_DATA :: ID => Ok (Self :: OSD_PARAM_SHOW_CONFIG (OSD_PARAM_SHOW_CONFIG_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , DATA32_DATA :: ID => Ok (Self :: DATA32 (DATA32_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , GOPRO_SET_REQUEST_DATA :: ID => Ok (Self :: GOPRO_SET_REQUEST (GOPRO_SET_REQUEST_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , ESC_TELEMETRY_1_TO_4_DATA :: ID => Ok (Self :: ESC_TELEMETRY_1_TO_4 (ESC_TELEMETRY_1_TO_4_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , OSD_PARAM_CONFIG_DATA :: ID => Ok (Self :: OSD_PARAM_CONFIG (OSD_PARAM_CONFIG_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , DIGICAM_CONFIGURE_DATA :: ID => Ok (Self :: DIGICAM_CONFIGURE (DIGICAM_CONFIGURE_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , RALLY_FETCH_POINT_DATA :: ID => Ok (Self :: RALLY_FETCH_POINT (RALLY_FETCH_POINT_DATA :: default ())) , COMPASSMOT_STATUS_DATA :: ID => Ok (Self :: COMPASSMOT_STATUS (COMPASSMOT_STATUS_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , AUTOPILOT_VERSION_REQUEST_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION_REQUEST (AUTOPILOT_VERSION_REQUEST_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , AP_ADC_DATA :: ID => Ok (Self :: AP_ADC (AP_ADC_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , GOPRO_HEARTBEAT_DATA :: ID => Ok (Self :: GOPRO_HEARTBEAT (GOPRO_HEARTBEAT_DATA :: default ())) , DEVICE_OP_READ_DATA :: ID => Ok (Self :: DEVICE_OP_READ (DEVICE_OP_READ_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , CUBEPILOT_RAW_RC_DATA :: ID => Ok (Self :: CUBEPILOT_RAW_RC (CUBEPILOT_RAW_RC_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , SET_MAG_OFFSETS_DATA :: ID => Ok (Self :: SET_MAG_OFFSETS (SET_MAG_OFFSETS_DATA :: default ())) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: default ())) , ESC_TELEMETRY_5_TO_8_DATA :: ID => Ok (Self :: ESC_TELEMETRY_5_TO_8 (ESC_TELEMETRY_5_TO_8_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , DEVICE_OP_WRITE_DATA :: ID => Ok (Self :: DEVICE_OP_WRITE (DEVICE_OP_WRITE_DATA :: default ())) , CAMERA_STATUS_DATA :: ID => Ok (Self :: CAMERA_STATUS (CAMERA_STATUS_DATA :: default ())) , DEVICE_OP_WRITE_REPLY_DATA :: ID => Ok (Self :: DEVICE_OP_WRITE_REPLY (DEVICE_OP_WRITE_REPLY_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , ICAROUS_HEARTBEAT_DATA :: ID => Ok (Self :: ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA :: default ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , GOPRO_SET_RESPONSE_DATA :: ID => Ok (Self :: GOPRO_SET_RESPONSE (GOPRO_SET_RESPONSE_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , DEVICE_OP_READ_REPLY_DATA :: ID => Ok (Self :: DEVICE_OP_READ_REPLY (DEVICE_OP_READ_REPLY_DATA :: default ())) , WATER_DEPTH_DATA :: ID => Ok (Self :: WATER_DEPTH (WATER_DEPTH_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , ICAROUS_KINEMATIC_BANDS_DATA :: ID => Ok (Self :: ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_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 ())) , DATA16_DATA :: ID => Ok (Self :: DATA16 (DATA16_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , LED_CONTROL_DATA :: ID => Ok (Self :: LED_CONTROL (LED_CONTROL_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , RADIO_DATA :: ID => Ok (Self :: RADIO (RADIO_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , OSD_PARAM_CONFIG_REPLY_DATA :: ID => Ok (Self :: OSD_PARAM_CONFIG_REPLY (OSD_PARAM_CONFIG_REPLY_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , DEEPSTALL_DATA :: ID => Ok (Self :: DEEPSTALL (DEEPSTALL_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , BATTERY2_DATA :: ID => Ok (Self :: BATTERY2 (BATTERY2_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , DATA96_DATA :: ID => Ok (Self :: DATA96 (DATA96_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , LIMITS_STATUS_DATA :: ID => Ok (Self :: LIMITS_STATUS (LIMITS_STATUS_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , GOPRO_GET_RESPONSE_DATA :: ID => Ok (Self :: GOPRO_GET_RESPONSE (GOPRO_GET_RESPONSE_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , RALLY_POINT_DATA :: ID => Ok (Self :: RALLY_POINT (RALLY_POINT_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , REMOTE_LOG_DATA_BLOCK_DATA :: ID => Ok (Self :: REMOTE_LOG_DATA_BLOCK (REMOTE_LOG_DATA_BLOCK_DATA :: default ())) , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => Ok (Self :: REMOTE_LOG_BLOCK_STATUS (REMOTE_LOG_BLOCK_STATUS_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , GIMBAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_CONTROL (GIMBAL_CONTROL_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , SIMSTATE_DATA :: ID => Ok (Self :: SIMSTATE (SIMSTATE_DATA :: default ())) , RANGEFINDER_DATA :: ID => Ok (Self :: RANGEFINDER (RANGEFINDER_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , MOUNT_CONFIGURE_DATA :: ID => Ok (Self :: MOUNT_CONFIGURE (MOUNT_CONFIGURE_DATA :: default ())) , RPM_DATA :: ID => Ok (Self :: RPM (RPM_DATA :: default ())) , GOPRO_GET_REQUEST_DATA :: ID => Ok (Self :: GOPRO_GET_REQUEST (GOPRO_GET_REQUEST_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , GIMBAL_REPORT_DATA :: ID => Ok (Self :: GIMBAL_REPORT (GIMBAL_REPORT_DATA :: default ())) , DIGICAM_CONTROL_DATA :: ID => Ok (Self :: DIGICAM_CONTROL (DIGICAM_CONTROL_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_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 ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => Ok (Self :: OSD_PARAM_SHOW_CONFIG_REPLY (OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , OBSTACLE_DISTANCE_3D_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE_3D (OBSTACLE_DISTANCE_3D_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: HERELINK_VIDEO_STREAM_INFORMATION (HERELINK_VIDEO_STREAM_INFORMATION_DATA :: default ())) , PID_TUNING_DATA :: ID => Ok (Self :: PID_TUNING (PID_TUNING_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 ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , MEMINFO_DATA :: ID => Ok (Self :: MEMINFO (MEMINFO_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , MOUNT_STATUS_DATA :: ID => Ok (Self :: MOUNT_STATUS (MOUNT_STATUS_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , DATA64_DATA :: ID => Ok (Self :: DATA64 (DATA64_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , HERELINK_TELEM_DATA :: ID => Ok (Self :: HERELINK_TELEM (HERELINK_TELEM_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_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 ())) , WIND_DATA :: ID => Ok (Self :: WIND (WIND_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , MCU_STATUS_DATA :: ID => Ok (Self :: MCU_STATUS (MCU_STATUS_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , AOA_SSA_DATA :: ID => Ok (Self :: AOA_SSA (AOA_SSA_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => Ok (Self :: CUBEPILOT_FIRMWARE_UPDATE_START (CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , AIRSPEED_AUTOCAL_DATA :: ID => Ok (Self :: AIRSPEED_AUTOCAL (AIRSPEED_AUTOCAL_DATA :: default ())) , FENCE_FETCH_POINT_DATA :: ID => Ok (Self :: FENCE_FETCH_POINT (FENCE_FETCH_POINT_DATA :: default ())) , ESC_TELEMETRY_9_TO_12_DATA :: ID => Ok (Self :: ESC_TELEMETRY_9_TO_12 (ESC_TELEMETRY_9_TO_12_DATA :: default ())) , VISION_POSITION_DELTA_DATA :: ID => Ok (Self :: VISION_POSITION_DELTA (VISION_POSITION_DELTA_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , HWSTATUS_DATA :: ID => Ok (Self :: HWSTATUS (HWSTATUS_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , MOUNT_CONTROL_DATA :: ID => Ok (Self :: MOUNT_CONTROL (MOUNT_CONTROL_DATA :: default ())) , AHRS3_DATA :: ID => Ok (Self :: AHRS3 (AHRS3_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA :: default ())) , AHRS2_DATA :: ID => Ok (Self :: AHRS2 (AHRS2_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , SENSOR_OFFSETS_DATA :: ID => Ok (Self :: SENSOR_OFFSETS (SENSOR_OFFSETS_DATA :: default ())) , AHRS_DATA :: ID => Ok (Self :: AHRS (AHRS_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , MAG_CAL_PROGRESS_DATA :: ID => Ok (Self :: MAG_CAL_PROGRESS (MAG_CAL_PROGRESS_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , EKF_STATUS_REPORT_DATA :: ID => Ok (Self :: EKF_STATUS_REPORT (EKF_STATUS_REPORT_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (body) => body . ser (version , bytes) , Self :: CAMERA_FEEDBACK (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: FENCE_POINT (body) => body . ser (version , bytes) , Self :: ADAP_TUNING (body) => body . ser (version , bytes) , Self :: OSD_PARAM_SHOW_CONFIG (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: DATA32 (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: GOPRO_SET_REQUEST (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_1_TO_4 (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: OSD_PARAM_CONFIG (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: DIGICAM_CONFIGURE (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: RALLY_FETCH_POINT (body) => body . ser (version , bytes) , Self :: COMPASSMOT_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION_REQUEST (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: AP_ADC (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: GOPRO_HEARTBEAT (body) => body . ser (version , bytes) , Self :: DEVICE_OP_READ (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: CUBEPILOT_RAW_RC (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: SET_MAG_OFFSETS (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_5_TO_8 (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: DEVICE_OP_WRITE (body) => body . ser (version , bytes) , Self :: CAMERA_STATUS (body) => body . ser (version , bytes) , Self :: DEVICE_OP_WRITE_REPLY (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: ICAROUS_HEARTBEAT (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: GOPRO_SET_RESPONSE (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: DEVICE_OP_READ_REPLY (body) => body . ser (version , bytes) , Self :: WATER_DEPTH (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: ICAROUS_KINEMATIC_BANDS (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: GIMBAL_TORQUE_CMD_REPORT (body) => body . ser (version , bytes) , Self :: DATA16 (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: LED_CONTROL (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: RADIO (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: OSD_PARAM_CONFIG_REPLY (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: DEEPSTALL (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: BATTERY2 (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: DATA96 (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: LIMITS_STATUS (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: GOPRO_GET_RESPONSE (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: RALLY_POINT (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: REMOTE_LOG_DATA_BLOCK (body) => body . ser (version , bytes) , Self :: REMOTE_LOG_BLOCK_STATUS (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: GIMBAL_CONTROL (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: SIMSTATE (body) => body . ser (version , bytes) , Self :: RANGEFINDER (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: MOUNT_CONFIGURE (body) => body . ser (version , bytes) , Self :: RPM (body) => body . ser (version , bytes) , Self :: GOPRO_GET_REQUEST (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: GIMBAL_REPORT (body) => body . ser (version , bytes) , Self :: DIGICAM_CONTROL (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE_3D (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: HERELINK_VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: PID_TUNING (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: MEMINFO (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: MOUNT_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: DATA64 (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: HERELINK_TELEM (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: WIND (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: MCU_STATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: AOA_SSA (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: AIRSPEED_AUTOCAL (body) => body . ser (version , bytes) , Self :: FENCE_FETCH_POINT (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_9_TO_12 (body) => body . ser (version , bytes) , Self :: VISION_POSITION_DELTA (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: HWSTATUS (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: MOUNT_CONTROL (body) => body . ser (version , bytes) , Self :: AHRS3 (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_CFG (body) => body . ser (version , bytes) , Self :: AHRS2 (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: SENSOR_OFFSETS (body) => body . ser (version , bytes) , Self :: AHRS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: MAG_CAL_PROGRESS (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: EKF_STATUS_REPORT (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: EXTRA_CRC , CAMERA_FEEDBACK_DATA :: ID => CAMERA_FEEDBACK_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , FENCE_POINT_DATA :: ID => FENCE_POINT_DATA :: EXTRA_CRC , ADAP_TUNING_DATA :: ID => ADAP_TUNING_DATA :: EXTRA_CRC , OSD_PARAM_SHOW_CONFIG_DATA :: ID => OSD_PARAM_SHOW_CONFIG_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , DATA32_DATA :: ID => DATA32_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , GOPRO_SET_REQUEST_DATA :: ID => GOPRO_SET_REQUEST_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , ESC_TELEMETRY_1_TO_4_DATA :: ID => ESC_TELEMETRY_1_TO_4_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , OSD_PARAM_CONFIG_DATA :: ID => OSD_PARAM_CONFIG_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , DIGICAM_CONFIGURE_DATA :: ID => DIGICAM_CONFIGURE_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , RALLY_FETCH_POINT_DATA :: ID => RALLY_FETCH_POINT_DATA :: EXTRA_CRC , COMPASSMOT_STATUS_DATA :: ID => COMPASSMOT_STATUS_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_REQUEST_DATA :: ID => AUTOPILOT_VERSION_REQUEST_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , AP_ADC_DATA :: ID => AP_ADC_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , GOPRO_HEARTBEAT_DATA :: ID => GOPRO_HEARTBEAT_DATA :: EXTRA_CRC , DEVICE_OP_READ_DATA :: ID => DEVICE_OP_READ_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , CUBEPILOT_RAW_RC_DATA :: ID => CUBEPILOT_RAW_RC_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , SET_MAG_OFFSETS_DATA :: ID => SET_MAG_OFFSETS_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: EXTRA_CRC , ESC_TELEMETRY_5_TO_8_DATA :: ID => ESC_TELEMETRY_5_TO_8_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , DEVICE_OP_WRITE_DATA :: ID => DEVICE_OP_WRITE_DATA :: EXTRA_CRC , CAMERA_STATUS_DATA :: ID => CAMERA_STATUS_DATA :: EXTRA_CRC , DEVICE_OP_WRITE_REPLY_DATA :: ID => DEVICE_OP_WRITE_REPLY_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , GOPRO_SET_RESPONSE_DATA :: ID => GOPRO_SET_RESPONSE_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , DEVICE_OP_READ_REPLY_DATA :: ID => DEVICE_OP_READ_REPLY_DATA :: EXTRA_CRC , WATER_DEPTH_DATA :: ID => WATER_DEPTH_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_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 , DATA16_DATA :: ID => DATA16_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , LED_CONTROL_DATA :: ID => LED_CONTROL_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , RADIO_DATA :: ID => RADIO_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , OSD_PARAM_CONFIG_REPLY_DATA :: ID => OSD_PARAM_CONFIG_REPLY_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , DEEPSTALL_DATA :: ID => DEEPSTALL_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , BATTERY2_DATA :: ID => BATTERY2_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , DATA96_DATA :: ID => DATA96_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , LIMITS_STATUS_DATA :: ID => LIMITS_STATUS_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , GOPRO_GET_RESPONSE_DATA :: ID => GOPRO_GET_RESPONSE_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , RALLY_POINT_DATA :: ID => RALLY_POINT_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , REMOTE_LOG_DATA_BLOCK_DATA :: ID => REMOTE_LOG_DATA_BLOCK_DATA :: EXTRA_CRC , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => REMOTE_LOG_BLOCK_STATUS_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , GIMBAL_CONTROL_DATA :: ID => GIMBAL_CONTROL_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , SIMSTATE_DATA :: ID => SIMSTATE_DATA :: EXTRA_CRC , RANGEFINDER_DATA :: ID => RANGEFINDER_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , MOUNT_CONFIGURE_DATA :: ID => MOUNT_CONFIGURE_DATA :: EXTRA_CRC , RPM_DATA :: ID => RPM_DATA :: EXTRA_CRC , GOPRO_GET_REQUEST_DATA :: ID => GOPRO_GET_REQUEST_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , GIMBAL_REPORT_DATA :: ID => GIMBAL_REPORT_DATA :: EXTRA_CRC , DIGICAM_CONTROL_DATA :: ID => DIGICAM_CONTROL_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_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 , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_3D_DATA :: ID => OBSTACLE_DISTANCE_3D_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , PID_TUNING_DATA :: ID => PID_TUNING_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , MEMINFO_DATA :: ID => MEMINFO_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , MOUNT_STATUS_DATA :: ID => MOUNT_STATUS_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , DATA64_DATA :: ID => DATA64_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , HERELINK_TELEM_DATA :: ID => HERELINK_TELEM_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , WIND_DATA :: ID => WIND_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , MCU_STATUS_DATA :: ID => MCU_STATUS_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , AOA_SSA_DATA :: ID => AOA_SSA_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , AIRSPEED_AUTOCAL_DATA :: ID => AIRSPEED_AUTOCAL_DATA :: EXTRA_CRC , FENCE_FETCH_POINT_DATA :: ID => FENCE_FETCH_POINT_DATA :: EXTRA_CRC , ESC_TELEMETRY_9_TO_12_DATA :: ID => ESC_TELEMETRY_9_TO_12_DATA :: EXTRA_CRC , VISION_POSITION_DELTA_DATA :: ID => VISION_POSITION_DELTA_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , HWSTATUS_DATA :: ID => HWSTATUS_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , MOUNT_CONTROL_DATA :: ID => MOUNT_CONTROL_DATA :: EXTRA_CRC , AHRS3_DATA :: ID => AHRS3_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: EXTRA_CRC , AHRS2_DATA :: ID => AHRS2_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , SENSOR_OFFSETS_DATA :: ID => SENSOR_OFFSETS_DATA :: EXTRA_CRC , AHRS_DATA :: ID => AHRS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , MAG_CAL_PROGRESS_DATA :: ID => MAG_CAL_PROGRESS_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , EKF_STATUS_REPORT_DATA :: ID => EKF_STATUS_REPORT_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_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-44988716d84216e2/out/common.rs.html b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-44988716d84216e2/out/common.rs.html index 27ca98c3c2..d602e8c93d 100644 --- a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-44988716d84216e2/out/common.rs.html +++ b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-44988716d84216e2/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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 ParamAck { PARAM_ACK_ACCEPTED = 0 , PARAM_ACK_VALUE_UNSUPPORTED = 1 , PARAM_ACK_FAILED = 2 , PARAM_ACK_IN_PROGRESS = 3 , } impl ParamAck { pub const DEFAULT : Self = Self :: PARAM_ACK_ACCEPTED ; } impl Default for ParamAck { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 MavOdidTimeAcc { MAV_ODID_TIME_ACC_UNKNOWN = 0 , MAV_ODID_TIME_ACC_0_1_SECOND = 1 , MAV_ODID_TIME_ACC_0_2_SECOND = 2 , MAV_ODID_TIME_ACC_0_3_SECOND = 3 , MAV_ODID_TIME_ACC_0_4_SECOND = 4 , MAV_ODID_TIME_ACC_0_5_SECOND = 5 , MAV_ODID_TIME_ACC_0_6_SECOND = 6 , MAV_ODID_TIME_ACC_0_7_SECOND = 7 , MAV_ODID_TIME_ACC_0_8_SECOND = 8 , MAV_ODID_TIME_ACC_0_9_SECOND = 9 , MAV_ODID_TIME_ACC_1_0_SECOND = 10 , MAV_ODID_TIME_ACC_1_1_SECOND = 11 , MAV_ODID_TIME_ACC_1_2_SECOND = 12 , MAV_ODID_TIME_ACC_1_3_SECOND = 13 , MAV_ODID_TIME_ACC_1_4_SECOND = 14 , MAV_ODID_TIME_ACC_1_5_SECOND = 15 , } impl MavOdidTimeAcc { pub const DEFAULT : Self = Self :: MAV_ODID_TIME_ACC_UNKNOWN ; } impl Default for MavOdidTimeAcc { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 WifiConfigApMode { WIFI_CONFIG_AP_MODE_UNDEFINED = 0 , WIFI_CONFIG_AP_MODE_AP = 1 , WIFI_CONFIG_AP_MODE_STATION = 2 , WIFI_CONFIG_AP_MODE_DISABLED = 3 , } impl WifiConfigApMode { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_MODE_UNDEFINED ; } impl Default for WifiConfigApMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 FirmwareVersionType { FIRMWARE_VERSION_TYPE_DEV = 0 , FIRMWARE_VERSION_TYPE_ALPHA = 64 , FIRMWARE_VERSION_TYPE_BETA = 128 , FIRMWARE_VERSION_TYPE_RC = 192 , FIRMWARE_VERSION_TYPE_OFFICIAL = 255 , } impl FirmwareVersionType { pub const DEFAULT : Self = Self :: FIRMWARE_VERSION_TYPE_DEV ; } impl Default for FirmwareVersionType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 } } 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 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 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 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 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 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 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 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 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 } } # [derive (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 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 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 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 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 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 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 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 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 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 CellularNetworkFailedReason { CELLULAR_NETWORK_FAILED_REASON_NONE = 0 , CELLULAR_NETWORK_FAILED_REASON_UNKNOWN = 1 , CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING = 2 , CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR = 3 , } impl CellularNetworkFailedReason { pub const DEFAULT : Self = Self :: CELLULAR_NETWORK_FAILED_REASON_NONE ; } impl Default for CellularNetworkFailedReason { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 MavMissionResult { MAV_MISSION_ACCEPTED = 0 , MAV_MISSION_ERROR = 1 , MAV_MISSION_UNSUPPORTED_FRAME = 2 , MAV_MISSION_UNSUPPORTED = 3 , MAV_MISSION_NO_SPACE = 4 , MAV_MISSION_INVALID = 5 , MAV_MISSION_INVALID_PARAM1 = 6 , MAV_MISSION_INVALID_PARAM2 = 7 , MAV_MISSION_INVALID_PARAM3 = 8 , MAV_MISSION_INVALID_PARAM4 = 9 , MAV_MISSION_INVALID_PARAM5_X = 10 , MAV_MISSION_INVALID_PARAM6_Y = 11 , MAV_MISSION_INVALID_PARAM7 = 12 , MAV_MISSION_INVALID_SEQUENCE = 13 , MAV_MISSION_DENIED = 14 , MAV_MISSION_OPERATION_CANCELLED = 15 , } impl MavMissionResult { pub const DEFAULT : Self = Self :: MAV_MISSION_ACCEPTED ; } impl Default for MavMissionResult { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PositionTargetTypemask : u16 { const POSITION_TARGET_TYPEMASK_X_IGNORE = 1 ; const POSITION_TARGET_TYPEMASK_Y_IGNORE = 2 ; const POSITION_TARGET_TYPEMASK_Z_IGNORE = 4 ; const POSITION_TARGET_TYPEMASK_VX_IGNORE = 8 ; const POSITION_TARGET_TYPEMASK_VY_IGNORE = 16 ; const POSITION_TARGET_TYPEMASK_VZ_IGNORE = 32 ; const POSITION_TARGET_TYPEMASK_AX_IGNORE = 64 ; const POSITION_TARGET_TYPEMASK_AY_IGNORE = 128 ; const POSITION_TARGET_TYPEMASK_AZ_IGNORE = 256 ; const POSITION_TARGET_TYPEMASK_FORCE_SET = 512 ; const POSITION_TARGET_TYPEMASK_YAW_IGNORE = 1024 ; const POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE = 2048 ; } } impl PositionTargetTypemask { pub const DEFAULT : Self = Self :: POSITION_TARGET_TYPEMASK_X_IGNORE ; } impl Default for PositionTargetTypemask { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 MavMissionType { MAV_MISSION_TYPE_MISSION = 0 , MAV_MISSION_TYPE_FENCE = 1 , MAV_MISSION_TYPE_RALLY = 2 , MAV_MISSION_TYPE_ALL = 255 , } impl MavMissionType { pub const DEFAULT : Self = Self :: MAV_MISSION_TYPE_MISSION ; } impl Default for MavMissionType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 MavArmAuthDeniedReason { MAV_ARM_AUTH_DENIED_REASON_GENERIC = 0 , MAV_ARM_AUTH_DENIED_REASON_NONE = 1 , MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT = 2 , MAV_ARM_AUTH_DENIED_REASON_TIMEOUT = 3 , MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE = 4 , MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER = 5 , } impl MavArmAuthDeniedReason { pub const DEFAULT : Self = Self :: MAV_ARM_AUTH_DENIED_REASON_GENERIC ; } impl Default for MavArmAuthDeniedReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GimbalManagerFlags { GIMBAL_MANAGER_FLAGS_RETRACT = 1 , GIMBAL_MANAGER_FLAGS_NEUTRAL = 2 , GIMBAL_MANAGER_FLAGS_ROLL_LOCK = 4 , GIMBAL_MANAGER_FLAGS_PITCH_LOCK = 8 , GIMBAL_MANAGER_FLAGS_YAW_LOCK = 16 , GIMBAL_MANAGER_FLAGS_YAW_IN_VEHICLE_FRAME = 32 , GIMBAL_MANAGER_FLAGS_YAW_IN_EARTH_FRAME = 64 , GIMBAL_MANAGER_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME = 128 , GIMBAL_MANAGER_FLAGS_RC_EXCLUSIVE = 256 , GIMBAL_MANAGER_FLAGS_RC_MIXED = 512 , } impl GimbalManagerFlags { pub const DEFAULT : Self = Self :: GIMBAL_MANAGER_FLAGS_RETRACT ; } impl Default for GimbalManagerFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 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 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 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 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 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 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 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 OrbitYawBehaviour { ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER = 0 , ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING = 1 , ORBIT_YAW_BEHAVIOUR_UNCONTROLLED = 2 , ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE = 3 , ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED = 4 , } impl OrbitYawBehaviour { pub const DEFAULT : Self = Self :: ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER ; } impl Default for OrbitYawBehaviour { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 VideoStreamStatusFlags { VIDEO_STREAM_STATUS_FLAGS_RUNNING = 1 , VIDEO_STREAM_STATUS_FLAGS_THERMAL = 2 , } impl VideoStreamStatusFlags { pub const DEFAULT : Self = Self :: VIDEO_STREAM_STATUS_FLAGS_RUNNING ; } impl Default for VideoStreamStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . single_message_size) ; __tmp . put_u8 (self . msg_pack_size) ; for val in & self . messages { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . timestamp) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_u16_le (self . custom_mode) ; __tmp . put_i16_le (self . altitude) ; __tmp . put_i16_le (self . target_altitude) ; __tmp . put_u16_le (self . target_distance) ; __tmp . put_u16_le (self . wp_num) ; __tmp . put_u16_le (self . failure_flags . bits ()) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . autopilot as u8) ; __tmp . put_u8 (self . heading) ; __tmp . put_u8 (self . target_heading) ; __tmp . put_u8 (self . throttle) ; __tmp . put_u8 (self . airspeed) ; __tmp . put_u8 (self . airspeed_sp) ; __tmp . put_u8 (self . groundspeed) ; __tmp . put_u8 (self . windspeed) ; __tmp . put_u8 (self . wind_heading) ; __tmp . put_u8 (self . eph) ; __tmp . put_u8 (self . epv) ; __tmp . put_i8 (self . temperature_air) ; __tmp . put_i8 (self . climb_rate) ; __tmp . put_i8 (self . battery) ; __tmp . put_i8 (self . custom0) ; __tmp . put_i8 (self . custom1) ; __tmp . put_i8 (self . custom2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_VECT_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl DEBUG_VECT_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , name : [0_u8 ; 10usize] , } ; } impl Default for DEBUG_VECT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_VECT_DATA { type Message = MavMessage ; const ID : u32 = 250u32 ; const NAME : & 'static str = "DEBUG_VECT" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u16_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_last_baseline_ms) ; __tmp . put_u32_le (self . tow) ; __tmp . put_i32_le (self . baseline_a_mm) ; __tmp . put_i32_le (self . baseline_b_mm) ; __tmp . put_i32_le (self . baseline_c_mm) ; __tmp . put_u32_le (self . accuracy) ; __tmp . put_i32_le (self . iar_num_hypotheses) ; __tmp . put_u16_le (self . wn) ; __tmp . put_u8 (self . rtk_receiver_id) ; __tmp . put_u8 (self . rtk_health) ; __tmp . put_u8 (self . rtk_rate) ; __tmp . put_u8 (self . nsats) ; __tmp . put_u8 (self . baseline_coords_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EFI_STATUS_DATA { pub ecu_index : f32 , pub rpm : f32 , pub fuel_consumed : f32 , pub fuel_flow : f32 , pub engine_load : f32 , pub throttle_position : f32 , pub spark_dwell_time : f32 , pub barometric_pressure : f32 , pub intake_manifold_pressure : f32 , pub intake_manifold_temperature : f32 , pub cylinder_head_temperature : f32 , pub ignition_timing : f32 , pub injection_time : f32 , pub exhaust_gas_temperature : f32 , pub throttle_out : f32 , pub pt_compensation : f32 , pub health : u8 , } impl EFI_STATUS_DATA { pub const ENCODED_LEN : usize = 65usize ; pub const DEFAULT : Self = Self { ecu_index : 0.0_f32 , rpm : 0.0_f32 , fuel_consumed : 0.0_f32 , fuel_flow : 0.0_f32 , engine_load : 0.0_f32 , throttle_position : 0.0_f32 , spark_dwell_time : 0.0_f32 , barometric_pressure : 0.0_f32 , intake_manifold_pressure : 0.0_f32 , intake_manifold_temperature : 0.0_f32 , cylinder_head_temperature : 0.0_f32 , ignition_timing : 0.0_f32 , injection_time : 0.0_f32 , exhaust_gas_temperature : 0.0_f32 , throttle_out : 0.0_f32 , pt_compensation : 0.0_f32 , health : 0_u8 , } ; } impl Default for EFI_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EFI_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 225u32 ; const NAME : & 'static str = "EFI_STATUS" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 65usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ecu_index = buf . get_f32_le () ; __struct . rpm = buf . get_f32_le () ; __struct . fuel_consumed = buf . get_f32_le () ; __struct . fuel_flow = buf . get_f32_le () ; __struct . engine_load = buf . get_f32_le () ; __struct . throttle_position = buf . get_f32_le () ; __struct . spark_dwell_time = buf . get_f32_le () ; __struct . barometric_pressure = buf . get_f32_le () ; __struct . intake_manifold_pressure = buf . get_f32_le () ; __struct . intake_manifold_temperature = buf . get_f32_le () ; __struct . cylinder_head_temperature = buf . get_f32_le () ; __struct . ignition_timing = buf . get_f32_le () ; __struct . injection_time = buf . get_f32_le () ; __struct . exhaust_gas_temperature = buf . get_f32_le () ; __struct . throttle_out = buf . get_f32_le () ; __struct . pt_compensation = buf . get_f32_le () ; __struct . health = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . vibration_x) ; __tmp . put_f32_le (self . vibration_y) ; __tmp . put_f32_le (self . vibration_z) ; __tmp . put_u32_le (self . clipping_0) ; __tmp . put_u32_le (self . clipping_1) ; __tmp . put_u32_le (self . clipping_2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u16_le (self . message_rate) ; __tmp . put_u8 (self . stream_id) ; __tmp . put_u8 (self . on_off) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SERVO_OUTPUT_RAW_DATA { pub time_usec : u32 , pub servo1_raw : u16 , pub servo2_raw : u16 , pub servo3_raw : u16 , pub servo4_raw : u16 , pub servo5_raw : u16 , pub servo6_raw : u16 , pub servo7_raw : u16 , pub servo8_raw : u16 , pub port : u8 , } impl SERVO_OUTPUT_RAW_DATA { pub const ENCODED_LEN : usize = 21usize ; pub const DEFAULT : Self = Self { time_usec : 0_u32 , servo1_raw : 0_u16 , servo2_raw : 0_u16 , servo3_raw : 0_u16 , servo4_raw : 0_u16 , servo5_raw : 0_u16 , servo6_raw : 0_u16 , servo7_raw : 0_u16 , servo8_raw : 0_u16 , port : 0_u8 , } ; } impl Default for SERVO_OUTPUT_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SERVO_OUTPUT_RAW_DATA { type Message = MavMessage ; const ID : u32 = 36u32 ; const NAME : & 'static str = "SERVO_OUTPUT_RAW" ; const EXTRA_CRC : u8 = 222u8 ; const ENCODED_LEN : usize = 21usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u32_le () ; __struct . servo1_raw = buf . get_u16_le () ; __struct . servo2_raw = buf . get_u16_le () ; __struct . servo3_raw = buf . get_u16_le () ; __struct . servo4_raw = buf . get_u16_le () ; __struct . servo5_raw = buf . get_u16_le () ; __struct . servo6_raw = buf . get_u16_le () ; __struct . servo7_raw = buf . get_u16_le () ; __struct . servo8_raw = buf . get_u16_le () ; __struct . port = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . operator_id_type as u8) ; for val in & self . operator_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u32_le (self . dgps_age) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type as u8) ; __tmp . put_u8 (self . satellites_visible) ; __tmp . put_u8 (self . dgps_numch) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . custom_mode) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . base_mode as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_u8 (self . gimbal_device_id) ; __tmp . put_u8 (self . primary_control_sysid) ; __tmp . put_u8 (self . primary_control_compid) ; __tmp . put_u8 (self . secondary_control_sysid) ; __tmp . put_u8 (self . secondary_control_compid) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . nav_roll) ; __tmp . put_f32_le (self . nav_pitch) ; __tmp . put_f32_le (self . alt_error) ; __tmp . put_f32_le (self . aspd_error) ; __tmp . put_f32_le (self . xtrack_error) ; __tmp . put_i16_le (self . nav_bearing) ; __tmp . put_i16_le (self . target_bearing) ; __tmp . put_u16_le (self . wp_dist) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_AUTHENTICATION_DATA { pub timestamp : u32 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub authentication_type : MavOdidAuthType , pub data_page : u8 , pub last_page_index : u8 , pub length : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub authentication_data : [u8 ; 23] , } impl OPEN_DRONE_ID_AUTHENTICATION_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { timestamp : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , authentication_type : MavOdidAuthType :: DEFAULT , data_page : 0_u8 , last_page_index : 0_u8 , length : 0_u8 , authentication_data : [0_u8 ; 23usize] , } ; } impl Default for OPEN_DRONE_ID_AUTHENTICATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_AUTHENTICATION_DATA { type Message = MavMessage ; const ID : u32 = 12902u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_AUTHENTICATION" ; const EXTRA_CRC : u8 = 140u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . authentication_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidAuthType" , value : tmp as u32 }) ? ; __struct . data_page = buf . get_u8 () ; __struct . last_page_index = buf . get_u8 () ; __struct . length = buf . get_u8 () ; for v in & mut __struct . authentication_data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u8 (self . port) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . total_capacity) ; __tmp . put_f32_le (self . used_capacity) ; __tmp . put_f32_le (self . available_capacity) ; __tmp . put_f32_le (self . read_speed) ; __tmp . put_f32_le (self . write_speed) ; __tmp . put_u8 (self . storage_id) ; __tmp . put_u8 (self . storage_count) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SAFETY_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GENERATOR_STATUS_DATA { pub status : MavGeneratorStatusFlag , pub battery_current : f32 , pub load_current : f32 , pub power_generated : f32 , pub bus_voltage : f32 , pub bat_current_setpoint : f32 , pub runtime : u32 , pub time_until_maintenance : i32 , pub generator_speed : u16 , pub rectifier_temperature : i16 , pub generator_temperature : i16 , } impl GENERATOR_STATUS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { status : MavGeneratorStatusFlag :: DEFAULT , battery_current : 0.0_f32 , load_current : 0.0_f32 , power_generated : 0.0_f32 , bus_voltage : 0.0_f32 , bat_current_setpoint : 0.0_f32 , runtime : 0_u32 , time_until_maintenance : 0_i32 , generator_speed : 0_u16 , rectifier_temperature : 0_i16 , generator_temperature : 0_i16 , } ; } impl Default for GENERATOR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GENERATOR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 373u32 ; const NAME : & 'static str = "GENERATOR_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u64_le () ; __struct . status = MavGeneratorStatusFlag :: from_bits (tmp & MavGeneratorStatusFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavGeneratorStatusFlag" , value : tmp as u32 }) ? ; __struct . battery_current = buf . get_f32_le () ; __struct . load_current = buf . get_f32_le () ; __struct . power_generated = buf . get_f32_le () ; __struct . bus_voltage = buf . get_f32_le () ; __struct . bat_current_setpoint = buf . get_f32_le () ; __struct . runtime = buf . get_u32_le () ; __struct . time_until_maintenance = buf . get_i32_le () ; __struct . generator_speed = buf . get_u16_le () ; __struct . rectifier_temperature = buf . get_i16_le () ; __struct . generator_temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . ax) ; __tmp . put_f32_le (self . ay) ; __tmp . put_f32_le (self . az) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . estimator_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_ENTRY_DATA { pub time_utc : u32 , pub size : u32 , pub id : u16 , pub num_logs : u16 , pub last_log_num : u16 , } impl LOG_ENTRY_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_utc : 0_u32 , size : 0_u32 , id : 0_u16 , num_logs : 0_u16 , last_log_num : 0_u16 , } ; } impl Default for LOG_ENTRY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_ENTRY_DATA { type Message = MavMessage ; const ID : u32 = 118u32 ; const NAME : & 'static str = "LOG_ENTRY" ; const EXTRA_CRC : u8 = 56u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_utc = buf . get_u32_le () ; __struct . size = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . num_logs = buf . get_u16_le () ; __struct . last_log_num = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , PARAM_SET (PARAM_SET_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , SCALED_IMU (SCALED_IMU_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , PING (PING_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , ESC_INFO (ESC_INFO_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , GPS_STATUS (GPS_STATUS_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , GPS_RTK (GPS_RTK_DATA) , EFI_STATUS (EFI_STATUS_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , RAW_IMU (RAW_IMU_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , SYS_STATUS (SYS_STATUS_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , VIBRATION (VIBRATION_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , DATA_STREAM (DATA_STREAM_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , LOG_ERASE (LOG_ERASE_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , POWER_STATUS (POWER_STATUS_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , HIL_STATE (HIL_STATE_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , GPS_INPUT (GPS_INPUT_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , TIMESYNC (TIMESYNC_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , ODOMETRY (ODOMETRY_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , GPS2_RAW (GPS2_RAW_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , HEARTBEAT (HEARTBEAT_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , ESC_STATUS (ESC_STATUS_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , HOME_POSITION (HOME_POSITION_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , SET_MODE (SET_MODE_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , AUTH_KEY (AUTH_KEY_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , ATTITUDE (ATTITUDE_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , MISSION_ACK (MISSION_ACK_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , DEBUG (DEBUG_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , COLLISION (COLLISION_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , RAW_RPM (RAW_RPM_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , TUNNEL (TUNNEL_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , ALTITUDE (ALTITUDE_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , COMMAND_INT (COMMAND_INT_DATA) , SIM_STATE (SIM_STATE_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , STATUSTEXT (STATUSTEXT_DATA) , GPS2_RTK (GPS2_RTK_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , HIL_GPS (HIL_GPS_DATA) , WIND_COV (WIND_COV_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , CAN_FRAME (CAN_FRAME_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , LOG_DATA (LOG_DATA_DATA) , EVENT (EVENT_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , VFR_HUD (VFR_HUD_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { 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_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_STATUS) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , 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_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , 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) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , 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) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , 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) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , 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) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , 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) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_STATUS_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_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_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_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 ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_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 ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_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 ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_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 ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_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 ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_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 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 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 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 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 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 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 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 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 } } 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 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 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 MavOdidOperatorIdType { MAV_ODID_OPERATOR_ID_TYPE_CAA = 0 , } impl MavOdidOperatorIdType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_ID_TYPE_CAA ; } impl Default for MavOdidOperatorIdType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 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 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 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 CellularConfigResponse { CELLULAR_CONFIG_RESPONSE_ACCEPTED = 0 , CELLULAR_CONFIG_RESPONSE_APN_ERROR = 1 , CELLULAR_CONFIG_RESPONSE_PIN_ERROR = 2 , CELLULAR_CONFIG_RESPONSE_REJECTED = 3 , CELLULAR_CONFIG_BLOCKED_PUK_REQUIRED = 4 , } impl CellularConfigResponse { pub const DEFAULT : Self = Self :: CELLULAR_CONFIG_RESPONSE_ACCEPTED ; } impl Default for CellularConfigResponse { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryMode { MAV_BATTERY_MODE_UNKNOWN = 0 , MAV_BATTERY_MODE_AUTO_DISCHARGING = 1 , MAV_BATTERY_MODE_HOT_SWAP = 2 , } impl MavBatteryMode { pub const DEFAULT : Self = Self :: MAV_BATTERY_MODE_UNKNOWN ; } impl Default for MavBatteryMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 MavOdidDescType { MAV_ODID_DESC_TYPE_TEXT = 0 , MAV_ODID_DESC_TYPE_EMERGENCY = 1 , MAV_ODID_DESC_TYPE_EXTENDED_STATUS = 2 , } impl MavOdidDescType { pub const DEFAULT : Self = Self :: MAV_ODID_DESC_TYPE_TEXT ; } impl Default for MavOdidDescType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 CompMetadataType { COMP_METADATA_TYPE_GENERAL = 0 , COMP_METADATA_TYPE_PARAMETER = 1 , COMP_METADATA_TYPE_COMMANDS = 2 , COMP_METADATA_TYPE_PERIPHERALS = 3 , COMP_METADATA_TYPE_EVENTS = 4 , COMP_METADATA_TYPE_ACTUATORS = 5 , } impl CompMetadataType { pub const DEFAULT : Self = Self :: COMP_METADATA_TYPE_GENERAL ; } impl Default for CompMetadataType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AttitudeTargetTypemask : u8 { const ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE = 1 ; const ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE = 2 ; const ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE = 4 ; const ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET = 32 ; const ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE = 64 ; const ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE = 128 ; } } impl AttitudeTargetTypemask { pub const DEFAULT : Self = Self :: ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE ; } impl Default for AttitudeTargetTypemask { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 RtkBaselineCoordinateSystem { RTK_BASELINE_COORDINATE_SYSTEM_ECEF = 0 , RTK_BASELINE_COORDINATE_SYSTEM_NED = 1 , } impl RtkBaselineCoordinateSystem { pub const DEFAULT : Self = Self :: RTK_BASELINE_COORDINATE_SYSTEM_ECEF ; } impl Default for RtkBaselineCoordinateSystem { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavComponent { MAV_COMP_ID_ALL = 0 , MAV_COMP_ID_AUTOPILOT1 = 1 , MAV_COMP_ID_USER1 = 25 , MAV_COMP_ID_USER2 = 26 , MAV_COMP_ID_USER3 = 27 , MAV_COMP_ID_USER4 = 28 , MAV_COMP_ID_USER5 = 29 , MAV_COMP_ID_USER6 = 30 , MAV_COMP_ID_USER7 = 31 , MAV_COMP_ID_USER8 = 32 , MAV_COMP_ID_USER9 = 33 , MAV_COMP_ID_USER10 = 34 , MAV_COMP_ID_USER11 = 35 , MAV_COMP_ID_USER12 = 36 , MAV_COMP_ID_USER13 = 37 , MAV_COMP_ID_USER14 = 38 , MAV_COMP_ID_USER15 = 39 , MAV_COMP_ID_USER16 = 40 , MAV_COMP_ID_USER17 = 41 , MAV_COMP_ID_USER18 = 42 , MAV_COMP_ID_USER19 = 43 , MAV_COMP_ID_USER20 = 44 , MAV_COMP_ID_USER21 = 45 , MAV_COMP_ID_USER22 = 46 , MAV_COMP_ID_USER23 = 47 , MAV_COMP_ID_USER24 = 48 , MAV_COMP_ID_USER25 = 49 , MAV_COMP_ID_USER26 = 50 , MAV_COMP_ID_USER27 = 51 , MAV_COMP_ID_USER28 = 52 , MAV_COMP_ID_USER29 = 53 , MAV_COMP_ID_USER30 = 54 , MAV_COMP_ID_USER31 = 55 , MAV_COMP_ID_USER32 = 56 , MAV_COMP_ID_USER33 = 57 , MAV_COMP_ID_USER34 = 58 , MAV_COMP_ID_USER35 = 59 , MAV_COMP_ID_USER36 = 60 , MAV_COMP_ID_USER37 = 61 , MAV_COMP_ID_USER38 = 62 , MAV_COMP_ID_USER39 = 63 , MAV_COMP_ID_USER40 = 64 , MAV_COMP_ID_USER41 = 65 , MAV_COMP_ID_USER42 = 66 , MAV_COMP_ID_USER43 = 67 , MAV_COMP_ID_TELEMETRY_RADIO = 68 , MAV_COMP_ID_USER45 = 69 , MAV_COMP_ID_USER46 = 70 , MAV_COMP_ID_USER47 = 71 , MAV_COMP_ID_USER48 = 72 , MAV_COMP_ID_USER49 = 73 , MAV_COMP_ID_USER50 = 74 , MAV_COMP_ID_USER51 = 75 , MAV_COMP_ID_USER52 = 76 , MAV_COMP_ID_USER53 = 77 , MAV_COMP_ID_USER54 = 78 , MAV_COMP_ID_USER55 = 79 , MAV_COMP_ID_USER56 = 80 , MAV_COMP_ID_USER57 = 81 , MAV_COMP_ID_USER58 = 82 , MAV_COMP_ID_USER59 = 83 , MAV_COMP_ID_USER60 = 84 , MAV_COMP_ID_USER61 = 85 , MAV_COMP_ID_USER62 = 86 , MAV_COMP_ID_USER63 = 87 , MAV_COMP_ID_USER64 = 88 , MAV_COMP_ID_USER65 = 89 , MAV_COMP_ID_USER66 = 90 , MAV_COMP_ID_USER67 = 91 , MAV_COMP_ID_USER68 = 92 , MAV_COMP_ID_USER69 = 93 , MAV_COMP_ID_USER70 = 94 , MAV_COMP_ID_USER71 = 95 , MAV_COMP_ID_USER72 = 96 , MAV_COMP_ID_USER73 = 97 , MAV_COMP_ID_USER74 = 98 , MAV_COMP_ID_USER75 = 99 , MAV_COMP_ID_CAMERA = 100 , MAV_COMP_ID_CAMERA2 = 101 , MAV_COMP_ID_CAMERA3 = 102 , MAV_COMP_ID_CAMERA4 = 103 , MAV_COMP_ID_CAMERA5 = 104 , MAV_COMP_ID_CAMERA6 = 105 , MAV_COMP_ID_SERVO1 = 140 , MAV_COMP_ID_SERVO2 = 141 , MAV_COMP_ID_SERVO3 = 142 , MAV_COMP_ID_SERVO4 = 143 , MAV_COMP_ID_SERVO5 = 144 , MAV_COMP_ID_SERVO6 = 145 , MAV_COMP_ID_SERVO7 = 146 , MAV_COMP_ID_SERVO8 = 147 , MAV_COMP_ID_SERVO9 = 148 , MAV_COMP_ID_SERVO10 = 149 , MAV_COMP_ID_SERVO11 = 150 , MAV_COMP_ID_SERVO12 = 151 , MAV_COMP_ID_SERVO13 = 152 , MAV_COMP_ID_SERVO14 = 153 , MAV_COMP_ID_GIMBAL = 154 , MAV_COMP_ID_LOG = 155 , MAV_COMP_ID_ADSB = 156 , MAV_COMP_ID_OSD = 157 , MAV_COMP_ID_PERIPHERAL = 158 , MAV_COMP_ID_QX1_GIMBAL = 159 , MAV_COMP_ID_FLARM = 160 , MAV_COMP_ID_PARACHUTE = 161 , MAV_COMP_ID_WINCH = 169 , MAV_COMP_ID_GIMBAL2 = 171 , MAV_COMP_ID_GIMBAL3 = 172 , MAV_COMP_ID_GIMBAL4 = 173 , MAV_COMP_ID_GIMBAL5 = 174 , MAV_COMP_ID_GIMBAL6 = 175 , MAV_COMP_ID_BATTERY = 180 , MAV_COMP_ID_BATTERY2 = 181 , MAV_COMP_ID_MAVCAN = 189 , MAV_COMP_ID_MISSIONPLANNER = 190 , MAV_COMP_ID_ONBOARD_COMPUTER = 191 , MAV_COMP_ID_ONBOARD_COMPUTER2 = 192 , MAV_COMP_ID_ONBOARD_COMPUTER3 = 193 , MAV_COMP_ID_ONBOARD_COMPUTER4 = 194 , MAV_COMP_ID_PATHPLANNER = 195 , MAV_COMP_ID_OBSTACLE_AVOIDANCE = 196 , MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY = 197 , MAV_COMP_ID_PAIRING_MANAGER = 198 , MAV_COMP_ID_IMU = 200 , MAV_COMP_ID_IMU_2 = 201 , MAV_COMP_ID_IMU_3 = 202 , MAV_COMP_ID_GPS = 220 , MAV_COMP_ID_GPS2 = 221 , MAV_COMP_ID_ODID_TXRX_1 = 236 , MAV_COMP_ID_ODID_TXRX_2 = 237 , MAV_COMP_ID_ODID_TXRX_3 = 238 , MAV_COMP_ID_UDP_BRIDGE = 240 , MAV_COMP_ID_UART_BRIDGE = 241 , MAV_COMP_ID_TUNNEL_NODE = 242 , MAV_COMP_ID_SYSTEM_CONTROL = 250 , } impl MavComponent { pub const DEFAULT : Self = Self :: MAV_COMP_ID_ALL ; } impl Default for MavComponent { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 MavParamExtType { MAV_PARAM_EXT_TYPE_UINT8 = 1 , MAV_PARAM_EXT_TYPE_INT8 = 2 , MAV_PARAM_EXT_TYPE_UINT16 = 3 , MAV_PARAM_EXT_TYPE_INT16 = 4 , MAV_PARAM_EXT_TYPE_UINT32 = 5 , MAV_PARAM_EXT_TYPE_INT32 = 6 , MAV_PARAM_EXT_TYPE_UINT64 = 7 , MAV_PARAM_EXT_TYPE_INT64 = 8 , MAV_PARAM_EXT_TYPE_REAL32 = 9 , MAV_PARAM_EXT_TYPE_REAL64 = 10 , MAV_PARAM_EXT_TYPE_CUSTOM = 11 , } impl MavParamExtType { pub const DEFAULT : Self = Self :: MAV_PARAM_EXT_TYPE_UINT8 ; } impl Default for MavParamExtType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 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 MavCmdAck { MAV_CMD_ACK_OK = 0 , MAV_CMD_ACK_ERR_FAIL = 1 , MAV_CMD_ACK_ERR_ACCESS_DENIED = 2 , MAV_CMD_ACK_ERR_NOT_SUPPORTED = 3 , MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 4 , MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 5 , MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 6 , MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 7 , MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 8 , } impl MavCmdAck { pub const DEFAULT : Self = Self :: MAV_CMD_ACK_OK ; } impl Default for MavCmdAck { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 AisType { AIS_TYPE_UNKNOWN = 0 , AIS_TYPE_RESERVED_1 = 1 , AIS_TYPE_RESERVED_2 = 2 , AIS_TYPE_RESERVED_3 = 3 , AIS_TYPE_RESERVED_4 = 4 , AIS_TYPE_RESERVED_5 = 5 , AIS_TYPE_RESERVED_6 = 6 , AIS_TYPE_RESERVED_7 = 7 , AIS_TYPE_RESERVED_8 = 8 , AIS_TYPE_RESERVED_9 = 9 , AIS_TYPE_RESERVED_10 = 10 , AIS_TYPE_RESERVED_11 = 11 , AIS_TYPE_RESERVED_12 = 12 , AIS_TYPE_RESERVED_13 = 13 , AIS_TYPE_RESERVED_14 = 14 , AIS_TYPE_RESERVED_15 = 15 , AIS_TYPE_RESERVED_16 = 16 , AIS_TYPE_RESERVED_17 = 17 , AIS_TYPE_RESERVED_18 = 18 , AIS_TYPE_RESERVED_19 = 19 , AIS_TYPE_WIG = 20 , AIS_TYPE_WIG_HAZARDOUS_A = 21 , AIS_TYPE_WIG_HAZARDOUS_B = 22 , AIS_TYPE_WIG_HAZARDOUS_C = 23 , AIS_TYPE_WIG_HAZARDOUS_D = 24 , AIS_TYPE_WIG_RESERVED_1 = 25 , AIS_TYPE_WIG_RESERVED_2 = 26 , AIS_TYPE_WIG_RESERVED_3 = 27 , AIS_TYPE_WIG_RESERVED_4 = 28 , AIS_TYPE_WIG_RESERVED_5 = 29 , AIS_TYPE_FISHING = 30 , AIS_TYPE_TOWING = 31 , AIS_TYPE_TOWING_LARGE = 32 , AIS_TYPE_DREDGING = 33 , AIS_TYPE_DIVING = 34 , AIS_TYPE_MILITARY = 35 , AIS_TYPE_SAILING = 36 , AIS_TYPE_PLEASURE = 37 , AIS_TYPE_RESERVED_20 = 38 , AIS_TYPE_RESERVED_21 = 39 , AIS_TYPE_HSC = 40 , AIS_TYPE_HSC_HAZARDOUS_A = 41 , AIS_TYPE_HSC_HAZARDOUS_B = 42 , AIS_TYPE_HSC_HAZARDOUS_C = 43 , AIS_TYPE_HSC_HAZARDOUS_D = 44 , AIS_TYPE_HSC_RESERVED_1 = 45 , AIS_TYPE_HSC_RESERVED_2 = 46 , AIS_TYPE_HSC_RESERVED_3 = 47 , AIS_TYPE_HSC_RESERVED_4 = 48 , AIS_TYPE_HSC_UNKNOWN = 49 , AIS_TYPE_PILOT = 50 , AIS_TYPE_SAR = 51 , AIS_TYPE_TUG = 52 , AIS_TYPE_PORT_TENDER = 53 , AIS_TYPE_ANTI_POLLUTION = 54 , AIS_TYPE_LAW_ENFORCEMENT = 55 , AIS_TYPE_SPARE_LOCAL_1 = 56 , AIS_TYPE_SPARE_LOCAL_2 = 57 , AIS_TYPE_MEDICAL_TRANSPORT = 58 , AIS_TYPE_NONECOMBATANT = 59 , AIS_TYPE_PASSENGER = 60 , AIS_TYPE_PASSENGER_HAZARDOUS_A = 61 , AIS_TYPE_PASSENGER_HAZARDOUS_B = 62 , AIS_TYPE_PASSENGER_HAZARDOUS_C = 63 , AIS_TYPE_PASSENGER_HAZARDOUS_D = 64 , AIS_TYPE_PASSENGER_RESERVED_1 = 65 , AIS_TYPE_PASSENGER_RESERVED_2 = 66 , AIS_TYPE_PASSENGER_RESERVED_3 = 67 , AIS_TYPE_PASSENGER_RESERVED_4 = 68 , AIS_TYPE_PASSENGER_UNKNOWN = 69 , AIS_TYPE_CARGO = 70 , AIS_TYPE_CARGO_HAZARDOUS_A = 71 , AIS_TYPE_CARGO_HAZARDOUS_B = 72 , AIS_TYPE_CARGO_HAZARDOUS_C = 73 , AIS_TYPE_CARGO_HAZARDOUS_D = 74 , AIS_TYPE_CARGO_RESERVED_1 = 75 , AIS_TYPE_CARGO_RESERVED_2 = 76 , AIS_TYPE_CARGO_RESERVED_3 = 77 , AIS_TYPE_CARGO_RESERVED_4 = 78 , AIS_TYPE_CARGO_UNKNOWN = 79 , AIS_TYPE_TANKER = 80 , AIS_TYPE_TANKER_HAZARDOUS_A = 81 , AIS_TYPE_TANKER_HAZARDOUS_B = 82 , AIS_TYPE_TANKER_HAZARDOUS_C = 83 , AIS_TYPE_TANKER_HAZARDOUS_D = 84 , AIS_TYPE_TANKER_RESERVED_1 = 85 , AIS_TYPE_TANKER_RESERVED_2 = 86 , AIS_TYPE_TANKER_RESERVED_3 = 87 , AIS_TYPE_TANKER_RESERVED_4 = 88 , AIS_TYPE_TANKER_UNKNOWN = 89 , AIS_TYPE_OTHER = 90 , AIS_TYPE_OTHER_HAZARDOUS_A = 91 , AIS_TYPE_OTHER_HAZARDOUS_B = 92 , AIS_TYPE_OTHER_HAZARDOUS_C = 93 , AIS_TYPE_OTHER_HAZARDOUS_D = 94 , AIS_TYPE_OTHER_RESERVED_1 = 95 , AIS_TYPE_OTHER_RESERVED_2 = 96 , AIS_TYPE_OTHER_RESERVED_3 = 97 , AIS_TYPE_OTHER_RESERVED_4 = 98 , AIS_TYPE_OTHER_UNKNOWN = 99 , } impl AisType { pub const DEFAULT : Self = Self :: AIS_TYPE_UNKNOWN ; } impl Default for AisType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ActuatorConfiguration { ACTUATOR_CONFIGURATION_NONE = 0 , ACTUATOR_CONFIGURATION_BEEP = 1 , ACTUATOR_CONFIGURATION_3D_MODE_ON = 2 , ACTUATOR_CONFIGURATION_3D_MODE_OFF = 3 , ACTUATOR_CONFIGURATION_SPIN_DIRECTION1 = 4 , ACTUATOR_CONFIGURATION_SPIN_DIRECTION2 = 5 , } impl ActuatorConfiguration { pub const DEFAULT : Self = Self :: ACTUATOR_CONFIGURATION_NONE ; } impl Default for ActuatorConfiguration { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 } } # [derive (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 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 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 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 WifiConfigApMode { WIFI_CONFIG_AP_MODE_UNDEFINED = 0 , WIFI_CONFIG_AP_MODE_AP = 1 , WIFI_CONFIG_AP_MODE_STATION = 2 , WIFI_CONFIG_AP_MODE_DISABLED = 3 , } impl WifiConfigApMode { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_MODE_UNDEFINED ; } impl Default for WifiConfigApMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EstimatorStatusFlags : u16 { const ESTIMATOR_ATTITUDE = 1 ; const ESTIMATOR_VELOCITY_HORIZ = 2 ; const ESTIMATOR_VELOCITY_VERT = 4 ; const ESTIMATOR_POS_HORIZ_REL = 8 ; const ESTIMATOR_POS_HORIZ_ABS = 16 ; const ESTIMATOR_POS_VERT_ABS = 32 ; const ESTIMATOR_POS_VERT_AGL = 64 ; const ESTIMATOR_CONST_POS_MODE = 128 ; const ESTIMATOR_PRED_POS_HORIZ_REL = 256 ; const ESTIMATOR_PRED_POS_HORIZ_ABS = 512 ; const ESTIMATOR_GPS_GLITCH = 1024 ; const ESTIMATOR_ACCEL_ERROR = 2048 ; } } impl EstimatorStatusFlags { pub const DEFAULT : Self = Self :: ESTIMATOR_ATTITUDE ; } impl Default for EstimatorStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 MavOdidHorAcc { MAV_ODID_HOR_ACC_UNKNOWN = 0 , MAV_ODID_HOR_ACC_10NM = 1 , MAV_ODID_HOR_ACC_4NM = 2 , MAV_ODID_HOR_ACC_2NM = 3 , MAV_ODID_HOR_ACC_1NM = 4 , MAV_ODID_HOR_ACC_0_5NM = 5 , MAV_ODID_HOR_ACC_0_3NM = 6 , MAV_ODID_HOR_ACC_0_1NM = 7 , MAV_ODID_HOR_ACC_0_05NM = 8 , MAV_ODID_HOR_ACC_30_METER = 9 , MAV_ODID_HOR_ACC_10_METER = 10 , MAV_ODID_HOR_ACC_3_METER = 11 , MAV_ODID_HOR_ACC_1_METER = 12 , } impl MavOdidHorAcc { pub const DEFAULT : Self = Self :: MAV_ODID_HOR_ACC_UNKNOWN ; } impl Default for MavOdidHorAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavAutopilot { MAV_AUTOPILOT_GENERIC = 0 , MAV_AUTOPILOT_RESERVED = 1 , MAV_AUTOPILOT_SLUGS = 2 , MAV_AUTOPILOT_ARDUPILOTMEGA = 3 , MAV_AUTOPILOT_OPENPILOT = 4 , MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 , MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 , MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 , MAV_AUTOPILOT_INVALID = 8 , MAV_AUTOPILOT_PPZ = 9 , MAV_AUTOPILOT_UDB = 10 , MAV_AUTOPILOT_FP = 11 , MAV_AUTOPILOT_PX4 = 12 , MAV_AUTOPILOT_SMACCMPILOT = 13 , MAV_AUTOPILOT_AUTOQUAD = 14 , MAV_AUTOPILOT_ARMAZILA = 15 , MAV_AUTOPILOT_AEROB = 16 , MAV_AUTOPILOT_ASLUAV = 17 , MAV_AUTOPILOT_SMARTAP = 18 , MAV_AUTOPILOT_AIRRAILS = 19 , MAV_AUTOPILOT_REFLEX = 20 , } impl MavAutopilot { pub const DEFAULT : Self = Self :: MAV_AUTOPILOT_GENERIC ; } impl Default for MavAutopilot { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 TuneFormat : u32 { const TUNE_FORMAT_QBASIC1_1 = 1 ; const TUNE_FORMAT_MML_MODERN = 2 ; } } impl TuneFormat { pub const DEFAULT : Self = Self :: TUNE_FORMAT_QBASIC1_1 ; } impl Default for TuneFormat { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraMode { CAMERA_MODE_IMAGE = 0 , CAMERA_MODE_VIDEO = 1 , CAMERA_MODE_IMAGE_SURVEY = 2 , } impl CameraMode { pub const DEFAULT : Self = Self :: CAMERA_MODE_IMAGE ; } impl Default for CameraMode { fn default () -> Self { Self :: DEFAULT } } 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 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 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 , 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_unix_usec) ; __tmp . put_u32_le (self . time_boot_ms) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGHRES_IMU_DATA { pub time_usec : u64 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub xmag : f32 , pub ymag : f32 , pub zmag : f32 , pub abs_pressure : f32 , pub diff_pressure : f32 , pub pressure_alt : f32 , pub temperature : f32 , pub fields_updated : HighresImuUpdatedFlags , } impl HIGHRES_IMU_DATA { pub const ENCODED_LEN : usize = 62usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , xmag : 0.0_f32 , ymag : 0.0_f32 , zmag : 0.0_f32 , abs_pressure : 0.0_f32 , diff_pressure : 0.0_f32 , pressure_alt : 0.0_f32 , temperature : 0.0_f32 , fields_updated : HighresImuUpdatedFlags :: DEFAULT , } ; } impl Default for HIGHRES_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGHRES_IMU_DATA { type Message = MavMessage ; const ID : u32 = 105u32 ; const NAME : & 'static str = "HIGHRES_IMU" ; const EXTRA_CRC : u8 = 93u8 ; const ENCODED_LEN : usize = 62usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . xmag = buf . get_f32_le () ; __struct . ymag = buf . get_f32_le () ; __struct . zmag = buf . get_f32_le () ; __struct . abs_pressure = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . pressure_alt = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . fields_updated = HighresImuUpdatedFlags :: from_bits (tmp & HighresImuUpdatedFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HighresImuUpdatedFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_SET_CURRENT_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_SET_CURRENT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_SET_CURRENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_SET_CURRENT_DATA { type Message = MavMessage ; const ID : u32 = 41u32 ; const NAME : & 'static str = "MISSION_SET_CURRENT" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u16_le (self . payload_type as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . payload_length) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . format . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . tune { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . param5) ; __tmp . put_f32_le (self . param6) ; __tmp . put_f32_le (self . param7) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . confirmation) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . airspeed) ; __tmp . put_f32_le (self . groundspeed) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . climb) ; __tmp . put_i16_le (self . heading) ; __tmp . put_u16_le (self . throttle) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_DATA_DATA { pub ofs : u32 , pub count : u32 , pub id : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_DATA_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { ofs : 0_u32 , count : 0_u32 , id : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_DATA_DATA { type Message = MavMessage ; const ID : u32 = 119u32 ; const NAME : & 'static str = "LOG_REQUEST_DATA" ; const EXTRA_CRC : u8 = 116u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ofs = buf . get_u32_le () ; __struct . count = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . integration_time_us) ; __tmp . put_f32_le (self . integrated_x) ; __tmp . put_f32_le (self . integrated_y) ; __tmp . put_f32_le (self . integrated_xgyro) ; __tmp . put_f32_le (self . integrated_ygyro) ; __tmp . put_f32_le (self . integrated_zgyro) ; __tmp . put_u32_le (self . time_delta_distance_us) ; __tmp . put_f32_le (self . distance) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_FLOAT_ARRAY_DATA { pub time_usec : u64 , pub array_id : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl DEBUG_FLOAT_ARRAY_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , array_id : 0_u16 , name : [0_u8 ; 10usize] , } ; } impl Default for DEBUG_FLOAT_ARRAY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_FLOAT_ARRAY_DATA { type Message = MavMessage ; const ID : u32 = 350u32 ; const NAME : & 'static str = "DEBUG_FLOAT_ARRAY" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . array_id = buf . get_u16_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_usec) ; __tmp . put_u16_le (self . servo1_raw) ; __tmp . put_u16_le (self . servo2_raw) ; __tmp . put_u16_le (self . servo3_raw) ; __tmp . put_u16_le (self . servo4_raw) ; __tmp . put_u16_le (self . servo5_raw) ; __tmp . put_u16_le (self . servo6_raw) ; __tmp . put_u16_le (self . servo7_raw) ; __tmp . put_u16_le (self . servo8_raw) ; __tmp . put_u8 (self . port) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . control_request) ; __tmp . put_u8 (self . version) ; for val in & self . passkey { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . altitude_monotonic) ; __tmp . put_f32_le (self . altitude_amsl) ; __tmp . put_f32_le (self . altitude_local) ; __tmp . put_f32_le (self . altitude_relative) ; __tmp . put_f32_le (self . altitude_terrain) ; __tmp . put_f32_le (self . bottom_clearance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { GPS2_RTK (GPS2_RTK_DATA) , STATUSTEXT (STATUSTEXT_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , TIMESYNC (TIMESYNC_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , POWER_STATUS (POWER_STATUS_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , RAW_IMU (RAW_IMU_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , EFI_STATUS (EFI_STATUS_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , SCALED_IMU (SCALED_IMU_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , TUNNEL (TUNNEL_DATA) , MISSION_ACK (MISSION_ACK_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , ATTITUDE (ATTITUDE_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , GPS2_RAW (GPS2_RAW_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , VIBRATION (VIBRATION_DATA) , SYS_STATUS (SYS_STATUS_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , HOME_POSITION (HOME_POSITION_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , DEBUG (DEBUG_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , PARAM_SET (PARAM_SET_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , SIM_STATE (SIM_STATE_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , ESC_STATUS (ESC_STATUS_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , SET_MODE (SET_MODE_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , VFR_HUD (VFR_HUD_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , HIL_STATE (HIL_STATE_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , ESC_INFO (ESC_INFO_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , LOG_DATA (LOG_DATA_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , DATA_STREAM (DATA_STREAM_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , WIND_COV (WIND_COV_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , CAN_FRAME (CAN_FRAME_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , RAW_RPM (RAW_RPM_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , EVENT (EVENT_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , AUTH_KEY (AUTH_KEY_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , LOG_ERASE (LOG_ERASE_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , HEARTBEAT (HEARTBEAT_DATA) , HIL_GPS (HIL_GPS_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , GPS_STATUS (GPS_STATUS_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , COLLISION (COLLISION_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , ALTITUDE (ALTITUDE_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , ODOMETRY (ODOMETRY_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , GPS_INPUT (GPS_INPUT_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , GPS_RTK (GPS_RTK_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , PING (PING_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , COMMAND_INT (COMMAND_INT_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , 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) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , 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) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , 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) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_STATUS) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , 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) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , 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) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , 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) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , 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) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , 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) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_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) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_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) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_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 ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_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 ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_STATUS_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_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 ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_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 ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_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 ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_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 ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (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 :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (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 :: WIND_COV (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_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 , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_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 , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_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 , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_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-44988716d84216e2/out/icarous.rs.html b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-44988716d84216e2/out/icarous.rs.html index 37a4180bbd..0780a7e0d5 100644 --- a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-44988716d84216e2/out/icarous.rs.html +++ b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-44988716d84216e2/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 IcarousTrackBandTypes { ICAROUS_TRACK_BAND_TYPE_NONE = 0 , ICAROUS_TRACK_BAND_TYPE_NEAR = 1 , ICAROUS_TRACK_BAND_TYPE_RECOVERY = 2 , } impl IcarousTrackBandTypes { pub const DEFAULT : Self = Self :: ICAROUS_TRACK_BAND_TYPE_NONE ; } impl Default for IcarousTrackBandTypes { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum IcarousFmsState { ICAROUS_FMS_STATE_IDLE = 0 , ICAROUS_FMS_STATE_TAKEOFF = 1 , ICAROUS_FMS_STATE_CLIMB = 2 , ICAROUS_FMS_STATE_CRUISE = 3 , ICAROUS_FMS_STATE_APPROACH = 4 , ICAROUS_FMS_STATE_LAND = 5 , } impl IcarousFmsState { pub const DEFAULT : Self = Self :: ICAROUS_FMS_STATE_IDLE ; } impl Default for IcarousFmsState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ICAROUS_KINEMATIC_BANDS_DATA { pub min1 : f32 , pub max1 : f32 , pub min2 : f32 , pub max2 : f32 , pub min3 : f32 , pub max3 : f32 , pub min4 : f32 , pub max4 : f32 , pub min5 : f32 , pub max5 : f32 , pub numBands : i8 , pub type1 : IcarousTrackBandTypes , pub type2 : IcarousTrackBandTypes , pub type3 : IcarousTrackBandTypes , pub type4 : IcarousTrackBandTypes , pub type5 : IcarousTrackBandTypes , } impl ICAROUS_KINEMATIC_BANDS_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { min1 : 0.0_f32 , max1 : 0.0_f32 , min2 : 0.0_f32 , max2 : 0.0_f32 , min3 : 0.0_f32 , max3 : 0.0_f32 , min4 : 0.0_f32 , max4 : 0.0_f32 , min5 : 0.0_f32 , max5 : 0.0_f32 , numBands : 0_i8 , type1 : IcarousTrackBandTypes :: DEFAULT , type2 : IcarousTrackBandTypes :: DEFAULT , type3 : IcarousTrackBandTypes :: DEFAULT , type4 : IcarousTrackBandTypes :: DEFAULT , type5 : IcarousTrackBandTypes :: DEFAULT , } ; } impl Default for ICAROUS_KINEMATIC_BANDS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ICAROUS_KINEMATIC_BANDS_DATA { type Message = MavMessage ; const ID : u32 = 42001u32 ; const NAME : & 'static str = "ICAROUS_KINEMATIC_BANDS" ; const EXTRA_CRC : u8 = 239u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . min1 = buf . get_f32_le () ; __struct . max1 = buf . get_f32_le () ; __struct . min2 = buf . get_f32_le () ; __struct . max2 = buf . get_f32_le () ; __struct . min3 = buf . get_f32_le () ; __struct . max3 = buf . get_f32_le () ; __struct . min4 = buf . get_f32_le () ; __struct . max4 = buf . get_f32_le () ; __struct . min5 = buf . get_f32_le () ; __struct . max5 = buf . get_f32_le () ; __struct . numBands = buf . get_i8 () ; let tmp = buf . get_u8 () ; __struct . type1 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type2 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type3 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type4 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type5 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . min1) ; __tmp . put_f32_le (self . max1) ; __tmp . put_f32_le (self . min2) ; __tmp . put_f32_le (self . max2) ; __tmp . put_f32_le (self . min3) ; __tmp . put_f32_le (self . max3) ; __tmp . put_f32_le (self . min4) ; __tmp . put_f32_le (self . max4) ; __tmp . put_f32_le (self . min5) ; __tmp . put_f32_le (self . max5) ; __tmp . put_i8 (self . numBands) ; __tmp . put_u8 (self . type1 as u8) ; __tmp . put_u8 (self . type2 as u8) ; __tmp . put_u8 (self . type3 as u8) ; __tmp . put_u8 (self . type4 as u8) ; __tmp . put_u8 (self . type5 as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ICAROUS_HEARTBEAT_DATA { pub status : IcarousFmsState , } impl ICAROUS_HEARTBEAT_DATA { pub const ENCODED_LEN : usize = 1usize ; pub const DEFAULT : Self = Self { status : IcarousFmsState :: DEFAULT , } ; } impl Default for ICAROUS_HEARTBEAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ICAROUS_HEARTBEAT_DATA { type Message = MavMessage ; const ID : u32 = 42000u32 ; const NAME : & 'static str = "ICAROUS_HEARTBEAT" ; const EXTRA_CRC : u8 = 227u8 ; const ENCODED_LEN : usize = 1usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousFmsState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA) , ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: deser (version , payload) . map (Self :: ICAROUS_KINEMATIC_BANDS) , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: ICAROUS_HEARTBEAT) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: NAME , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: ID , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { ICAROUS_KINEMATIC_BANDS_DATA :: NAME => Ok (ICAROUS_KINEMATIC_BANDS_DATA :: ID) , ICAROUS_HEARTBEAT_DATA :: NAME => Ok (ICAROUS_HEARTBEAT_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { ICAROUS_KINEMATIC_BANDS_DATA :: ID => Ok (Self :: ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA :: default ())) , ICAROUS_HEARTBEAT_DATA :: ID => Ok (Self :: ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: ICAROUS_KINEMATIC_BANDS (body) => body . ser (version , bytes) , Self :: ICAROUS_HEARTBEAT (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: EXTRA_CRC , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: EXTRA_CRC , _ => { 0 } , } } }
+
# ! [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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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-44988716d84216e2/out/uavionix.rs.html b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-44988716d84216e2/out/uavionix.rs.html index f61f3f1195..e66ad718af 100644 --- a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-44988716d84216e2/out/uavionix.rs.html +++ b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-44988716d84216e2/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 SerialControlDev { SERIAL_CONTROL_DEV_TELEM1 = 0 , SERIAL_CONTROL_DEV_TELEM2 = 1 , SERIAL_CONTROL_DEV_GPS1 = 2 , SERIAL_CONTROL_DEV_GPS2 = 3 , SERIAL_CONTROL_DEV_SHELL = 10 , SERIAL_CONTROL_SERIAL0 = 100 , SERIAL_CONTROL_SERIAL1 = 101 , SERIAL_CONTROL_SERIAL2 = 102 , SERIAL_CONTROL_SERIAL3 = 103 , SERIAL_CONTROL_SERIAL4 = 104 , SERIAL_CONTROL_SERIAL5 = 105 , SERIAL_CONTROL_SERIAL6 = 106 , SERIAL_CONTROL_SERIAL7 = 107 , SERIAL_CONTROL_SERIAL8 = 108 , SERIAL_CONTROL_SERIAL9 = 109 , } impl SerialControlDev { pub const DEFAULT : Self = Self :: SERIAL_CONTROL_DEV_TELEM1 ; } impl Default for SerialControlDev { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MagCalStatus { MAG_CAL_NOT_STARTED = 0 , MAG_CAL_WAITING_TO_START = 1 , MAG_CAL_RUNNING_STEP_ONE = 2 , MAG_CAL_RUNNING_STEP_TWO = 3 , MAG_CAL_SUCCESS = 4 , MAG_CAL_FAILED = 5 , MAG_CAL_BAD_ORIENTATION = 6 , MAG_CAL_BAD_RADIUS = 7 , } impl MagCalStatus { pub const DEFAULT : Self = Self :: MAG_CAL_NOT_STARTED ; } impl Default for MagCalStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 MavDataStream { MAV_DATA_STREAM_ALL = 0 , MAV_DATA_STREAM_RAW_SENSORS = 1 , MAV_DATA_STREAM_EXTENDED_STATUS = 2 , MAV_DATA_STREAM_RC_CHANNELS = 3 , MAV_DATA_STREAM_RAW_CONTROLLER = 4 , MAV_DATA_STREAM_POSITION = 6 , MAV_DATA_STREAM_EXTRA1 = 10 , MAV_DATA_STREAM_EXTRA2 = 11 , MAV_DATA_STREAM_EXTRA3 = 12 , } impl MavDataStream { pub const DEFAULT : Self = Self :: MAV_DATA_STREAM_ALL ; } impl Default for MavDataStream { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MotorTestOrder { MOTOR_TEST_ORDER_DEFAULT = 0 , MOTOR_TEST_ORDER_SEQUENCE = 1 , MOTOR_TEST_ORDER_BOARD = 2 , } impl MotorTestOrder { pub const DEFAULT : Self = Self :: MOTOR_TEST_ORDER_DEFAULT ; } impl Default for MotorTestOrder { fn default () -> Self { Self :: DEFAULT } } # [derive (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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 EscConnectionType { ESC_CONNECTION_TYPE_PPM = 0 , ESC_CONNECTION_TYPE_SERIAL = 1 , ESC_CONNECTION_TYPE_ONESHOT = 2 , ESC_CONNECTION_TYPE_I2C = 3 , ESC_CONNECTION_TYPE_CAN = 4 , ESC_CONNECTION_TYPE_DSHOT = 5 , } impl EscConnectionType { pub const DEFAULT : Self = Self :: ESC_CONNECTION_TYPE_PPM ; } impl Default for EscConnectionType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 MavGoto { MAV_GOTO_DO_HOLD = 0 , MAV_GOTO_DO_CONTINUE = 1 , MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 , MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 , } impl MavGoto { pub const DEFAULT : Self = Self :: MAV_GOTO_DO_HOLD ; } impl Default for MavGoto { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FailureType { FAILURE_TYPE_OK = 0 , FAILURE_TYPE_OFF = 1 , FAILURE_TYPE_STUCK = 2 , FAILURE_TYPE_GARBAGE = 3 , FAILURE_TYPE_WRONG = 4 , FAILURE_TYPE_SLOW = 5 , FAILURE_TYPE_DELAYED = 6 , FAILURE_TYPE_INTERMITTENT = 7 , } impl FailureType { pub const DEFAULT : Self = Self :: FAILURE_TYPE_OK ; } impl Default for FailureType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 StorageType { STORAGE_TYPE_UNKNOWN = 0 , STORAGE_TYPE_USB_STICK = 1 , STORAGE_TYPE_SD = 2 , STORAGE_TYPE_MICROSD = 3 , STORAGE_TYPE_CF = 4 , STORAGE_TYPE_CFE = 5 , STORAGE_TYPE_XQD = 6 , STORAGE_TYPE_HD = 7 , STORAGE_TYPE_OTHER = 254 , } impl StorageType { pub const DEFAULT : Self = Self :: STORAGE_TYPE_UNKNOWN ; } impl Default for StorageType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UtmDataAvailFlags : u8 { const UTM_DATA_AVAIL_FLAGS_TIME_VALID = 1 ; const UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE = 2 ; const UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE = 4 ; const UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE = 8 ; const UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE = 16 ; const UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE = 32 ; const UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE = 64 ; const UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE = 128 ; } } impl UtmDataAvailFlags { pub const DEFAULT : Self = Self :: UTM_DATA_AVAIL_FLAGS_TIME_VALID ; } impl Default for UtmDataAvailFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 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 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 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 WifiConfigApMode { WIFI_CONFIG_AP_MODE_UNDEFINED = 0 , WIFI_CONFIG_AP_MODE_AP = 1 , WIFI_CONFIG_AP_MODE_STATION = 2 , WIFI_CONFIG_AP_MODE_DISABLED = 3 , } impl WifiConfigApMode { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_MODE_UNDEFINED ; } impl Default for WifiConfigApMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 RcType { RC_TYPE_SPEKTRUM_DSM2 = 0 , RC_TYPE_SPEKTRUM_DSMX = 1 , } impl RcType { pub const DEFAULT : Self = Self :: RC_TYPE_SPEKTRUM_DSM2 ; } impl Default for RcType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AisNavStatus { UNDER_WAY = 0 , AIS_NAV_ANCHORED = 1 , AIS_NAV_UN_COMMANDED = 2 , AIS_NAV_RESTRICTED_MANOEUVERABILITY = 3 , AIS_NAV_DRAUGHT_CONSTRAINED = 4 , AIS_NAV_MOORED = 5 , AIS_NAV_AGROUND = 6 , AIS_NAV_FISHING = 7 , AIS_NAV_SAILING = 8 , AIS_NAV_RESERVED_HSC = 9 , AIS_NAV_RESERVED_WIG = 10 , AIS_NAV_RESERVED_1 = 11 , AIS_NAV_RESERVED_2 = 12 , AIS_NAV_RESERVED_3 = 13 , AIS_NAV_AIS_SART = 14 , AIS_NAV_UNKNOWN = 15 , } impl AisNavStatus { pub const DEFAULT : Self = Self :: UNDER_WAY ; } impl Default for AisNavStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 AutotuneAxis { AUTOTUNE_AXIS_DEFAULT = 0 , AUTOTUNE_AXIS_ROLL = 1 , AUTOTUNE_AXIS_PITCH = 2 , AUTOTUNE_AXIS_YAW = 4 , } impl AutotuneAxis { pub const DEFAULT : Self = Self :: AUTOTUNE_AXIS_DEFAULT ; } impl Default for AutotuneAxis { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UavionixAdsbOutDynamicState : u16 { const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE = 1 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED = 2 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED = 4 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND = 8 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT = 16 ; } } impl UavionixAdsbOutDynamicState { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE ; } impl Default for UavionixAdsbOutDynamicState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 MavOdidOperatorIdType { MAV_ODID_OPERATOR_ID_TYPE_CAA = 0 , } impl MavOdidOperatorIdType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_ID_TYPE_CAA ; } impl Default for MavOdidOperatorIdType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 } } 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 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 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 MavBatteryChargeState { MAV_BATTERY_CHARGE_STATE_UNDEFINED = 0 , MAV_BATTERY_CHARGE_STATE_OK = 1 , MAV_BATTERY_CHARGE_STATE_LOW = 2 , MAV_BATTERY_CHARGE_STATE_CRITICAL = 3 , MAV_BATTERY_CHARGE_STATE_EMERGENCY = 4 , MAV_BATTERY_CHARGE_STATE_FAILED = 5 , MAV_BATTERY_CHARGE_STATE_UNHEALTHY = 6 , MAV_BATTERY_CHARGE_STATE_CHARGING = 7 , } impl MavBatteryChargeState { pub const DEFAULT : Self = Self :: MAV_BATTERY_CHARGE_STATE_UNDEFINED ; } impl Default for MavBatteryChargeState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AdsbAltitudeType { ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 , ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 , } impl AdsbAltitudeType { pub const DEFAULT : Self = Self :: ADSB_ALTITUDE_TYPE_PRESSURE_QNH ; } impl Default for AdsbAltitudeType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceFlags : u16 { const GIMBAL_DEVICE_FLAGS_RETRACT = 1 ; const GIMBAL_DEVICE_FLAGS_NEUTRAL = 2 ; const GIMBAL_DEVICE_FLAGS_ROLL_LOCK = 4 ; const GIMBAL_DEVICE_FLAGS_PITCH_LOCK = 8 ; const GIMBAL_DEVICE_FLAGS_YAW_LOCK = 16 ; const GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME = 32 ; const GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME = 64 ; const GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME = 128 ; const GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE = 256 ; const GIMBAL_DEVICE_FLAGS_RC_MIXED = 512 ; } } impl GimbalDeviceFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_FLAGS_RETRACT ; } impl Default for GimbalDeviceFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MotorTestThrottleType { MOTOR_TEST_THROTTLE_PERCENT = 0 , MOTOR_TEST_THROTTLE_PWM = 1 , MOTOR_TEST_THROTTLE_PILOT = 2 , MOTOR_TEST_COMPASS_CAL = 3 , } impl MotorTestThrottleType { pub const DEFAULT : Self = Self :: MOTOR_TEST_THROTTLE_PERCENT ; } impl Default for MotorTestThrottleType { fn default () -> Self { Self :: DEFAULT } } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } } 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 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 CellularNetworkFailedReason { CELLULAR_NETWORK_FAILED_REASON_NONE = 0 , CELLULAR_NETWORK_FAILED_REASON_UNKNOWN = 1 , CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING = 2 , CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR = 3 , } impl CellularNetworkFailedReason { pub const DEFAULT : Self = Self :: CELLULAR_NETWORK_FAILED_REASON_NONE ; } impl Default for CellularNetworkFailedReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavcanNodeHealth { UAVCAN_NODE_HEALTH_OK = 0 , UAVCAN_NODE_HEALTH_WARNING = 1 , UAVCAN_NODE_HEALTH_ERROR = 2 , UAVCAN_NODE_HEALTH_CRITICAL = 3 , } impl UavcanNodeHealth { pub const DEFAULT : Self = Self :: UAVCAN_NODE_HEALTH_OK ; } impl Default for UavcanNodeHealth { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 AisFlags : u16 { const AIS_FLAGS_POSITION_ACCURACY = 1 ; const AIS_FLAGS_VALID_COG = 2 ; const AIS_FLAGS_VALID_VELOCITY = 4 ; const AIS_FLAGS_HIGH_VELOCITY = 8 ; const AIS_FLAGS_VALID_TURN_RATE = 16 ; const AIS_FLAGS_TURN_RATE_SIGN_ONLY = 32 ; const AIS_FLAGS_VALID_DIMENSIONS = 64 ; const AIS_FLAGS_LARGE_BOW_DIMENSION = 128 ; const AIS_FLAGS_LARGE_STERN_DIMENSION = 256 ; const AIS_FLAGS_LARGE_PORT_DIMENSION = 512 ; const AIS_FLAGS_LARGE_STARBOARD_DIMENSION = 1024 ; const AIS_FLAGS_VALID_CALLSIGN = 2048 ; const AIS_FLAGS_VALID_NAME = 4096 ; } } impl AisFlags { pub const DEFAULT : Self = Self :: AIS_FLAGS_POSITION_ACCURACY ; } impl Default for AisFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 MavArmAuthDeniedReason { MAV_ARM_AUTH_DENIED_REASON_GENERIC = 0 , MAV_ARM_AUTH_DENIED_REASON_NONE = 1 , MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT = 2 , MAV_ARM_AUTH_DENIED_REASON_TIMEOUT = 3 , MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE = 4 , MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER = 5 , } impl MavArmAuthDeniedReason { pub const DEFAULT : Self = Self :: MAV_ARM_AUTH_DENIED_REASON_GENERIC ; } impl Default for MavArmAuthDeniedReason { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 VtolTransitionHeading { VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT = 0 , VTOL_TRANSITION_HEADING_NEXT_WAYPOINT = 1 , VTOL_TRANSITION_HEADING_TAKEOFF = 2 , VTOL_TRANSITION_HEADING_SPECIFIED = 3 , VTOL_TRANSITION_HEADING_ANY = 4 , } impl VtolTransitionHeading { pub const DEFAULT : Self = Self :: VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT ; } impl Default for VtolTransitionHeading { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceBreach { FENCE_BREACH_NONE = 0 , FENCE_BREACH_MINALT = 1 , FENCE_BREACH_MAXALT = 2 , FENCE_BREACH_BOUNDARY = 3 , } impl FenceBreach { pub const DEFAULT : Self = Self :: FENCE_BREACH_NONE ; } impl Default for FenceBreach { fn default () -> Self { Self :: DEFAULT } } 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 } } 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 } } 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 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 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 , 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . custom_mode) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . autopilot as u8) ; __tmp . put_u8 (self . base_mode . bits ()) ; __tmp . put_u8 (self . system_status as u8) ; __tmp . put_u8 (self . mavlink_version) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RADIO_STATUS_DATA { pub rxerrors : u16 , pub fixed : u16 , pub rssi : u8 , pub remrssi : u8 , pub txbuf : u8 , pub noise : u8 , pub remnoise : u8 , } impl RADIO_STATUS_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { rxerrors : 0_u16 , fixed : 0_u16 , rssi : 0_u8 , remrssi : 0_u8 , txbuf : 0_u8 , noise : 0_u8 , remnoise : 0_u8 , } ; } impl Default for RADIO_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RADIO_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 109u32 ; const NAME : & 'static str = "RADIO_STATUS" ; const EXTRA_CRC : u8 = 185u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . rxerrors = buf . get_u16_le () ; __struct . fixed = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; __struct . remrssi = buf . get_u8 () ; __struct . txbuf = buf . get_u8 () ; __struct . noise = buf . get_u8 () ; __struct . remnoise = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; for val in & self . attitude_quaternion { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . ind_airspeed) ; __tmp . put_u16_le (self . true_airspeed) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_i32_le (self . operator_latitude) ; __tmp . put_i32_le (self . operator_longitude) ; __tmp . put_f32_le (self . area_ceiling) ; __tmp . put_f32_le (self . area_floor) ; __tmp . put_f32_le (self . operator_altitude_geo) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u16_le (self . area_count) ; __tmp . put_u16_le (self . area_radius) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . operator_location_type as u8) ; __tmp . put_u8 (self . classification_type as u8) ; __tmp . put_u8 (self . category_eu as u8) ; __tmp . put_u8 (self . class_eu as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . airspeed) ; __tmp . put_f32_le (self . groundspeed) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . climb) ; __tmp . put_i16_le (self . heading) ; __tmp . put_u16_le (self . throttle) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . p1x) ; __tmp . put_f32_le (self . p1y) ; __tmp . put_f32_le (self . p1z) ; __tmp . put_f32_le (self . p2x) ; __tmp . put_f32_le (self . p2y) ; __tmp . put_f32_le (self . p2z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u16_le (self . Vcc) ; __tmp . put_u16_le (self . Vservo) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . altitude_monotonic) ; __tmp . put_f32_le (self . altitude_amsl) ; __tmp . put_f32_le (self . altitude_local) ; __tmp . put_f32_le (self . altitude_relative) ; __tmp . put_f32_le (self . altitude_terrain) ; __tmp . put_f32_le (self . bottom_clearance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_STATUS_DATA { pub time_boot_ms : u32 , pub flags : GimbalManagerFlags , pub gimbal_device_id : u8 , pub primary_control_sysid : u8 , pub primary_control_compid : u8 , pub secondary_control_sysid : u8 , pub secondary_control_compid : u8 , } impl GIMBAL_MANAGER_STATUS_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , flags : GimbalManagerFlags :: DEFAULT , gimbal_device_id : 0_u8 , primary_control_sysid : 0_u8 , primary_control_compid : 0_u8 , secondary_control_sysid : 0_u8 , secondary_control_compid : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 281u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_STATUS" ; const EXTRA_CRC : u8 = 48u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . gimbal_device_id = buf . get_u8 () ; __struct . primary_control_sysid = buf . get_u8 () ; __struct . primary_control_compid = buf . get_u8 () ; __struct . secondary_control_sysid = buf . get_u8 () ; __struct . secondary_control_compid = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u16_le (self . payload_type as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . payload_length) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . gcs_system_id) ; __tmp . put_u8 (self . control_request) ; __tmp . put_u8 (self . ack) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x_acc) ; __tmp . put_f32_le (self . y_acc) ; __tmp . put_f32_le (self . z_acc) ; __tmp . put_f32_le (self . x_vel) ; __tmp . put_f32_le (self . y_vel) ; __tmp . put_f32_le (self . z_vel) ; __tmp . put_f32_le (self . x_pos) ; __tmp . put_f32_le (self . y_pos) ; __tmp . put_f32_le (self . z_pos) ; __tmp . put_f32_le (self . airspeed) ; for val in & self . vel_variance { __tmp . put_f32_le (* val) ; } for val in & self . pos_variance { __tmp . put_f32_le (* val) ; } for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . roll_rate) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . ICAO_address) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_u16_le (self . heading) ; __tmp . put_u16_le (self . hor_velocity) ; __tmp . put_i16_le (self . ver_velocity) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u16_le (self . squawk) ; __tmp . put_u8 (self . altitude_type as u8) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . emitter_type as u8) ; __tmp . put_u8 (self . tslc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; __tmp . put_i16_le (self . press_abs) ; __tmp . put_i16_le (self . press_diff1) ; __tmp . put_i16_le (self . press_diff2) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ACK_DATA { pub target_system : u8 , pub target_component : u8 , pub mavtype : MavMissionResult , } impl MISSION_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , mavtype : MavMissionResult :: DEFAULT , } ; } impl Default for MISSION_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ACK_DATA { type Message = MavMessage ; const ID : u32 = 47u32 ; const NAME : & 'static str = "MISSION_ACK" ; const EXTRA_CRC : u8 = 153u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMissionResult" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u16_le (self . current_distance) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . orientation as u8) ; __tmp . put_u8 (self . covariance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_ENTRY_DATA { pub time_utc : u32 , pub size : u32 , pub id : u16 , pub num_logs : u16 , pub last_log_num : u16 , } impl LOG_ENTRY_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_utc : 0_u32 , size : 0_u32 , id : 0_u16 , num_logs : 0_u16 , last_log_num : 0_u16 , } ; } impl Default for LOG_ENTRY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_ENTRY_DATA { type Message = MavMessage ; const ID : u32 = 118u32 ; const NAME : & 'static str = "LOG_ENTRY" ; const EXTRA_CRC : u8 = 56u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_utc = buf . get_u32_le () ; __struct . size = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . num_logs = buf . get_u16_le () ; __struct . last_log_num = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_network) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EFI_STATUS_DATA { pub ecu_index : f32 , pub rpm : f32 , pub fuel_consumed : f32 , pub fuel_flow : f32 , pub engine_load : f32 , pub throttle_position : f32 , pub spark_dwell_time : f32 , pub barometric_pressure : f32 , pub intake_manifold_pressure : f32 , pub intake_manifold_temperature : f32 , pub cylinder_head_temperature : f32 , pub ignition_timing : f32 , pub injection_time : f32 , pub exhaust_gas_temperature : f32 , pub throttle_out : f32 , pub pt_compensation : f32 , pub health : u8 , } impl EFI_STATUS_DATA { pub const ENCODED_LEN : usize = 65usize ; pub const DEFAULT : Self = Self { ecu_index : 0.0_f32 , rpm : 0.0_f32 , fuel_consumed : 0.0_f32 , fuel_flow : 0.0_f32 , engine_load : 0.0_f32 , throttle_position : 0.0_f32 , spark_dwell_time : 0.0_f32 , barometric_pressure : 0.0_f32 , intake_manifold_pressure : 0.0_f32 , intake_manifold_temperature : 0.0_f32 , cylinder_head_temperature : 0.0_f32 , ignition_timing : 0.0_f32 , injection_time : 0.0_f32 , exhaust_gas_temperature : 0.0_f32 , throttle_out : 0.0_f32 , pt_compensation : 0.0_f32 , health : 0_u8 , } ; } impl Default for EFI_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EFI_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 225u32 ; const NAME : & 'static str = "EFI_STATUS" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 65usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ecu_index = buf . get_f32_le () ; __struct . rpm = buf . get_f32_le () ; __struct . fuel_consumed = buf . get_f32_le () ; __struct . fuel_flow = buf . get_f32_le () ; __struct . engine_load = buf . get_f32_le () ; __struct . throttle_position = buf . get_f32_le () ; __struct . spark_dwell_time = buf . get_f32_le () ; __struct . barometric_pressure = buf . get_f32_le () ; __struct . intake_manifold_pressure = buf . get_f32_le () ; __struct . intake_manifold_temperature = buf . get_f32_le () ; __struct . cylinder_head_temperature = buf . get_f32_le () ; __struct . ignition_timing = buf . get_f32_le () ; __struct . injection_time = buf . get_f32_le () ; __struct . exhaust_gas_temperature = buf . get_f32_le () ; __struct . throttle_out = buf . get_f32_le () ; __struct . pt_compensation = buf . get_f32_le () ; __struct . health = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { EVENT (EVENT_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , HEARTBEAT (HEARTBEAT_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , GPS2_RTK (GPS2_RTK_DATA) , UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA) , UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , GPS_INPUT (GPS_INPUT_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , GPS_STATUS (GPS_STATUS_DATA) , DATA_STREAM (DATA_STREAM_DATA) , ESC_STATUS (ESC_STATUS_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , CAN_FRAME (CAN_FRAME_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , WIND_COV (WIND_COV_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , VIBRATION (VIBRATION_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , STATUSTEXT (STATUSTEXT_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , VFR_HUD (VFR_HUD_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , TIMESYNC (TIMESYNC_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , POWER_STATUS (POWER_STATUS_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , ESC_INFO (ESC_INFO_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , ATTITUDE (ATTITUDE_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , ALTITUDE (ALTITUDE_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , HOME_POSITION (HOME_POSITION_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , LOG_DATA (LOG_DATA_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , SET_MODE (SET_MODE_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , HIL_STATE (HIL_STATE_DATA) , SYS_STATUS (SYS_STATUS_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , RAW_IMU (RAW_IMU_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , RAW_RPM (RAW_RPM_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , GPS2_RAW (GPS2_RAW_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , TUNNEL (TUNNEL_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , LOG_ERASE (LOG_ERASE_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , DEBUG (DEBUG_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , PING (PING_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , ODOMETRY (ODOMETRY_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , MISSION_ACK (MISSION_ACK_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , PARAM_SET (PARAM_SET_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , SCALED_IMU (SCALED_IMU_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , HIL_GPS (HIL_GPS_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , AUTH_KEY (AUTH_KEY_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , SIM_STATE (SIM_STATE_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , COMMAND_INT (COMMAND_INT_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , COLLISION (COLLISION_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , EFI_STATUS (EFI_STATUS_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , GPS_RTK (GPS_RTK_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , 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) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_STATUS) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , 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) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , 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) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , 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) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , 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) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: EVENT (..) => EVENT_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 :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_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 :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: EVENT (..) => EVENT_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 :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_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 :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { EVENT_DATA :: NAME => Ok (EVENT_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) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_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) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME => Ok (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_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) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_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 ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_STATUS_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_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 ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_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 ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_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 ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_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 ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: EVENT (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 :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: GPS2_RTK (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 :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: RAW_RPM (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 :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { EVENT_DATA :: ID => EVENT_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 , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_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 , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_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 , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_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 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 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 MotorTestOrder { MOTOR_TEST_ORDER_DEFAULT = 0 , MOTOR_TEST_ORDER_SEQUENCE = 1 , MOTOR_TEST_ORDER_BOARD = 2 , } impl MotorTestOrder { pub const DEFAULT : Self = Self :: MOTOR_TEST_ORDER_DEFAULT ; } impl Default for MotorTestOrder { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 CameraZoomType { ZOOM_TYPE_STEP = 0 , ZOOM_TYPE_CONTINUOUS = 1 , ZOOM_TYPE_RANGE = 2 , ZOOM_TYPE_FOCAL_LENGTH = 3 , } impl CameraZoomType { pub const DEFAULT : Self = Self :: ZOOM_TYPE_STEP ; } impl Default for CameraZoomType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidStatus { MAV_ODID_STATUS_UNDECLARED = 0 , MAV_ODID_STATUS_GROUND = 1 , MAV_ODID_STATUS_AIRBORNE = 2 , MAV_ODID_STATUS_EMERGENCY = 3 , MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE = 4 , } impl MavOdidStatus { pub const DEFAULT : Self = Self :: MAV_ODID_STATUS_UNDECLARED ; } impl Default for MavOdidStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 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 GpsFixType { GPS_FIX_TYPE_NO_GPS = 0 , GPS_FIX_TYPE_NO_FIX = 1 , GPS_FIX_TYPE_2D_FIX = 2 , GPS_FIX_TYPE_3D_FIX = 3 , GPS_FIX_TYPE_DGPS = 4 , GPS_FIX_TYPE_RTK_FLOAT = 5 , GPS_FIX_TYPE_RTK_FIXED = 6 , GPS_FIX_TYPE_STATIC = 7 , GPS_FIX_TYPE_PPP = 8 , } impl GpsFixType { pub const DEFAULT : Self = Self :: GPS_FIX_TYPE_NO_GPS ; } impl Default for GpsFixType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VideoStreamStatusFlags { VIDEO_STREAM_STATUS_FLAGS_RUNNING = 1 , VIDEO_STREAM_STATUS_FLAGS_THERMAL = 2 , } impl VideoStreamStatusFlags { pub const DEFAULT : Self = Self :: VIDEO_STREAM_STATUS_FLAGS_RUNNING ; } impl Default for VideoStreamStatusFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 UavcanNodeHealth { UAVCAN_NODE_HEALTH_OK = 0 , UAVCAN_NODE_HEALTH_WARNING = 1 , UAVCAN_NODE_HEALTH_ERROR = 2 , UAVCAN_NODE_HEALTH_CRITICAL = 3 , } impl UavcanNodeHealth { pub const DEFAULT : Self = Self :: UAVCAN_NODE_HEALTH_OK ; } impl Default for UavcanNodeHealth { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ParachuteAction { PARACHUTE_DISABLE = 0 , PARACHUTE_ENABLE = 1 , PARACHUTE_RELEASE = 2 , } impl ParachuteAction { pub const DEFAULT : Self = Self :: PARACHUTE_DISABLE ; } impl Default for ParachuteAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 CompMetadataType { COMP_METADATA_TYPE_GENERAL = 0 , COMP_METADATA_TYPE_PARAMETER = 1 , COMP_METADATA_TYPE_COMMANDS = 2 , COMP_METADATA_TYPE_PERIPHERALS = 3 , COMP_METADATA_TYPE_EVENTS = 4 , COMP_METADATA_TYPE_ACTUATORS = 5 , } impl CompMetadataType { pub const DEFAULT : Self = Self :: COMP_METADATA_TYPE_GENERAL ; } impl Default for CompMetadataType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UavionixAdsbRfHealth : u8 { const UAVIONIX_ADSB_RF_HEALTH_INITIALIZING = 0 ; const UAVIONIX_ADSB_RF_HEALTH_OK = 1 ; const UAVIONIX_ADSB_RF_HEALTH_FAIL_TX = 2 ; const UAVIONIX_ADSB_RF_HEALTH_FAIL_RX = 16 ; } } impl UavionixAdsbRfHealth { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_RF_HEALTH_INITIALIZING ; } impl Default for UavionixAdsbRfHealth { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 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 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 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 } } 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 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 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 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 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 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 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 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 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 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 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 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 MavGeneratorStatusFlag : u64 { const MAV_GENERATOR_STATUS_FLAG_OFF = 1 ; const MAV_GENERATOR_STATUS_FLAG_READY = 2 ; const MAV_GENERATOR_STATUS_FLAG_GENERATING = 4 ; const MAV_GENERATOR_STATUS_FLAG_CHARGING = 8 ; const MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER = 16 ; const MAV_GENERATOR_STATUS_FLAG_MAXPOWER = 32 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING = 64 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT = 128 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING = 256 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT = 512 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT = 1024 ; const MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT = 2048 ; const MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING = 4096 ; const MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING = 8192 ; const MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT = 16384 ; const MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT = 32768 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT = 65536 ; const MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT = 131072 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT = 262144 ; const MAV_GENERATOR_STATUS_FLAG_START_INHIBITED = 524288 ; const MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED = 1048576 ; const MAV_GENERATOR_STATUS_FLAG_WARMING_UP = 2097152 ; const MAV_GENERATOR_STATUS_FLAG_IDLE = 4194304 ; } } impl MavGeneratorStatusFlag { pub const DEFAULT : Self = Self :: MAV_GENERATOR_STATUS_FLAG_OFF ; } impl Default for MavGeneratorStatusFlag { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 RcType { RC_TYPE_SPEKTRUM_DSM2 = 0 , RC_TYPE_SPEKTRUM_DSMX = 1 , } impl RcType { pub const DEFAULT : Self = Self :: RC_TYPE_SPEKTRUM_DSM2 ; } impl Default for RcType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 FirmwareVersionType { FIRMWARE_VERSION_TYPE_DEV = 0 , FIRMWARE_VERSION_TYPE_ALPHA = 64 , FIRMWARE_VERSION_TYPE_BETA = 128 , FIRMWARE_VERSION_TYPE_RC = 192 , FIRMWARE_VERSION_TYPE_OFFICIAL = 255 , } impl FirmwareVersionType { pub const DEFAULT : Self = Self :: FIRMWARE_VERSION_TYPE_DEV ; } impl Default for FirmwareVersionType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 PrecisionLandMode { PRECISION_LAND_MODE_DISABLED = 0 , PRECISION_LAND_MODE_OPPORTUNISTIC = 1 , PRECISION_LAND_MODE_REQUIRED = 2 , } impl PrecisionLandMode { pub const DEFAULT : Self = Self :: PRECISION_LAND_MODE_DISABLED ; } impl Default for PrecisionLandMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDistanceSensor { MAV_DISTANCE_SENSOR_LASER = 0 , MAV_DISTANCE_SENSOR_ULTRASOUND = 1 , MAV_DISTANCE_SENSOR_INFRARED = 2 , MAV_DISTANCE_SENSOR_RADAR = 3 , MAV_DISTANCE_SENSOR_UNKNOWN = 4 , } impl MavDistanceSensor { pub const DEFAULT : Self = Self :: MAV_DISTANCE_SENSOR_LASER ; } impl Default for MavDistanceSensor { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum 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 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 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 FailureType { FAILURE_TYPE_OK = 0 , FAILURE_TYPE_OFF = 1 , FAILURE_TYPE_STUCK = 2 , FAILURE_TYPE_GARBAGE = 3 , FAILURE_TYPE_WRONG = 4 , FAILURE_TYPE_SLOW = 5 , FAILURE_TYPE_DELAYED = 6 , FAILURE_TYPE_INTERMITTENT = 7 , } impl FailureType { pub const DEFAULT : Self = Self :: FAILURE_TYPE_OK ; } impl Default for FailureType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 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 MavOdidOperatorIdType { MAV_ODID_OPERATOR_ID_TYPE_CAA = 0 , } impl MavOdidOperatorIdType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_ID_TYPE_CAA ; } impl Default for MavOdidOperatorIdType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 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 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 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 MavOdidTimeAcc { MAV_ODID_TIME_ACC_UNKNOWN = 0 , MAV_ODID_TIME_ACC_0_1_SECOND = 1 , MAV_ODID_TIME_ACC_0_2_SECOND = 2 , MAV_ODID_TIME_ACC_0_3_SECOND = 3 , MAV_ODID_TIME_ACC_0_4_SECOND = 4 , MAV_ODID_TIME_ACC_0_5_SECOND = 5 , MAV_ODID_TIME_ACC_0_6_SECOND = 6 , MAV_ODID_TIME_ACC_0_7_SECOND = 7 , MAV_ODID_TIME_ACC_0_8_SECOND = 8 , MAV_ODID_TIME_ACC_0_9_SECOND = 9 , MAV_ODID_TIME_ACC_1_0_SECOND = 10 , MAV_ODID_TIME_ACC_1_1_SECOND = 11 , MAV_ODID_TIME_ACC_1_2_SECOND = 12 , MAV_ODID_TIME_ACC_1_3_SECOND = 13 , MAV_ODID_TIME_ACC_1_4_SECOND = 14 , MAV_ODID_TIME_ACC_1_5_SECOND = 15 , } impl MavOdidTimeAcc { pub const DEFAULT : Self = Self :: MAV_ODID_TIME_ACC_UNKNOWN ; } impl Default for MavOdidTimeAcc { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 FenceMitigate { FENCE_MITIGATE_UNKNOWN = 0 , FENCE_MITIGATE_NONE = 1 , FENCE_MITIGATE_VEL_LIMIT = 2 , } impl FenceMitigate { pub const DEFAULT : Self = Self :: FENCE_MITIGATE_UNKNOWN ; } impl Default for FenceMitigate { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct 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 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 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 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 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 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 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 , 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . vtol_state as u8) ; __tmp . put_u8 (self . landed_state as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_BASIC_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub id_type : MavOdidIdType , pub ua_type : MavOdidUaType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uas_id : [u8 ; 20] , } impl OPEN_DRONE_ID_BASIC_ID_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , id_type : MavOdidIdType :: DEFAULT , ua_type : MavOdidUaType :: DEFAULT , uas_id : [0_u8 ; 20usize] , } ; } impl Default for OPEN_DRONE_ID_BASIC_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_BASIC_ID_DATA { type Message = MavMessage ; const ID : u32 = 12900u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_BASIC_ID" ; const EXTRA_CRC : u8 = 114u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . id_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidIdType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . ua_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidUaType" , value : tmp as u32 }) ? ; for v in & mut __struct . uas_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . id) ; __tmp . put_u32_le (self . event_time_boot_ms) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . destination_component) ; __tmp . put_u8 (self . destination_system) ; __tmp . put_u8 (self . log_levels) ; for val in & self . arguments { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ALTITUDE_DATA { pub time_usec : u64 , pub altitude_monotonic : f32 , pub altitude_amsl : f32 , pub altitude_local : f32 , pub altitude_relative : f32 , pub altitude_terrain : f32 , pub bottom_clearance : f32 , } impl ALTITUDE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , altitude_monotonic : 0.0_f32 , altitude_amsl : 0.0_f32 , altitude_local : 0.0_f32 , altitude_relative : 0.0_f32 , altitude_terrain : 0.0_f32 , bottom_clearance : 0.0_f32 , } ; } impl Default for ALTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ALTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 141u32 ; const NAME : & 'static str = "ALTITUDE" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . altitude_monotonic = buf . get_f32_le () ; __struct . altitude_amsl = buf . get_f32_le () ; __struct . altitude_local = buf . get_f32_le () ; __struct . altitude_relative = buf . get_f32_le () ; __struct . altitude_terrain = buf . get_f32_le () ; __struct . bottom_clearance = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_int) ; __tmp . put_i32_le (self . lon_int) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FOLLOW_TARGET_DATA { pub timestamp : u64 , pub custom_state : u64 , pub lat : i32 , pub lon : i32 , pub alt : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub attitude_q : [f32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rates : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub position_cov : [f32 ; 3] , pub est_capabilities : u8 , } impl FOLLOW_TARGET_DATA { pub const ENCODED_LEN : usize = 93usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , custom_state : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , vel : [0.0_f32 ; 3usize] , acc : [0.0_f32 ; 3usize] , attitude_q : [0.0_f32 ; 4usize] , rates : [0.0_f32 ; 3usize] , position_cov : [0.0_f32 ; 3usize] , est_capabilities : 0_u8 , } ; } impl Default for FOLLOW_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FOLLOW_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 144u32 ; const NAME : & 'static str = "FOLLOW_TARGET" ; const EXTRA_CRC : u8 = 127u8 ; const ENCODED_LEN : usize = 93usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . custom_state = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; for v in & mut __struct . vel { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . attitude_q { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . rates { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . position_cov { let val = buf . get_f32_le () ; * v = val ; } __struct . est_capabilities = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_f32_le (self . ecu_index) ; __tmp . put_f32_le (self . rpm) ; __tmp . put_f32_le (self . fuel_consumed) ; __tmp . put_f32_le (self . fuel_flow) ; __tmp . put_f32_le (self . engine_load) ; __tmp . put_f32_le (self . throttle_position) ; __tmp . put_f32_le (self . spark_dwell_time) ; __tmp . put_f32_le (self . barometric_pressure) ; __tmp . put_f32_le (self . intake_manifold_pressure) ; __tmp . put_f32_le (self . intake_manifold_temperature) ; __tmp . put_f32_le (self . cylinder_head_temperature) ; __tmp . put_f32_le (self . ignition_timing) ; __tmp . put_f32_le (self . injection_time) ; __tmp . put_f32_le (self . exhaust_gas_temperature) ; __tmp . put_f32_le (self . throttle_out) ; __tmp . put_f32_le (self . pt_compensation) ; __tmp . put_u8 (self . health) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_int) ; __tmp . put_i32_le (self . lon_int) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub time_boot_us : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub q_estimated_delay_us : u32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub v_estimated_delay_us : u32 , pub feed_forward_angular_velocity_z : f32 , pub estimator_status : EstimatorStatusFlags , pub target_system : u8 , pub target_component : u8 , pub landed_state : MavLandedState , } impl AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_us : 0_u64 , q : [0.0_f32 ; 4usize] , q_estimated_delay_us : 0_u32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , v_estimated_delay_us : 0_u32 , feed_forward_angular_velocity_z : 0.0_f32 , estimator_status : EstimatorStatusFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , landed_state : MavLandedState :: DEFAULT , } ; } impl Default for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { type Message = MavMessage ; const ID : u32 = 286u32 ; const NAME : & 'static str = "AUTOPILOT_STATE_FOR_GIMBAL_DEVICE" ; const EXTRA_CRC : u8 = 210u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_us = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . q_estimated_delay_us = buf . get_u32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . v_estimated_delay_us = buf . get_u32_le () ; __struct . feed_forward_angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . estimator_status = EstimatorStatusFlags :: from_bits (tmp & EstimatorStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EstimatorStatusFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_i32_le (self . safe_return) ; __tmp . put_i32_le (self . land) ; __tmp . put_i32_le (self . mission_next_item) ; __tmp . put_i32_le (self . mission_end) ; __tmp . put_i32_le (self . commanded_action) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_SET_CURRENT_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_SET_CURRENT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_SET_CURRENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_SET_CURRENT_DATA { type Message = MavMessage ; const ID : u32 = 41u32 ; const NAME : & 'static str = "MISSION_SET_CURRENT" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . group_mlx) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . timestamp) ; __tmp . put_u64_le (self . last_heartbeat) ; __tmp . put_u16_le (self . failed_sessions) ; __tmp . put_u16_le (self . successful_sessions) ; __tmp . put_u8 (self . signal_quality) ; __tmp . put_u8 (self . ring_pending) ; __tmp . put_u8 (self . tx_session_pending) ; __tmp . put_u8 (self . rx_session_pending) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . mavtype as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_REQUEST_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u64_le (self . time_usec) ; for val in & self . error_count { __tmp . put_u32_le (* val) ; } __tmp . put_u16_le (self . counter) ; for val in & self . failure_flags { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . index) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . connection_type as u8) ; __tmp . put_u8 (self . info) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CELLULAR_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_f32_le (self . altitude_barometric) ; __tmp . put_f32_le (self . altitude_geodetic) ; __tmp . put_f32_le (self . height) ; __tmp . put_f32_le (self . timestamp) ; __tmp . put_u16_le (self . direction) ; __tmp . put_u16_le (self . speed_horizontal) ; __tmp . put_i16_le (self . speed_vertical) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . height_reference as u8) ; __tmp . put_u8 (self . horizontal_accuracy as u8) ; __tmp . put_u8 (self . vertical_accuracy as u8) ; __tmp . put_u8 (self . barometer_accuracy as u8) ; __tmp . put_u8 (self . speed_accuracy as u8) ; __tmp . put_u8 (self . timestamp_accuracy as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . last_change_ms) ; __tmp . put_u8 (self . state) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __tmp . put_i16_le (self . temperature) ; __tmp . put_u16_le (self . humidity) ; __tmp . put_u8 (self . id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POSITION_TARGET_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } 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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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_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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 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) ; # [allow (clippy :: absurd_extreme_comparisons)] # [allow (unused_comparisons)] if __tmp . remaining () < Self :: ENCODED_LEN { panic ! ("buffer is too small (need {} bytes, but got {})" , Self :: ENCODED_LEN , __tmp . remaining () ,) } __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 (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , POWER_STATUS (POWER_STATUS_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , VIBRATION (VIBRATION_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , EVENT (EVENT_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , ALTITUDE (ALTITUDE_DATA) , PARAM_SET (PARAM_SET_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , DATA_STREAM (DATA_STREAM_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , HIL_GPS (HIL_GPS_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , ATTITUDE (ATTITUDE_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , HIL_STATE (HIL_STATE_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , DEBUG (DEBUG_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , HOME_POSITION (HOME_POSITION_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , SET_MODE (SET_MODE_DATA) , SYS_STATUS (SYS_STATUS_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , VFR_HUD (VFR_HUD_DATA) , EFI_STATUS (EFI_STATUS_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , PING (PING_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , CAN_FRAME (CAN_FRAME_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , ODOMETRY (ODOMETRY_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , GPS_STATUS (GPS_STATUS_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , RAW_RPM (RAW_RPM_DATA) , COMMAND_INT (COMMAND_INT_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , RAW_IMU (RAW_IMU_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , WIND_COV (WIND_COV_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , TUNNEL (TUNNEL_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , TIMESYNC (TIMESYNC_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , SIM_STATE (SIM_STATE_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , HEARTBEAT (HEARTBEAT_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , GPS_INPUT (GPS_INPUT_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , SCALED_IMU (SCALED_IMU_DATA) , MISSION_ACK (MISSION_ACK_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , ESC_STATUS (ESC_STATUS_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , GPS2_RAW (GPS2_RAW_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , ESC_INFO (ESC_INFO_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , AUTH_KEY (AUTH_KEY_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , STATUSTEXT (STATUSTEXT_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA) , LOG_ERASE (LOG_ERASE_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , GPS2_RTK (GPS2_RTK_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , COLLISION (COLLISION_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , GPS_RTK (GPS_RTK_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , LOG_DATA (LOG_DATA_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , 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) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , 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_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , 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) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_CFG) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , 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) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , 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) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_STATUS) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_DYNAMIC) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , 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) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , 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) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME => Ok (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , UAVIONIX_ADSB_OUT_CFG_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_CFG_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_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) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , 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 ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_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_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_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 ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_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 ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_STATUS_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_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 ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_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 ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_CFG (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (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 :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_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 , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , _ => { 0 } , } } }
 
\ No newline at end of file diff --git a/src/mavlink_bindgen/parser.rs.html b/src/mavlink_bindgen/parser.rs.html index bc5b90fb3b..fdb4e42cc7 100644 --- a/src/mavlink_bindgen/parser.rs.html +++ b/src/mavlink_bindgen/parser.rs.html @@ -1490,9 +1490,6 @@ 1490 1491 1492 -1493 -1494 -1495
use crc_any::CRCu16;
 use std::cmp::Ordering;
 use std::collections::hash_map::Entry;
@@ -1860,7 +1857,7 @@
 
         #[cfg(feature = "emit-description")]
         let description = if let Some(description) = self.description.as_ref() {
-            let desc = format!("{description}");
+            let desc = description.to_string();
             quote!(#[doc = #desc])
         } else {
             quote!()
@@ -2496,7 +2493,7 @@
     Extensions,
 }
 
-fn identify_element(s: &[u8]) -> Option<MavXmlElement> {
+const fn identify_element(s: &[u8]) -> Option<MavXmlElement> {
     use self::MavXmlElement::*;
     match s {
         b"version" => Some(Version),
@@ -2561,7 +2558,7 @@
     let mut events: Vec<Result<Event, quick_xml::Error>> = Vec::new();
     let file = File::open(&in_path).map_err(|e| BindGenError::CouldNotReadDefinitionFile {
         source: e,
-        path: in_path.to_path_buf(),
+        path: in_path.clone(),
     })?;
     let mut reader = Reader::from_reader(BufReader::new(file));
     reader.config_mut().trim_text(true);
@@ -2583,14 +2580,11 @@
     for e in events {
         match e {
             Ok(Event::Start(bytes)) => {
-                let id = match identify_element(bytes.name().into_inner()) {
-                    None => {
-                        panic!(
-                            "unexpected element {:?}",
-                            String::from_utf8_lossy(bytes.name().into_inner())
-                        );
-                    }
-                    Some(kind) => kind,
+                let Some(id) = identify_element(bytes.name().into_inner()) else {
+                    panic!(
+                        "unexpected element {:?}",
+                        String::from_utf8_lossy(bytes.name().into_inner())
+                    );
                 };
 
                 assert!(
@@ -2604,20 +2598,20 @@
                         is_in_extension = true;
                     }
                     MavXmlElement::Message => {
-                        message = Default::default();
+                        message = MavMessage::default();
                     }
                     MavXmlElement::Field => {
-                        field = Default::default();
+                        field = MavField::default();
                         field.is_extension = is_in_extension;
                     }
                     MavXmlElement::Enum => {
-                        mavenum = Default::default();
+                        mavenum = MavEnum::default();
                     }
                     MavXmlElement::Entry => {
-                        entry = Default::default();
+                        entry = MavEnumEntry::default();
                     }
                     MavXmlElement::Include => {
-                        include = Default::default();
+                        include = PathBuf::default();
                     }
                     MavXmlElement::Param => {
                         paramid = None;
@@ -2732,7 +2726,7 @@
                             if entry.params.is_none() {
                                 entry.params = Some(vec![]);
                             }
-                            if let b"index" = attr.key.into_inner() {
+                            if attr.key.into_inner() == b"index" {
                                 let s = std::str::from_utf8(&attr.value).unwrap();
                                 paramid = Some(s.parse::<usize>().unwrap());
                             }
@@ -2746,7 +2740,7 @@
                     is_in_extension = true;
                 }
                 b"entry" => {
-                    entry = Default::default();
+                    entry = MavEnumEntry::default();
                     for attr in bytes.attributes() {
                         let attr = attr.unwrap();
                         match attr.key.into_inner() {
@@ -2806,7 +2800,7 @@
                         eprintln!("TODO: deprecated {s:?}");
                     }
                     data => {
-                        panic!("unexpected text data {:?} reading {:?}", data, s);
+                        panic!("unexpected text data {data:?} reading {s:?}");
                     }
                 }
             }
@@ -2984,7 +2978,7 @@
                 }
                 !self.extension_filter.is_in
             }
-            Err(error) => panic!("Failed to filter XML: {}", error),
+            Err(error) => panic!("Failed to filter XML: {error}"),
         }
     }
 }