/* auto-generated, do not modify */
#pragma once
#include <fwupd-common.h>
typedef enum {
    FU_ALGOLTEK_CMD_RDR = 0x06,
    FU_ALGOLTEK_CMD_WRR,
    FU_ALGOLTEK_CMD_RDV,
    FU_ALGOLTEK_CMD_EN,
    FU_ALGOLTEK_CMD_WRF = 0x10,
    FU_ALGOLTEK_CMD_ISP = 0x13,
    FU_ALGOLTEK_CMD_ERS = 0x19,
    FU_ALGOLTEK_CMD_BOT = 0x1D,
    FU_ALGOLTEK_CMD_RST = 0x20,
} FuAlgoltekCmd;

gboolean fu_struct_algoltek_product_identity_validate_bytes(GBytes *blob, gsize offset, GError **error);
guint8 fu_struct_algoltek_product_identity_get_header_len(const GByteArray *st);
guint8 fu_struct_algoltek_product_identity_get_product_name_len(const GByteArray *st);
gchar *fu_struct_algoltek_product_identity_get_product_name(const GByteArray *st);
guint8 fu_struct_algoltek_product_identity_get_version_len(const GByteArray *st);
gchar *fu_struct_algoltek_product_identity_get_version(const GByteArray *st);
#define FU_STRUCT_ALGOLTEK_PRODUCT_IDENTITY_OFFSET_HEADER_LEN 0x0
#define FU_STRUCT_ALGOLTEK_PRODUCT_IDENTITY_OFFSET_HEADER 0x1
#define FU_STRUCT_ALGOLTEK_PRODUCT_IDENTITY_OFFSET_PRODUCT_NAME_LEN 0x9
#define FU_STRUCT_ALGOLTEK_PRODUCT_IDENTITY_OFFSET_PRODUCT_NAME 0xA
#define FU_STRUCT_ALGOLTEK_PRODUCT_IDENTITY_OFFSET_VERSION_LEN 0x1A
#define FU_STRUCT_ALGOLTEK_PRODUCT_IDENTITY_OFFSET_VERSION 0x1B
#define FU_STRUCT_ALGOLTEK_PRODUCT_IDENTITY_SIZE_PRODUCT_NAME 0x10
#define FU_STRUCT_ALGOLTEK_PRODUCT_IDENTITY_SIZE_VERSION 0x30
#define FU_STRUCT_ALGOLTEK_PRODUCT_IDENTITY_SIZE 0x4B
#define FU_STRUCT_ALGOLTEK_PRODUCT_IDENTITY_DEFAULT_HEADER 0x4B45544C4F474C41

GByteArray *fu_struct_algoltek_cmd_address_pkt_new(void);
void fu_struct_algoltek_cmd_address_pkt_set_len(GByteArray *st, guint8 value);
void fu_struct_algoltek_cmd_address_pkt_set_cmd(GByteArray *st, guint8 value);
void fu_struct_algoltek_cmd_address_pkt_set_address(GByteArray *st, guint16 value);
void fu_struct_algoltek_cmd_address_pkt_set_value(GByteArray *st, guint16 value);
void fu_struct_algoltek_cmd_address_pkt_set_checksum(GByteArray *st, guint8 value);
#define FU_STRUCT_ALGOLTEK_CMD_ADDRESS_PKT_OFFSET_LEN 0x0
#define FU_STRUCT_ALGOLTEK_CMD_ADDRESS_PKT_OFFSET_CMD 0x1
#define FU_STRUCT_ALGOLTEK_CMD_ADDRESS_PKT_OFFSET_ADDRESS 0x2
#define FU_STRUCT_ALGOLTEK_CMD_ADDRESS_PKT_OFFSET_VALUE 0x4
#define FU_STRUCT_ALGOLTEK_CMD_ADDRESS_PKT_OFFSET_CHECKSUM 0xA
#define FU_STRUCT_ALGOLTEK_CMD_ADDRESS_PKT_SIZE 0xB

GByteArray *fu_struct_algoltek_cmd_transfer_pkt_new(void);
void fu_struct_algoltek_cmd_transfer_pkt_set_len(GByteArray *st, guint8 value);
void fu_struct_algoltek_cmd_transfer_pkt_set_cmd(GByteArray *st, guint8 value);
void fu_struct_algoltek_cmd_transfer_pkt_set_address(GByteArray *st, guint16 value);
gboolean fu_struct_algoltek_cmd_transfer_pkt_set_data(GByteArray *st, const guint8 *buf, gsize bufsz, GError **error);
void fu_struct_algoltek_cmd_transfer_pkt_set_checksum(GByteArray *st, guint8 value);
#define FU_STRUCT_ALGOLTEK_CMD_TRANSFER_PKT_OFFSET_LEN 0x0
#define FU_STRUCT_ALGOLTEK_CMD_TRANSFER_PKT_OFFSET_CMD 0x1
#define FU_STRUCT_ALGOLTEK_CMD_TRANSFER_PKT_OFFSET_ADDRESS 0x2
#define FU_STRUCT_ALGOLTEK_CMD_TRANSFER_PKT_OFFSET_DATA 0x4
#define FU_STRUCT_ALGOLTEK_CMD_TRANSFER_PKT_OFFSET_CHECKSUM 0x41
#define FU_STRUCT_ALGOLTEK_CMD_TRANSFER_PKT_SIZE_DATA 0x3D
#define FU_STRUCT_ALGOLTEK_CMD_TRANSFER_PKT_SIZE 0x42
