Add SCSI sense key values.
This commit is contained in:
@@ -86,38 +86,63 @@ extern "C" {
|
|||||||
uint8_t asb[46]; /**< Additional sense bytes */
|
uint8_t asb[46]; /**< Additional sense bytes */
|
||||||
} mmc_request_sense_t;
|
} mmc_request_sense_t;
|
||||||
|
|
||||||
/**
|
|
||||||
Set this to the maximum value in milliseconds that we will
|
|
||||||
wait on an MMC command.
|
|
||||||
*/
|
|
||||||
extern uint32_t mmc_timeout_ms;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The default timeout (non-read) is 6 seconds.
|
Meanings of the values of mmc_request_sense.sense_key
|
||||||
*/
|
*/
|
||||||
|
typedef enum {
|
||||||
|
MMC_SENSE_KEY_NO_SENSE = 0,
|
||||||
|
MMC_SENSE_KEY_RECOVERED_ERROR = 1,
|
||||||
|
MMC_SENSE_KEY_NOT_READY = 2,
|
||||||
|
MMC_SENSE_KEY_MEDIUM_ERROR = 3,
|
||||||
|
MMC_SENSE_KEY_HARDWARE_ERROR = 4,
|
||||||
|
MMC_SENSE_KEY_ILLEGAL_REQUEST = 5,
|
||||||
|
MMC_SENSE_KEY_UNIT_ATTENTION = 6,
|
||||||
|
MMC_SENSE_KEY_DATA_PROTECT = 7,
|
||||||
|
MMC_SENSE_KEY_FIRMWARE_ERROR = 9,
|
||||||
|
MMC_SENSE_KEY_ABORTED_COMMAND = 11,
|
||||||
|
MMC_SENSE_KEY_EQUAL = 12,
|
||||||
|
MMC_SENSE_KEY_VOLUME_OVERFLOW = 13,
|
||||||
|
MMC_SENSE_KEY_MISCOMPARE = 14,
|
||||||
|
} mmc_sense_key_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Maps a mmc_sense_key_t into a string name.
|
||||||
|
*/
|
||||||
|
extern const char mmc_sense_key2str[16][40];
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set this to the maximum value in milliseconds that we will
|
||||||
|
wait on an MMC command.
|
||||||
|
*/
|
||||||
|
extern uint32_t mmc_timeout_ms;
|
||||||
|
|
||||||
|
/**
|
||||||
|
The default timeout (non-read) is 6 seconds.
|
||||||
|
*/
|
||||||
#define MMC_TIMEOUT_DEFAULT 6000
|
#define MMC_TIMEOUT_DEFAULT 6000
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Set this to the maximum value in milliseconds that we will
|
Set this to the maximum value in milliseconds that we will
|
||||||
wait on an MMC read command.
|
wait on an MMC read command.
|
||||||
*/
|
*/
|
||||||
extern uint32_t mmc_read_timeout_ms;
|
extern uint32_t mmc_read_timeout_ms;
|
||||||
|
|
||||||
/** The default read timeout is 3 minutes. */
|
|
||||||
#define MMC_READ_TIMEOUT_DEFAULT 3*60*1000
|
|
||||||
|
|
||||||
/**
|
|
||||||
\brief The opcode-portion (generic packet commands) of an MMC command.
|
|
||||||
|
|
||||||
In general, those opcodes that end in 6 take a 6-byte command
|
/** The default read timeout is 3 minutes. */
|
||||||
descriptor, those that end in 10 take a 10-byte
|
#define MMC_READ_TIMEOUT_DEFAULT 3*60*1000
|
||||||
descriptor and those that in in 12 take a 12-byte descriptor.
|
|
||||||
|
/**
|
||||||
(Not that you need to know that, but it seems to be a
|
\brief The opcode-portion (generic packet commands) of an MMC command.
|
||||||
big deal in the MMC specification.)
|
|
||||||
|
In general, those opcodes that end in 6 take a 6-byte command
|
||||||
*/
|
descriptor, those that end in 10 take a 10-byte
|
||||||
typedef enum {
|
descriptor and those that in in 12 take a 12-byte descriptor.
|
||||||
|
|
||||||
|
(Not that you need to know that, but it seems to be a
|
||||||
|
big deal in the MMC specification.)
|
||||||
|
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
CDIO_MMC_TEST_UNIT_READY = 0x00, /**< Request drive
|
CDIO_MMC_TEST_UNIT_READY = 0x00, /**< Request drive
|
||||||
information. */
|
information. */
|
||||||
CDIO_MMC_GPCMD_INQUIRY = 0x12, /**< Request drive
|
CDIO_MMC_GPCMD_INQUIRY = 0x12, /**< Request drive
|
||||||
|
|||||||
@@ -42,6 +42,28 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
Maps a mmc_sense_key_t into a string name.
|
||||||
|
*/
|
||||||
|
const char mmc_sense_key2str[16][40] = {
|
||||||
|
"No Sense", /**< 0 No specific Sense Key info reported */
|
||||||
|
"Recovered Error", /**< 1 Completed ok with recovery */
|
||||||
|
"Not Ready", /**< 2 */
|
||||||
|
"Medium Error", /**< 3 */
|
||||||
|
"Hardware Error", /**< 4 */
|
||||||
|
"Illegal Request", /**< 5 */
|
||||||
|
"Unit Attention", /**< 6 */
|
||||||
|
"Data Protect", /**< 7 */
|
||||||
|
"Blank/Nonblank", /**< 8 */
|
||||||
|
"Firmware Error", /**< 9 - Vendor-specific */
|
||||||
|
"Copy aborted", /**< A */
|
||||||
|
"Aborted Command", /**< B */
|
||||||
|
"Equal", /**< C */
|
||||||
|
"Volume Overflow", /**< D */
|
||||||
|
"Miscompare", /**< E */
|
||||||
|
"(reserved error code)", /**< F */
|
||||||
|
};
|
||||||
|
|
||||||
/** The below variables are trickery to force enum symbol values to be
|
/** The below variables are trickery to force enum symbol values to be
|
||||||
recorded in debug symbol tables. They are used to allow one to refer
|
recorded in debug symbol tables. They are used to allow one to refer
|
||||||
to the enumeration value names in the typedefs above in a debugger
|
to the enumeration value names in the typedefs above in a debugger
|
||||||
|
|||||||
Reference in New Issue
Block a user