Библиотека LUFA (раннее название MyUSB) версия 101122
Общие определения класса

Data Structures

struct  MS_CommandBlockWrapper_t
 Обертка блока команды класса Mass Storage. More...
struct  MS_CommandStatusWrapper_t
 Обертка статуса команды класса Mass Storage. More...
struct  SCSI_Request_Sense_Response_t
 Структура SCSI Sense класса Mass Storage. More...
struct  SCSI_Inquiry_Response_t
 Структура SCSI запроса (Inquiry) класса Mass Storage. More...

Defines

#define MS_CBW_SIGNATURE   0x43425355UL
#define MS_CSW_SIGNATURE   0x53425355UL
#define MS_COMMAND_DIR_DATA_OUT   (0 << 7)
#define MS_COMMAND_DIR_DATA_IN   (1 << 7)

Enumerations

enum  MS_Descriptor_ClassSubclassProtocol_t {
  MS_CSCP_MassStorageClass = 0x08,
  MS_CSCP_SCSITransparentSubclass = 0x06,
  MS_CSCP_BulkOnlyTransportProtocol = 0x50
}
enum  MS_ClassRequests_t {
  MS_REQ_GetMaxLUN = 0xFE,
  MS_REQ_MassStorageReset = 0xFF
}
enum  MS_CommandStatusCodes_t {
  MS_SCSI_COMMAND_Pass = 0,
  MS_SCSI_COMMAND_Fail = 1,
  MS_SCSI_COMMAND_PhaseError = 2
}

Команды SCSI

#define SCSI_CMD_INQUIRY   0x12
#define SCSI_CMD_REQUEST_SENSE   0x03
#define SCSI_CMD_TEST_UNIT_READY   0x00
#define SCSI_CMD_READ_CAPACITY_10   0x25
#define SCSI_CMD_SEND_DIAGNOSTIC   0x1D
#define SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL   0x1E
#define SCSI_CMD_WRITE_10   0x2A
#define SCSI_CMD_READ_10   0x28
#define SCSI_CMD_WRITE_6   0x0A
#define SCSI_CMD_READ_6   0x08
#define SCSI_CMD_VERIFY_10   0x2F
#define SCSI_CMD_MODE_SENSE_6   0x1A
#define SCSI_CMD_MODE_SENSE_10   0x5A

Значения ключа SCSI Sense

#define SCSI_SENSE_KEY_GOOD   0x00
#define SCSI_SENSE_KEY_RECOVERED_ERROR   0x01
#define SCSI_SENSE_KEY_NOT_READY   0x02
#define SCSI_SENSE_KEY_MEDIUM_ERROR   0x03
#define SCSI_SENSE_KEY_HARDWARE_ERROR   0x04
#define SCSI_SENSE_KEY_ILLEGAL_REQUEST   0x05
#define SCSI_SENSE_KEY_UNIT_ATTENTION   0x06
#define SCSI_SENSE_KEY_DATA_PROTECT   0x07
#define SCSI_SENSE_KEY_BLANK_CHECK   0x08
#define SCSI_SENSE_KEY_VENDOR_SPECIFIC   0x09
#define SCSI_SENSE_KEY_COPY_ABORTED   0x0A
#define SCSI_SENSE_KEY_ABORTED_COMMAND   0x0B
#define SCSI_SENSE_KEY_VOLUME_OVERFLOW   0x0D
#define SCSI_SENSE_KEY_MISCOMPARE   0x0E

Коды добавочных SCSI Sense

#define SCSI_ASENSE_NO_ADDITIONAL_INFORMATION   0x00
#define SCSI_ASENSE_LOGICAL_UNIT_NOT_READY   0x04
#define SCSI_ASENSE_INVALID_FIELD_IN_CDB   0x24
#define SCSI_ASENSE_NOT_READY_TO_READY_CHANGE   0x28
#define SCSI_ASENSE_WRITE_PROTECTED   0x27
#define SCSI_ASENSE_FORMAT_ERROR   0x31
#define SCSI_ASENSE_INVALID_COMMAND   0x20
#define SCSI_ASENSE_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE   0x21
#define SCSI_ASENSE_MEDIUM_NOT_PRESENT   0x3A

Коды добавочных квалификаторов SCSI Sense

#define SCSI_ASENSEQ_NO_QUALIFIER   0x00
#define SCSI_ASENSEQ_FORMAT_COMMAND_FAILED   0x01
#define SCSI_ASENSEQ_INITIALIZING_COMMAND_REQUIRED   0x02
#define SCSI_ASENSEQ_OPERATION_IN_PROGRESS   0x07

Detailed Description

модуля

Определения констант, типов и перечислений, общие в режимах устройства и хоста, для USB Mass Storage Class.


Define Documentation

#define MS_CBW_SIGNATURE   0x43425355UL

Магическая сигнатура для обертки блока команды, используемой в протоколе транспорта Mass Storage Bulk-Only.

#define MS_COMMAND_DIR_DATA_IN   (1 << 7)

Маска для флагов атрибута обертки блока команды, для указания команды с данными, отправляемыми от устройства к хосту.

#define MS_COMMAND_DIR_DATA_OUT   (0 << 7)

Маска для флагов атрибута обертки блока команды, для указания команды с данными, отправляемыми от хоста к устройству.

#define MS_CSW_SIGNATURE   0x53425355UL

Магическая сигнатура для обертки статуса команды, используемой в протоколе транспорта Mass Storage Bulk-Only.

#define SCSI_ASENSE_FORMAT_ERROR   0x31

Добавочный код SCSI Sense, показывающий ошибку при форматировании носителя в устройстве.

#define SCSI_ASENSE_INVALID_COMMAND   0x20

Добавочный код SCSI Sense, показывающий, что была выдана неверная команда.

#define SCSI_ASENSE_INVALID_FIELD_IN_CDB   0x24

Добавочный код SCSI Sense, показывающий встречу с недопустимым полем при обработке выданной команды.

#define SCSI_ASENSE_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE   0x21

Добавочный код SCSI Sense, показывающий, что была выдана команда для записи вне диапазона носителя.

#define SCSI_ASENSE_LOGICAL_UNIT_NOT_READY   0x04

Добавочный код SCSI Sense, показывающий, что адресуемый логический юнит (LUN) не готов.

#define SCSI_ASENSE_MEDIUM_NOT_PRESENT   0x3A

Добавочный код SCSI Sense, показывающий, что извлекаемый носитель был вставлен в устройство.

#define SCSI_ASENSE_NO_ADDITIONAL_INFORMATION   0x00

Добавочный код SCSI Sense, показывающий, что нет никакой дополнительной информации sense.

#define SCSI_ASENSE_NOT_READY_TO_READY_CHANGE   0x28

Добавочный код SCSI Sense, показывающий, что носитель, ранее бывший в неготовом состоянии, получил состояние готовности.

#define SCSI_ASENSE_WRITE_PROTECTED   0x27

Добавочный код SCSI Sense, показывающий попытку записи в защищенную область.

#define SCSI_ASENSEQ_FORMAT_COMMAND_FAILED   0x01

Добавочный код квалификатора SCSI Sense, показывающий, что команда форматирования не может быть выполнена из-за ошибки.

#define SCSI_ASENSEQ_INITIALIZING_COMMAND_REQUIRED   0x02

Добавочный код квалификатора SCSI Sense, показывающий, что перед выполнением выданной команды должна быть выполнена команда инициализации.

#define SCSI_ASENSEQ_NO_QUALIFIER   0x00

Добавочный код квалификатора SCSI Sense, показывающий, что нет никакой дополнительной информации квалификатора sense.

#define SCSI_ASENSEQ_OPERATION_IN_PROGRESS   0x07

Добавочный код квалификатора SCSI Sense, показывающий, что в настоящий момент выполняется некая операция.

#define SCSI_CMD_INQUIRY   0x12

Код SCSI команды INQUIRY.

#define SCSI_CMD_MODE_SENSE_10   0x5A

Код SCSI команды MODE SENSE (10).

#define SCSI_CMD_MODE_SENSE_6   0x1A

Код SCSI команды MODE SENSE (6).

#define SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL   0x1E

Код SCSI команды PREVENT ALLOW MEDIUM REMOVAL (предотвращение удаления носителя).

#define SCSI_CMD_READ_10   0x28

Код SCSI команды READ (10).

#define SCSI_CMD_READ_6   0x08

Код SCSI команды READ (6).

#define SCSI_CMD_READ_CAPACITY_10   0x25

Код SCSI команды READ CAPACITY (10).

#define SCSI_CMD_REQUEST_SENSE   0x03

Код SCSI команды REQUEST SENSE.

#define SCSI_CMD_SEND_DIAGNOSTIC   0x1D

Код SCSI команды SEND DIAGNOSTIC.

#define SCSI_CMD_TEST_UNIT_READY   0x00

Код SCSI команды TEST UNIT READY.

#define SCSI_CMD_VERIFY_10   0x2F

Код SCSI команды VERIFY (10).

#define SCSI_CMD_WRITE_10   0x2A

Код SCSI команды WRITE (10).

#define SCSI_CMD_WRITE_6   0x0A

Код SCSI команды WRITE (6).

#define SCSI_SENSE_KEY_ABORTED_COMMAND   0x0B

Код SCSI Sense, показывающий, что устройство прервало выполнение выданной ему команды.

#define SCSI_SENSE_KEY_BLANK_CHECK   0x08

Код SCSI Sense, показывающий ошибку при попытке записи на носитель с однократной записью (write-once).

#define SCSI_SENSE_KEY_COPY_ABORTED   0x0A

Код SCSI Sense, показывающий, что команда EXTENDED COPY прервана по ошибке.

#define SCSI_SENSE_KEY_DATA_PROTECT   0x07

Код SCSI Sense, показывающий попытку записи на защищенный блок.

#define SCSI_SENSE_KEY_GOOD   0x00

Код SCSI Sense, показывающий, что ошибок не было.

#define SCSI_SENSE_KEY_HARDWARE_ERROR   0x04

Код SCSI Sense, показывающий, что произошла аппаратная ошибка.

#define SCSI_SENSE_KEY_ILLEGAL_REQUEST   0x05

Код SCSI Sense, показывающий, что был выдан недопустимый запрос.

#define SCSI_SENSE_KEY_MEDIUM_ERROR   0x03

Код SCSI Sense, показывающий, что произошла ошибка при обращении к носителю данных.

#define SCSI_SENSE_KEY_MISCOMPARE   0x0E

Код SCSI Sense, показывающий, что данные источника не совпадают с данными, прочитанными с носителя.

#define SCSI_SENSE_KEY_NOT_READY   0x02

Код SCSI Sense, показывающий, что устройство не готово к новой команде.

#define SCSI_SENSE_KEY_RECOVERED_ERROR   0x01

Код SCSI Sense, показывающий, что устройство восстановилось после ошибки.

#define SCSI_SENSE_KEY_UNIT_ATTENTION   0x06

Код SCSI Sense, показывающий, юнит требует внимания от хоста для индикации события сброса, извлечения носителя или другого события.

#define SCSI_SENSE_KEY_VENDOR_SPECIFIC   0x09

Код SCSI Sense, показывающий специфическую ошибку вендора.

#define SCSI_SENSE_KEY_VOLUME_OVERFLOW   0x0D

Код SCSI Sense, показывающий попытку записи в место за концом раздела.


Enumeration Type Documentation

Перечисление для запросов управления, специфических для класса Mass Storage, которые может выдать хост шины USB.

Enumerator:
MS_REQ_GetMaxLUN 

Запрос, специфичный для класса Mass Storage для получения общего количества Logical логических юнитов (LUN, дисков) в устройстве SCSI.

MS_REQ_MassStorageReset 

Запрос, специфичный для класса Mass Storage для сброса интерфейса Mass Storage, чтобы быть готовым к следующей команде.

Перечисление для возможных кодов статуса, возвращаемых в ответ на команду.

Enumerator:
MS_SCSI_COMMAND_Pass 

команда завершена успешно, без ошибки

MS_SCSI_COMMAND_Fail 

ошибка выполнения команды - хост может проверить ошибку через команду SCSI REQUEST SENSE.

MS_SCSI_COMMAND_PhaseError 

ошибка выполнения команды из-за её недопустимости в текущей фазе.

Перечисление для возможных значений Class, Subclass и Protocol дескрипторов устройства и интерфейса, связанных с классом устройства USB Mass Storage.

Enumerator:
MS_CSCP_MassStorageClass 

Значение класса дескриптора, показывающее, что устройство или интерфейс принадлежит классу Mass Storage.

MS_CSCP_SCSITransparentSubclass 

Значение подкласса дескриптора, показывающее, что устройство или интерфейс принадлежит подклассу набора SCSI Transparent Command класса Mass Storage.

MS_CSCP_BulkOnlyTransportProtocol 

Значение протокола дескриптора, показывающее, что устройство или интерфейс принадлежит протоколу Bulk Only Transport класса Mass Storage.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines