/*
 * This file is auto-generated, do not modify!
 *
 * SPDX-License-Identifier: LGPL-2.1-or-later
 */

#pragma once
#include <fu-input-stream.h>
/**
 * FuSteelseriesGamepadCmd:
 */
typedef enum {
    /**
     * FU_STEELSERIES_GAMEPAD_CMD_ERASE:
     */
    FU_STEELSERIES_GAMEPAD_CMD_ERASE = 0xA1,
    /**
     * FU_STEELSERIES_GAMEPAD_CMD_GET_VERSIONS:
     */
    FU_STEELSERIES_GAMEPAD_CMD_GET_VERSIONS = 0x12,
    /**
     * FU_STEELSERIES_GAMEPAD_CMD_RESET:
     */
    FU_STEELSERIES_GAMEPAD_CMD_RESET = 0xA6,
    /**
     * FU_STEELSERIES_GAMEPAD_CMD_WORK_MODE:
     */
    FU_STEELSERIES_GAMEPAD_CMD_WORK_MODE = 0x02,
    /**
     * FU_STEELSERIES_GAMEPAD_CMD_WRITE_CHUNK:
     */
    FU_STEELSERIES_GAMEPAD_CMD_WRITE_CHUNK = 0xA3,
    /**
     * FU_STEELSERIES_GAMEPAD_CMD_WRITE_CHECKSUM:
     */
    FU_STEELSERIES_GAMEPAD_CMD_WRITE_CHECKSUM = 0xA5,
}  FuSteelseriesGamepadCmd;
/**
 * FuSteelseriesGamepadMode:
 */
typedef enum {
    /**
     * FU_STEELSERIES_GAMEPAD_MODE_CONTROLLER_MODE:
     */
    FU_STEELSERIES_GAMEPAD_MODE_CONTROLLER_MODE = 0x01,
    /**
     * FU_STEELSERIES_GAMEPAD_MODE_BOOTLOADER_MODE:
     */
    FU_STEELSERIES_GAMEPAD_MODE_BOOTLOADER_MODE = 0x08,
}  FuSteelseriesGamepadMode;
/**
 * FuSteelseriesGamepadChecksumStatus:
 */
typedef enum {
    /**
     * FU_STEELSERIES_GAMEPAD_CHECKSUM_STATUS_INCORRECT:
     */
    FU_STEELSERIES_GAMEPAD_CHECKSUM_STATUS_INCORRECT = 0x00,
    /**
     * FU_STEELSERIES_GAMEPAD_CHECKSUM_STATUS_CORRECT:
     */
    FU_STEELSERIES_GAMEPAD_CHECKSUM_STATUS_CORRECT = 0x01,
}  FuSteelseriesGamepadChecksumStatus;
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructSteelseriesGamepadEraseReq;

FuStructSteelseriesGamepadEraseReq *fu_struct_steelseries_gamepad_erase_req_ref(FuStructSteelseriesGamepadEraseReq *st) G_GNUC_NON_NULL(1);
void fu_struct_steelseries_gamepad_erase_req_unref(FuStructSteelseriesGamepadEraseReq *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructSteelseriesGamepadEraseReq, fu_struct_steelseries_gamepad_erase_req_unref)
FuStructSteelseriesGamepadEraseReq *fu_struct_steelseries_gamepad_erase_req_new(void) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_steelseries_gamepad_erase_req_set_length(FuStructSteelseriesGamepadEraseReq *st, guint16 value) G_GNUC_NON_NULL(1);
void fu_struct_steelseries_gamepad_erase_req_set_magic3(FuStructSteelseriesGamepadEraseReq *st, guint8 value) G_GNUC_NON_NULL(1);

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_ERASE_REQ_OFFSET_CMD 0x0
#define FU_STRUCT_STEELSERIES_GAMEPAD_ERASE_REQ_OFFSET_MAGIC1 0x1
#define FU_STRUCT_STEELSERIES_GAMEPAD_ERASE_REQ_OFFSET_MAGIC2 0x2
#define FU_STRUCT_STEELSERIES_GAMEPAD_ERASE_REQ_OFFSET_LENGTH 0x8
#define FU_STRUCT_STEELSERIES_GAMEPAD_ERASE_REQ_OFFSET_MAGIC3 0xD
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_ERASE_REQ_SIZE 0xE
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_ERASE_REQ_DEFAULT_CMD FU_STEELSERIES_GAMEPAD_CMD_ERASE
#define FU_STRUCT_STEELSERIES_GAMEPAD_ERASE_REQ_DEFAULT_MAGIC1 0xAA
#define FU_STRUCT_STEELSERIES_GAMEPAD_ERASE_REQ_DEFAULT_MAGIC2 0x55
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructSteelseriesGamepadGetVersionsReq;

FuStructSteelseriesGamepadGetVersionsReq *fu_struct_steelseries_gamepad_get_versions_req_ref(FuStructSteelseriesGamepadGetVersionsReq *st) G_GNUC_NON_NULL(1);
void fu_struct_steelseries_gamepad_get_versions_req_unref(FuStructSteelseriesGamepadGetVersionsReq *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructSteelseriesGamepadGetVersionsReq, fu_struct_steelseries_gamepad_get_versions_req_unref)
FuStructSteelseriesGamepadGetVersionsReq *fu_struct_steelseries_gamepad_get_versions_req_new(void) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_GET_VERSIONS_REQ_OFFSET_CMD 0x0
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_GET_VERSIONS_REQ_SIZE 0x1
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_GET_VERSIONS_REQ_DEFAULT_CMD FU_STEELSERIES_GAMEPAD_CMD_GET_VERSIONS
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructSteelseriesGamepadGetVersionsRes;

FuStructSteelseriesGamepadGetVersionsRes *fu_struct_steelseries_gamepad_get_versions_res_ref(FuStructSteelseriesGamepadGetVersionsRes *st) G_GNUC_NON_NULL(1);
void fu_struct_steelseries_gamepad_get_versions_res_unref(FuStructSteelseriesGamepadGetVersionsRes *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructSteelseriesGamepadGetVersionsRes, fu_struct_steelseries_gamepad_get_versions_res_unref)
FuStructSteelseriesGamepadGetVersionsRes *fu_struct_steelseries_gamepad_get_versions_res_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_steelseries_gamepad_get_versions_res_get_runtime_version(const FuStructSteelseriesGamepadGetVersionsRes *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_steelseries_gamepad_get_versions_res_get_bootloader_version(const FuStructSteelseriesGamepadGetVersionsRes *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_GET_VERSIONS_RES_OFFSET_CMD 0x0
#define FU_STRUCT_STEELSERIES_GAMEPAD_GET_VERSIONS_RES_OFFSET_RUNTIME_VERSION 0x1
#define FU_STRUCT_STEELSERIES_GAMEPAD_GET_VERSIONS_RES_OFFSET_BOOTLOADER_VERSION 0x3
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_GET_VERSIONS_RES_SIZE 0x5
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_GET_VERSIONS_RES_DEFAULT_CMD FU_STEELSERIES_GAMEPAD_CMD_GET_VERSIONS
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructSteelseriesGamepadResetReq;

FuStructSteelseriesGamepadResetReq *fu_struct_steelseries_gamepad_reset_req_ref(FuStructSteelseriesGamepadResetReq *st) G_GNUC_NON_NULL(1);
void fu_struct_steelseries_gamepad_reset_req_unref(FuStructSteelseriesGamepadResetReq *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructSteelseriesGamepadResetReq, fu_struct_steelseries_gamepad_reset_req_unref)
FuStructSteelseriesGamepadResetReq *fu_struct_steelseries_gamepad_reset_req_new(void) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_RESET_REQ_OFFSET_CMD 0x0
#define FU_STRUCT_STEELSERIES_GAMEPAD_RESET_REQ_OFFSET_MAGIC1 0x1
#define FU_STRUCT_STEELSERIES_GAMEPAD_RESET_REQ_OFFSET_MAGIC2 0x2
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_RESET_REQ_SIZE 0x3
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_RESET_REQ_DEFAULT_CMD FU_STEELSERIES_GAMEPAD_CMD_RESET
#define FU_STRUCT_STEELSERIES_GAMEPAD_RESET_REQ_DEFAULT_MAGIC1 0xAA
#define FU_STRUCT_STEELSERIES_GAMEPAD_RESET_REQ_DEFAULT_MAGIC2 0x55
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructSteelseriesGamepadBootloaderModeReq;

FuStructSteelseriesGamepadBootloaderModeReq *fu_struct_steelseries_gamepad_bootloader_mode_req_ref(FuStructSteelseriesGamepadBootloaderModeReq *st) G_GNUC_NON_NULL(1);
void fu_struct_steelseries_gamepad_bootloader_mode_req_unref(FuStructSteelseriesGamepadBootloaderModeReq *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructSteelseriesGamepadBootloaderModeReq, fu_struct_steelseries_gamepad_bootloader_mode_req_unref)
FuStructSteelseriesGamepadBootloaderModeReq *fu_struct_steelseries_gamepad_bootloader_mode_req_new(void) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_BOOTLOADER_MODE_REQ_OFFSET_CMD 0x0
#define FU_STRUCT_STEELSERIES_GAMEPAD_BOOTLOADER_MODE_REQ_OFFSET_MODE 0x1
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_BOOTLOADER_MODE_REQ_SIZE 0x2
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_BOOTLOADER_MODE_REQ_DEFAULT_CMD FU_STEELSERIES_GAMEPAD_CMD_WORK_MODE
#define FU_STRUCT_STEELSERIES_GAMEPAD_BOOTLOADER_MODE_REQ_DEFAULT_MODE FU_STEELSERIES_GAMEPAD_MODE_BOOTLOADER_MODE
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructSteelseriesGamepadWriteChunkReq;

FuStructSteelseriesGamepadWriteChunkReq *fu_struct_steelseries_gamepad_write_chunk_req_ref(FuStructSteelseriesGamepadWriteChunkReq *st) G_GNUC_NON_NULL(1);
void fu_struct_steelseries_gamepad_write_chunk_req_unref(FuStructSteelseriesGamepadWriteChunkReq *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructSteelseriesGamepadWriteChunkReq, fu_struct_steelseries_gamepad_write_chunk_req_unref)
FuStructSteelseriesGamepadWriteChunkReq *fu_struct_steelseries_gamepad_write_chunk_req_new(void) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_steelseries_gamepad_write_chunk_req_set_block_id(FuStructSteelseriesGamepadWriteChunkReq *st, guint16 value) G_GNUC_NON_NULL(1);
gboolean fu_struct_steelseries_gamepad_write_chunk_req_set_data(FuStructSteelseriesGamepadWriteChunkReq *st, const guint8 *buf, gsize bufsz, GError **error) G_GNUC_NON_NULL(1, 2) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_steelseries_gamepad_write_chunk_req_set_checksum(FuStructSteelseriesGamepadWriteChunkReq *st, guint16 value) G_GNUC_NON_NULL(1);

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHUNK_REQ_OFFSET_CMD 0x0
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHUNK_REQ_OFFSET_BLOCK_ID 0x1
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHUNK_REQ_OFFSET_DATA 0x3
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHUNK_REQ_OFFSET_CHECKSUM 0x23
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHUNK_REQ_SIZE_DATA 0x20
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHUNK_REQ_N_ELEMENTS_DATA 32
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHUNK_REQ_SIZE 0x25
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHUNK_REQ_DEFAULT_CMD FU_STEELSERIES_GAMEPAD_CMD_WRITE_CHUNK
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructSteelseriesGamepadWriteChecksumReq;

FuStructSteelseriesGamepadWriteChecksumReq *fu_struct_steelseries_gamepad_write_checksum_req_ref(FuStructSteelseriesGamepadWriteChecksumReq *st) G_GNUC_NON_NULL(1);
void fu_struct_steelseries_gamepad_write_checksum_req_unref(FuStructSteelseriesGamepadWriteChecksumReq *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructSteelseriesGamepadWriteChecksumReq, fu_struct_steelseries_gamepad_write_checksum_req_unref)
FuStructSteelseriesGamepadWriteChecksumReq *fu_struct_steelseries_gamepad_write_checksum_req_new(void) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_steelseries_gamepad_write_checksum_req_set_checksum(FuStructSteelseriesGamepadWriteChecksumReq *st, guint32 value) G_GNUC_NON_NULL(1);

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_REQ_OFFSET_CMD 0x0
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_REQ_OFFSET_MAGIC1 0x1
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_REQ_OFFSET_MAGIC2 0x2
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_REQ_OFFSET_CHECKSUM 0x3
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_REQ_SIZE 0x7
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_REQ_DEFAULT_CMD FU_STEELSERIES_GAMEPAD_CMD_WRITE_CHECKSUM
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_REQ_DEFAULT_MAGIC1 0xAA
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_REQ_DEFAULT_MAGIC2 0x55
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructSteelseriesGamepadWriteChecksumRes;

FuStructSteelseriesGamepadWriteChecksumRes *fu_struct_steelseries_gamepad_write_checksum_res_ref(FuStructSteelseriesGamepadWriteChecksumRes *st) G_GNUC_NON_NULL(1);
void fu_struct_steelseries_gamepad_write_checksum_res_unref(FuStructSteelseriesGamepadWriteChecksumRes *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructSteelseriesGamepadWriteChecksumRes, fu_struct_steelseries_gamepad_write_checksum_res_unref)
FuStructSteelseriesGamepadWriteChecksumRes *fu_struct_steelseries_gamepad_write_checksum_res_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_steelseries_gamepad_write_checksum_res_get_checksum(const FuStructSteelseriesGamepadWriteChecksumRes *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_RES_OFFSET_CMD 0x0
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_RES_OFFSET_MAGIC1 0x1
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_RES_OFFSET_MAGIC2 0x2
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_RES_OFFSET_STATUS 0x3
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_RES_OFFSET_CHECKSUM 0x4
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_RES_SIZE 0x8
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_RES_DEFAULT_CMD FU_STEELSERIES_GAMEPAD_CMD_WRITE_CHECKSUM
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_RES_DEFAULT_MAGIC1 0xAA
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_RES_DEFAULT_MAGIC2 0x55
#define FU_STRUCT_STEELSERIES_GAMEPAD_WRITE_CHECKSUM_RES_DEFAULT_STATUS FU_STEELSERIES_GAMEPAD_CHECKSUM_STATUS_CORRECT
#endif
