#pragma once
// MESSAGE EFI_STATUS PACKING

#define MAVLINK_MSG_ID_EFI_STATUS 225

MAVPACKED(
typedef struct __mavlink_efi_status_t {
 float ecu_index; /*<  ECU index*/
 float rpm; /*<  RPM*/
 float fuel_consumed; /*< [g] Fuel consumed*/
 float fuel_flow; /*< [g/min] Fuel flow rate*/
 float engine_load; /*< [%] Engine load*/
 float throttle_position; /*< [%] Throttle position*/
 float spark_dwell_time; /*< [ms] Spark dwell time*/
 float barometric_pressure; /*< [kPa] Barometric pressure*/
 float intake_manifold_pressure; /*< [kPa] Intake manifold pressure(*/
 float intake_manifold_temperature; /*< [degC] Intake manifold temperature*/
 float cylinder_head_temperature; /*< [degC] Cylinder head temperature*/
 float ignition_timing; /*< [deg] Ignition timing (Crank angle degrees)*/
 float injection_time; /*< [ms] Injection time*/
 float exhaust_gas_temperature; /*< [degC] Exhaust gas temperature*/
 float throttle_out; /*< [%] Output throttle*/
 float pt_compensation; /*<  Pressure/temperature compensation*/
 uint8_t health; /*<  EFI health status*/
}) mavlink_efi_status_t;

#define MAVLINK_MSG_ID_EFI_STATUS_LEN 65
#define MAVLINK_MSG_ID_EFI_STATUS_MIN_LEN 65
#define MAVLINK_MSG_ID_225_LEN 65
#define MAVLINK_MSG_ID_225_MIN_LEN 65

#define MAVLINK_MSG_ID_EFI_STATUS_CRC 208
#define MAVLINK_MSG_ID_225_CRC 208



#if MAVLINK_COMMAND_24BIT
#define MAVLINK_MESSAGE_INFO_EFI_STATUS { \
    225, \
    "EFI_STATUS", \
    17, \
    {  { "health", NULL, MAVLINK_TYPE_UINT8_T, 0, 64, offsetof(mavlink_efi_status_t, health) }, \
         { "ecu_index", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_efi_status_t, ecu_index) }, \
         { "rpm", NULL, MAVLINK_TYPE_FLOAT, 0, 4, offsetof(mavlink_efi_status_t, rpm) }, \
         { "fuel_consumed", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_efi_status_t, fuel_consumed) }, \
         { "fuel_flow", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_efi_status_t, fuel_flow) }, \
         { "engine_load", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_efi_status_t, engine_load) }, \
         { "throttle_position", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_efi_status_t, throttle_position) }, \
         { "spark_dwell_time", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_efi_status_t, spark_dwell_time) }, \
         { "barometric_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_efi_status_t, barometric_pressure) }, \
         { "intake_manifold_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_efi_status_t, intake_manifold_pressure) }, \
         { "intake_manifold_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_efi_status_t, intake_manifold_temperature) }, \
         { "cylinder_head_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_efi_status_t, cylinder_head_temperature) }, \
         { "ignition_timing", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_efi_status_t, ignition_timing) }, \
         { "injection_time", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_efi_status_t, injection_time) }, \
         { "exhaust_gas_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_efi_status_t, exhaust_gas_temperature) }, \
         { "throttle_out", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_efi_status_t, throttle_out) }, \
         { "pt_compensation", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_efi_status_t, pt_compensation) }, \
         } \
}
#else
#define MAVLINK_MESSAGE_INFO_EFI_STATUS { \
    "EFI_STATUS", \
    17, \
    {  { "health", NULL, MAVLINK_TYPE_UINT8_T, 0, 64, offsetof(mavlink_efi_status_t, health) }, \
         { "ecu_index", NULL, MAVLINK_TYPE_FLOAT, 0, 0, offsetof(mavlink_efi_status_t, ecu_index) }, \
         { "rpm", NULL, MAVLINK_TYPE_FLOAT, 0, 4, offsetof(mavlink_efi_status_t, rpm) }, \
         { "fuel_consumed", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_efi_status_t, fuel_consumed) }, \
         { "fuel_flow", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_efi_status_t, fuel_flow) }, \
         { "engine_load", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_efi_status_t, engine_load) }, \
         { "throttle_position", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_efi_status_t, throttle_position) }, \
         { "spark_dwell_time", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_efi_status_t, spark_dwell_time) }, \
         { "barometric_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_efi_status_t, barometric_pressure) }, \
         { "intake_manifold_pressure", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_efi_status_t, intake_manifold_pressure) }, \
         { "intake_manifold_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_efi_status_t, intake_manifold_temperature) }, \
         { "cylinder_head_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_efi_status_t, cylinder_head_temperature) }, \
         { "ignition_timing", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_efi_status_t, ignition_timing) }, \
         { "injection_time", NULL, MAVLINK_TYPE_FLOAT, 0, 48, offsetof(mavlink_efi_status_t, injection_time) }, \
         { "exhaust_gas_temperature", NULL, MAVLINK_TYPE_FLOAT, 0, 52, offsetof(mavlink_efi_status_t, exhaust_gas_temperature) }, \
         { "throttle_out", NULL, MAVLINK_TYPE_FLOAT, 0, 56, offsetof(mavlink_efi_status_t, throttle_out) }, \
         { "pt_compensation", NULL, MAVLINK_TYPE_FLOAT, 0, 60, offsetof(mavlink_efi_status_t, pt_compensation) }, \
         } \
}
#endif

/**
 * @brief Pack a efi_status message
 * @param system_id ID of this system
 * @param component_id ID of this component (e.g. 200 for IMU)
 * @param msg The MAVLink message to compress the data into
 *
 * @param health  EFI health status
 * @param ecu_index  ECU index
 * @param rpm  RPM
 * @param fuel_consumed [g] Fuel consumed
 * @param fuel_flow [g/min] Fuel flow rate
 * @param engine_load [%] Engine load
 * @param throttle_position [%] Throttle position
 * @param spark_dwell_time [ms] Spark dwell time
 * @param barometric_pressure [kPa] Barometric pressure
 * @param intake_manifold_pressure [kPa] Intake manifold pressure(
 * @param intake_manifold_temperature [degC] Intake manifold temperature
 * @param cylinder_head_temperature [degC] Cylinder head temperature
 * @param ignition_timing [deg] Ignition timing (Crank angle degrees)
 * @param injection_time [ms] Injection time
 * @param exhaust_gas_temperature [degC] Exhaust gas temperature
 * @param throttle_out [%] Output throttle
 * @param pt_compensation  Pressure/temperature compensation
 * @return length of the message in bytes (excluding serial stream start sign)
 */
static inline uint16_t mavlink_msg_efi_status_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
                               uint8_t health, float ecu_index, float rpm, float fuel_consumed, float fuel_flow, float engine_load, float throttle_position, float spark_dwell_time, float barometric_pressure, float intake_manifold_pressure, float intake_manifold_temperature, float cylinder_head_temperature, float ignition_timing, float injection_time, float exhaust_gas_temperature, float throttle_out, float pt_compensation)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
    char buf[MAVLINK_MSG_ID_EFI_STATUS_LEN];
    _mav_put_float(buf, 0, ecu_index);
    _mav_put_float(buf, 4, rpm);
    _mav_put_float(buf, 8, fuel_consumed);
    _mav_put_float(buf, 12, fuel_flow);
    _mav_put_float(buf, 16, engine_load);
    _mav_put_float(buf, 20, throttle_position);
    _mav_put_float(buf, 24, spark_dwell_time);
    _mav_put_float(buf, 28, barometric_pressure);
    _mav_put_float(buf, 32, intake_manifold_pressure);
    _mav_put_float(buf, 36, intake_manifold_temperature);
    _mav_put_float(buf, 40, cylinder_head_temperature);
    _mav_put_float(buf, 44, ignition_timing);
    _mav_put_float(buf, 48, injection_time);
    _mav_put_float(buf, 52, exhaust_gas_temperature);
    _mav_put_float(buf, 56, throttle_out);
    _mav_put_float(buf, 60, pt_compensation);
    _mav_put_uint8_t(buf, 64, health);

        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_EFI_STATUS_LEN);
#else
    mavlink_efi_status_t packet;
    packet.ecu_index = ecu_index;
    packet.rpm = rpm;
    packet.fuel_consumed = fuel_consumed;
    packet.fuel_flow = fuel_flow;
    packet.engine_load = engine_load;
    packet.throttle_position = throttle_position;
    packet.spark_dwell_time = spark_dwell_time;
    packet.barometric_pressure = barometric_pressure;
    packet.intake_manifold_pressure = intake_manifold_pressure;
    packet.intake_manifold_temperature = intake_manifold_temperature;
    packet.cylinder_head_temperature = cylinder_head_temperature;
    packet.ignition_timing = ignition_timing;
    packet.injection_time = injection_time;
    packet.exhaust_gas_temperature = exhaust_gas_temperature;
    packet.throttle_out = throttle_out;
    packet.pt_compensation = pt_compensation;
    packet.health = health;

        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_EFI_STATUS_LEN);
#endif

    msg->msgid = MAVLINK_MSG_ID_EFI_STATUS;
    return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_EFI_STATUS_MIN_LEN, MAVLINK_MSG_ID_EFI_STATUS_LEN, MAVLINK_MSG_ID_EFI_STATUS_CRC);
}

/**
 * @brief Pack a efi_status message on a channel
 * @param system_id ID of this system
 * @param component_id ID of this component (e.g. 200 for IMU)
 * @param chan The MAVLink channel this message will be sent over
 * @param msg The MAVLink message to compress the data into
 * @param health  EFI health status
 * @param ecu_index  ECU index
 * @param rpm  RPM
 * @param fuel_consumed [g] Fuel consumed
 * @param fuel_flow [g/min] Fuel flow rate
 * @param engine_load [%] Engine load
 * @param throttle_position [%] Throttle position
 * @param spark_dwell_time [ms] Spark dwell time
 * @param barometric_pressure [kPa] Barometric pressure
 * @param intake_manifold_pressure [kPa] Intake manifold pressure(
 * @param intake_manifold_temperature [degC] Intake manifold temperature
 * @param cylinder_head_temperature [degC] Cylinder head temperature
 * @param ignition_timing [deg] Ignition timing (Crank angle degrees)
 * @param injection_time [ms] Injection time
 * @param exhaust_gas_temperature [degC] Exhaust gas temperature
 * @param throttle_out [%] Output throttle
 * @param pt_compensation  Pressure/temperature compensation
 * @return length of the message in bytes (excluding serial stream start sign)
 */
static inline uint16_t mavlink_msg_efi_status_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
                               mavlink_message_t* msg,
                                   uint8_t health,float ecu_index,float rpm,float fuel_consumed,float fuel_flow,float engine_load,float throttle_position,float spark_dwell_time,float barometric_pressure,float intake_manifold_pressure,float intake_manifold_temperature,float cylinder_head_temperature,float ignition_timing,float injection_time,float exhaust_gas_temperature,float throttle_out,float pt_compensation)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
    char buf[MAVLINK_MSG_ID_EFI_STATUS_LEN];
    _mav_put_float(buf, 0, ecu_index);
    _mav_put_float(buf, 4, rpm);
    _mav_put_float(buf, 8, fuel_consumed);
    _mav_put_float(buf, 12, fuel_flow);
    _mav_put_float(buf, 16, engine_load);
    _mav_put_float(buf, 20, throttle_position);
    _mav_put_float(buf, 24, spark_dwell_time);
    _mav_put_float(buf, 28, barometric_pressure);
    _mav_put_float(buf, 32, intake_manifold_pressure);
    _mav_put_float(buf, 36, intake_manifold_temperature);
    _mav_put_float(buf, 40, cylinder_head_temperature);
    _mav_put_float(buf, 44, ignition_timing);
    _mav_put_float(buf, 48, injection_time);
    _mav_put_float(buf, 52, exhaust_gas_temperature);
    _mav_put_float(buf, 56, throttle_out);
    _mav_put_float(buf, 60, pt_compensation);
    _mav_put_uint8_t(buf, 64, health);

        memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_EFI_STATUS_LEN);
#else
    mavlink_efi_status_t packet;
    packet.ecu_index = ecu_index;
    packet.rpm = rpm;
    packet.fuel_consumed = fuel_consumed;
    packet.fuel_flow = fuel_flow;
    packet.engine_load = engine_load;
    packet.throttle_position = throttle_position;
    packet.spark_dwell_time = spark_dwell_time;
    packet.barometric_pressure = barometric_pressure;
    packet.intake_manifold_pressure = intake_manifold_pressure;
    packet.intake_manifold_temperature = intake_manifold_temperature;
    packet.cylinder_head_temperature = cylinder_head_temperature;
    packet.ignition_timing = ignition_timing;
    packet.injection_time = injection_time;
    packet.exhaust_gas_temperature = exhaust_gas_temperature;
    packet.throttle_out = throttle_out;
    packet.pt_compensation = pt_compensation;
    packet.health = health;

        memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_EFI_STATUS_LEN);
#endif

    msg->msgid = MAVLINK_MSG_ID_EFI_STATUS;
    return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_EFI_STATUS_MIN_LEN, MAVLINK_MSG_ID_EFI_STATUS_LEN, MAVLINK_MSG_ID_EFI_STATUS_CRC);
}

/**
 * @brief Encode a efi_status struct
 *
 * @param system_id ID of this system
 * @param component_id ID of this component (e.g. 200 for IMU)
 * @param msg The MAVLink message to compress the data into
 * @param efi_status C-struct to read the message contents from
 */
static inline uint16_t mavlink_msg_efi_status_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_efi_status_t* efi_status)
{
    return mavlink_msg_efi_status_pack(system_id, component_id, msg, efi_status->health, efi_status->ecu_index, efi_status->rpm, efi_status->fuel_consumed, efi_status->fuel_flow, efi_status->engine_load, efi_status->throttle_position, efi_status->spark_dwell_time, efi_status->barometric_pressure, efi_status->intake_manifold_pressure, efi_status->intake_manifold_temperature, efi_status->cylinder_head_temperature, efi_status->ignition_timing, efi_status->injection_time, efi_status->exhaust_gas_temperature, efi_status->throttle_out, efi_status->pt_compensation);
}

/**
 * @brief Encode a efi_status struct on a channel
 *
 * @param system_id ID of this system
 * @param component_id ID of this component (e.g. 200 for IMU)
 * @param chan The MAVLink channel this message will be sent over
 * @param msg The MAVLink message to compress the data into
 * @param efi_status C-struct to read the message contents from
 */
static inline uint16_t mavlink_msg_efi_status_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_efi_status_t* efi_status)
{
    return mavlink_msg_efi_status_pack_chan(system_id, component_id, chan, msg, efi_status->health, efi_status->ecu_index, efi_status->rpm, efi_status->fuel_consumed, efi_status->fuel_flow, efi_status->engine_load, efi_status->throttle_position, efi_status->spark_dwell_time, efi_status->barometric_pressure, efi_status->intake_manifold_pressure, efi_status->intake_manifold_temperature, efi_status->cylinder_head_temperature, efi_status->ignition_timing, efi_status->injection_time, efi_status->exhaust_gas_temperature, efi_status->throttle_out, efi_status->pt_compensation);
}

/**
 * @brief Send a efi_status message
 * @param chan MAVLink channel to send the message
 *
 * @param health  EFI health status
 * @param ecu_index  ECU index
 * @param rpm  RPM
 * @param fuel_consumed [g] Fuel consumed
 * @param fuel_flow [g/min] Fuel flow rate
 * @param engine_load [%] Engine load
 * @param throttle_position [%] Throttle position
 * @param spark_dwell_time [ms] Spark dwell time
 * @param barometric_pressure [kPa] Barometric pressure
 * @param intake_manifold_pressure [kPa] Intake manifold pressure(
 * @param intake_manifold_temperature [degC] Intake manifold temperature
 * @param cylinder_head_temperature [degC] Cylinder head temperature
 * @param ignition_timing [deg] Ignition timing (Crank angle degrees)
 * @param injection_time [ms] Injection time
 * @param exhaust_gas_temperature [degC] Exhaust gas temperature
 * @param throttle_out [%] Output throttle
 * @param pt_compensation  Pressure/temperature compensation
 */
#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS

static inline void mavlink_msg_efi_status_send(mavlink_channel_t chan, uint8_t health, float ecu_index, float rpm, float fuel_consumed, float fuel_flow, float engine_load, float throttle_position, float spark_dwell_time, float barometric_pressure, float intake_manifold_pressure, float intake_manifold_temperature, float cylinder_head_temperature, float ignition_timing, float injection_time, float exhaust_gas_temperature, float throttle_out, float pt_compensation)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
    char buf[MAVLINK_MSG_ID_EFI_STATUS_LEN];
    _mav_put_float(buf, 0, ecu_index);
    _mav_put_float(buf, 4, rpm);
    _mav_put_float(buf, 8, fuel_consumed);
    _mav_put_float(buf, 12, fuel_flow);
    _mav_put_float(buf, 16, engine_load);
    _mav_put_float(buf, 20, throttle_position);
    _mav_put_float(buf, 24, spark_dwell_time);
    _mav_put_float(buf, 28, barometric_pressure);
    _mav_put_float(buf, 32, intake_manifold_pressure);
    _mav_put_float(buf, 36, intake_manifold_temperature);
    _mav_put_float(buf, 40, cylinder_head_temperature);
    _mav_put_float(buf, 44, ignition_timing);
    _mav_put_float(buf, 48, injection_time);
    _mav_put_float(buf, 52, exhaust_gas_temperature);
    _mav_put_float(buf, 56, throttle_out);
    _mav_put_float(buf, 60, pt_compensation);
    _mav_put_uint8_t(buf, 64, health);

    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_EFI_STATUS, buf, MAVLINK_MSG_ID_EFI_STATUS_MIN_LEN, MAVLINK_MSG_ID_EFI_STATUS_LEN, MAVLINK_MSG_ID_EFI_STATUS_CRC);
#else
    mavlink_efi_status_t packet;
    packet.ecu_index = ecu_index;
    packet.rpm = rpm;
    packet.fuel_consumed = fuel_consumed;
    packet.fuel_flow = fuel_flow;
    packet.engine_load = engine_load;
    packet.throttle_position = throttle_position;
    packet.spark_dwell_time = spark_dwell_time;
    packet.barometric_pressure = barometric_pressure;
    packet.intake_manifold_pressure = intake_manifold_pressure;
    packet.intake_manifold_temperature = intake_manifold_temperature;
    packet.cylinder_head_temperature = cylinder_head_temperature;
    packet.ignition_timing = ignition_timing;
    packet.injection_time = injection_time;
    packet.exhaust_gas_temperature = exhaust_gas_temperature;
    packet.throttle_out = throttle_out;
    packet.pt_compensation = pt_compensation;
    packet.health = health;

    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_EFI_STATUS, (const char *)&packet, MAVLINK_MSG_ID_EFI_STATUS_MIN_LEN, MAVLINK_MSG_ID_EFI_STATUS_LEN, MAVLINK_MSG_ID_EFI_STATUS_CRC);
#endif
}

/**
 * @brief Send a efi_status message
 * @param chan MAVLink channel to send the message
 * @param struct The MAVLink struct to serialize
 */
static inline void mavlink_msg_efi_status_send_struct(mavlink_channel_t chan, const mavlink_efi_status_t* efi_status)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
    mavlink_msg_efi_status_send(chan, efi_status->health, efi_status->ecu_index, efi_status->rpm, efi_status->fuel_consumed, efi_status->fuel_flow, efi_status->engine_load, efi_status->throttle_position, efi_status->spark_dwell_time, efi_status->barometric_pressure, efi_status->intake_manifold_pressure, efi_status->intake_manifold_temperature, efi_status->cylinder_head_temperature, efi_status->ignition_timing, efi_status->injection_time, efi_status->exhaust_gas_temperature, efi_status->throttle_out, efi_status->pt_compensation);
#else
    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_EFI_STATUS, (const char *)efi_status, MAVLINK_MSG_ID_EFI_STATUS_MIN_LEN, MAVLINK_MSG_ID_EFI_STATUS_LEN, MAVLINK_MSG_ID_EFI_STATUS_CRC);
#endif
}

#if MAVLINK_MSG_ID_EFI_STATUS_LEN <= MAVLINK_MAX_PAYLOAD_LEN
/*
  This varient of _send() can be used to save stack space by re-using
  memory from the receive buffer.  The caller provides a
  mavlink_message_t which is the size of a full mavlink message. This
  is usually the receive buffer for the channel, and allows a reply to an
  incoming message with minimum stack space usage.
 */
static inline void mavlink_msg_efi_status_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan,  uint8_t health, float ecu_index, float rpm, float fuel_consumed, float fuel_flow, float engine_load, float throttle_position, float spark_dwell_time, float barometric_pressure, float intake_manifold_pressure, float intake_manifold_temperature, float cylinder_head_temperature, float ignition_timing, float injection_time, float exhaust_gas_temperature, float throttle_out, float pt_compensation)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
    char *buf = (char *)msgbuf;
    _mav_put_float(buf, 0, ecu_index);
    _mav_put_float(buf, 4, rpm);
    _mav_put_float(buf, 8, fuel_consumed);
    _mav_put_float(buf, 12, fuel_flow);
    _mav_put_float(buf, 16, engine_load);
    _mav_put_float(buf, 20, throttle_position);
    _mav_put_float(buf, 24, spark_dwell_time);
    _mav_put_float(buf, 28, barometric_pressure);
    _mav_put_float(buf, 32, intake_manifold_pressure);
    _mav_put_float(buf, 36, intake_manifold_temperature);
    _mav_put_float(buf, 40, cylinder_head_temperature);
    _mav_put_float(buf, 44, ignition_timing);
    _mav_put_float(buf, 48, injection_time);
    _mav_put_float(buf, 52, exhaust_gas_temperature);
    _mav_put_float(buf, 56, throttle_out);
    _mav_put_float(buf, 60, pt_compensation);
    _mav_put_uint8_t(buf, 64, health);

    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_EFI_STATUS, buf, MAVLINK_MSG_ID_EFI_STATUS_MIN_LEN, MAVLINK_MSG_ID_EFI_STATUS_LEN, MAVLINK_MSG_ID_EFI_STATUS_CRC);
#else
    mavlink_efi_status_t *packet = (mavlink_efi_status_t *)msgbuf;
    packet->ecu_index = ecu_index;
    packet->rpm = rpm;
    packet->fuel_consumed = fuel_consumed;
    packet->fuel_flow = fuel_flow;
    packet->engine_load = engine_load;
    packet->throttle_position = throttle_position;
    packet->spark_dwell_time = spark_dwell_time;
    packet->barometric_pressure = barometric_pressure;
    packet->intake_manifold_pressure = intake_manifold_pressure;
    packet->intake_manifold_temperature = intake_manifold_temperature;
    packet->cylinder_head_temperature = cylinder_head_temperature;
    packet->ignition_timing = ignition_timing;
    packet->injection_time = injection_time;
    packet->exhaust_gas_temperature = exhaust_gas_temperature;
    packet->throttle_out = throttle_out;
    packet->pt_compensation = pt_compensation;
    packet->health = health;

    _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_EFI_STATUS, (const char *)packet, MAVLINK_MSG_ID_EFI_STATUS_MIN_LEN, MAVLINK_MSG_ID_EFI_STATUS_LEN, MAVLINK_MSG_ID_EFI_STATUS_CRC);
#endif
}
#endif

#endif

// MESSAGE EFI_STATUS UNPACKING


/**
 * @brief Get field health from efi_status message
 *
 * @return  EFI health status
 */
static inline uint8_t mavlink_msg_efi_status_get_health(const mavlink_message_t* msg)
{
    return _MAV_RETURN_uint8_t(msg,  64);
}

/**
 * @brief Get field ecu_index from efi_status message
 *
 * @return  ECU index
 */
static inline float mavlink_msg_efi_status_get_ecu_index(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  0);
}

/**
 * @brief Get field rpm from efi_status message
 *
 * @return  RPM
 */
static inline float mavlink_msg_efi_status_get_rpm(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  4);
}

/**
 * @brief Get field fuel_consumed from efi_status message
 *
 * @return [g] Fuel consumed
 */
static inline float mavlink_msg_efi_status_get_fuel_consumed(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  8);
}

/**
 * @brief Get field fuel_flow from efi_status message
 *
 * @return [g/min] Fuel flow rate
 */
static inline float mavlink_msg_efi_status_get_fuel_flow(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  12);
}

/**
 * @brief Get field engine_load from efi_status message
 *
 * @return [%] Engine load
 */
static inline float mavlink_msg_efi_status_get_engine_load(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  16);
}

/**
 * @brief Get field throttle_position from efi_status message
 *
 * @return [%] Throttle position
 */
static inline float mavlink_msg_efi_status_get_throttle_position(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  20);
}

/**
 * @brief Get field spark_dwell_time from efi_status message
 *
 * @return [ms] Spark dwell time
 */
static inline float mavlink_msg_efi_status_get_spark_dwell_time(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  24);
}

/**
 * @brief Get field barometric_pressure from efi_status message
 *
 * @return [kPa] Barometric pressure
 */
static inline float mavlink_msg_efi_status_get_barometric_pressure(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  28);
}

/**
 * @brief Get field intake_manifold_pressure from efi_status message
 *
 * @return [kPa] Intake manifold pressure(
 */
static inline float mavlink_msg_efi_status_get_intake_manifold_pressure(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  32);
}

/**
 * @brief Get field intake_manifold_temperature from efi_status message
 *
 * @return [degC] Intake manifold temperature
 */
static inline float mavlink_msg_efi_status_get_intake_manifold_temperature(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  36);
}

/**
 * @brief Get field cylinder_head_temperature from efi_status message
 *
 * @return [degC] Cylinder head temperature
 */
static inline float mavlink_msg_efi_status_get_cylinder_head_temperature(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  40);
}

/**
 * @brief Get field ignition_timing from efi_status message
 *
 * @return [deg] Ignition timing (Crank angle degrees)
 */
static inline float mavlink_msg_efi_status_get_ignition_timing(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  44);
}

/**
 * @brief Get field injection_time from efi_status message
 *
 * @return [ms] Injection time
 */
static inline float mavlink_msg_efi_status_get_injection_time(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  48);
}

/**
 * @brief Get field exhaust_gas_temperature from efi_status message
 *
 * @return [degC] Exhaust gas temperature
 */
static inline float mavlink_msg_efi_status_get_exhaust_gas_temperature(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  52);
}

/**
 * @brief Get field throttle_out from efi_status message
 *
 * @return [%] Output throttle
 */
static inline float mavlink_msg_efi_status_get_throttle_out(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  56);
}

/**
 * @brief Get field pt_compensation from efi_status message
 *
 * @return  Pressure/temperature compensation
 */
static inline float mavlink_msg_efi_status_get_pt_compensation(const mavlink_message_t* msg)
{
    return _MAV_RETURN_float(msg,  60);
}

/**
 * @brief Decode a efi_status message into a struct
 *
 * @param msg The message to decode
 * @param efi_status C-struct to decode the message contents into
 */
static inline void mavlink_msg_efi_status_decode(const mavlink_message_t* msg, mavlink_efi_status_t* efi_status)
{
#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
    efi_status->ecu_index = mavlink_msg_efi_status_get_ecu_index(msg);
    efi_status->rpm = mavlink_msg_efi_status_get_rpm(msg);
    efi_status->fuel_consumed = mavlink_msg_efi_status_get_fuel_consumed(msg);
    efi_status->fuel_flow = mavlink_msg_efi_status_get_fuel_flow(msg);
    efi_status->engine_load = mavlink_msg_efi_status_get_engine_load(msg);
    efi_status->throttle_position = mavlink_msg_efi_status_get_throttle_position(msg);
    efi_status->spark_dwell_time = mavlink_msg_efi_status_get_spark_dwell_time(msg);
    efi_status->barometric_pressure = mavlink_msg_efi_status_get_barometric_pressure(msg);
    efi_status->intake_manifold_pressure = mavlink_msg_efi_status_get_intake_manifold_pressure(msg);
    efi_status->intake_manifold_temperature = mavlink_msg_efi_status_get_intake_manifold_temperature(msg);
    efi_status->cylinder_head_temperature = mavlink_msg_efi_status_get_cylinder_head_temperature(msg);
    efi_status->ignition_timing = mavlink_msg_efi_status_get_ignition_timing(msg);
    efi_status->injection_time = mavlink_msg_efi_status_get_injection_time(msg);
    efi_status->exhaust_gas_temperature = mavlink_msg_efi_status_get_exhaust_gas_temperature(msg);
    efi_status->throttle_out = mavlink_msg_efi_status_get_throttle_out(msg);
    efi_status->pt_compensation = mavlink_msg_efi_status_get_pt_compensation(msg);
    efi_status->health = mavlink_msg_efi_status_get_health(msg);
#else
        uint8_t len = msg->len < MAVLINK_MSG_ID_EFI_STATUS_LEN? msg->len : MAVLINK_MSG_ID_EFI_STATUS_LEN;
        memset(efi_status, 0, MAVLINK_MSG_ID_EFI_STATUS_LEN);
    memcpy(efi_status, _MAV_PAYLOAD(msg), len);
#endif
}
