/* auto-generated, do not modify */
#pragma once
#include <fwupd-common.h>
typedef enum {
    FU_LOGITECH_BULKCONTROLLER_DEVICE_STATE_UNKNOWN = -1,
    FU_LOGITECH_BULKCONTROLLER_DEVICE_STATE_OFFLINE,
    FU_LOGITECH_BULKCONTROLLER_DEVICE_STATE_ONLINE,
    FU_LOGITECH_BULKCONTROLLER_DEVICE_STATE_IDLE,
    FU_LOGITECH_BULKCONTROLLER_DEVICE_STATE_IN_USE,
    FU_LOGITECH_BULKCONTROLLER_DEVICE_STATE_AUDIO_ONLY,
    FU_LOGITECH_BULKCONTROLLER_DEVICE_STATE_ENUMERATING,
} FuLogitechBulkcontrollerDeviceState;
const gchar *fu_logitech_bulkcontroller_device_state_to_string(FuLogitechBulkcontrollerDeviceState val);
typedef enum {
    FU_LOGITECH_BULKCONTROLLER_UPDATE_STATE_UNKNOWN = -1,
    FU_LOGITECH_BULKCONTROLLER_UPDATE_STATE_CURRENT,
    FU_LOGITECH_BULKCONTROLLER_UPDATE_STATE_AVAILABLE,
    FU_LOGITECH_BULKCONTROLLER_UPDATE_STATE_STARTING = 3,
    FU_LOGITECH_BULKCONTROLLER_UPDATE_STATE_DOWNLOADING,
    FU_LOGITECH_BULKCONTROLLER_UPDATE_STATE_READY,
    FU_LOGITECH_BULKCONTROLLER_UPDATE_STATE_UPDATING,
    FU_LOGITECH_BULKCONTROLLER_UPDATE_STATE_SCHEDULED,
    FU_LOGITECH_BULKCONTROLLER_UPDATE_STATE_ERROR,
} FuLogitechBulkcontrollerUpdateState;
const gchar *fu_logitech_bulkcontroller_update_state_to_string(FuLogitechBulkcontrollerUpdateState val);
typedef enum {
    FU_LOGITECH_BULKCONTROLLER_CMD_CHECK_BUFFERSIZE = 0xCC00,
    FU_LOGITECH_BULKCONTROLLER_CMD_INIT = 0xCC01,
    FU_LOGITECH_BULKCONTROLLER_CMD_START_TRANSFER = 0xCC02,
    FU_LOGITECH_BULKCONTROLLER_CMD_DATA_TRANSFER = 0xCC03,
    FU_LOGITECH_BULKCONTROLLER_CMD_END_TRANSFER = 0xCC04,
    FU_LOGITECH_BULKCONTROLLER_CMD_UNINIT = 0xCC05,
    FU_LOGITECH_BULKCONTROLLER_CMD_BUFFER_READ = 0xCC06,
    FU_LOGITECH_BULKCONTROLLER_CMD_BUFFER_WRITE = 0xCC07,
    FU_LOGITECH_BULKCONTROLLER_CMD_UNINIT_BUFFER = 0xCC08,
    FU_LOGITECH_BULKCONTROLLER_CMD_ACK = 0xFF01,
    FU_LOGITECH_BULKCONTROLLER_CMD_TIMEOUT = 0xFF02,
    FU_LOGITECH_BULKCONTROLLER_CMD_NACK = 0xFF03,
} FuLogitechBulkcontrollerCmd;
const gchar *fu_logitech_bulkcontroller_cmd_to_string(FuLogitechBulkcontrollerCmd val);
typedef enum {
    FU_LOGITECH_BULKCONTROLLER_CHECKSUM_TYPE_SHA256,
    FU_LOGITECH_BULKCONTROLLER_CHECKSUM_TYPE_SHA512,
    FU_LOGITECH_BULKCONTROLLER_CHECKSUM_TYPE_MD5,
} FuLogitechBulkcontrollerChecksumType;

GByteArray *fu_struct_logitech_bulkcontroller_send_sync_req_new(void);
gchar *fu_struct_logitech_bulkcontroller_send_sync_req_to_string(const GByteArray *st);
FuLogitechBulkcontrollerCmd fu_struct_logitech_bulkcontroller_send_sync_req_get_cmd(const GByteArray *st);
guint32 fu_struct_logitech_bulkcontroller_send_sync_req_get_payload_length(const GByteArray *st);
guint32 fu_struct_logitech_bulkcontroller_send_sync_req_get_sequence_id(const GByteArray *st);
void fu_struct_logitech_bulkcontroller_send_sync_req_set_cmd(GByteArray *st, FuLogitechBulkcontrollerCmd value);
void fu_struct_logitech_bulkcontroller_send_sync_req_set_payload_length(GByteArray *st, guint32 value);
void fu_struct_logitech_bulkcontroller_send_sync_req_set_sequence_id(GByteArray *st, guint32 value);
#define FU_STRUCT_LOGITECH_BULKCONTROLLER_SEND_SYNC_REQ_OFFSET_CMD 0x0
#define FU_STRUCT_LOGITECH_BULKCONTROLLER_SEND_SYNC_REQ_OFFSET_PAYLOAD_LENGTH 0x4
#define FU_STRUCT_LOGITECH_BULKCONTROLLER_SEND_SYNC_REQ_OFFSET_SEQUENCE_ID 0x8
#define FU_STRUCT_LOGITECH_BULKCONTROLLER_SEND_SYNC_REQ_SIZE 0xC

GByteArray *fu_struct_logitech_bulkcontroller_send_sync_res_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error);
FuLogitechBulkcontrollerCmd fu_struct_logitech_bulkcontroller_send_sync_res_get_cmd(const GByteArray *st);
guint32 fu_struct_logitech_bulkcontroller_send_sync_res_get_payload_length(const GByteArray *st);
guint32 fu_struct_logitech_bulkcontroller_send_sync_res_get_sequence_id(const GByteArray *st);
#define FU_STRUCT_LOGITECH_BULKCONTROLLER_SEND_SYNC_RES_OFFSET_CMD 0x0
#define FU_STRUCT_LOGITECH_BULKCONTROLLER_SEND_SYNC_RES_OFFSET_PAYLOAD_LENGTH 0x4
#define FU_STRUCT_LOGITECH_BULKCONTROLLER_SEND_SYNC_RES_OFFSET_SEQUENCE_ID 0x8
#define FU_STRUCT_LOGITECH_BULKCONTROLLER_SEND_SYNC_RES_SIZE 0xC

GByteArray *fu_struct_logitech_bulkcontroller_update_req_new(void);
void fu_struct_logitech_bulkcontroller_update_req_set_cmd(GByteArray *st, FuLogitechBulkcontrollerCmd value);
void fu_struct_logitech_bulkcontroller_update_req_set_payload_length(GByteArray *st, guint32 value);
#define FU_STRUCT_LOGITECH_BULKCONTROLLER_UPDATE_REQ_OFFSET_CMD 0x0
#define FU_STRUCT_LOGITECH_BULKCONTROLLER_UPDATE_REQ_OFFSET_PAYLOAD_LENGTH 0x4
#define FU_STRUCT_LOGITECH_BULKCONTROLLER_UPDATE_REQ_SIZE 0x8

FuLogitechBulkcontrollerCmd fu_struct_logitech_bulkcontroller_update_res_get_cmd(const GByteArray *st);
FuLogitechBulkcontrollerCmd fu_struct_logitech_bulkcontroller_update_res_get_cmd_req(const GByteArray *st);
#define FU_STRUCT_LOGITECH_BULKCONTROLLER_UPDATE_RES_OFFSET_CMD 0x0
#define FU_STRUCT_LOGITECH_BULKCONTROLLER_UPDATE_RES_OFFSET_CMD_REQ 0x8
#define FU_STRUCT_LOGITECH_BULKCONTROLLER_UPDATE_RES_SIZE 0xC
