/* auto-generated, do not modify */
#pragma once
#include <fwupd-common.h>
typedef enum {
    FU_EBITDO_PKT_TYPE_USER_CMD = 0x00,
    FU_EBITDO_PKT_TYPE_USER_DATA = 0x01,
    FU_EBITDO_PKT_TYPE_MID_CMD = 0x02,
} FuEbitdoPktType;
typedef enum {
    FU_EBITDO_PKT_CMD_FW_UPDATE_DATA = 0x00,
    FU_EBITDO_PKT_CMD_FW_UPDATE_HEADER = 0x01,
    FU_EBITDO_PKT_CMD_FW_UPDATE_OK = 0x02,
    FU_EBITDO_PKT_CMD_FW_UPDATE_ERROR = 0x03,
    FU_EBITDO_PKT_CMD_FW_GET_VERSION = 0x04,
    FU_EBITDO_PKT_CMD_FW_SET_VERSION = 0x05,
    FU_EBITDO_PKT_CMD_FW_SET_ENCODE_ID = 0x06,
    FU_EBITDO_PKT_CMD_ACK = 0x14,
    FU_EBITDO_PKT_CMD_NAK = 0x15,
    FU_EBITDO_PKT_CMD_UPDATE_FIRMWARE_DATA = 0x16,
    FU_EBITDO_PKT_CMD_TRANSFER_ABORT = 0x18,
    FU_EBITDO_PKT_CMD_VERIFICATION_ID = 0x19,
    FU_EBITDO_PKT_CMD_GET_VERIFICATION_ID = 0x1a,
    FU_EBITDO_PKT_CMD_VERIFY_ERROR = 0x1b,
    FU_EBITDO_PKT_CMD_VERIFY_OK = 0x1c,
    FU_EBITDO_PKT_CMD_TRANSFER_TIMEOUT = 0x1d,
    FU_EBITDO_PKT_CMD_GET_VERSION = 0x21,
    FU_EBITDO_PKT_CMD_GET_VERSION_RESPONSE = 0x22,
} FuEbitdoPktCmd;
const gchar *fu_ebitdo_pkt_cmd_to_string(FuEbitdoPktCmd val);

GByteArray *fu_struct_ebitdo_hdr_new(void);
GByteArray *fu_struct_ebitdo_hdr_parse_bytes(GBytes *blob, gsize offset, GError **error);
guint32 fu_struct_ebitdo_hdr_get_version(const GByteArray *st);
guint32 fu_struct_ebitdo_hdr_get_destination_addr(const GByteArray *st);
guint32 fu_struct_ebitdo_hdr_get_destination_len(const GByteArray *st);
void fu_struct_ebitdo_hdr_set_version(GByteArray *st, guint32 value);
void fu_struct_ebitdo_hdr_set_destination_addr(GByteArray *st, guint32 value);
void fu_struct_ebitdo_hdr_set_destination_len(GByteArray *st, guint32 value);
#define FU_STRUCT_EBITDO_HDR_OFFSET_VERSION 0x0
#define FU_STRUCT_EBITDO_HDR_OFFSET_DESTINATION_ADDR 0x4
#define FU_STRUCT_EBITDO_HDR_OFFSET_DESTINATION_LEN 0x8
#define FU_STRUCT_EBITDO_HDR_SIZE 0x1C

GByteArray *fu_struct_ebitdo_pkt_new(void);
GByteArray *fu_struct_ebitdo_pkt_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
guint8 fu_struct_ebitdo_pkt_get_pkt_len(const GByteArray *st);
FuEbitdoPktType fu_struct_ebitdo_pkt_get_type(const GByteArray *st);
guint8 fu_struct_ebitdo_pkt_get_subtype(const GByteArray *st);
guint16 fu_struct_ebitdo_pkt_get_cmd_len(const GByteArray *st);
FuEbitdoPktCmd fu_struct_ebitdo_pkt_get_cmd(const GByteArray *st);
guint16 fu_struct_ebitdo_pkt_get_payload_len(const GByteArray *st);
void fu_struct_ebitdo_pkt_set_pkt_len(GByteArray *st, guint8 value);
void fu_struct_ebitdo_pkt_set_type(GByteArray *st, FuEbitdoPktType value);
void fu_struct_ebitdo_pkt_set_subtype(GByteArray *st, guint8 value);
void fu_struct_ebitdo_pkt_set_cmd_len(GByteArray *st, guint16 value);
void fu_struct_ebitdo_pkt_set_cmd(GByteArray *st, FuEbitdoPktCmd value);
void fu_struct_ebitdo_pkt_set_payload_len(GByteArray *st, guint16 value);
#define FU_STRUCT_EBITDO_PKT_OFFSET_PKT_LEN 0x0
#define FU_STRUCT_EBITDO_PKT_OFFSET_TYPE 0x1
#define FU_STRUCT_EBITDO_PKT_OFFSET_SUBTYPE 0x2
#define FU_STRUCT_EBITDO_PKT_OFFSET_CMD_LEN 0x3
#define FU_STRUCT_EBITDO_PKT_OFFSET_CMD 0x5
#define FU_STRUCT_EBITDO_PKT_OFFSET_PAYLOAD_LEN 0x6
#define FU_STRUCT_EBITDO_PKT_SIZE 0x8
