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

#pragma once
#include <fu-input-stream.h>
/**
 * FuScsiSenseKey:
 */
typedef enum {
    /**
     * FU_SCSI_SENSE_KEY_NO_SENSE:
     */
    FU_SCSI_SENSE_KEY_NO_SENSE = 0x00,
    /**
     * FU_SCSI_SENSE_KEY_RECOVERED_ERROR:
     */
    FU_SCSI_SENSE_KEY_RECOVERED_ERROR = 0x01,
    /**
     * FU_SCSI_SENSE_KEY_NOT_READY:
     */
    FU_SCSI_SENSE_KEY_NOT_READY = 0x02,
    /**
     * FU_SCSI_SENSE_KEY_MEDIUM_ERROR:
     */
    FU_SCSI_SENSE_KEY_MEDIUM_ERROR = 0x03,
    /**
     * FU_SCSI_SENSE_KEY_HARDWARE_ERROR:
     */
    FU_SCSI_SENSE_KEY_HARDWARE_ERROR = 0x04,
    /**
     * FU_SCSI_SENSE_KEY_ILLEGAL_REQUEST:
     */
    FU_SCSI_SENSE_KEY_ILLEGAL_REQUEST = 0x05,
    /**
     * FU_SCSI_SENSE_KEY_UNIT_ATTENTION:
     */
    FU_SCSI_SENSE_KEY_UNIT_ATTENTION = 0x06,
    /**
     * FU_SCSI_SENSE_KEY_DATA_PROTECT:
     */
    FU_SCSI_SENSE_KEY_DATA_PROTECT = 0x07,
    /**
     * FU_SCSI_SENSE_KEY_BLANK_CHECK:
     */
    FU_SCSI_SENSE_KEY_BLANK_CHECK = 0x08,
    /**
     * FU_SCSI_SENSE_KEY_VENDOR_SPECIFIC:
     */
    FU_SCSI_SENSE_KEY_VENDOR_SPECIFIC = 0x09,
    /**
     * FU_SCSI_SENSE_KEY_COPY_ABORTED:
     */
    FU_SCSI_SENSE_KEY_COPY_ABORTED = 0x0A,
    /**
     * FU_SCSI_SENSE_KEY_ABORTED_COMMAND:
     */
    FU_SCSI_SENSE_KEY_ABORTED_COMMAND = 0x0B,
    /**
     * FU_SCSI_SENSE_KEY_EQUAL:
     */
    FU_SCSI_SENSE_KEY_EQUAL = 0x0C,
    /**
     * FU_SCSI_SENSE_KEY_VOLUME_OVERFLOW:
     */
    FU_SCSI_SENSE_KEY_VOLUME_OVERFLOW = 0x0D,
    /**
     * FU_SCSI_SENSE_KEY_MISCOMPARE:
     */
    FU_SCSI_SENSE_KEY_MISCOMPARE = 0x0E,
}  FuScsiSenseKey;
const gchar *fu_scsi_sense_key_to_string(FuScsiSenseKey val) G_GNUC_CONST;
typedef struct {
  GByteArray *buf;
  guint refcount;
} FuStructScsiInquiry;

FuStructScsiInquiry *fu_struct_scsi_inquiry_ref(FuStructScsiInquiry *st) G_GNUC_NON_NULL(1);
void fu_struct_scsi_inquiry_unref(FuStructScsiInquiry *st) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuStructScsiInquiry, fu_struct_scsi_inquiry_unref)
FuStructScsiInquiry *fu_struct_scsi_inquiry_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_scsi_inquiry_get_vendor_id(const FuStructScsiInquiry *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_scsi_inquiry_get_product_id(const FuStructScsiInquiry *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;
gchar *fu_struct_scsi_inquiry_get_product_rev(const FuStructScsiInquiry *st) G_GNUC_NON_NULL(1) G_GNUC_WARN_UNUSED_RESULT;

#ifndef __GI_SCANNER__
#define FU_STRUCT_SCSI_INQUIRY_OFFSET_VENDOR_ID 0x8
#define FU_STRUCT_SCSI_INQUIRY_OFFSET_PRODUCT_ID 0x10
#define FU_STRUCT_SCSI_INQUIRY_OFFSET_PRODUCT_REV 0x20
#endif

#ifndef __GI_SCANNER__
#define FU_STRUCT_SCSI_INQUIRY_SIZE_VENDOR_ID 0x8
#define FU_STRUCT_SCSI_INQUIRY_N_ELEMENTS_VENDOR_ID 8
#define FU_STRUCT_SCSI_INQUIRY_SIZE_PRODUCT_ID 0x10
#define FU_STRUCT_SCSI_INQUIRY_N_ELEMENTS_PRODUCT_ID 16
#define FU_STRUCT_SCSI_INQUIRY_SIZE_PRODUCT_REV 0x4
#define FU_STRUCT_SCSI_INQUIRY_N_ELEMENTS_PRODUCT_REV 4
#define FU_STRUCT_SCSI_INQUIRY_SIZE 0x24
#endif

#ifndef __GI_SCANNER__
#endif
