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

#pragma once
#include <fu-input-stream.h>
/**
 * FuGoodixtpIcType:
 */
typedef enum {
    /**
     * FU_GOODIXTP_IC_TYPE_NONE:
     */
    FU_GOODIXTP_IC_TYPE_NONE,
    /**
     * FU_GOODIXTP_IC_TYPE_PHOENIX:
     */
    FU_GOODIXTP_IC_TYPE_PHOENIX,
    /**
     * FU_GOODIXTP_IC_TYPE_TYPE_NANJING:
     */
    FU_GOODIXTP_IC_TYPE_TYPE_NANJING,
    /**
     * FU_GOODIXTP_IC_TYPE_MOUSEPAD:
     */
    FU_GOODIXTP_IC_TYPE_MOUSEPAD,
    /**
     * FU_GOODIXTP_IC_TYPE_NORMANDYL:
     */
    FU_GOODIXTP_IC_TYPE_NORMANDYL,
    /**
     * FU_GOODIXTP_IC_TYPE_BERLINB:
     */
    FU_GOODIXTP_IC_TYPE_BERLINB,
    /**
     * FU_GOODIXTP_IC_TYPE_YELLOWSTONE:
     */
    FU_GOODIXTP_IC_TYPE_YELLOWSTONE,
}  FuGoodixtpIcType;
#define FU_GOODIXTP_IC_TYPE_LAST 7
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGoodixTpCfgItem;

FuStructGoodixTpCfgItem *fu_struct_goodix_tp_cfg_item_ref(FuStructGoodixTpCfgItem *st) G_GNUC_NON_NULL(1);
void fu_struct_goodix_tp_cfg_item_unref(FuStructGoodixTpCfgItem *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGoodixTpCfgItem, fu_struct_goodix_tp_cfg_item_unref)
FuStructGoodixTpCfgItem *fu_struct_goodix_tp_cfg_item_parse_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_goodix_tp_cfg_item_get_id(const FuStructGoodixTpCfgItem *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_goodix_tp_cfg_item_get_len(const FuStructGoodixTpCfgItem *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_GOODIX_TP_CFG_ITEM_OFFSET_ID 0x0
#define FU_STRUCT_GOODIX_TP_CFG_ITEM_OFFSET_LEN 0x1
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GOODIX_TP_CFG_ITEM_SIZE 0x3
#endif

#ifndef __GI_SCANNER__
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGoodixTpCfgGroup;

FuStructGoodixTpCfgGroup *fu_struct_goodix_tp_cfg_group_ref(FuStructGoodixTpCfgGroup *st) G_GNUC_NON_NULL(1);
void fu_struct_goodix_tp_cfg_group_unref(FuStructGoodixTpCfgGroup *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGoodixTpCfgGroup, fu_struct_goodix_tp_cfg_group_unref)
FuStructGoodixTpCfgGroup *fu_struct_goodix_tp_cfg_group_parse_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_goodix_tp_cfg_group_get_total_size(const FuStructGoodixTpCfgGroup *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_goodix_tp_cfg_group_get_update_flag(const FuStructGoodixTpCfgGroup *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_goodix_tp_cfg_group_get_cfg_num(const FuStructGoodixTpCfgGroup *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_goodix_tp_cfg_group_get_checksum(const FuStructGoodixTpCfgGroup *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_GOODIX_TP_CFG_GROUP_OFFSET_TOTAL_SIZE 0x0
#define FU_STRUCT_GOODIX_TP_CFG_GROUP_OFFSET_UPDATE_FLAG 0x2
#define FU_STRUCT_GOODIX_TP_CFG_GROUP_OFFSET_CFG_NUM 0x3
#define FU_STRUCT_GOODIX_TP_CFG_GROUP_OFFSET_CHECKSUM 0x4
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GOODIX_TP_CFG_GROUP_SIZE 0x6
#endif

#ifndef __GI_SCANNER__
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGoodixBrlbHdr;

FuStructGoodixBrlbHdr *fu_struct_goodix_brlb_hdr_ref(FuStructGoodixBrlbHdr *st) G_GNUC_NON_NULL(1);
void fu_struct_goodix_brlb_hdr_unref(FuStructGoodixBrlbHdr *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGoodixBrlbHdr, fu_struct_goodix_brlb_hdr_unref)
FuStructGoodixBrlbHdr *fu_struct_goodix_brlb_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_goodix_brlb_hdr_get_firmware_size(const FuStructGoodixBrlbHdr *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_goodix_brlb_hdr_get_checksum(const FuStructGoodixBrlbHdr *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_goodix_brlb_hdr_get_vid(const FuStructGoodixBrlbHdr *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_goodix_brlb_hdr_get_subsys_num(const FuStructGoodixBrlbHdr *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_GOODIX_BRLB_HDR_OFFSET_FIRMWARE_SIZE 0x0
#define FU_STRUCT_GOODIX_BRLB_HDR_OFFSET_CHECKSUM 0x4
#define FU_STRUCT_GOODIX_BRLB_HDR_OFFSET_VID 0x19
#define FU_STRUCT_GOODIX_BRLB_HDR_OFFSET_SUBSYS_NUM 0x1D
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GOODIX_BRLB_HDR_SIZE 0x2A
#endif

#ifndef __GI_SCANNER__
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGoodixBrlbImg;

FuStructGoodixBrlbImg *fu_struct_goodix_brlb_img_ref(FuStructGoodixBrlbImg *st) G_GNUC_NON_NULL(1);
void fu_struct_goodix_brlb_img_unref(FuStructGoodixBrlbImg *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGoodixBrlbImg, fu_struct_goodix_brlb_img_unref)
FuStructGoodixBrlbImg *fu_struct_goodix_brlb_img_parse_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_goodix_brlb_img_get_kind(const FuStructGoodixBrlbImg *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_goodix_brlb_img_get_size(const FuStructGoodixBrlbImg *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_goodix_brlb_img_get_addr(const FuStructGoodixBrlbImg *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_GOODIX_BRLB_IMG_OFFSET_KIND 0x0
#define FU_STRUCT_GOODIX_BRLB_IMG_OFFSET_SIZE 0x1
#define FU_STRUCT_GOODIX_BRLB_IMG_OFFSET_ADDR 0x5
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GOODIX_BRLB_IMG_SIZE 0xA
#endif

#ifndef __GI_SCANNER__
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGoodixGtx8Hdr;

FuStructGoodixGtx8Hdr *fu_struct_goodix_gtx8_hdr_ref(FuStructGoodixGtx8Hdr *st) G_GNUC_NON_NULL(1);
void fu_struct_goodix_gtx8_hdr_unref(FuStructGoodixGtx8Hdr *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGoodixGtx8Hdr, fu_struct_goodix_gtx8_hdr_unref)
FuStructGoodixGtx8Hdr *fu_struct_goodix_gtx8_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_goodix_gtx8_hdr_get_firmware_size(const FuStructGoodixGtx8Hdr *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_goodix_gtx8_hdr_get_checksum(const FuStructGoodixGtx8Hdr *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_goodix_gtx8_hdr_get_vid(const FuStructGoodixGtx8Hdr *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_goodix_gtx8_hdr_get_subsys_num(const FuStructGoodixGtx8Hdr *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_GOODIX_GTX8_HDR_OFFSET_FIRMWARE_SIZE 0x0
#define FU_STRUCT_GOODIX_GTX8_HDR_OFFSET_CHECKSUM 0x4
#define FU_STRUCT_GOODIX_GTX8_HDR_OFFSET_VID 0x17
#define FU_STRUCT_GOODIX_GTX8_HDR_OFFSET_SUBSYS_NUM 0x1B
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GOODIX_GTX8_HDR_SIZE 0x20
#endif

#ifndef __GI_SCANNER__
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructGoodixGtx8Img;

FuStructGoodixGtx8Img *fu_struct_goodix_gtx8_img_ref(FuStructGoodixGtx8Img *st) G_GNUC_NON_NULL(1);
void fu_struct_goodix_gtx8_img_unref(FuStructGoodixGtx8Img *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructGoodixGtx8Img, fu_struct_goodix_gtx8_img_unref)
FuStructGoodixGtx8Img *fu_struct_goodix_gtx8_img_parse_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_goodix_gtx8_img_get_kind(const FuStructGoodixGtx8Img *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_goodix_gtx8_img_get_size(const FuStructGoodixGtx8Img *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_goodix_gtx8_img_get_addr(const FuStructGoodixGtx8Img *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_GOODIX_GTX8_IMG_OFFSET_KIND 0x0
#define FU_STRUCT_GOODIX_GTX8_IMG_OFFSET_SIZE 0x1
#define FU_STRUCT_GOODIX_GTX8_IMG_OFFSET_ADDR 0x5
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_GOODIX_GTX8_IMG_SIZE 0x8
#endif

#ifndef __GI_SCANNER__
#endif
