Mac OS X Reference Library Apple Developer
Search

SCSICmds_REQUEST_SENSE_Defs.h

Includes:
<IOKit/IOTypes.h>
<CoreFoundation/CoreFoundation.h>

Overview

This file contains all definitions for the data returned from the REQUEST SENSE (0x03) command and from auto sense on protocols that support it.



Typedefs

SCSI_Sense_Data

SCSI_Sense_Data



typedef struct SCSI_Sense_Data { 
    UInt8 VALID_RESPONSE_CODE; // 7 = Valid. 6-0 = Response Code. 
    UInt8 SEGMENT_NUMBER; // Segment number 
    UInt8 SENSE_KEY; // 7 = FILEMARK, 6 = EOM, 5 = ILI, 3-0 = SENSE KEY. 
    UInt8 INFORMATION_1; // INFORMATION. 
    UInt8 INFORMATION_2; // INFORMATION. 
    UInt8 INFORMATION_3; // INFORMATION. 
    UInt8 INFORMATION_4; // INFORMATION. 
    UInt8 ADDITIONAL_SENSE_LENGTH; // Number of additional bytes available in sense data 
    UInt8 COMMAND_SPECIFIC_INFORMATION_1; // Command Specific Information 
    UInt8 COMMAND_SPECIFIC_INFORMATION_2; // Command Specific Information 
    UInt8 COMMAND_SPECIFIC_INFORMATION_3; // Command Specific Information 
    UInt8 COMMAND_SPECIFIC_INFORMATION_4; // Command Specific Information 
    UInt8 ADDITIONAL_SENSE_CODE; // Additional Sense Code 
    UInt8 ADDITIONAL_SENSE_CODE_QUALIFIER; // Additional Sense Code Qualifier 
    UInt8 FIELD_REPLACEABLE_UNIT_CODE; // Field Replaceable Unit Code 
    UInt8 SKSV_SENSE_KEY_SPECIFIC_MSB; // 7 = Sense Key Specific Valid bit, 6-0 Sense Key Specific MSB 
    UInt8 SENSE_KEY_SPECIFIC_MID; // Sense Key Specific Middle 
    UInt8 SENSE_KEY_SPECIFIC_LSB; // Sense Key Specific LSB 
} SCSI_Sense_Data;  
Discussion

The basic SCSI Request Sense data structure.

Enumerated Types

EOM bit field definitions
FILEMARK bit field definitions
ILI bit field definitions
kSenseDefaultSize
Sense Key definitions
Sense Response Codes
Sense Valid

EOM bit field definitions



enum { 
    kSENSE_EOM_Set = 0x40, 
    kSENSE_EOM_Not_Set = 0x00, 
    kSENSE_EOM_Mask = 0x40 
};  
Constants
kSENSE_EOM_Set

End Of Medium bit is set.

kSENSE_EOM_Not_Set

End Of Medium bit is not set.

kSENSE_EOM_Mask

Mask to use when checking the SENSE_KEY field for the EOM bit.

Discussion

Masks and values to determine the End Of Medium bit field.


FILEMARK bit field definitions



enum { 
    kSENSE_FILEMARK_Set = 0x80, 
    kSENSE_FILEMARK_Not_Set = 0x00, 
    kSENSE_FILEMARK_Mask = 0x80 
};  
Constants
kSENSE_FILEMARK_Set

Filemark bit is set.

kSENSE_FILEMARK_Not_Set

Filemark bit is not set.

kSENSE_FILEMARK_Mask

Mask to use when checking the SENSE_KEY field for the FILEMARK bit.

Discussion

Masks and values to determine the FileMark bit field.


ILI bit field definitions



enum { 
    kSENSE_ILI_Set = 0x20, 
    kSENSE_ILI_Not_Set = 0x00, 
    kSENSE_ILI_Mask = 0x20 
};  
Constants
kSENSE_ILI_Set

Incorrect Length Indicator bit is set.

kSENSE_ILI_Not_Set

Incorrect Length Indicator bit is not set.

kSENSE_ILI_Mask

Mask to use when checking the SENSE_KEY field for the ILI bit.

Discussion

Masks and values to determine the Incorrect Length Indicator bit field.


kSenseDefaultSize



enum { 
    kSenseDefaultSize = 18 
};  
Discussion

The default size for SCSI Request Sense data.


Sense Key definitions



enum { 
    kSENSE_KEY_NO_SENSE = 0x00, 
    kSENSE_KEY_RECOVERED_ERROR = 0x01, 
    kSENSE_KEY_NOT_READY = 0x02, 
    kSENSE_KEY_MEDIUM_ERROR = 0x03, 
    kSENSE_KEY_HARDWARE_ERROR = 0x04, 
    kSENSE_KEY_ILLEGAL_REQUEST = 0x05, 
    kSENSE_KEY_UNIT_ATTENTION = 0x06, 
    kSENSE_KEY_DATA_PROTECT = 0x07, 
    kSENSE_KEY_BLANK_CHECK = 0x08, 
    kSENSE_KEY_VENDOR_SPECIFIC = 0x09, 
    kSENSE_KEY_COPY_ABORTED = 0x0A, 
    kSENSE_KEY_ABORTED_COMMAND = 0x0B, 
    /* SENSE KEY 0x0C is obsoleted */
    kSENSE_KEY_VOLUME_OVERFLOW = 0x0D, 
    kSENSE_KEY_MISCOMPARE = 0x0E, 
    /* SENSE KEY 0x0F is reserved */
    kSENSE_KEY_Mask = 0x0F 
};  
Constants
kSENSE_KEY_NO_SENSE

No sense data is present.

kSENSE_KEY_RECOVERED_ERROR

A recovered error has occurred.

kSENSE_KEY_NOT_READY

Device server is not ready.

kSENSE_KEY_MEDIUM_ERROR

Device server detected a medium error.

kSENSE_KEY_HARDWARE_ERROR

Device server detected a hardware error.

kSENSE_KEY_ILLEGAL_REQUEST

Device server detected an illegal request.

kSENSE_KEY_UNIT_ATTENTION

Device server indicates a unit attention condition.

kSENSE_KEY_DATA_PROTECT

Device server indicates a data protect condition.

kSENSE_KEY_BLANK_CHECK

Device server indicates a blank check condition.

kSENSE_KEY_VENDOR_SPECIFIC

Device server indicates a vendor specific condition.

kSENSE_KEY_COPY_ABORTED

Device server indicates a copy aborted condition.

kSENSE_KEY_ABORTED_COMMAND

Device server indicates an aborted command condition.

kSENSE_KEY_VOLUME_OVERFLOW

Device server indicates a volume overflow condition.

kSENSE_KEY_MISCOMPARE

Device server indicates a miscompare condition.

kSENSE_KEY_Mask

Mask to use when checking the SENSE_KEY field for the SENSE_KEY value.

Discussion

Masks and values to determine the SENSE_KEY.


Sense Response Codes



enum { 
    kSENSE_RESPONSE_CODE_Current_Errors = 0x70, 
    kSENSE_RESPONSE_CODE_Deferred_Errors = 0x71, 
    kSENSE_RESPONSE_CODE_Mask = 0x7F 
};  
Constants
kSENSE_RESPONSE_CODE_Current_Errors

Response code indicating current errors are reported.

kSENSE_RESPONSE_CODE_Deferred_Errors

Response code indicating deferred errors are reported.

kSENSE_RESPONSE_CODE_Mask

Mask to use when checking the VALID_RESPONSE_CODE field.

Discussion

Masks and values to determine the Response Code.


Sense Valid



enum { 
    kSENSE_DATA_VALID = 0x80, 
    kSENSE_NOT_DATA_VALID = 0x00, 
    kSENSE_DATA_VALID_Mask = 0x80 
};  
Constants
kSENSE_DATA_VALID

Sense data is valid.

kSENSE_NOT_DATA_VALID

Sense data is not valid.

kSENSE_DATA_VALID_Mask

Validity mask to use when checking the VALID_RESPONSE_CODE field.

Discussion

Masks to use to determine if sense data is valid or not.

 

Did this document help you? Yes It's good, but... Not helpful...

Last Updated: 2010-07-29