/* auto-generated, do not modify */
#pragma once
#include <fwupd-common.h>
typedef enum {
    FU_VLI_DEVICE_KIND_UNKNOWN = 0x0,
    FU_VLI_DEVICE_KIND_VL100 = 0x0100,
    FU_VLI_DEVICE_KIND_VL101 = 0x0101,
    FU_VLI_DEVICE_KIND_VL102 = 0x0102,
    FU_VLI_DEVICE_KIND_VL103 = 0x0103,
    FU_VLI_DEVICE_KIND_VL104 = 0x0104,
    FU_VLI_DEVICE_KIND_VL105 = 0x0105,
    FU_VLI_DEVICE_KIND_VL106 = 0x0106,
    FU_VLI_DEVICE_KIND_VL107 = 0x0107,
    FU_VLI_DEVICE_KIND_VL108 = 0x0108,
    FU_VLI_DEVICE_KIND_VL109 = 0x0109,
    FU_VLI_DEVICE_KIND_VL120 = 0x0120,
    FU_VLI_DEVICE_KIND_VL122 = 0x0122,
    FU_VLI_DEVICE_KIND_VL210 = 0x0210,
    FU_VLI_DEVICE_KIND_VL211 = 0x0211,
    FU_VLI_DEVICE_KIND_VL212 = 0x0212,
    FU_VLI_DEVICE_KIND_VL650 = 0x0650,
    FU_VLI_DEVICE_KIND_VL810 = 0x0810,
    FU_VLI_DEVICE_KIND_VL811 = 0x0811,
    FU_VLI_DEVICE_KIND_VL811PB0 = 0x8110,
    FU_VLI_DEVICE_KIND_VL811PB3 = 0x8113,
    FU_VLI_DEVICE_KIND_VL812B0 = 0xa812,
    FU_VLI_DEVICE_KIND_VL812B3 = 0xb812,
    FU_VLI_DEVICE_KIND_VL812Q4S = 0xc812,
    FU_VLI_DEVICE_KIND_VL813 = 0x0813,
    FU_VLI_DEVICE_KIND_VL815 = 0x0815,
    FU_VLI_DEVICE_KIND_VL817 = 0x0817,
    FU_VLI_DEVICE_KIND_VL817S = 0xa817,
    FU_VLI_DEVICE_KIND_VL819Q7 = 0xa819,
    FU_VLI_DEVICE_KIND_VL819Q8 = 0xb819,
    FU_VLI_DEVICE_KIND_VL820Q7 = 0xa820,
    FU_VLI_DEVICE_KIND_VL820Q8 = 0xb820,
    FU_VLI_DEVICE_KIND_VL821Q7 = 0xa821,
    FU_VLI_DEVICE_KIND_VL821Q8 = 0xb821,
    FU_VLI_DEVICE_KIND_VL822Q5 = 0x0822,
    FU_VLI_DEVICE_KIND_VL822Q7 = 0xa822,
    FU_VLI_DEVICE_KIND_VL822Q8 = 0xb822,
    FU_VLI_DEVICE_KIND_VL822T = 0xc822,
    FU_VLI_DEVICE_KIND_VL822C0 = 0xd822,
    FU_VLI_DEVICE_KIND_VL830 = 0x0830,
    FU_VLI_DEVICE_KIND_VL832 = 0x0832,
    FU_VLI_DEVICE_KIND_MSP430 = 0xf430,
    FU_VLI_DEVICE_KIND_PS186 = 0xf186,
    FU_VLI_DEVICE_KIND_RTD21XX = 0xff00,
} FuVliDeviceKind;
const gchar *fu_vli_device_kind_to_string(FuVliDeviceKind val);
FuVliDeviceKind fu_vli_device_kind_from_string(const gchar *val);

GByteArray *fu_struct_vli_pd_hdr_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
guint32 fu_struct_vli_pd_hdr_get_fwver(const GByteArray *st);
guint16 fu_struct_vli_pd_hdr_get_vid(const GByteArray *st);
guint16 fu_struct_vli_pd_hdr_get_pid(const GByteArray *st);
#define FU_STRUCT_VLI_PD_HDR_OFFSET_FWVER 0x0
#define FU_STRUCT_VLI_PD_HDR_OFFSET_VID 0x4
#define FU_STRUCT_VLI_PD_HDR_OFFSET_PID 0x6
#define FU_STRUCT_VLI_PD_HDR_SIZE 0x8

GByteArray *fu_struct_vli_usbhub_hdr_new(void);
GByteArray *fu_struct_vli_usbhub_hdr_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
gchar *fu_struct_vli_usbhub_hdr_to_string(const GByteArray *st);
guint16 fu_struct_vli_usbhub_hdr_get_dev_id(const GByteArray *st);
guint8 fu_struct_vli_usbhub_hdr_get_strapping1(const GByteArray *st);
guint8 fu_struct_vli_usbhub_hdr_get_strapping2(const GByteArray *st);
guint16 fu_struct_vli_usbhub_hdr_get_usb3_fw_addr(const GByteArray *st);
guint16 fu_struct_vli_usbhub_hdr_get_usb3_fw_sz(const GByteArray *st);
guint16 fu_struct_vli_usbhub_hdr_get_usb2_fw_addr(const GByteArray *st);
guint16 fu_struct_vli_usbhub_hdr_get_usb2_fw_sz(const GByteArray *st);
guint8 fu_struct_vli_usbhub_hdr_get_usb3_fw_addr_high(const GByteArray *st);
guint8 fu_struct_vli_usbhub_hdr_get_usb3_fw_sz_high(const GByteArray *st);
guint8 fu_struct_vli_usbhub_hdr_get_usb2_fw_addr_high(const GByteArray *st);
guint8 fu_struct_vli_usbhub_hdr_get_inverse_pe41(const GByteArray *st);
guint8 fu_struct_vli_usbhub_hdr_get_prev_ptr(const GByteArray *st);
guint8 fu_struct_vli_usbhub_hdr_get_next_ptr(const GByteArray *st);
guint8 fu_struct_vli_usbhub_hdr_get_variant(const GByteArray *st);
guint8 fu_struct_vli_usbhub_hdr_get_checksum(const GByteArray *st);
void fu_struct_vli_usbhub_hdr_set_dev_id(GByteArray *st, guint16 value);
void fu_struct_vli_usbhub_hdr_set_strapping1(GByteArray *st, guint8 value);
void fu_struct_vli_usbhub_hdr_set_strapping2(GByteArray *st, guint8 value);
void fu_struct_vli_usbhub_hdr_set_usb3_fw_addr(GByteArray *st, guint16 value);
void fu_struct_vli_usbhub_hdr_set_usb3_fw_sz(GByteArray *st, guint16 value);
void fu_struct_vli_usbhub_hdr_set_usb2_fw_addr(GByteArray *st, guint16 value);
void fu_struct_vli_usbhub_hdr_set_usb2_fw_sz(GByteArray *st, guint16 value);
void fu_struct_vli_usbhub_hdr_set_usb3_fw_addr_high(GByteArray *st, guint8 value);
void fu_struct_vli_usbhub_hdr_set_usb3_fw_sz_high(GByteArray *st, guint8 value);
void fu_struct_vli_usbhub_hdr_set_usb2_fw_addr_high(GByteArray *st, guint8 value);
void fu_struct_vli_usbhub_hdr_set_inverse_pe41(GByteArray *st, guint8 value);
void fu_struct_vli_usbhub_hdr_set_prev_ptr(GByteArray *st, guint8 value);
void fu_struct_vli_usbhub_hdr_set_next_ptr(GByteArray *st, guint8 value);
void fu_struct_vli_usbhub_hdr_set_variant(GByteArray *st, guint8 value);
void fu_struct_vli_usbhub_hdr_set_checksum(GByteArray *st, guint8 value);
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_DEV_ID 0x0
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_STRAPPING1 0x2
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_STRAPPING2 0x3
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_USB3_FW_ADDR 0x4
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_USB3_FW_SZ 0x6
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_USB2_FW_ADDR 0x8
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_USB2_FW_SZ 0xA
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_USB3_FW_ADDR_HIGH 0xC
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_USB3_FW_SZ_HIGH 0xD
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_USB2_FW_ADDR_HIGH 0x10
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_INVERSE_PE41 0x1B
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_PREV_PTR 0x1C
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_NEXT_PTR 0x1D
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_VARIANT 0x1E
#define FU_STRUCT_VLI_USBHUB_HDR_OFFSET_CHECKSUM 0x1F
#define FU_STRUCT_VLI_USBHUB_HDR_SIZE 0x20
