Data Structures | 
| struct   | USB_ClassInfo_MS_Host_t | 
|   | Структура конфигурации и состояния режима хоста Mass Storage Class.  More...
  | 
| struct   | SCSI_Capacity_t | 
|   | Структура емкости SCSI-устройства LUN (Logical UNit, или диск).  More...
  | 
Defines | 
| #define  | MS_ERROR_LOGICAL_CMD_FAILED   0x80 | 
Enumerations | 
| enum   | MS_Host_EnumerationFailure_ErrorCodes_t {  
  MS_ENUMERROR_NoError =  0, 
 
  MS_ENUMERROR_InvalidConfigDescriptor =  1, 
 
  MS_ENUMERROR_NoCompatibleInterfaceFound =  2
 
 } | 
Functions | 
| uint8_t  | MS_Host_ConfigurePipes (USB_ClassInfo_MS_Host_t *const MSInterfaceInfo, uint16_t ConfigDescriptorSize, void *ConfigDescriptorData) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3) | 
| uint8_t  | MS_Host_ResetMSInterface (USB_ClassInfo_MS_Host_t *const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1) | 
| uint8_t  | MS_Host_GetMaxLUN (USB_ClassInfo_MS_Host_t *const MSInterfaceInfo, uint8_t *const MaxLUNIndex) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2) | 
| uint8_t  | MS_Host_GetInquiryData (USB_ClassInfo_MS_Host_t *const MSInterfaceInfo, const uint8_t LUNIndex, SCSI_Inquiry_Response_t *const InquiryData) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3) | 
| uint8_t  | MS_Host_TestUnitReady (USB_ClassInfo_MS_Host_t *const MSInterfaceInfo, const uint8_t LUNIndex) ATTR_NON_NULL_PTR_ARG(1) | 
| uint8_t  | MS_Host_ReadDeviceCapacity (USB_ClassInfo_MS_Host_t *const MSInterfaceInfo, const uint8_t LUNIndex, SCSI_Capacity_t *const DeviceCapacity) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3) | 
| uint8_t  | MS_Host_RequestSense (USB_ClassInfo_MS_Host_t *const MSInterfaceInfo, const uint8_t LUNIndex, SCSI_Request_Sense_Response_t *const SenseData) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3) | 
| uint8_t  | MS_Host_PreventAllowMediumRemoval (USB_ClassInfo_MS_Host_t *const MSInterfaceInfo, const uint8_t LUNIndex, const bool PreventRemoval) ATTR_NON_NULL_PTR_ARG(1) | 
| uint8_t  | MS_Host_ReadDeviceBlocks (USB_ClassInfo_MS_Host_t *const MSInterfaceInfo, const uint8_t LUNIndex, const uint32_t BlockAddress, const uint8_t Blocks, const uint16_t BlockSize, void *BlockBuffer) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(6) | 
| uint8_t  | MS_Host_WriteDeviceBlocks (USB_ClassInfo_MS_Host_t *const MSInterfaceInfo, const uint8_t LUNIndex, const uint32_t BlockAddress, const uint8_t Blocks, const uint16_t BlockSize, const void *BlockBuffer) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(6) | 
| static void  | MS_Host_USBTask (USB_ClassInfo_MS_Host_t *const MSInterfaceInfo) | 
Detailed Description
зависимости для исходного кода модуля
Следующие файлы должны быть скомпилированы с любым проектом, который использует этот модуль:
- LUFA/Drivers/USB/Class/Host/MassStorage.c (Имя модуля исходного кода для makefile: LUFA_SRC_USBCLASS)
 
модуля
Фреймворк-интерфейс для драйвера режима хоста USB Mass Storage Class. 
Define Documentation
      
        
          | #define MS_ERROR_LOGICAL_CMD_FAILED   0x80 | 
        
      
 
Код ошибки для некоторых функций хоста Mass Storage, показывающий логическую (и не аппаратную) ошибку. 
 
 
Enumeration Type Documentation
- Enumerator: 
 
| MS_ENUMERROR_NoError  | 
 дескриптор конфигурации обработан успешно.  
 | 
| MS_ENUMERROR_InvalidConfigDescriptor  | 
 устройство возвратило неверный дескриптор конфигурации.  
 | 
| MS_ENUMERROR_NoCompatibleInterfaceFound  | 
 в дескрипторе конфигурации устройства не найден совместимый интерфейс Mass Storage.  
 | 
 
 
 
Function Documentation
      
        
          | uint8_t MS_Host_ConfigurePipes  | 
          ( | 
          USB_ClassInfo_MS_Host_t *const  | 
          MSInterfaceInfo,  | 
        
        
           | 
           | 
          uint16_t  | 
          ConfigDescriptorSize,  | 
        
        
           | 
           | 
          void *  | 
          ConfigDescriptorData  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Подпрограмма конфигурации интерфейса хоста, для конфигурирования указанного интерфейса хоста Mass Storage с использованием дескриптора конфигурации, прочитанного с подключенного устройства USB. Эта функция автоматически обновляет значения состояния указанного экземпляра хоста Mass Storage и конфигурирует потоки, требуемые для коммуникации с интерфейсом, если он найден на устройстве. Должна быть вызвана один раз после энумерации стеком подключенного устройства, когда машина хоста перейдет в состояние Addressed (адресовано).
- Note:
 - Индексы канала, как дано в структуре конфигурации интерфейса, не должны наложиться ни с каким другим интерфейсом, или произойдет повреждение банка канала. Разрывы в выделенных числах канала или непоследовательных индексах в пределах единственного интерфейса позволены, но никакие два интерфейса любого типа не могут чередовать индексы канала.
 
- Parameters:
 - 
  
    | [in,out] | MSInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние хоста Mass Storage.  | 
    | [in] | ConfigDescriptorSize | длина дескриптора конфигурации подключенного устройства.  | 
    | [in] | ConfigDescriptorData | указатель на буфер, содержащий дескриптор конфигурации подключенного устройства. | 
  
   
- Returns:
 - значение из перечисления MS_Host_EnumerationFailure_ErrorCodes_t. 
 
 
 
Получает данные inquiry Mass Storage от указанного LUN, что показывает характеристики устройства и его свойства.
- Precondition:
 - Эта функция должна быть вызвана только когда машина состояния хоста находится в состоянии HOST_STATE_Configured, либо вызов функции потерпит неудачу.
 
- Parameters:
 - 
  
    | [in,out] | MSInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние хоста класса Mass Storage.  | 
    | [in] | LUNIndex | индекс LUN в пределах устройства, которому отправлена команда.  | 
    | [out] | InquiryData | место размещения, куда будут сохранены прочитанные данные inquiry. | 
  
   
- Returns:
 - значение из перечисления Pipe_Stream_RW_ErrorCodes_t или MS_ERROR_LOGICAL_CMD_FAILED. 
 
 
 
Отправляет управляющий запрос GET MAX LUN на подключенное устройство, чем запрашивает индекс наивысшего LUN (Logical UNit, логический диск) в устройстве. Эта величина может использоваться в других функциях драйвера режима хоста класса Mass Storage для адресации конкретного LUN в пределах устройства.
- Note:
 - Некоторые устройства не поддерживают этот запрос, и переводят такой запрос в состояние STALL. Чтобы избежать такой ситуации, на неподдерживаемых устройствах максимальный индекс LUN будет сообщаться как 0 и не будет возвращена ошибка, если устройство сделало STALL для запроса.
 
- Parameters:
 - 
  
    | [in,out] | MSInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние хоста класса Mass Storage.  | 
    | [out] | MaxLUNIndex | указатель на место, где должен быть сохранен наивысший индекс LUN. | 
  
   
- Returns:
 - значение из перечисления USB_Host_SendControlErrorCodes_t. 
 
 
 
      
        
          | uint8_t MS_Host_PreventAllowMediumRemoval  | 
          ( | 
          USB_ClassInfo_MS_Host_t *const  | 
          MSInterfaceInfo,  | 
        
        
           | 
           | 
          const uint8_t  | 
          LUNIndex,  | 
        
        
           | 
           | 
          const bool  | 
          PreventRemoval  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Выдает команду PREVENT MEDIUM REMOVAL на логическую (или, в зависимости от типа устройства, физическую) блокировку устройства от извлечения носителя, так чтобы блоки данных на носителе могли быть прочитаны или изменены.
- Precondition:
 - Эта функция должна быть вызвана только когда машина состояния хоста находится в состоянии HOST_STATE_Configured, либо вызов функции потерпит неудачу.
 
- Parameters:
 - 
  
    | [in,out] | MSInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние хоста класса Mass Storage.  | 
    | [in] | LUNIndex | индекс LUN в пределах устройства, которому отправлена команда.  | 
    | [in] | PreventRemoval | двоичное true, если устройство должно быть заблокировано от извлечения, иначе false. | 
  
   
- Returns:
 - значение из перечисления Pipe_Stream_RW_ErrorCodes_t или MS_ERROR_LOGICAL_CMD_FAILED, если устройство не готово. 
 
 
 
      
        
          | uint8_t MS_Host_ReadDeviceBlocks  | 
          ( | 
          USB_ClassInfo_MS_Host_t *const  | 
          MSInterfaceInfo,  | 
        
        
           | 
           | 
          const uint8_t  | 
          LUNIndex,  | 
        
        
           | 
           | 
          const uint32_t  | 
          BlockAddress,  | 
        
        
           | 
           | 
          const uint8_t  | 
          Blocks,  | 
        
        
           | 
           | 
          const uint16_t  | 
          BlockSize,  | 
        
        
           | 
           | 
          void *  | 
          BlockBuffer  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Читает блоки данных с носителя на подключенном устройстве Mass Storage.
- Precondition:
 - Эта функция должна быть вызвана только когда машина состояния хоста находится в состоянии HOST_STATE_Configured, либо вызов функции потерпит неудачу.
 
- Parameters:
 - 
  
    | [in,out] | MSInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние хоста класса Mass Storage.  | 
    | [in] | LUNIndex | индекс LUN в пределах устройства, которому отправлена команда.  | 
    | [in] | BlockAddress | начальный адрес блока в пределах устройства, откуда должно производиться чтение.  | 
    | [in] | Blocks | общее количество блоков для чтения.  | 
    | [in] | BlockSize | Размер в байтах каждого блока в пределах устройства.  | 
    | [out] | BlockBuffer | указатель на место, куда должны быть сохранены прочитанные данные от устройства. | 
  
   
- Returns:
 - значение из перечисления Pipe_Stream_RW_ErrorCodes_t или MS_ERROR_LOGICAL_CMD_FAILED, если устройство не готово. 
 
 
 
Запрашивает общую емкость подключенного устройства USB Mass Storage в блоках и в размерах блока.
- Precondition:
 - Эта функция должна быть вызвана только когда машина состояния хоста находится в состоянии HOST_STATE_Configured, либо вызов функции потерпит неудачу.
 
- Parameters:
 - 
  
    | [in,out] | MSInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние хоста класса Mass Storage.  | 
    | [in] | LUNIndex | индекс LUN в пределах устройства, которому отправлена команда.  | 
    | [out] | DeviceCapacity | указатель на место, где должна быть сохранена информация о емкости устройства. | 
  
   
- Returns:
 - значение из перечисления Pipe_Stream_RW_ErrorCodes_t или MS_ERROR_LOGICAL_CMD_FAILED, если устройство не готово. 
 
 
 
Запрашивает данные sense устройства, показывающие текущее состояние устройства и коды ошибки для ранее выданной команды.
- Precondition:
 - Эта функция должна быть вызвана только когда машина состояния хоста находится в состоянии HOST_STATE_Configured, либо вызов функции потерпит неудачу.
 
- Parameters:
 - 
  
    | [in,out] | MSInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние хоста класса Mass Storage.  | 
    | [in] | LUNIndex | индекс LUN в пределах устройства, которому отправлена команда.  | 
    | [out] | SenseData | указатель на место, где должна быть сохранена информация sense. | 
  
   
- Returns:
 - значение из перечисления Pipe_Stream_RW_ErrorCodes_t или MS_ERROR_LOGICAL_CMD_FAILED, если устройство не готово. 
 
 
 
Отправляет управляющий запрос MASS STORAGE RESET на подключенное устройство, сбрасывающий интерфейс Mass Storage, и он переводится в готовность у следующеей команде Mass Storage.
- Parameters:
 - 
  
    | [in,out] | MSInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние хоста класса Mass Storage. | 
  
   
- Returns:
 - значение из перечисления USB_Host_SendControlErrorCodes_t. 
 
 
 
Отправляет команду TEST UNIT READY на устройство, чтобы определить, готово ли устройство принять другие команды SCSI.
- Parameters:
 - 
  
    | [in,out] | MSInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние хоста класса Mass Storage.  | 
    | [in] | LUNIndex | индекс LUN в пределах устройства, которому отправлена команда. | 
  
   
- Returns:
 - значение из перечисления Pipe_Stream_RW_ErrorCodes_t или MS_ERROR_LOGICAL_CMD_FAILED, если устройство не готово. 
 
 
 
Главная задача обслуживания указанного интерфейса хоста Mass Storage, необходимая для корректной работы интерфейса. Должна часто вызываться из основного цикла программы, перед главной задачей поддержки USB USB_USBTask().
- Parameters:
 - 
  
    | [in,out] | MSInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние хоста класса Mass Storage.  | 
  
   
 
 
      
        
          | uint8_t MS_Host_WriteDeviceBlocks  | 
          ( | 
          USB_ClassInfo_MS_Host_t *const  | 
          MSInterfaceInfo,  | 
        
        
           | 
           | 
          const uint8_t  | 
          LUNIndex,  | 
        
        
           | 
           | 
          const uint32_t  | 
          BlockAddress,  | 
        
        
           | 
           | 
          const uint8_t  | 
          Blocks,  | 
        
        
           | 
           | 
          const uint16_t  | 
          BlockSize,  | 
        
        
           | 
           | 
          const void *  | 
          BlockBuffer  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Записывает блоки данных на носитель подключенного устройства Mass Storage.
- Precondition:
 - Эта функция должна быть вызвана только когда машина состояния хоста находится в состоянии HOST_STATE_Configured, либо вызов функции потерпит неудачу.
 
- Parameters:
 - 
  
    | [in,out] | MSInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние хоста класса Mass Storage.  | 
    | [in] | LUNIndex | индекс LUN в пределах устройства, которому отправлена команда.  | 
    | [in] | BlockAddress | начальный адрес блока в пределах устройства, куда должна быть запись.  | 
    | [in] | Blocks | общее количество блоков для чтения.  | 
    | [in] | BlockSize | Размер в байтах каждого блока в пределах устройства.  | 
    | [in] | BlockBuffer | указатель на место, откуда должны быть взяты данные для записи. | 
  
   
- Returns:
 - значение из перечисления Pipe_Stream_RW_ErrorCodes_t или MS_ERROR_LOGICAL_CMD_FAILED, если устройство не готово.