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

#pragma once
#include <fu-input-stream.h>
/**
 * FuNvmeStatus:
 */
typedef enum {
    /**
     * FU_NVME_STATUS_SUCCESS:
     *
     * Generic Command Status:
     */
    FU_NVME_STATUS_SUCCESS = 0x0,
    /**
     * FU_NVME_STATUS_INVALID_OPCODE:
     */
    FU_NVME_STATUS_INVALID_OPCODE = 0x1,
    /**
     * FU_NVME_STATUS_INVALID_FIELD:
     */
    FU_NVME_STATUS_INVALID_FIELD = 0x2,
    /**
     * FU_NVME_STATUS_CMDID_CONFLICT:
     */
    FU_NVME_STATUS_CMDID_CONFLICT = 0x3,
    /**
     * FU_NVME_STATUS_DATA_XFER_ERROR:
     */
    FU_NVME_STATUS_DATA_XFER_ERROR = 0x4,
    /**
     * FU_NVME_STATUS_POWER_LOSS:
     */
    FU_NVME_STATUS_POWER_LOSS = 0x5,
    /**
     * FU_NVME_STATUS_INTERNAL:
     */
    FU_NVME_STATUS_INTERNAL = 0x6,
    /**
     * FU_NVME_STATUS_ABORT_REQ:
     */
    FU_NVME_STATUS_ABORT_REQ = 0x7,
    /**
     * FU_NVME_STATUS_ABORT_QUEUE:
     */
    FU_NVME_STATUS_ABORT_QUEUE = 0x8,
    /**
     * FU_NVME_STATUS_FUSED_FAIL:
     */
    FU_NVME_STATUS_FUSED_FAIL = 0x9,
    /**
     * FU_NVME_STATUS_FUSED_MISSING:
     */
    FU_NVME_STATUS_FUSED_MISSING = 0xa,
    /**
     * FU_NVME_STATUS_INVALID_NS:
     */
    FU_NVME_STATUS_INVALID_NS = 0xb,
    /**
     * FU_NVME_STATUS_CMD_SEQ_ERROR:
     */
    FU_NVME_STATUS_CMD_SEQ_ERROR = 0xc,
    /**
     * FU_NVME_STATUS_SGL_INVALID_LAST:
     */
    FU_NVME_STATUS_SGL_INVALID_LAST = 0xd,
    /**
     * FU_NVME_STATUS_SGL_INVALID_COUNT:
     */
    FU_NVME_STATUS_SGL_INVALID_COUNT = 0xe,
    /**
     * FU_NVME_STATUS_SGL_INVALID_DATA:
     */
    FU_NVME_STATUS_SGL_INVALID_DATA = 0xf,
    /**
     * FU_NVME_STATUS_SGL_INVALID_METADATA:
     */
    FU_NVME_STATUS_SGL_INVALID_METADATA = 0x10,
    /**
     * FU_NVME_STATUS_SGL_INVALID_TYPE:
     */
    FU_NVME_STATUS_SGL_INVALID_TYPE = 0x11,
    /**
     * FU_NVME_STATUS_SGL_INVALID_OFFSET:
     */
    FU_NVME_STATUS_SGL_INVALID_OFFSET = 0x16,
    /**
     * FU_NVME_STATUS_SGL_INVALID_SUBTYPE:
     */
    FU_NVME_STATUS_SGL_INVALID_SUBTYPE = 0x17,
    /**
     * FU_NVME_STATUS_SANITIZE_FAILED:
     */
    FU_NVME_STATUS_SANITIZE_FAILED = 0x1c,
    /**
     * FU_NVME_STATUS_SANITIZE_IN_PROGRESS:
     */
    FU_NVME_STATUS_SANITIZE_IN_PROGRESS = 0x1d,
    /**
     * FU_NVME_STATUS_NS_WRITE_PROTECTED:
     */
    FU_NVME_STATUS_NS_WRITE_PROTECTED = 0x20,
    /**
     * FU_NVME_STATUS_LBA_RANGE:
     */
    FU_NVME_STATUS_LBA_RANGE = 0x80,
    /**
     * FU_NVME_STATUS_CAP_EXCEEDED:
     */
    FU_NVME_STATUS_CAP_EXCEEDED = 0x81,
    /**
     * FU_NVME_STATUS_NS_NOT_READY:
     */
    FU_NVME_STATUS_NS_NOT_READY = 0x82,
    /**
     * FU_NVME_STATUS_RESERVATION_CONFLICT:
     */
    FU_NVME_STATUS_RESERVATION_CONFLICT = 0x83,
    /**
     * FU_NVME_STATUS_CQ_INVALID:
     *
     * command specific status:
     */
    FU_NVME_STATUS_CQ_INVALID = 0x100,
    /**
     * FU_NVME_STATUS_QID_INVALID:
     */
    FU_NVME_STATUS_QID_INVALID = 0x101,
    /**
     * FU_NVME_STATUS_QUEUE_SIZE:
     */
    FU_NVME_STATUS_QUEUE_SIZE = 0x102,
    /**
     * FU_NVME_STATUS_ABORT_LIMIT:
     */
    FU_NVME_STATUS_ABORT_LIMIT = 0x103,
    /**
     * FU_NVME_STATUS_ABORT_MISSING:
     */
    FU_NVME_STATUS_ABORT_MISSING = 0x104,
    /**
     * FU_NVME_STATUS_ASYNC_LIMIT:
     */
    FU_NVME_STATUS_ASYNC_LIMIT = 0x105,
    /**
     * FU_NVME_STATUS_FIRMWARE_SLOT:
     */
    FU_NVME_STATUS_FIRMWARE_SLOT = 0x106,
    /**
     * FU_NVME_STATUS_FIRMWARE_IMAGE:
     */
    FU_NVME_STATUS_FIRMWARE_IMAGE = 0x107,
    /**
     * FU_NVME_STATUS_INVALID_VECTOR:
     */
    FU_NVME_STATUS_INVALID_VECTOR = 0x108,
    /**
     * FU_NVME_STATUS_INVALID_LOG_PAGE:
     */
    FU_NVME_STATUS_INVALID_LOG_PAGE = 0x109,
    /**
     * FU_NVME_STATUS_INVALID_FORMAT:
     */
    FU_NVME_STATUS_INVALID_FORMAT = 0x10a,
    /**
     * FU_NVME_STATUS_FW_NEEDS_CONV_RESET:
     */
    FU_NVME_STATUS_FW_NEEDS_CONV_RESET = 0x10b,
    /**
     * FU_NVME_STATUS_INVALID_QUEUE:
     */
    FU_NVME_STATUS_INVALID_QUEUE = 0x10c,
    /**
     * FU_NVME_STATUS_FEATURE_NOT_SAVEABLE:
     */
    FU_NVME_STATUS_FEATURE_NOT_SAVEABLE = 0x10d,
    /**
     * FU_NVME_STATUS_FEATURE_NOT_CHANGEABLE:
     */
    FU_NVME_STATUS_FEATURE_NOT_CHANGEABLE = 0x10e,
    /**
     * FU_NVME_STATUS_FEATURE_NOT_PER_NS:
     */
    FU_NVME_STATUS_FEATURE_NOT_PER_NS = 0x10f,
    /**
     * FU_NVME_STATUS_FW_NEEDS_SUBSYS_RESET:
     */
    FU_NVME_STATUS_FW_NEEDS_SUBSYS_RESET = 0x110,
    /**
     * FU_NVME_STATUS_FW_NEEDS_RESET:
     */
    FU_NVME_STATUS_FW_NEEDS_RESET = 0x111,
    /**
     * FU_NVME_STATUS_FW_NEEDS_MAX_TIME:
     */
    FU_NVME_STATUS_FW_NEEDS_MAX_TIME = 0x112,
    /**
     * FU_NVME_STATUS_FW_ACTIVATE_PROHIBITED:
     */
    FU_NVME_STATUS_FW_ACTIVATE_PROHIBITED = 0x113,
    /**
     * FU_NVME_STATUS_OVERLAPPING_RANGE:
     */
    FU_NVME_STATUS_OVERLAPPING_RANGE = 0x114,
    /**
     * FU_NVME_STATUS_NS_INSUFFICENT_CAP:
     */
    FU_NVME_STATUS_NS_INSUFFICENT_CAP = 0x115,
    /**
     * FU_NVME_STATUS_NS_ID_UNAVAILABLE:
     */
    FU_NVME_STATUS_NS_ID_UNAVAILABLE = 0x116,
    /**
     * FU_NVME_STATUS_NS_ALREADY_ATTACHED:
     */
    FU_NVME_STATUS_NS_ALREADY_ATTACHED = 0x118,
    /**
     * FU_NVME_STATUS_NS_IS_PRIVATE:
     */
    FU_NVME_STATUS_NS_IS_PRIVATE = 0x119,
    /**
     * FU_NVME_STATUS_NS_NOT_ATTACHED:
     */
    FU_NVME_STATUS_NS_NOT_ATTACHED = 0x11a,
    /**
     * FU_NVME_STATUS_THIN_PROV_NOT_SUPP:
     */
    FU_NVME_STATUS_THIN_PROV_NOT_SUPP = 0x11b,
    /**
     * FU_NVME_STATUS_CTRL_LIST_INVALID:
     */
    FU_NVME_STATUS_CTRL_LIST_INVALID = 0x11c,
    /**
     * FU_NVME_STATUS_BP_WRITE_PROHIBITED:
     */
    FU_NVME_STATUS_BP_WRITE_PROHIBITED = 0x11e,
    /**
     * FU_NVME_STATUS_BAD_ATTRIBUTES:
     *
     * i/o command set specific - nvm commands:
     */
    FU_NVME_STATUS_BAD_ATTRIBUTES = 0x180,
    /**
     * FU_NVME_STATUS_INVALID_PI:
     */
    FU_NVME_STATUS_INVALID_PI = 0x181,
    /**
     * FU_NVME_STATUS_READ_ONLY:
     */
    FU_NVME_STATUS_READ_ONLY = 0x182,
    /**
     * FU_NVME_STATUS_ONCS_NOT_SUPPORTED:
     */
    FU_NVME_STATUS_ONCS_NOT_SUPPORTED = 0x183,
    /**
     * FU_NVME_STATUS_DISCOVERY_RESTART:
     */
    FU_NVME_STATUS_DISCOVERY_RESTART = 0x190,
    /**
     * FU_NVME_STATUS_AUTH_REQUIRED:
     */
    FU_NVME_STATUS_AUTH_REQUIRED = 0x191,
    /**
     * FU_NVME_STATUS_WRITE_FAULT:
     *
     * media and data integrity errors:
     */
    FU_NVME_STATUS_WRITE_FAULT = 0x280,
    /**
     * FU_NVME_STATUS_READ_ERROR:
     */
    FU_NVME_STATUS_READ_ERROR = 0x281,
    /**
     * FU_NVME_STATUS_GUARD_CHECK:
     */
    FU_NVME_STATUS_GUARD_CHECK = 0x282,
    /**
     * FU_NVME_STATUS_APPTAG_CHECK:
     */
    FU_NVME_STATUS_APPTAG_CHECK = 0x283,
    /**
     * FU_NVME_STATUS_REFTAG_CHECK:
     */
    FU_NVME_STATUS_REFTAG_CHECK = 0x284,
    /**
     * FU_NVME_STATUS_COMPARE_FAILED:
     */
    FU_NVME_STATUS_COMPARE_FAILED = 0x285,
    /**
     * FU_NVME_STATUS_ACCESS_DENIED:
     */
    FU_NVME_STATUS_ACCESS_DENIED = 0x286,
    /**
     * FU_NVME_STATUS_UNWRITTEN_BLOCK:
     */
    FU_NVME_STATUS_UNWRITTEN_BLOCK = 0x287,
    /**
     * FU_NVME_STATUS_ANA_PERSISTENT_LOSS:
     *
     * path-related errors:
     */
    FU_NVME_STATUS_ANA_PERSISTENT_LOSS = 0x301,
    /**
     * FU_NVME_STATUS_ANA_INACCESSIBLE:
     */
    FU_NVME_STATUS_ANA_INACCESSIBLE = 0x302,
    /**
     * FU_NVME_STATUS_ANA_TRANSITION:
     */
    FU_NVME_STATUS_ANA_TRANSITION = 0x303,
    /**
     * FU_NVME_STATUS_DNR:
     */
    FU_NVME_STATUS_DNR = 0x4000,
}  FuNvmeStatus;
const gchar *fu_nvme_status_to_string(FuNvmeStatus val) G_GNUC_CONST;
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructNvmeIdCtrl;

FuStructNvmeIdCtrl *fu_struct_nvme_id_ctrl_ref(FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1);
void fu_struct_nvme_id_ctrl_unref(FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructNvmeIdCtrl, fu_struct_nvme_id_ctrl_unref)
FuStructNvmeIdCtrl *fu_struct_nvme_id_ctrl_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_vid(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_ssvid(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_nvme_id_ctrl_get_sn(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_nvme_id_ctrl_get_mn(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_nvme_id_ctrl_get_fr(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_rab(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
const guint8 *fu_struct_nvme_id_ctrl_get_ieee(const FuStructNvmeIdCtrl *st, gsize *bufsz) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_cmic(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_mdts(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_cntlid(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_nvme_id_ctrl_get_ver(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_nvme_id_ctrl_get_rtd3r(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_nvme_id_ctrl_get_rtd3e(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_nvme_id_ctrl_get_oaes(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_nvme_id_ctrl_get_ctratt(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_cntrltype(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
const fwupd_guid_t *fu_struct_nvme_id_ctrl_get_fguid(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_crdt1(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_crdt2(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_crdt3(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_oacs(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_acl(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_aerl(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_frmw(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_lpa(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_elpe(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_npss(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_avscc(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_apsta(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_wctemp(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_cctemp(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_mtfa(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_nvme_id_ctrl_get_hmpre(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_nvme_id_ctrl_get_hmmin(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
const guint8 *fu_struct_nvme_id_ctrl_get_tnvmcap(const FuStructNvmeIdCtrl *st, gsize *bufsz) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
const guint8 *fu_struct_nvme_id_ctrl_get_unvmcap(const FuStructNvmeIdCtrl *st, gsize *bufsz) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_nvme_id_ctrl_get_rpmbs(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_edstt(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_dsto(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_fwug(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_kas(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_hctma(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_mntmt(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_mxtmt(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_nvme_id_ctrl_get_sanicap(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_nvme_id_ctrl_get_hmminds(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_hmmaxd(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_nvmsetidmax(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint16 fu_struct_nvme_id_ctrl_get_endgidmax(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_anatt(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_id_ctrl_get_anacap(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_nvme_id_ctrl_get_anagrpmax(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint32 fu_struct_nvme_id_ctrl_get_nanagrpid(const FuStructNvmeIdCtrl *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_VID 0x0
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_SSVID 0x2
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_SN 0x4
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_MN 0x18
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_FR 0x40
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_RAB 0x48
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_IEEE 0x49
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_CMIC 0x4C
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_MDTS 0x4D
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_CNTLID 0x4E
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_VER 0x50
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_RTD3R 0x54
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_RTD3E 0x58
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_OAES 0x5C
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_CTRATT 0x60
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_CNTRLTYPE 0x6F
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_FGUID 0x70
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_CRDT1 0x80
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_CRDT2 0x82
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_CRDT3 0x84
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_OACS 0x100
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_ACL 0x102
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_AERL 0x103
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_FRMW 0x104
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_LPA 0x105
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_ELPE 0x106
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_NPSS 0x107
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_AVSCC 0x108
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_APSTA 0x109
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_WCTEMP 0x10A
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_CCTEMP 0x10C
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_MTFA 0x10E
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_HMPRE 0x110
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_HMMIN 0x114
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_TNVMCAP 0x118
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_UNVMCAP 0x128
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_RPMBS 0x138
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_EDSTT 0x13C
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_DSTO 0x13E
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_FWUG 0x13F
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_KAS 0x140
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_HCTMA 0x142
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_MNTMT 0x144
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_MXTMT 0x146
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_SANICAP 0x148
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_HMMINDS 0x14C
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_HMMAXD 0x150
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_NVMSETIDMAX 0x152
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_ENDGIDMAX 0x154
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_ANATT 0x156
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_ANACAP 0x157
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_ANAGRPMAX 0x158
#define FU_STRUCT_NVME_ID_CTRL_OFFSET_NANAGRPID 0x15C
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_NVME_ID_CTRL_SIZE_SN 0x14
#define FU_STRUCT_NVME_ID_CTRL_N_ELEMENTS_SN 20
#define FU_STRUCT_NVME_ID_CTRL_SIZE_MN 0x28
#define FU_STRUCT_NVME_ID_CTRL_N_ELEMENTS_MN 40
#define FU_STRUCT_NVME_ID_CTRL_SIZE_FR 0x8
#define FU_STRUCT_NVME_ID_CTRL_N_ELEMENTS_FR 8
#define FU_STRUCT_NVME_ID_CTRL_SIZE_IEEE 0x3
#define FU_STRUCT_NVME_ID_CTRL_N_ELEMENTS_IEEE 3
#define FU_STRUCT_NVME_ID_CTRL_SIZE_TNVMCAP 0x10
#define FU_STRUCT_NVME_ID_CTRL_N_ELEMENTS_TNVMCAP 16
#define FU_STRUCT_NVME_ID_CTRL_SIZE_UNVMCAP 0x10
#define FU_STRUCT_NVME_ID_CTRL_N_ELEMENTS_UNVMCAP 16
#define FU_STRUCT_NVME_ID_CTRL_SIZE 0x1000
#endif

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

FuStructNvmeFwSlotInfoLog *fu_struct_nvme_fw_slot_info_log_ref(FuStructNvmeFwSlotInfoLog *st) G_GNUC_NON_NULL(1);
void fu_struct_nvme_fw_slot_info_log_unref(FuStructNvmeFwSlotInfoLog *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructNvmeFwSlotInfoLog, fu_struct_nvme_fw_slot_info_log_unref)
FuStructNvmeFwSlotInfoLog *fu_struct_nvme_fw_slot_info_log_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint8 fu_struct_nvme_fw_slot_info_log_get_afi(const FuStructNvmeFwSlotInfoLog *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
guint64 fu_struct_nvme_fw_slot_info_log_get_frs(const FuStructNvmeFwSlotInfoLog *st, guint idx) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_NVME_FW_SLOT_INFO_LOG_OFFSET_AFI 0x0
#define FU_STRUCT_NVME_FW_SLOT_INFO_LOG_OFFSET_FRS 0x8
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_NVME_FW_SLOT_INFO_LOG_SIZE_FRS 0x38
#define FU_STRUCT_NVME_FW_SLOT_INFO_LOG_N_ELEMENTS_FRS 7
#define FU_STRUCT_NVME_FW_SLOT_INFO_LOG_SIZE 0x200
#endif

#ifndef __GI_SCANNER__
#endif
