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

#pragma once
#include <fu-input-stream.h>
/**
 * FuDellDockI2cSpeed:
 */
typedef enum {
    /**
     * FU_DELL_DOCK_I2C_SPEED_250K:
     */
    FU_DELL_DOCK_I2C_SPEED_250K,
    /**
     * FU_DELL_DOCK_I2C_SPEED_400K:
     */
    FU_DELL_DOCK_I2C_SPEED_400K,
    /**
     * FU_DELL_DOCK_I2C_SPEED_800K:
     */
    FU_DELL_DOCK_I2C_SPEED_800K,
}  FuDellDockI2cSpeed;
#define FU_DELL_DOCK_I2C_SPEED_LAST 3
/**
 * FuDellDockMstCmd:
 */
typedef enum {
    /**
     * FU_DELL_DOCK_MST_CMD_ENABLE_REMOTE_CONTROL:
     */
    FU_DELL_DOCK_MST_CMD_ENABLE_REMOTE_CONTROL = 0x1,
    /**
     * FU_DELL_DOCK_MST_CMD_DISABLE_REMOTE_CONTROL:
     */
    FU_DELL_DOCK_MST_CMD_DISABLE_REMOTE_CONTROL = 0x2,
    /**
     * FU_DELL_DOCK_MST_CMD_CHECKSUM:
     */
    FU_DELL_DOCK_MST_CMD_CHECKSUM = 0x11,
    /**
     * FU_DELL_DOCK_MST_CMD_ERASE_FLASH:
     */
    FU_DELL_DOCK_MST_CMD_ERASE_FLASH = 0x14,
    /**
     * FU_DELL_DOCK_MST_CMD_CRC16_CHECKSUM:
     *
     * Cayenne specific
     */
    FU_DELL_DOCK_MST_CMD_CRC16_CHECKSUM = 0x17,
    /**
     * FU_DELL_DOCK_MST_CMD_ACTIVATE_FW:
     *
     * Cayenne specific
     */
    FU_DELL_DOCK_MST_CMD_ACTIVATE_FW = 0x18,
    /**
     * FU_DELL_DOCK_MST_CMD_WRITE_FLASH:
     */
    FU_DELL_DOCK_MST_CMD_WRITE_FLASH = 0x20,
    /**
     * FU_DELL_DOCK_MST_CMD_WRITE_MEMORY:
     */
    FU_DELL_DOCK_MST_CMD_WRITE_MEMORY = 0x21,
    /**
     * FU_DELL_DOCK_MST_CMD_READ_FLASH:
     */
    FU_DELL_DOCK_MST_CMD_READ_FLASH = 0x30,
    /**
     * FU_DELL_DOCK_MST_CMD_READ_MEMORY:
     */
    FU_DELL_DOCK_MST_CMD_READ_MEMORY = 0x31,
}  FuDellDockMstCmd;
/**
 * FuDellDockMstType:
 */
typedef enum {
    /**
     * FU_DELL_DOCK_MST_TYPE_UNKNOWN:
     */
    FU_DELL_DOCK_MST_TYPE_UNKNOWN,
    /**
     * FU_DELL_DOCK_MST_TYPE_PANAMERA:
     */
    FU_DELL_DOCK_MST_TYPE_PANAMERA,
    /**
     * FU_DELL_DOCK_MST_TYPE_CAYENNE:
     */
    FU_DELL_DOCK_MST_TYPE_CAYENNE,
}  FuDellDockMstType;
#define FU_DELL_DOCK_MST_TYPE_LAST 3
/**
 * FuDellDockMstBank:
 */
typedef enum {
    /**
     * FU_DELL_DOCK_MST_BANK_0:
     */
    FU_DELL_DOCK_MST_BANK_0,
    /**
     * FU_DELL_DOCK_MST_BANK_1:
     */
    FU_DELL_DOCK_MST_BANK_1,
    /**
     * FU_DELL_DOCK_MST_BANK_ESM:
     */
    FU_DELL_DOCK_MST_BANK_ESM,
    /**
     * FU_DELL_DOCK_MST_BANK_CAYENNE:
     */
    FU_DELL_DOCK_MST_BANK_CAYENNE,
}  FuDellDockMstBank;
#define FU_DELL_DOCK_MST_BANK_LAST 4
/**
 * FuDellDockModuleType:
 */
typedef enum {
    /**
     * FU_DELL_DOCK_MODULE_TYPE_W45_TBT:
     */
    FU_DELL_DOCK_MODULE_TYPE_W45_TBT = 1,
    /**
     * FU_DELL_DOCK_MODULE_TYPE_W45_GENERIC:
     */
    FU_DELL_DOCK_MODULE_TYPE_W45_GENERIC,
    /**
     * FU_DELL_DOCK_MODULE_TYPE_W130_TBT:
     */
    FU_DELL_DOCK_MODULE_TYPE_W130_TBT,
    /**
     * FU_DELL_DOCK_MODULE_TYPE_W130_DP:
     */
    FU_DELL_DOCK_MODULE_TYPE_W130_DP,
    /**
     * FU_DELL_DOCK_MODULE_TYPE_W130_UNIVERSAL:
     */
    FU_DELL_DOCK_MODULE_TYPE_W130_UNIVERSAL,
    /**
     * FU_DELL_DOCK_MODULE_TYPE_W240_TRIN:
     */
    FU_DELL_DOCK_MODULE_TYPE_W240_TRIN,
    /**
     * FU_DELL_DOCK_MODULE_TYPE_W210_DUAL:
     */
    FU_DELL_DOCK_MODULE_TYPE_W210_DUAL,
    /**
     * FU_DELL_DOCK_MODULE_TYPE_W130_USB4:
     */
    FU_DELL_DOCK_MODULE_TYPE_W130_USB4,
}  FuDellDockModuleType;
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructDellDockData;

FuStructDellDockData *fu_struct_dell_dock_data_ref(FuStructDellDockData *st) G_GNUC_NON_NULL(1);
void fu_struct_dell_dock_data_unref(FuStructDellDockData *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructDellDockData, fu_struct_dell_dock_data_unref)
FuStructDellDockData *fu_struct_dell_dock_data_parse_bytes(GBytes *blob, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_dell_dock_data_get_dock_configuration(const FuStructDellDockData *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_dell_dock_data_get_dock_type(const FuStructDellDockData *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_dell_dock_data_get_power_supply_wattage(const FuStructDellDockData *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
FuDellDockModuleType fu_struct_dell_dock_data_get_module_type(const FuStructDellDockData *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_dell_dock_data_get_board_id(const FuStructDellDockData *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_dell_dock_data_get_port0_dock_status(const FuStructDellDockData *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_dell_dock_data_get_port1_dock_status(const FuStructDellDockData *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_dell_dock_data_get_dock_firmware_pkg_ver(const FuStructDellDockData *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint64 fu_struct_dell_dock_data_get_module_serial(const FuStructDellDockData *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint64 fu_struct_dell_dock_data_get_original_module_serial(const FuStructDellDockData *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_dell_dock_data_get_service_tag(const FuStructDellDockData *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_dell_dock_data_get_marketing_name(const FuStructDellDockData *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_DELL_DOCK_DATA_OFFSET_DOCK_CONFIGURATION 0x0
#define FU_STRUCT_DELL_DOCK_DATA_OFFSET_DOCK_TYPE 0x1
#define FU_STRUCT_DELL_DOCK_DATA_OFFSET_POWER_SUPPLY_WATTAGE 0x2
#define FU_STRUCT_DELL_DOCK_DATA_OFFSET_MODULE_TYPE 0x4
#define FU_STRUCT_DELL_DOCK_DATA_OFFSET_BOARD_ID 0x6
#define FU_STRUCT_DELL_DOCK_DATA_OFFSET_PORT0_DOCK_STATUS 0x8
#define FU_STRUCT_DELL_DOCK_DATA_OFFSET_PORT1_DOCK_STATUS 0xA
#define FU_STRUCT_DELL_DOCK_DATA_OFFSET_DOCK_FIRMWARE_PKG_VER 0xC
#define FU_STRUCT_DELL_DOCK_DATA_OFFSET_MODULE_SERIAL 0x10
#define FU_STRUCT_DELL_DOCK_DATA_OFFSET_ORIGINAL_MODULE_SERIAL 0x18
#define FU_STRUCT_DELL_DOCK_DATA_OFFSET_SERVICE_TAG 0x20
#define FU_STRUCT_DELL_DOCK_DATA_OFFSET_MARKETING_NAME 0x27
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_DELL_DOCK_DATA_SIZE_SERVICE_TAG 0x7
#define FU_STRUCT_DELL_DOCK_DATA_N_ELEMENTS_SERVICE_TAG 7
#define FU_STRUCT_DELL_DOCK_DATA_SIZE_MARKETING_NAME 0x40
#define FU_STRUCT_DELL_DOCK_DATA_N_ELEMENTS_MARKETING_NAME 64
#define FU_STRUCT_DELL_DOCK_DATA_SIZE 0x67
#endif

#ifndef __GI_SCANNER__
#endif
