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

#pragma once
#include <fu-input-stream.h>
/**
 * FuCcgxDmcImgType:
 */
typedef enum {
    /**
     * FU_CCGX_DMC_IMG_TYPE_INVALID:
     */
    FU_CCGX_DMC_IMG_TYPE_INVALID = 0,
    /**
     * FU_CCGX_DMC_IMG_TYPE_IMAGE0:
     */
    FU_CCGX_DMC_IMG_TYPE_IMAGE0,
    /**
     * FU_CCGX_DMC_IMG_TYPE_IMAGE1:
     */
    FU_CCGX_DMC_IMG_TYPE_IMAGE1,
}  FuCcgxDmcImgType;
/**
 * FuCcgxDmcImgStatus:
 */
typedef enum {
    /**
     * FU_CCGX_DMC_IMG_STATUS_UNKNOWN:
     */
    FU_CCGX_DMC_IMG_STATUS_UNKNOWN = 0,
    /**
     * FU_CCGX_DMC_IMG_STATUS_VALID:
     */
    FU_CCGX_DMC_IMG_STATUS_VALID,
    /**
     * FU_CCGX_DMC_IMG_STATUS_INVALID:
     */
    FU_CCGX_DMC_IMG_STATUS_INVALID,
    /**
     * FU_CCGX_DMC_IMG_STATUS_RECOVERY:
     */
    FU_CCGX_DMC_IMG_STATUS_RECOVERY,
    /**
     * FU_CCGX_DMC_IMG_STATUS_RECOVERED_FROM_SECONDARY:
     */
    FU_CCGX_DMC_IMG_STATUS_RECOVERED_FROM_SECONDARY,
    /**
     * FU_CCGX_DMC_IMG_STATUS_NOT_SUPPORTED:
     */
    FU_CCGX_DMC_IMG_STATUS_NOT_SUPPORTED = 0x0F,
}  FuCcgxDmcImgStatus;
const gchar *fu_ccgx_dmc_img_status_to_string(FuCcgxDmcImgStatus val) G_GNUC_CONST;
/**
 * FuCcgxDmcImgMode:
 *
 * flash architecture
 */
typedef enum {
    /**
     * FU_CCGX_DMC_IMG_MODE_SINGLE_IMG:
     *
     * indicates that the device has a single image
     */
    FU_CCGX_DMC_IMG_MODE_SINGLE_IMG,
    /**
     * FU_CCGX_DMC_IMG_MODE_DUAL_IMG_SYM:
     *
     * the device supports symmetric boot. In symmetric mode the bootloader
     * boots the image with higher version, when they are valid
     */
    FU_CCGX_DMC_IMG_MODE_DUAL_IMG_SYM,
    /**
     * FU_CCGX_DMC_IMG_MODE_DUAL_IMG_ASYM:
     *
     * the device supports Asymmetric boot. Image-1 & 2 can be different or
     * same. in this method Bootloader is hard coded to boot the primary
     * image. Secondary acts as recovery
     */
    FU_CCGX_DMC_IMG_MODE_DUAL_IMG_ASYM,
    /**
     * FU_CCGX_DMC_IMG_MODE_SINGLE_IMG_WITH_RAM_IMG:
     */
    FU_CCGX_DMC_IMG_MODE_SINGLE_IMG_WITH_RAM_IMG,
}  FuCcgxDmcImgMode;
#define FU_CCGX_DMC_IMG_MODE_LAST 4
const gchar *fu_ccgx_dmc_img_mode_to_string(FuCcgxDmcImgMode val) G_GNUC_CONST;
/**
 * FuCcgxDmcDeviceStatus:
 *
 * dock status
 */
typedef enum {
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_IDLE:
     *
     * status code indicating DOCK IDLE state. SUCCESS: no malfunctioning
     * no outstanding request or event
     */
    FU_CCGX_DMC_DEVICE_STATUS_IDLE = 0,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_UPDATE_PHASE1_IN_PROGRESS:
     *
     * status code indicating dock FW update in progress
     */
    FU_CCGX_DMC_DEVICE_STATUS_UPDATE_PHASE1_IN_PROGRESS,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_UPDATE_PHASE1_PARTIAL:
     *
     * status code indicating dock FW update is partially complete
     */
    FU_CCGX_DMC_DEVICE_STATUS_UPDATE_PHASE1_PARTIAL,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_UPDATE_COMPLETE_FULL:
     *
     * status code indicating dock FW update SUCCESS - all m_images of all
     * devices are valid
     */
    FU_CCGX_DMC_DEVICE_STATUS_UPDATE_COMPLETE_FULL,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_UPDATE_PHASE1_COMPLETE_PARTIAL:
     *
     * status code indicating dock FW update SUCCESS - not all m_images of all
     * devices are valid
     */
    FU_CCGX_DMC_DEVICE_STATUS_UPDATE_PHASE1_COMPLETE_PARTIAL,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_UPDATE_PHASE1_COMPLETE_FULL_PHASE2_NOT_DONE:
     *
     * fw download status
     */
    FU_CCGX_DMC_DEVICE_STATUS_UPDATE_PHASE1_COMPLETE_FULL_PHASE2_NOT_DONE,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_FW_DOWNLOADED_UPDATE_PEND:
     */
    FU_CCGX_DMC_DEVICE_STATUS_FW_DOWNLOADED_UPDATE_PEND,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_FW_DOWNLOADED_PARTIAL_UPDATE_PEND:
     */
    FU_CCGX_DMC_DEVICE_STATUS_FW_DOWNLOADED_PARTIAL_UPDATE_PEND,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_IN_PROGRESS:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_IN_PROGRESS = 0x81,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_PARTIAL:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_PARTIAL,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FACTORY_BACKUP:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FACTORY_BACKUP,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_COMPLETE_PARTIAL:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_COMPLETE_PARTIAL,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_COMPLETE_FULL:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_COMPLETE_FULL,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_INVALID_FWCT:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_INVALID_FWCT,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_INVALID_DOCK_IDENTITY:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_INVALID_DOCK_IDENTITY,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_INVALID_COMPOSITE_VER:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_INVALID_COMPOSITE_VER,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_AUTHENTICATION_FAILED:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_AUTHENTICATION_FAILED,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_INVALID_ALGORITHM:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_INVALID_ALGORITHM,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_SPI_READ_FAILED:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_SPI_READ_FAILED,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_NO_VALID_KEY:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_NO_VALID_KEY,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_NO_VALID_SPI_PACKAGE:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_NO_VALID_SPI_PACKAGE,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_RAM_INIT_FAILED:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_RAM_INIT_FAILED,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_FACTORY_BACKUP_FAILED:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_FACTORY_BACKUP_FAILED,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_NO_VALID_FACTORY_PACKAGE:
     */
    FU_CCGX_DMC_DEVICE_STATUS_PHASE2_UPDATE_FAIL_NO_VALID_FACTORY_PACKAGE,
    /**
     * FU_CCGX_DMC_DEVICE_STATUS_UPDATE_FAIL:
     *
     * status code indicating dock FW update FAILED
     */
    FU_CCGX_DMC_DEVICE_STATUS_UPDATE_FAIL = 0xff,
}  FuCcgxDmcDeviceStatus;
const gchar *fu_ccgx_dmc_device_status_to_string(FuCcgxDmcDeviceStatus val) G_GNUC_CONST;
/**
 * FuCcgxDmcDevxDeviceType:
 */
typedef enum {
    /**
     * FU_CCGX_DMC_DEVX_DEVICE_TYPE_INVALID:
     */
    FU_CCGX_DMC_DEVX_DEVICE_TYPE_INVALID = 0x00,
    /**
     * FU_CCGX_DMC_DEVX_DEVICE_TYPE_CCG3:
     */
    FU_CCGX_DMC_DEVX_DEVICE_TYPE_CCG3 = 0x01,
    /**
     * FU_CCGX_DMC_DEVX_DEVICE_TYPE_DMC:
     */
    FU_CCGX_DMC_DEVX_DEVICE_TYPE_DMC = 0x02,
    /**
     * FU_CCGX_DMC_DEVX_DEVICE_TYPE_CCG4:
     */
    FU_CCGX_DMC_DEVX_DEVICE_TYPE_CCG4 = 0x03,
    /**
     * FU_CCGX_DMC_DEVX_DEVICE_TYPE_CCG5:
     */
    FU_CCGX_DMC_DEVX_DEVICE_TYPE_CCG5 = 0x04,
    /**
     * FU_CCGX_DMC_DEVX_DEVICE_TYPE_HX3:
     */
    FU_CCGX_DMC_DEVX_DEVICE_TYPE_HX3 = 0x05,
    /**
     * FU_CCGX_DMC_DEVX_DEVICE_TYPE_HX3_PD:
     */
    FU_CCGX_DMC_DEVX_DEVICE_TYPE_HX3_PD = 0x0A,
    /**
     * FU_CCGX_DMC_DEVX_DEVICE_TYPE_DMC_PD:
     */
    FU_CCGX_DMC_DEVX_DEVICE_TYPE_DMC_PD = 0x0B,
    /**
     * FU_CCGX_DMC_DEVX_DEVICE_TYPE_CCG6:
     */
    FU_CCGX_DMC_DEVX_DEVICE_TYPE_CCG6 = 0x13,
    /**
     * FU_CCGX_DMC_DEVX_DEVICE_TYPE_PMG1S3:
     */
    FU_CCGX_DMC_DEVX_DEVICE_TYPE_PMG1S3 = 0xF0,
    /**
     * FU_CCGX_DMC_DEVX_DEVICE_TYPE_CCG7SC:
     */
    FU_CCGX_DMC_DEVX_DEVICE_TYPE_CCG7SC = 0xF1,
    /**
     * FU_CCGX_DMC_DEVX_DEVICE_TYPE_CCG6SF:
     */
    FU_CCGX_DMC_DEVX_DEVICE_TYPE_CCG6SF = 0xF2,
    /**
     * FU_CCGX_DMC_DEVX_DEVICE_TYPE_CCG8:
     */
    FU_CCGX_DMC_DEVX_DEVICE_TYPE_CCG8 = 0xF3,
    /**
     * FU_CCGX_DMC_DEVX_DEVICE_TYPE_SPI:
     */
    FU_CCGX_DMC_DEVX_DEVICE_TYPE_SPI = 0xFF,
}  FuCcgxDmcDevxDeviceType;
const gchar *fu_ccgx_dmc_devx_device_type_to_string(FuCcgxDmcDevxDeviceType val) G_GNUC_CONST;
/**
 * FuCcgxDmcRqtCode:
 *
 * request codes for vendor interface
 */
typedef enum {
    /**
     * FU_CCGX_DMC_RQT_CODE_UPGRADE_START:
     */
    FU_CCGX_DMC_RQT_CODE_UPGRADE_START = 0xD0,
    /**
     * FU_CCGX_DMC_RQT_CODE_RESERV0:
     */
    FU_CCGX_DMC_RQT_CODE_RESERV0,
    /**
     * FU_CCGX_DMC_RQT_CODE_FWCT_WRITE:
     */
    FU_CCGX_DMC_RQT_CODE_FWCT_WRITE,
    /**
     * FU_CCGX_DMC_RQT_CODE_IMG_WRITE:
     */
    FU_CCGX_DMC_RQT_CODE_IMG_WRITE,
    /**
     * FU_CCGX_DMC_RQT_CODE_RESERV1:
     */
    FU_CCGX_DMC_RQT_CODE_RESERV1,
    /**
     * FU_CCGX_DMC_RQT_CODE_RESERV2:
     */
    FU_CCGX_DMC_RQT_CODE_RESERV2,
    /**
     * FU_CCGX_DMC_RQT_CODE_DOCK_STATUS:
     */
    FU_CCGX_DMC_RQT_CODE_DOCK_STATUS,
    /**
     * FU_CCGX_DMC_RQT_CODE_DOCK_IDENTITY:
     */
    FU_CCGX_DMC_RQT_CODE_DOCK_IDENTITY,
    /**
     * FU_CCGX_DMC_RQT_CODE_RESET_STATE_MACHINE:
     *
     * command to reset dmc state machine of DMC
     */
    FU_CCGX_DMC_RQT_CODE_RESET_STATE_MACHINE,
    /**
     * FU_CCGX_DMC_RQT_CODE_SOFT_RESET:
     *
     * command to reset for online enhanced mode (no reset during update)
     */
    FU_CCGX_DMC_RQT_CODE_SOFT_RESET = 0xDC,
    /**
     * FU_CCGX_DMC_RQT_CODE_TRIGGER:
     *
     * Update Trigger command for offline mode
     */
    FU_CCGX_DMC_RQT_CODE_TRIGGER = 0xDA,
}  FuCcgxDmcRqtCode;
/**
 * FuCcgxDmcIntOpcode:
 *
 * opcode of interrupt read
 */
typedef enum {
    /**
     * FU_CCGX_DMC_INT_OPCODE_FW_UPGRADE_RQT:
     */
    FU_CCGX_DMC_INT_OPCODE_FW_UPGRADE_RQT = 1,
    /**
     * FU_CCGX_DMC_INT_OPCODE_FW_UPGRADE_STATUS:
     */
    FU_CCGX_DMC_INT_OPCODE_FW_UPGRADE_STATUS = 0x80,
    /**
     * FU_CCGX_DMC_INT_OPCODE_IMG_WRITE_STATUS:
     */
    FU_CCGX_DMC_INT_OPCODE_IMG_WRITE_STATUS,
    /**
     * FU_CCGX_DMC_INT_OPCODE_REENUM:
     */
    FU_CCGX_DMC_INT_OPCODE_REENUM,
    /**
     * FU_CCGX_DMC_INT_OPCODE_FWCT_ANALYSIS_STATUS:
     */
    FU_CCGX_DMC_INT_OPCODE_FWCT_ANALYSIS_STATUS,
}  FuCcgxDmcIntOpcode;
const gchar *fu_ccgx_dmc_int_opcode_to_string(FuCcgxDmcIntOpcode val) G_GNUC_CONST;
/**
 * FuCcgxDmcFwctAnalysisStatus:
 *
 * fwct analysis status
 */
typedef enum {
    /**
     * FU_CCGX_DMC_FWCT_ANALYSIS_STATUS_INVALID_FWCT:
     */
    FU_CCGX_DMC_FWCT_ANALYSIS_STATUS_INVALID_FWCT = 0,
    /**
     * FU_CCGX_DMC_FWCT_ANALYSIS_STATUS_INVALID_DOCK_IDENTITY:
     */
    FU_CCGX_DMC_FWCT_ANALYSIS_STATUS_INVALID_DOCK_IDENTITY,
    /**
     * FU_CCGX_DMC_FWCT_ANALYSIS_STATUS_INVALID_COMPOSITE_VERSION:
     */
    FU_CCGX_DMC_FWCT_ANALYSIS_STATUS_INVALID_COMPOSITE_VERSION,
    /**
     * FU_CCGX_DMC_FWCT_ANALYSIS_STATUS_AUTHENTICATION_FAILED:
     */
    FU_CCGX_DMC_FWCT_ANALYSIS_STATUS_AUTHENTICATION_FAILED,
    /**
     * FU_CCGX_DMC_FWCT_ANALYSIS_STATUS_INVALID_ALGORITHM:
     */
    FU_CCGX_DMC_FWCT_ANALYSIS_STATUS_INVALID_ALGORITHM,
    /**
     * FU_CCGX_DMC_FWCT_ANALYSIS_STATUS_INVALID_FENCE:
     */
    FU_CCGX_DMC_FWCT_ANALYSIS_STATUS_INVALID_FENCE,
}  FuCcgxDmcFwctAnalysisStatus;
const gchar *fu_ccgx_dmc_fwct_analysis_status_to_string(FuCcgxDmcFwctAnalysisStatus val) G_GNUC_CONST;
/**
 * FuCcgxDmcUpdateModel:
 */
typedef enum {
    /**
     * FU_CCGX_DMC_UPDATE_MODEL_NONE:
     */
    FU_CCGX_DMC_UPDATE_MODEL_NONE = 0,
    /**
     * FU_CCGX_DMC_UPDATE_MODEL_DOWNLOAD_TRIGGER:
     *
     * need to trigger after updating FW
     */
    FU_CCGX_DMC_UPDATE_MODEL_DOWNLOAD_TRIGGER,
    /**
     * FU_CCGX_DMC_UPDATE_MODEL_PENDING_RESET:
     *
     * need to set soft reset after updating FW
     */
    FU_CCGX_DMC_UPDATE_MODEL_PENDING_RESET,
}  FuCcgxDmcUpdateModel;
const gchar *fu_ccgx_dmc_update_model_to_string(FuCcgxDmcUpdateModel val) G_GNUC_CONST;
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructCcgxDmcDockIdentity;

FuStructCcgxDmcDockIdentity *fu_struct_ccgx_dmc_dock_identity_ref(FuStructCcgxDmcDockIdentity *st) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_dock_identity_unref(FuStructCcgxDmcDockIdentity *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructCcgxDmcDockIdentity, fu_struct_ccgx_dmc_dock_identity_unref)
FuStructCcgxDmcDockIdentity *fu_struct_ccgx_dmc_dock_identity_new(void) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_dock_identity_get_structure_version(const FuStructCcgxDmcDockIdentity *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_dock_identity_get_cdtt_version(const FuStructCcgxDmcDockIdentity *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_ccgx_dmc_dock_identity_get_vid(const FuStructCcgxDmcDockIdentity *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_ccgx_dmc_dock_identity_get_pid(const FuStructCcgxDmcDockIdentity *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_ccgx_dmc_dock_identity_get_device_id(const FuStructCcgxDmcDockIdentity *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_ccgx_dmc_dock_identity_get_vendor_string(const FuStructCcgxDmcDockIdentity *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_ccgx_dmc_dock_identity_get_product_string(const FuStructCcgxDmcDockIdentity *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_dock_identity_get_custom_meta_data_flag(const FuStructCcgxDmcDockIdentity *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_dock_identity_get_model(const FuStructCcgxDmcDockIdentity *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_ccgx_dmc_dock_identity_set_structure_version(FuStructCcgxDmcDockIdentity *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_dock_identity_set_cdtt_version(FuStructCcgxDmcDockIdentity *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_dock_identity_set_vid(FuStructCcgxDmcDockIdentity *st, guint16 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_dock_identity_set_pid(FuStructCcgxDmcDockIdentity *st, guint16 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_dock_identity_set_device_id(FuStructCcgxDmcDockIdentity *st, guint16 value) G_GNUC_NON_NULL(1);
gboolean fu_struct_ccgx_dmc_dock_identity_set_vendor_string(FuStructCcgxDmcDockIdentity *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_ccgx_dmc_dock_identity_set_product_string(FuStructCcgxDmcDockIdentity *st, const gchar *value, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_ccgx_dmc_dock_identity_set_custom_meta_data_flag(FuStructCcgxDmcDockIdentity *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_dock_identity_set_model(FuStructCcgxDmcDockIdentity *st, guint8 value) G_GNUC_NON_NULL(1);

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_DOCK_IDENTITY_OFFSET_STRUCTURE_VERSION 0x0
#define FU_STRUCT_CCGX_DMC_DOCK_IDENTITY_OFFSET_CDTT_VERSION 0x1
#define FU_STRUCT_CCGX_DMC_DOCK_IDENTITY_OFFSET_VID 0x2
#define FU_STRUCT_CCGX_DMC_DOCK_IDENTITY_OFFSET_PID 0x4
#define FU_STRUCT_CCGX_DMC_DOCK_IDENTITY_OFFSET_DEVICE_ID 0x6
#define FU_STRUCT_CCGX_DMC_DOCK_IDENTITY_OFFSET_VENDOR_STRING 0x8
#define FU_STRUCT_CCGX_DMC_DOCK_IDENTITY_OFFSET_PRODUCT_STRING 0x28
#define FU_STRUCT_CCGX_DMC_DOCK_IDENTITY_OFFSET_CUSTOM_META_DATA_FLAG 0x48
#define FU_STRUCT_CCGX_DMC_DOCK_IDENTITY_OFFSET_MODEL 0x49
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_DOCK_IDENTITY_SIZE_VENDOR_STRING 0x20
#define FU_STRUCT_CCGX_DMC_DOCK_IDENTITY_N_ELEMENTS_VENDOR_STRING 32
#define FU_STRUCT_CCGX_DMC_DOCK_IDENTITY_SIZE_PRODUCT_STRING 0x20
#define FU_STRUCT_CCGX_DMC_DOCK_IDENTITY_N_ELEMENTS_PRODUCT_STRING 32
#define FU_STRUCT_CCGX_DMC_DOCK_IDENTITY_SIZE 0x4A
#endif

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

FuStructCcgxDmcDevxStatus *fu_struct_ccgx_dmc_devx_status_ref(FuStructCcgxDmcDevxStatus *st) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_devx_status_unref(FuStructCcgxDmcDevxStatus *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructCcgxDmcDevxStatus, fu_struct_ccgx_dmc_devx_status_unref)
FuStructCcgxDmcDevxStatus *fu_struct_ccgx_dmc_devx_status_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
FuCcgxDmcDevxDeviceType fu_struct_ccgx_dmc_devx_status_get_device_type(const FuStructCcgxDmcDevxStatus *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_devx_status_get_component_id(const FuStructCcgxDmcDevxStatus *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
FuCcgxDmcImgMode fu_struct_ccgx_dmc_devx_status_get_image_mode(const FuStructCcgxDmcDevxStatus *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_devx_status_get_current_image(const FuStructCcgxDmcDevxStatus *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_devx_status_get_img_status(const FuStructCcgxDmcDevxStatus *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
const guint8 *fu_struct_ccgx_dmc_devx_status_get_fw_version(const FuStructCcgxDmcDevxStatus *st, gsize *bufsz) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_DEVX_STATUS_OFFSET_DEVICE_TYPE 0x0
#define FU_STRUCT_CCGX_DMC_DEVX_STATUS_OFFSET_COMPONENT_ID 0x1
#define FU_STRUCT_CCGX_DMC_DEVX_STATUS_OFFSET_IMAGE_MODE 0x2
#define FU_STRUCT_CCGX_DMC_DEVX_STATUS_OFFSET_CURRENT_IMAGE 0x3
#define FU_STRUCT_CCGX_DMC_DEVX_STATUS_OFFSET_IMG_STATUS 0x4
#define FU_STRUCT_CCGX_DMC_DEVX_STATUS_OFFSET_FW_VERSION 0x8
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_DEVX_STATUS_SIZE_FW_VERSION 0x18
#define FU_STRUCT_CCGX_DMC_DEVX_STATUS_N_ELEMENTS_FW_VERSION 24
#define FU_STRUCT_CCGX_DMC_DEVX_STATUS_SIZE 0x20
#endif

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

FuStructCcgxDmcDockStatus *fu_struct_ccgx_dmc_dock_status_ref(FuStructCcgxDmcDockStatus *st) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_dock_status_unref(FuStructCcgxDmcDockStatus *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructCcgxDmcDockStatus, fu_struct_ccgx_dmc_dock_status_unref)
FuStructCcgxDmcDockStatus *fu_struct_ccgx_dmc_dock_status_new(void) G_GNUC_WARN_UNUSED_RESULT;
FuCcgxDmcDeviceStatus fu_struct_ccgx_dmc_dock_status_get_device_status(const FuStructCcgxDmcDockStatus *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_dock_status_get_device_count(const FuStructCcgxDmcDockStatus *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_ccgx_dmc_dock_status_get_status_length(const FuStructCcgxDmcDockStatus *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_ccgx_dmc_dock_status_get_composite_version(const FuStructCcgxDmcDockStatus *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_ccgx_dmc_dock_status_set_device_status(FuStructCcgxDmcDockStatus *st, FuCcgxDmcDeviceStatus value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_dock_status_set_device_count(FuStructCcgxDmcDockStatus *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_dock_status_set_status_length(FuStructCcgxDmcDockStatus *st, guint16 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_dock_status_set_composite_version(FuStructCcgxDmcDockStatus *st, guint32 value) G_GNUC_NON_NULL(1);

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_DOCK_STATUS_OFFSET_DEVICE_STATUS 0x0
#define FU_STRUCT_CCGX_DMC_DOCK_STATUS_OFFSET_DEVICE_COUNT 0x1
#define FU_STRUCT_CCGX_DMC_DOCK_STATUS_OFFSET_STATUS_LENGTH 0x2
#define FU_STRUCT_CCGX_DMC_DOCK_STATUS_OFFSET_COMPOSITE_VERSION 0x4
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_DOCK_STATUS_SIZE 0x8
#endif

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

FuStructCcgxDmcIntRqt *fu_struct_ccgx_dmc_int_rqt_ref(FuStructCcgxDmcIntRqt *st) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_int_rqt_unref(FuStructCcgxDmcIntRqt *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructCcgxDmcIntRqt, fu_struct_ccgx_dmc_int_rqt_unref)
FuStructCcgxDmcIntRqt *fu_struct_ccgx_dmc_int_rqt_new(void) G_GNUC_WARN_UNUSED_RESULT;
FuCcgxDmcIntOpcode fu_struct_ccgx_dmc_int_rqt_get_opcode(const FuStructCcgxDmcIntRqt *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_int_rqt_get_length(const FuStructCcgxDmcIntRqt *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
const guint8 *fu_struct_ccgx_dmc_int_rqt_get_data(const FuStructCcgxDmcIntRqt *st, gsize *bufsz) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_ccgx_dmc_int_rqt_set_opcode(FuStructCcgxDmcIntRqt *st, FuCcgxDmcIntOpcode value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_int_rqt_set_length(FuStructCcgxDmcIntRqt *st, guint8 value) G_GNUC_NON_NULL(1);
gboolean fu_struct_ccgx_dmc_int_rqt_set_data(FuStructCcgxDmcIntRqt *st, const guint8 *buf, gsize bufsz, GError **error) G_GNUC_NON_NULL(1, 2) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_INT_RQT_OFFSET_OPCODE 0x0
#define FU_STRUCT_CCGX_DMC_INT_RQT_OFFSET_LENGTH 0x1
#define FU_STRUCT_CCGX_DMC_INT_RQT_OFFSET_DATA 0x2
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_INT_RQT_SIZE_DATA 0x8
#define FU_STRUCT_CCGX_DMC_INT_RQT_N_ELEMENTS_DATA 8
#define FU_STRUCT_CCGX_DMC_INT_RQT_SIZE 0xA
#endif

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

FuStructCcgxDmcFwctInfo *fu_struct_ccgx_dmc_fwct_info_ref(FuStructCcgxDmcFwctInfo *st) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_info_unref(FuStructCcgxDmcFwctInfo *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructCcgxDmcFwctInfo, fu_struct_ccgx_dmc_fwct_info_unref)
FuStructCcgxDmcFwctInfo *fu_struct_ccgx_dmc_fwct_info_new(void) G_GNUC_WARN_UNUSED_RESULT;
FuStructCcgxDmcFwctInfo *fu_struct_ccgx_dmc_fwct_info_parse_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gboolean fu_struct_ccgx_dmc_fwct_info_validate_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_ccgx_dmc_fwct_info_get_size(const FuStructCcgxDmcFwctInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_fwct_info_get_checksum(const FuStructCcgxDmcFwctInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_fwct_info_get_version(const FuStructCcgxDmcFwctInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_fwct_info_get_custom_meta_type(const FuStructCcgxDmcFwctInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_fwct_info_get_cdtt_version(const FuStructCcgxDmcFwctInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_ccgx_dmc_fwct_info_get_vid(const FuStructCcgxDmcFwctInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_ccgx_dmc_fwct_info_get_pid(const FuStructCcgxDmcFwctInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_ccgx_dmc_fwct_info_get_device_id(const FuStructCcgxDmcFwctInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_ccgx_dmc_fwct_info_get_composite_version(const FuStructCcgxDmcFwctInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_fwct_info_get_image_count(const FuStructCcgxDmcFwctInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_ccgx_dmc_fwct_info_set_size(FuStructCcgxDmcFwctInfo *st, guint16 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_info_set_checksum(FuStructCcgxDmcFwctInfo *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_info_set_version(FuStructCcgxDmcFwctInfo *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_info_set_custom_meta_type(FuStructCcgxDmcFwctInfo *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_info_set_cdtt_version(FuStructCcgxDmcFwctInfo *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_info_set_vid(FuStructCcgxDmcFwctInfo *st, guint16 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_info_set_pid(FuStructCcgxDmcFwctInfo *st, guint16 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_info_set_device_id(FuStructCcgxDmcFwctInfo *st, guint16 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_info_set_composite_version(FuStructCcgxDmcFwctInfo *st, guint32 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_info_set_image_count(FuStructCcgxDmcFwctInfo *st, guint8 value) G_GNUC_NON_NULL(1);

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_OFFSET_SIGNATURE 0x0
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_OFFSET_SIZE 0x4
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_OFFSET_CHECKSUM 0x6
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_OFFSET_VERSION 0x7
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_OFFSET_CUSTOM_META_TYPE 0x8
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_OFFSET_CDTT_VERSION 0x9
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_OFFSET_VID 0xA
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_OFFSET_PID 0xC
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_OFFSET_DEVICE_ID 0xE
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_OFFSET_COMPOSITE_VERSION 0x20
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_OFFSET_IMAGE_COUNT 0x24
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_SIZE_SIGNATURE 0x4
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_N_ELEMENTS_SIGNATURE 4
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_SIZE 0x28
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_FWCT_INFO_DEFAULT_SIGNATURE "FWCT"
#endif
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructCcgxDmcFwctImageInfo;

FuStructCcgxDmcFwctImageInfo *fu_struct_ccgx_dmc_fwct_image_info_ref(FuStructCcgxDmcFwctImageInfo *st) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_image_info_unref(FuStructCcgxDmcFwctImageInfo *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructCcgxDmcFwctImageInfo, fu_struct_ccgx_dmc_fwct_image_info_unref)
FuStructCcgxDmcFwctImageInfo *fu_struct_ccgx_dmc_fwct_image_info_new(void) G_GNUC_WARN_UNUSED_RESULT;
FuStructCcgxDmcFwctImageInfo *fu_struct_ccgx_dmc_fwct_image_info_parse_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_fwct_image_info_get_device_type(const FuStructCcgxDmcFwctImageInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_fwct_image_info_get_img_type(const FuStructCcgxDmcFwctImageInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_fwct_image_info_get_comp_id(const FuStructCcgxDmcFwctImageInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_fwct_image_info_get_row_size(const FuStructCcgxDmcFwctImageInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_ccgx_dmc_fwct_image_info_get_fw_version(const FuStructCcgxDmcFwctImageInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_ccgx_dmc_fwct_image_info_get_app_version(const FuStructCcgxDmcFwctImageInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_ccgx_dmc_fwct_image_info_get_img_offset(const FuStructCcgxDmcFwctImageInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_ccgx_dmc_fwct_image_info_get_img_size(const FuStructCcgxDmcFwctImageInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
const guint8 *fu_struct_ccgx_dmc_fwct_image_info_get_img_digest(const FuStructCcgxDmcFwctImageInfo *st, gsize *bufsz) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_fwct_image_info_get_num_img_segments(const FuStructCcgxDmcFwctImageInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_ccgx_dmc_fwct_image_info_set_device_type(FuStructCcgxDmcFwctImageInfo *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_image_info_set_img_type(FuStructCcgxDmcFwctImageInfo *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_image_info_set_comp_id(FuStructCcgxDmcFwctImageInfo *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_image_info_set_row_size(FuStructCcgxDmcFwctImageInfo *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_image_info_set_fw_version(FuStructCcgxDmcFwctImageInfo *st, guint32 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_image_info_set_app_version(FuStructCcgxDmcFwctImageInfo *st, guint32 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_image_info_set_img_offset(FuStructCcgxDmcFwctImageInfo *st, guint32 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_image_info_set_img_size(FuStructCcgxDmcFwctImageInfo *st, guint32 value) G_GNUC_NON_NULL(1);
gboolean fu_struct_ccgx_dmc_fwct_image_info_set_img_digest(FuStructCcgxDmcFwctImageInfo *st, const guint8 *buf, gsize bufsz, GError **error) G_GNUC_NON_NULL(1, 2) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_ccgx_dmc_fwct_image_info_set_num_img_segments(FuStructCcgxDmcFwctImageInfo *st, guint8 value) G_GNUC_NON_NULL(1);

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_FWCT_IMAGE_INFO_OFFSET_DEVICE_TYPE 0x0
#define FU_STRUCT_CCGX_DMC_FWCT_IMAGE_INFO_OFFSET_IMG_TYPE 0x1
#define FU_STRUCT_CCGX_DMC_FWCT_IMAGE_INFO_OFFSET_COMP_ID 0x2
#define FU_STRUCT_CCGX_DMC_FWCT_IMAGE_INFO_OFFSET_ROW_SIZE 0x3
#define FU_STRUCT_CCGX_DMC_FWCT_IMAGE_INFO_OFFSET_FW_VERSION 0x8
#define FU_STRUCT_CCGX_DMC_FWCT_IMAGE_INFO_OFFSET_APP_VERSION 0xC
#define FU_STRUCT_CCGX_DMC_FWCT_IMAGE_INFO_OFFSET_IMG_OFFSET 0x10
#define FU_STRUCT_CCGX_DMC_FWCT_IMAGE_INFO_OFFSET_IMG_SIZE 0x14
#define FU_STRUCT_CCGX_DMC_FWCT_IMAGE_INFO_OFFSET_IMG_DIGEST 0x18
#define FU_STRUCT_CCGX_DMC_FWCT_IMAGE_INFO_OFFSET_NUM_IMG_SEGMENTS 0x38
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_FWCT_IMAGE_INFO_SIZE_IMG_DIGEST 0x20
#define FU_STRUCT_CCGX_DMC_FWCT_IMAGE_INFO_N_ELEMENTS_IMG_DIGEST 32
#define FU_STRUCT_CCGX_DMC_FWCT_IMAGE_INFO_SIZE 0x3C
#endif

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

FuStructCcgxDmcFwctSegmentationInfo *fu_struct_ccgx_dmc_fwct_segmentation_info_ref(FuStructCcgxDmcFwctSegmentationInfo *st) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_segmentation_info_unref(FuStructCcgxDmcFwctSegmentationInfo *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructCcgxDmcFwctSegmentationInfo, fu_struct_ccgx_dmc_fwct_segmentation_info_unref)
FuStructCcgxDmcFwctSegmentationInfo *fu_struct_ccgx_dmc_fwct_segmentation_info_new(void) G_GNUC_WARN_UNUSED_RESULT;
FuStructCcgxDmcFwctSegmentationInfo *fu_struct_ccgx_dmc_fwct_segmentation_info_parse_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_fwct_segmentation_info_get_img_id(const FuStructCcgxDmcFwctSegmentationInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ccgx_dmc_fwct_segmentation_info_get_type(const FuStructCcgxDmcFwctSegmentationInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_ccgx_dmc_fwct_segmentation_info_get_start_row(const FuStructCcgxDmcFwctSegmentationInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_ccgx_dmc_fwct_segmentation_info_get_num_rows(const FuStructCcgxDmcFwctSegmentationInfo *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_ccgx_dmc_fwct_segmentation_info_set_img_id(FuStructCcgxDmcFwctSegmentationInfo *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_segmentation_info_set_type(FuStructCcgxDmcFwctSegmentationInfo *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_segmentation_info_set_start_row(FuStructCcgxDmcFwctSegmentationInfo *st, guint16 value) G_GNUC_NON_NULL(1);
void fu_struct_ccgx_dmc_fwct_segmentation_info_set_num_rows(FuStructCcgxDmcFwctSegmentationInfo *st, guint16 value) G_GNUC_NON_NULL(1);

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_FWCT_SEGMENTATION_INFO_OFFSET_IMG_ID 0x0
#define FU_STRUCT_CCGX_DMC_FWCT_SEGMENTATION_INFO_OFFSET_TYPE 0x1
#define FU_STRUCT_CCGX_DMC_FWCT_SEGMENTATION_INFO_OFFSET_START_ROW 0x2
#define FU_STRUCT_CCGX_DMC_FWCT_SEGMENTATION_INFO_OFFSET_NUM_ROWS 0x4
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_CCGX_DMC_FWCT_SEGMENTATION_INFO_SIZE 0x8
#endif

#ifndef __GI_SCANNER__
#endif
