msdscsi.c File Reference

SCSI interface for Mass Storage Devices (MSD).

Version
5.5.0

License

Copyright 2015 Silicon Labs, Inc. http://www.silabs.com

This file is licensed under the Silabs License Agreement. See the file "Silabs_License_Agreement.txt" for details. Before using this software for any purpose, you must agree to the terms of that agreement.

Definition in file msdscsi.c .

#include "em_usb.h"
#include " msdscsi.h "
#include " msdbot.h "

Functions

bool MSDSCSI_Init (USBH_Ep_TypeDef *out, USBH_Ep_TypeDef *in)
MSDSCSI module initialization.
bool MSDSCSI_Inquiry ( MSDSCSI_InquiryData_TypeDef *data)
Issue a SCSI Inquiry command.
bool MSDSCSI_Read10 (uint32_t lba, uint16_t sectors, void *data)
Issue a SCSI Read(10) command.
bool MSDSCSI_ReadCapacity ( MSDSCSI_ReadCapacityData_TypeDef *data)
Issue a SCSI Read Capacity command.
bool MSDSCSI_RequestSense ( MSDSCSI_RequestSenseData_TypeDef *data)
Issue a SCSI Request Sense command.
bool MSDSCSI_TestUnitReady (void)
Issue a SCSI Test Unit Ready command.
bool MSDSCSI_Write10 (uint32_t lba, uint16_t sectors, const void *data)
Perform a SCSI Write(10) command.

Function Documentation

bool MSDSCSI_Init ( USBH_Ep_TypeDef * out,
USBH_Ep_TypeDef * in
)

MSDSCSI module initialization.

Parameters
[in] out Pointer to an MSD bulk OUT endpoint structure.
[in] in Pointer to an MSD bulk IN endpoint structure.
Returns
Returns true on success, false otherwise.

Definition at line 155 of file msdscsi.c .

References MSDBOT_Init() , MSDBOT_STATUS_OK , SCSI_INQUIRYDATA_LEN , SCSI_READ10_LEN , SCSI_READCAPACITYDATA_LEN , SCSI_REQUESTSENSEDATA_LEN , and SCSI_WRITE10_LEN .

Referenced by MSDH_Init() .

bool MSDSCSI_Inquiry ( MSDSCSI_InquiryData_TypeDef * data )

Issue a SCSI Inquiry command.

Parameters
[out] data Inquiry response data buffer.
Returns
Returns true on success, false otherwise.

Definition at line 187 of file msdscsi.c .

References MSDBOT_Xfer() , and SCSI_INQUIRYDATA_LEN .

Referenced by MSDH_Init() .

bool MSDSCSI_Read10 ( uint32_t lba,
uint16_t sectors,
void * data
)

Issue a SCSI Read(10) command.

Parameters
[in] lba Sector address (LBA) of first sector to read.
[in] sectors Number of sectors to read.
[out] data Data buffer through which data is returned to caller.
Returns
Returns true on success, false otherwise.

Definition at line 212 of file msdscsi.c .

References MSDSCSI_Read10_TypeDef::Lba , MSDBOT_Xfer() , SL_ALIGN , SL_ATTRIBUTE_ALIGN , and MSDSCSI_Read10_TypeDef::TransferLength .

Referenced by MSDH_ReadSectors() .

bool MSDSCSI_ReadCapacity ( MSDSCSI_ReadCapacityData_TypeDef * data )

Issue a SCSI Read Capacity command.

Parameters
[out] data Read Capacity response data buffer.
Returns
Returns true on success, false otherwise.

Definition at line 240 of file msdscsi.c .

References MSDSCSI_ReadCapacityData_TypeDef::LogicalBlockAddress , MSDSCSI_ReadCapacityData_TypeDef::LogicalBlockLength , MSDBOT_Xfer() , and SCSI_READCAPACITYDATA_LEN .

Referenced by MSDH_GetBlockSize() , MSDH_GetSectorCount() , MSDH_GetSectorSize() , and MSDH_Init() .

bool MSDSCSI_RequestSense ( MSDSCSI_RequestSenseData_TypeDef * data )

Issue a SCSI Request Sense command.

Parameters
[out] data Request Sense response data buffer.
Returns
Returns true on success, false otherwise.

Definition at line 266 of file msdscsi.c .

References MSDBOT_Xfer() , and SCSI_REQUESTSENSEDATA_LEN .

Referenced by MSDH_Init() .

bool MSDSCSI_TestUnitReady ( void )

Issue a SCSI Test Unit Ready command.

Returns
Returns true if device ready, false if device not ready or cmd transfer error.

Definition at line 283 of file msdscsi.c .

References MSDBOT_STATUS_OK , and MSDBOT_Xfer() .

Referenced by MSDH_Init() .

bool MSDSCSI_Write10 ( uint32_t lba,
uint16_t sectors,
const void * data
)

Perform a SCSI Write(10) command.

Parameters
[in] lba Sector address (LBA) of first sector to write.
[in] sectors Number of sectors to write.
[out] data Data buffer containing data to be written.
Returns
Returns true on success, false otherwise.

Definition at line 308 of file msdscsi.c .

References MSDSCSI_Write10_TypeDef::Lba , MSDBOT_Xfer() , SL_ALIGN , SL_ATTRIBUTE_ALIGN , and MSDSCSI_Write10_TypeDef::TransferLength .

Referenced by MSDH_WriteSectors() .