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

#pragma once
#include <fu-input-stream.h>
/**
 * FuUsbDeviceMsDs20Desc:
 */
typedef enum {
    /**
     * FU_USB_DEVICE_MS_DS20_DESC_SET_HEADER_DESCRIPTOR:
     */
    FU_USB_DEVICE_MS_DS20_DESC_SET_HEADER_DESCRIPTOR,
    /**
     * FU_USB_DEVICE_MS_DS20_DESC_SUBSET_HEADER_CONFIGURATION:
     */
    FU_USB_DEVICE_MS_DS20_DESC_SUBSET_HEADER_CONFIGURATION,
    /**
     * FU_USB_DEVICE_MS_DS20_DESC_SUBSET_HEADER_FUNCTION:
     */
    FU_USB_DEVICE_MS_DS20_DESC_SUBSET_HEADER_FUNCTION,
    /**
     * FU_USB_DEVICE_MS_DS20_DESC_FEATURE_COMPATIBLE_ID:
     */
    FU_USB_DEVICE_MS_DS20_DESC_FEATURE_COMPATIBLE_ID,
    /**
     * FU_USB_DEVICE_MS_DS20_DESC_FEATURE_REG_PROPERTY:
     */
    FU_USB_DEVICE_MS_DS20_DESC_FEATURE_REG_PROPERTY,
    /**
     * FU_USB_DEVICE_MS_DS20_DESC_FEATURE_MIN_RESUME_TIME:
     */
    FU_USB_DEVICE_MS_DS20_DESC_FEATURE_MIN_RESUME_TIME,
    /**
     * FU_USB_DEVICE_MS_DS20_DESC_FEATURE_MODEL_ID:
     */
    FU_USB_DEVICE_MS_DS20_DESC_FEATURE_MODEL_ID,
    /**
     * FU_USB_DEVICE_MS_DS20_DESC_FEATURE_CCGP_DEVICE:
     */
    FU_USB_DEVICE_MS_DS20_DESC_FEATURE_CCGP_DEVICE,
    /**
     * FU_USB_DEVICE_MS_DS20_DESC_FEATURE_VENDOR_REVISION:
     */
    FU_USB_DEVICE_MS_DS20_DESC_FEATURE_VENDOR_REVISION,
}  FuUsbDeviceMsDs20Desc;
#define FU_USB_DEVICE_MS_DS20_DESC_LAST 9
const gchar *fu_usb_device_ms_ds20_desc_to_string(FuUsbDeviceMsDs20Desc val) G_GNUC_CONST;
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructDs20;

FuStructDs20 *fu_struct_ds20_ref(FuStructDs20 *st) G_GNUC_NON_NULL(1);
void fu_struct_ds20_unref(FuStructDs20 *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructDs20, fu_struct_ds20_unref)
FuStructDs20 *fu_struct_ds20_new(void) G_GNUC_WARN_UNUSED_RESULT;
FuStructDs20 *fu_struct_ds20_parse_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
const fwupd_guid_t *fu_struct_ds20_get_guid(const FuStructDs20 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_ds20_get_platform_ver(const FuStructDs20 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_ds20_get_total_length(const FuStructDs20 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ds20_get_vendor_code(const FuStructDs20 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_ds20_get_alt_code(const FuStructDs20 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_ds20_set_guid(FuStructDs20 *st, const fwupd_guid_t *value) G_GNUC_NON_NULL(1, 2);
void fu_struct_ds20_set_platform_ver(FuStructDs20 *st, guint32 value) G_GNUC_NON_NULL(1);
void fu_struct_ds20_set_total_length(FuStructDs20 *st, guint16 value) G_GNUC_NON_NULL(1);
void fu_struct_ds20_set_vendor_code(FuStructDs20 *st, guint8 value) G_GNUC_NON_NULL(1);
void fu_struct_ds20_set_alt_code(FuStructDs20 *st, guint8 value) G_GNUC_NON_NULL(1);

#ifndef __GI_SCANNER__
#define FU_STRUCT_DS20_OFFSET_GUID 0x1
#define FU_STRUCT_DS20_OFFSET_PLATFORM_VER 0x11
#define FU_STRUCT_DS20_OFFSET_TOTAL_LENGTH 0x15
#define FU_STRUCT_DS20_OFFSET_VENDOR_CODE 0x17
#define FU_STRUCT_DS20_OFFSET_ALT_CODE 0x18
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_DS20_SIZE 0x19
#endif

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

FuStructMsDs20 *fu_struct_ms_ds20_ref(FuStructMsDs20 *st) G_GNUC_NON_NULL(1);
void fu_struct_ms_ds20_unref(FuStructMsDs20 *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructMsDs20, fu_struct_ms_ds20_unref)
FuStructMsDs20 *fu_struct_ms_ds20_new(void) G_GNUC_WARN_UNUSED_RESULT;
FuStructMsDs20 *fu_struct_ms_ds20_parse_stream(GInputStream *stream, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_ms_ds20_get_size(const FuStructMsDs20 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_ms_ds20_get_type(const FuStructMsDs20 *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
void fu_struct_ms_ds20_set_size(FuStructMsDs20 *st, guint16 value) G_GNUC_NON_NULL(1);
void fu_struct_ms_ds20_set_type(FuStructMsDs20 *st, guint16 value) G_GNUC_NON_NULL(1);

#ifndef __GI_SCANNER__
#define FU_STRUCT_MS_DS20_OFFSET_SIZE 0x0
#define FU_STRUCT_MS_DS20_OFFSET_TYPE 0x2
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_MS_DS20_SIZE 0x4
#endif

#ifndef __GI_SCANNER__
#endif
