![]() |
![]() |
| CSL_Status MSC_Bulk | ( | void * | pMSC | ) |
============================================================================
MSC_Bulk
Description
This function handles all UBS traffic on the Bulk Endpoint This maintains the state of the MSC application. Provides Media Access Data to the low level USB module for transfer.
Arguments
pMSC Handle to the MSC Class Obj
Return Value CSL_Status
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Transfers data on bulk end points
Modifies
USB data buffeters
Example
CSL_MscInitStructApp mscAppHandle;
pMscAppClassHandle pAppClassHandle;
Uint16 mscAppBuffer[420];
CSL_Status status;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(pAppClassHandle);
....
....
status = MSC_Bulk(pAppClassHandle->pMscObj);
============================================================================
References CSL_MscObject::bulkInEpObj, CSL_MscObject::bulkOutEpObj, CSL_MscObject::cbw, CSL_MSC_8BIT_SHIFT, CSL_MSC_CBW_6, CSL_MSC_STORAGE_STATE_READ, CSL_MSC_STORAGE_STATE_RESET, CSL_MSC_STORAGE_STATE_SENDING_CSW, CSL_MSC_STORAGE_STATE_SENDING_DATA, CSL_MSC_STORAGE_STATE_SENDING_SHORT_PKT, CSL_MSC_STORAGE_STATE_SENDING_STALL, CSL_MSC_STORAGE_STATE_WAIT_FOR_CBW, CSL_MSC_STORAGE_STATE_WRITE, CSL_USB_EVENT_RESET, MSC_ExecuteRead(), MSC_ExecuteWrite(), MSC_HandleStateReset(), MSC_HandleStateSendCSW(), MSC_HandleStateSendData(), MSC_HandleStateSendingShortPkt(), MSC_HandleStateSendStall(), MSC_HandleStateWaitForCBW(), CSL_MscClassStruct::mscHandle, CSL_MscObject::storageState, and USB_getEvents().
| CSL_Status MSC_Close | ( | pMscAppClassHandle | pAppClassHandle | ) |
============================================================================
MSC_Close
Description
This function Opens the Msc module.
Arguments
pAppClassHandle Application handle to the MSC Class Obj
Return Value CSL_Status
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Closes the Msc module
Modifies
Msc and Ctl handles
Example
CSL_MscInitStructApp mscAppHandle;
pMscAppClassHandle pAppClassHandle;
Uint16 mscAppBuffer[420];
CSL_Status status;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(pAppClassHandle);
....
....
status = MSC_Close(pAppClassHandle);
============================================================================
References CSL_MscClassStruct::ctrlHandle, CSL_MscCtrlObject::devNum, CSL_MscInitStructApp::pMscObj, and USB_disconnectDev().
| CSL_Status MSC_Ctrl | ( | void * | pMSC | ) |
============================================================================
MSC_Ctrl
Description
This function handles all USB traffic on the Control Endpoint. Detects the events on the Control Endpoint and takes the appropriate action
Arguments
pMSC Handle to the MSC Class Obj
Return Value CSL_Status
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Control end point events are serviced
Modifies
USB Registers.
Example
CSL_MscInitStructApp mscAppHandle;
pMscAppClassHandle pAppClassHandle;
Uint16 mscAppBuffer[420];
CSL_Status status;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(pAppClassHandle);
....
....
status = MSC_Ctrl(pAppClassHandle->pMscObj);
============================================================================
References CSL_UsbSetupStruct::bmRequestType, CSL_UsbSetupStruct::bRequest, CSL_MSC_8BIT_SHIFT, CSL_MSC_INVALID_REQUEST_HANDLER, CSL_USB_EVENT_RESET, CSL_USB_EVENT_RESUME, CSL_USB_EVENT_SETUP, CSL_USB_EVENT_SUSPEND, CSL_USB_IOFLAG_NONE, CSL_MscClassStruct::ctrlHandle, CSL_MscCtrlObject::ctrlInEpObj, CSL_MscCtrlObject::ctrlOutEpObj, CSL_MscCtrlObject::curConfigStat, CSL_MscCtrlObject::devNum, CSL_MscCtrlObject::fpRequestHandler, CSL_MscCtrlObject::hEpObjArray, MSC_lookupReqHandler(), MSC_reqUnknown(), CSL_MscCtrlObject::mscReqTable, CSL_UsbSetupStruct::newPacket, CSL_MscCtrlObject::suspendFlag, USB_abortAllTransaction(), USB_getEvents(), USB_getSetupPacket(), USB_postTransaction(), USB_setParams(), USB_stallEndpt(), and CSL_MscCtrlObject::usbSetup.
| CSL_Status MSC_ExecuteRead | ( | CSL_MscObject * | pMscHandle, |
| Uint16 | lunNum, | ||
| Uint16 | first | ||
| ) |
============================================================================
MSC_ExecuteRead
Description
This function executes the read operation. Data read from the storage media is sent to the host
Arguments
pMscHandle - Handle to Msc object
lunNum - Logical unit number
first - Flag to indicate first write operation
Return Value
Status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Writes the data to the media
Modifies
Data buffers
Example
CSL_MscRequestRet (*fpRequestHandler)(CSL_MSC_REQUEST_ARGS)
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
pMscAppClassHandle pAppClassHandle;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(pAppClassHandle);
....
....
status = MSC_ExecuteRead(pMscHandle, lunNum, FALSE);
============================================================================
References CSL_MscObject::bulkInEpObj, CSL_MscObject::cbw, CSL_MscObject::cbwDataTransferLength, CSL_MSC_16BIT_MASK, CSL_MSC_16BIT_SHIFT, CSL_MSC_24BIT_SHIFT, CSL_MSC_8BIT_MASK, CSL_MSC_8BIT_SHIFT, CSL_MSC_CBW_10, CSL_MSC_CBW_11, CSL_MSC_CBW_6, CSL_MSC_CBW_8, CSL_MSC_CBW_9, CSL_MSC_CBW_DATADIR_IN, CSL_MSC_CBW_DIRBIT_MASK, CSL_MSC_CSW_4, CSL_MSC_CSW_5, CSL_MSC_CSW_6, CSL_MSC_CSW_STATUS_COMMAND_FAILED, CSL_MSC_CSW_STATUS_COMMAND_PASSED, CSL_MSC_MEDIA_BAD, CSL_MSC_MEDIA_PRESENT, CSL_MSC_MEDIACCESS_BADMEDIA, CSL_MSC_MEDIACCESS_NOTPRESENT, CSL_MSC_MEDIACCESS_OVERFLOW, CSL_MSC_MEDIACCESS_SUCCESS, CSL_MSC_SCSI_ASC_MEDIA_MANUALINTERVENTION_REQUIRED, CSL_MSC_SCSI_ASC_MEDIA_NOT_PRESENT, CSL_MSC_SCSI_ASC_MEDIA_OUTOFRANGE, CSL_MSC_SCSI_ASC_NO_ADDITIONAL_SENSE_INFORMATION, CSL_MSC_SCSI_SENSEKEY_ILLEGAL_REQUEST, CSL_MSC_SCSI_SENSEKEY_NO_SENSE, CSL_MSC_SCSI_SENSEKEY_NOT_READY, CSL_MSC_STORAGE_STATE_READ, CSL_MSC_STORAGE_STATE_SENDING_DATA, CSL_MSC_STORAGE_STATE_SENDING_STALL, CSL_USB_IOFLAG_NOSHORT, CSL_USB_IOFLAG_NOT, CSL_MscObject::csw, CSL_MscLogicalUnit::currLba, CSL_MscObject::lbaBuffer, CSL_MscLogicalUnit::lbaCnt, CSL_MscLogicalUnit::lbaSize, CSL_MscObject::lun, CSL_MscLogicalUnit::mediaState, MSC_handleDataDirMisMatch(), MSC_sendCswWithPhaseError(), MSC_SetSenseKeys(), CSL_MscObject::readMedia, CSL_MscObject::senseData, CSL_MscObject::storageState, USB_isTransactionDone(), USB_postTransaction(), and USB_stallEndpt().
Referenced by MSC_Bulk(), and MSC_HandleStateWaitForCBW().
| CSL_Status MSC_ExecuteWrite | ( | CSL_MscObject * | pMscHandle, |
| Uint16 | lunNum, | ||
| Uint16 | first | ||
| ) |
============================================================================
MSC_ExecuteWrite
Description
This function executes the write operation. Data sent by the host is is written to the storage media.
Arguments
pMscHandle - Handle to Msc object
lunNum - Logical unit number
first - Flag to indicate first write operation
Return Value
Status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Writes the data to the media
Modifies
Data buffers
Example
CSL_MscRequestRet (*fpRequestHandler)(CSL_MSC_REQUEST_ARGS)
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
pMscAppClassHandle pAppClassHandle;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(pAppClassHandle);
....
....
status = MSC_ExecuteWrite(pMscHandle, lunNum, FALSE);
============================================================================
References CSL_MscObject::bulkInEpObj, CSL_MscObject::bulkOutEpObj, CSL_MscObject::cbw, CSL_MscObject::cbwDataTransferLength, CSL_MSC_16BIT_MASK, CSL_MSC_16BIT_SHIFT, CSL_MSC_24BIT_SHIFT, CSL_MSC_8BIT_MASK, CSL_MSC_8BIT_SHIFT, CSL_MSC_CBW_10, CSL_MSC_CBW_11, CSL_MSC_CBW_6, CSL_MSC_CBW_8, CSL_MSC_CBW_9, CSL_MSC_CBW_DATADIR_OUT, CSL_MSC_CBW_DIRBIT_MASK, CSL_MSC_CSW_4, CSL_MSC_CSW_5, CSL_MSC_CSW_6, CSL_MSC_CSW_DATA_SIZE, CSL_MSC_CSW_STATUS_COMMAND_FAILED, CSL_MSC_CSW_STATUS_COMMAND_PASSED, CSL_MSC_MEDIA_BAD, CSL_MSC_MEDIA_PRESENT, CSL_MSC_MEDIA_WRITEENABLE, CSL_MSC_MEDIA_WRITEPENDING, CSL_MSC_MEDIACCESS_BADMEDIA, CSL_MSC_MEDIACCESS_NOTPRESENT, CSL_MSC_MEDIACCESS_OVERFLOW, CSL_MSC_MEDIACCESS_SUCCESS, CSL_MSC_MEDIACCESS_WRITEPROTECT, CSL_MSC_SCSI_ASC_INVALID_COMMAND_OPERATION_CODE, CSL_MSC_SCSI_ASC_MEDIA_MANUALINTERVENTION_REQUIRED, CSL_MSC_SCSI_ASC_MEDIA_NOT_PRESENT, CSL_MSC_SCSI_ASC_MEDIA_OUTOFRANGE, CSL_MSC_SCSI_ASC_NO_ADDITIONAL_SENSE_INFORMATION, CSL_MSC_SCSI_ASC_WRITE_PROTECTED, CSL_MSC_SCSI_DATA_PROTECT, CSL_MSC_SCSI_SENSEKEY_ILLEGAL_REQUEST, CSL_MSC_SCSI_SENSEKEY_NO_SENSE, CSL_MSC_SCSI_SENSEKEY_NOT_READY, CSL_MSC_STORAGE_STATE_SENDING_CSW, CSL_MSC_STORAGE_STATE_WRITE, CSL_MSC_VERIFY_FAILED, CSL_MSC_VERIFY_PASSED, CSL_USB_IOFLAG_NONE, CSL_USB_IOFLAG_NOSHORT, CSL_MscObject::csw, CSL_MscLogicalUnit::currLba, CSL_MscObject::lbaBuffer, CSL_MscLogicalUnit::lbaCnt, CSL_MscLogicalUnit::lbaSize, CSL_MscObject::lun, CSL_MscLogicalUnit::mediaState, MSC_handleDataDirMisMatch(), MSC_sendCswWithPhaseError(), MSC_SetSenseKeys(), CSL_MscLogicalUnit::readwrite, CSL_MscObject::senseData, CSL_MscObject::storageState, USB_isTransactionDone(), USB_postTransaction(), CSL_MscLogicalUnit::verifyFlag, CSL_MscObject::writeMedia, and CSL_MscObject::writeToMedia.
Referenced by MSC_Bulk(), and MSC_HandleStateWaitForCBW().
| Uint16 MSC_GetactivityFlagStatus | ( | void * | pMSC | ) |
============================================================================
MSC_GetactivityFlagStatus
Description
This function gives the status of the activity Flag
Arguments
pMSC Handle to the MSC Class Obj
Return Value - Status of the activity flag
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Returns Activity flag status
Modifies
None
Example
Uint16 activityFlagStat;
CSL_MscInitStructApp mscAppHandle;
pMscAppClassHandle pAppClassHandle;
Uint16 mscAppBuffer[420];
CSL_Status status;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(pAppClassHandle);
....
....
activityFlagStat = MSC_GetactivityFlagStatus(pAppClassHandle->pMscObj);
============================================================================
References CSL_MscObject::activityPresentFlag, and CSL_MscClassStruct::mscHandle.
| Uint16 MSC_GetLunLockedStatus | ( | void * | pMSC, |
| Uint16 | lunNum | ||
| ) |
============================================================================
MSC_GetLunLockedStatus
Description
This function gets the Locked/Unlocked Status of the Lun.
Arguments
pMSC Handle to the MSC Class Obj
lunNum Logical Unit Number
Return Value - Lock/Unlock status of the Lun
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Returns the Locked/Unlocked status of Lun.
Modifies
None
Example
Uint16 lockStatus;
CSL_MscInitStructApp mscAppHandle;
pMscAppClassHandle pAppClassHandle;
Uint16 mscAppBuffer[420];
CSL_Status status;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(pAppClassHandle);
....
....
lockStatus = MSC_GetLunLockedStatus(pAppClassHandle->pMscObj, 0);
============================================================================
References CSL_MSC_MEDIA_LOCKED, CSL_MscObject::lun, CSL_MscLogicalUnit::mediaState, and CSL_MscClassStruct::mscHandle.
| Uint16 MSC_GetsuspendFlagStatus | ( | void * | pMSC | ) |
============================================================================
MSC_GetsuspendFlagStatus
Description
This function gives the status of the suspend Flag
Arguments
pMSC Handle to the MSC Class Obj
Return Value - Status of the suspend flag
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Returns suspend flag status
Modifies
None
Example
Uint16 suspendFlagStat;
CSL_MscInitStructApp mscAppHandle;
pMscAppClassHandle pAppClassHandle;
Uint16 mscAppBuffer[420];
CSL_Status status;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(pAppClassHandle);
....
....
suspendFlagStat = MSC_GetsuspendFlagStatus(pAppClassHandle->pMscObj);
============================================================================
References CSL_MscClassStruct::ctrlHandle, and CSL_MscCtrlObject::suspendFlag.
| CSL_Status MSC_handleDataDirMisMatch | ( | CSL_MscObject * | pMscHandle, |
| Uint16 | dataDir | ||
| ) |
============================================================================
MSC_handleDataDirMisMatch
Description
Function to handle the data direction miss during USB data transfers. This function stalls the end points and updates the CSW status with phase error.
Arguments
pMscHandle - Handle to Msc class object
dataDir - Actual Data direction expected;
should be 0x80 for IN and 0x0 for OUT
Return Value
Status returned by the MUSB module
Pre Condition
Error detected during the data transfer
Post Condition
Stalls the IN/OUT end points
Modifies
CSW buffer
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
pUsbEpHandle hUbInEp;
Uint16 mscAppBuffer[420];
CSL_Status status;
pMscAppClassHandle pAppClassHandle;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(pAppClassHandle);
....
....
MSC_handleDataDirMisMatch(pMscHandle, CSL_MSC_CBW_DATADIR_IN);
============================================================================
References CSL_MscObject::bulkInEpObj, CSL_MscObject::bulkOutEpObj, CSL_MSC_CBW_DATADIR_IN, CSL_MSC_CSW_6, CSL_MSC_CSW_STATUS_PHASE_ERROR, CSL_MSC_STORAGE_STATE_SENDING_STALL, CSL_USB_IOFLAG_NOT, CSL_MscObject::csw, CSL_MscObject::lbaBuffer, CSL_MscObject::storageState, USB_postTransaction(), and USB_stallEndpt().
Referenced by MSC_ExecuteRead(), MSC_ExecuteWrite(), MSC_HandleInquiry(), MSC_HandleReadCapacity(), and MSC_HandleRequestSense().
| static CSL_Status MSC_HandleInquiry | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbInEp, | ||
| Uint16 | logicalUnit | ||
| ) | [inline, static] |
============================================================================
MSC_HandleInquiry
Description
This function handles Inquiry command
Arguments
pMscHandle - Handle to Msc class object
hUsbInEp - In end point handle
logicalUnit - Logical unit number
Return Value
status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to sending data
Modifies
storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_HandleInquiry(pMscHandle, hUbInEp, lunNum);
============================================================================
References CSL_MscObject::cbw, CSL_MscObject::cbwDataTransferLength, CSL_MSC_16BIT_MASK, CSL_MSC_16BIT_SHIFT, CSL_MSC_CBW_6, CSL_MSC_CBW_DATADIR_IN, CSL_MSC_CBW_DIRBIT_MASK, CSL_MSC_CSW_4, CSL_MSC_CSW_5, CSL_MSC_CSW_6, CSL_MSC_CSW_STATUS_COMMAND_PASSED, CSL_MSC_STORAGE_STATE_SENDING_DATA, CSL_MSC_STORAGE_STATE_SENDING_SHORT_PKT, CSL_USB_IOFLAG_NOSHORT, CSL_MscObject::csw, CSL_MscObject::lun, MSC_handleDataDirMisMatch(), MSC_sendCswWithPhaseError(), CSL_MscLogicalUnit::scsiInquiryData, CSL_MscObject::storageState, and USB_postTransaction().
Referenced by MSC_HandleStateWaitForCBW().
| static CSL_Status MSC_HandleModeSense10 | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbInEp, | ||
| Uint16 | logicalUnit | ||
| ) | [inline, static] |
============================================================================
MSC_HandleModeSense10
Description
This function handles the Mode Sense 10 Command
Arguments
pMscHandle - Handle to Msc class object
hUsbInEp - In end point handle
logicalUnit - Logical unit number
Return Value
status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to sending data
Modifies
storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_HandleModeSense6(pMscHandle, hUbInEp, lunNum);
============================================================================
References CSL_MscObject::bulkInEpObj, CSL_MscObject::bulkOutEpObj, CSL_MscObject::cbw, CSL_MscObject::cbwDataTransferLength, CSL_MSC_16BIT_MASK, CSL_MSC_16BIT_SHIFT, CSL_MSC_CBW_6, CSL_MSC_CBW_DATADIR_IN, CSL_MSC_CBW_DIRBIT_MASK, CSL_MSC_CSW_4, CSL_MSC_CSW_5, CSL_MSC_CSW_6, CSL_MSC_CSW_STATUS_COMMAND_PASSED, CSL_MSC_CSW_STATUS_PHASE_ERROR, CSL_MSC_STORAGE_STATE_SENDING_DATA, CSL_MSC_STORAGE_STATE_SENDING_STALL, CSL_USB_IOFLAG_NOSHORT, CSL_USB_IOFLAG_NOT, CSL_MscObject::csw, CSL_MscObject::lbaBuffer, CSL_MscObject::modeSenseData, MSC_sendCswWithPhaseError(), CSL_MscObject::storageState, USB_postTransaction(), and USB_stallEndpt().
Referenced by MSC_HandleStateWaitForCBW().
| static CSL_Status MSC_HandleModeSense6 | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbInEp, | ||
| Uint16 | logicalUnit | ||
| ) | [inline, static] |
============================================================================
MSC_HandleModeSense6
Description
This function handles the Mode Sense 6 Command
Arguments
pMscHandle - Handle to Msc class object
hUsbInEp - In end point handle
logicalUnit - Logical unit number
Return Value
status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to sending data
Modifies
storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_HandleModeSense6(pMscHandle, hUbInEp, lunNum);
============================================================================
References CSL_MscObject::bulkInEpObj, CSL_MscObject::bulkOutEpObj, CSL_MscObject::cbw, CSL_MscObject::cbwDataTransferLength, CSL_MSC_16BIT_MASK, CSL_MSC_16BIT_SHIFT, CSL_MSC_CBW_6, CSL_MSC_CBW_DATADIR_IN, CSL_MSC_CBW_DIRBIT_MASK, CSL_MSC_CSW_4, CSL_MSC_CSW_5, CSL_MSC_CSW_6, CSL_MSC_CSW_STATUS_COMMAND_PASSED, CSL_MSC_CSW_STATUS_PHASE_ERROR, CSL_MSC_STORAGE_STATE_SENDING_DATA, CSL_MSC_STORAGE_STATE_SENDING_STALL, CSL_USB_IOFLAG_NOSHORT, CSL_USB_IOFLAG_NOT, CSL_MscObject::csw, CSL_MscObject::lbaBuffer, CSL_MscObject::modeSenseData, MSC_sendCswWithPhaseError(), CSL_MscObject::storageState, USB_postTransaction(), and USB_stallEndpt().
Referenced by MSC_HandleStateWaitForCBW().
| CSL_Status MSC_HandlePreventAllowMediaRemoval | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbInEp, | ||
| Uint16 | logicalUnit | ||
| ) |
============================================================================
MSC_HandlePreventAllowMediaRemoval
Description
This handles the Prevent Allow Media Removal SCSI Command
Arguments
pMscHandle - Handle to Msc class object
hUsbInEp - In end point handle
logicalUnit - Logical unit number
Return Value
status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to sending CSW
Modifies
storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_HandlePreventAllowMediaRemoval(pMscHandle, hUbInEp, lunNum);
============================================================================
References CSL_MscObject::bulkInEpObj, CSL_MscObject::bulkOutEpObj, CSL_MscObject::cbw, CSL_MscObject::cbwDataTransferLength, CSL_MSC_8BIT_SHIFT, CSL_MSC_CBW_9, CSL_MSC_CSW_6, CSL_MSC_CSW_DATA_SIZE, CSL_MSC_CSW_STATUS_COMMAND_FAILED, CSL_MSC_CSW_STATUS_COMMAND_PASSED, CSL_MSC_LOCK, CSL_MSC_MEDIA_BAD, CSL_MSC_MEDIA_LOCKED, CSL_MSC_MEDIA_PRESENT, CSL_MSC_MEDIACCESS_BADMEDIA, CSL_MSC_MEDIACCESS_SUCCESS, CSL_MSC_SCSI_ASC_INVALID_COMMAND_OPERATION_CODE, CSL_MSC_SCSI_ASC_MEDIA_NOT_PRESENT, CSL_MSC_SCSI_ASC_NO_ADDITIONAL_SENSE_INFORMATION, CSL_MSC_SCSI_SENSEKEY_ILLEGAL_REQUEST, CSL_MSC_SCSI_SENSEKEY_NO_SENSE, CSL_MSC_SCSI_SENSEKEY_NOT_READY, CSL_MSC_STORAGE_STATE_SENDING_CSW, CSL_MSC_STORAGE_STATE_SENDING_STALL, CSL_MSC_UNLOCK, CSL_USB_IOFLAG_NONE, CSL_USB_IOFLAG_NOT, CSL_MscObject::csw, CSL_MscObject::lbaBuffer, CSL_MscObject::lun, CSL_MscObject::mediaGetPresentState, CSL_MscObject::mediaLockUnit, CSL_MscLogicalUnit::mediaState, MSC_SetSenseKeys(), CSL_MscLogicalUnit::removeable, CSL_MscObject::senseData, CSL_MscObject::storageState, USB_postTransaction(), and USB_stallEndpt().
Referenced by MSC_HandleStateWaitForCBW().
| CSL_Status MSC_HandleReadCapacity | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbInEp, | ||
| Uint16 | logicalUnit | ||
| ) |
============================================================================
MSC_HandleReadCapacity
Description
This handles the Read Capacity SCSI Command
Arguments
pMscHandle - Handle to Msc class object
hUsbInEp - In end point handle
logicalUnit - Logical unit number
Return Value
status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to sending data
Modifies
storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_HandleReadCapacity(pMscHandle, hUbInEp, lunNum);
============================================================================
References CSL_MscObject::cbw, CSL_MscObject::cbwDataTransferLength, CSL_MSC_16BIT_MASK, CSL_MSC_16BIT_SHIFT, CSL_MSC_8BIT_SHIFT, CSL_MSC_CBW_6, CSL_MSC_CBW_DATADIR_IN, CSL_MSC_CBW_DIRBIT_MASK, CSL_MSC_CSW_4, CSL_MSC_CSW_5, CSL_MSC_CSW_6, CSL_MSC_CSW_STATUS_COMMAND_FAILED, CSL_MSC_CSW_STATUS_COMMAND_PASSED, CSL_MSC_MEDIA_BAD, CSL_MSC_MEDIA_PRESENT, CSL_MSC_MEDIACCESS_BADMEDIA, CSL_MSC_MEDIACCESS_NOTPRESENT, CSL_MSC_MEDIACCESS_SUCCESS, CSL_MSC_RC_1, CSL_MSC_RC_2, CSL_MSC_RC_3, CSL_MSC_RC_4, CSL_MSC_SCSI_ASC_MEDIA_NOT_PRESENT, CSL_MSC_SCSI_ASC_NO_ADDITIONAL_SENSE_INFORMATION, CSL_MSC_SCSI_SENSEKEY_NO_SENSE, CSL_MSC_SCSI_SENSEKEY_NOT_READY, CSL_MSC_STORAGE_STATE_SENDING_DATA, CSL_USB_IOFLAG_NOSHORT, CSL_MscObject::csw, CSL_MscLogicalUnit::lbaSize, CSL_MscObject::lun, CSL_MscObject::mediaGetPresentState, CSL_MscLogicalUnit::mediaSize, CSL_MscLogicalUnit::mediaState, MSC_handleDataDirMisMatch(), MSC_sendCswWithPhaseError(), MSC_SetSenseKeys(), CSL_MscObject::readCapacity, CSL_MscObject::senseData, CSL_MscObject::storageState, and USB_postTransaction().
Referenced by MSC_HandleStateWaitForCBW().
| static CSL_Status MSC_HandleRequestSense | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbInEp | ||
| ) | [inline, static] |
============================================================================
MSC_HandleRequestSense
Description
This handles the Request Sense SCSI Command
Arguments
pMscHandle - Handle to Msc class object
hUsbInEp - In end point handle
Return Value
status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to sending data
Modifies
storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
pUsbEpHandle hUbInEp;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_HandleRequestSense(pMscHandle, hUbInEp);
============================================================================
References CSL_MscObject::cbw, CSL_MscObject::cbwDataTransferLength, CSL_MSC_16BIT_MASK, CSL_MSC_16BIT_SHIFT, CSL_MSC_CBW_6, CSL_MSC_CBW_DATADIR_IN, CSL_MSC_CBW_DIRBIT_MASK, CSL_MSC_CSW_4, CSL_MSC_CSW_5, CSL_MSC_CSW_6, CSL_MSC_CSW_STATUS_COMMAND_PASSED, CSL_MSC_STORAGE_STATE_SENDING_DATA, CSL_MSC_STORAGE_STATE_SENDING_SHORT_PKT, CSL_USB_IOFLAG_NOSHORT, CSL_MscObject::csw, MSC_handleDataDirMisMatch(), MSC_sendCswWithPhaseError(), CSL_MscObject::senseData, CSL_MscObject::storageState, and USB_postTransaction().
Referenced by MSC_HandleStateWaitForCBW().
| static CSL_Status MSC_HandleStartStopUnit | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbInEp, | ||
| Uint16 | lunNum | ||
| ) | [inline, static] |
============================================================================
MSC_HandleStartStopUnit
Description
Starts or stops the Unit
Arguments
pMscHandle - Handle to Msc class object
hUsbInEp - In end point handle
lunNum - Logical unit number
Return Value
status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to sending CSW
Modifies
storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_HandleStartStopUnit(pMscHandle, hUbInEp, lunNum);
============================================================================
References CSL_MscObject::bulkInEpObj, CSL_MscObject::bulkOutEpObj, CSL_MscObject::cbw, CSL_MscObject::cbwDataTransferLength, CSL_MSC_8BIT_SHIFT, CSL_MSC_CBW_9, CSL_MSC_CSW_6, CSL_MSC_CSW_STATUS_COMMAND_FAILED, CSL_MSC_CSW_STATUS_COMMAND_PASSED, CSL_MSC_MEDIA_BAD, CSL_MSC_MEDIA_LOCKED, CSL_MSC_MEDIA_PRESENT, CSL_MSC_MEDIACCESS_SUCCESS, CSL_MSC_SCSI_ASC_INVALID_COMMAND_OPERATION_CODE, CSL_MSC_SCSI_ASC_MEDIA_REMOVAL_PREVENTED, CSL_MSC_SCSI_ASC_NO_ADDITIONAL_SENSE_INFORMATION, CSL_MSC_SCSI_SENSEKEY_ILLEGAL_REQUEST, CSL_MSC_SCSI_SENSEKEY_NO_SENSE, CSL_MSC_SCSI_SENSEKEY_UNIT_ATTENTION, CSL_MSC_STORAGE_STATE_SENDING_CSW, CSL_MSC_STORAGE_STATE_SENDING_STALL, CSL_USB_IOFLAG_NONE, CSL_USB_IOFLAG_NOT, CSL_MscObject::csw, CSL_MscObject::lbaBuffer, CSL_MscObject::lun, CSL_MscObject::mediaEject, CSL_MscLogicalUnit::mediaState, MSC_SetSenseKeys(), CSL_MscObject::senseData, CSL_MscObject::storageState, USB_postTransaction(), and USB_stallEndpt().
Referenced by MSC_HandleStateWaitForCBW().
| static CSL_Status MSC_HandleStateReset | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbOutEp | ||
| ) | [inline, static] |
============================================================================
MSC_HandleStateReset
Description
Handles the reset condition
Arguments
pMscHandle - Handle to Msc class object
hUsbOutEp - Out end point handle
Return Value
status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to wait for CBW
Modifies
Storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_HandleStateReset(pMscHandle, hUbOutEp);
============================================================================
References CSL_MscObject::cbw, CSL_MSC_STATE_RESET_DATA_SIZE, CSL_MSC_STORAGE_STATE_WAIT_FOR_CBW, CSL_USB_IOFLAG_NONE, CSL_MscObject::storageState, USB_abortTransaction(), and USB_postTransaction().
Referenced by MSC_Bulk(), and MSC_reqBotMscReset().
| static CSL_Status MSC_HandleStateSendCSW | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbOutEp, | ||
| pUsbEpHandle | hUsbInEp | ||
| ) | [inline, static] |
============================================================================
MSC_HandleStateSendCSW
Description
Handles send CSW state
Arguments
pMscHandle - Handle to Msc class object
hUsbOutEp - Out end point handle
hUsbInEp - In end point handle
Return Value
status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to wait for CBW
Modifies
storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
pUsbEpHandle hUbInEp;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_HandleStateSendCSW(pMscHandle, hUbOutEp, hUbInEp);
============================================================================
References CSL_MscObject::activityPresentFlag, CSL_MscObject::cbw, CSL_MSC_CBW_DATA_SIZE, CSL_MSC_STORAGE_STATE_WAIT_FOR_CBW, CSL_USB_IOFLAG_NONE, CSL_MscObject::storageState, USB_isTransactionDone(), and USB_postTransaction().
Referenced by MSC_Bulk().
| static CSL_Status MSC_HandleStateSendData | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbInEp | ||
| ) | [inline, static] |
============================================================================
MSC_HandleStateSendData
Description
Sends the command status word to the host device
Arguments
pMscHandle - Handle to Msc class object
hUsbInEp - In end point handle
Return Value
status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to sending CSW
Modifies
storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
pUsbEpHandle hUbInEp;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_HandleStateSendData(pMscHandle, hUbInEp);
============================================================================
References CSL_MSC_CSW_DATA_SIZE, CSL_MSC_STORAGE_STATE_SENDING_CSW, CSL_USB_IOFLAG_NONE, CSL_MscObject::csw, CSL_MscObject::storageState, USB_isTransactionDone(), and USB_postTransaction().
Referenced by MSC_Bulk().
| static CSL_Status MSC_HandleStateSendingShortPkt | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbInEp | ||
| ) | [inline, static] |
============================================================================
MSC_HandleStateSendingShortPkt
Description
Handles sending short packet storage state
Arguments
pMscHandle - Handle to Msc class object
hUsbInEp - In end point handle
Return Value
status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to sending stall
Modifies
storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
pUsbEpHandle hUbInEp;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_HandleStateSendingShortPkt(pMscHandle, hUbInEp);
============================================================================
References CSL_MSC_STORAGE_STATE_SENDING_STALL, CSL_USB_IOFLAG_NOT, CSL_MscObject::csw, CSL_MscObject::storageState, USB_postTransaction(), and USB_stallEndpt().
Referenced by MSC_Bulk().
| static CSL_Status MSC_HandleStateSendStall | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbInEp | ||
| ) | [inline, static] |
============================================================================
MSC_HandleStateSendStall
Description
Sends the stall signal to the host
Arguments
pMscHandle - Handle to Msc class object
hUsbInEp - In end point handle
Return Value
status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to sending CSW
Modifies
storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
pUsbEpHandle hUbInEp;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_HandleStateSendStall(pMscHandle, hUbInEp);
============================================================================
References CSL_MSC_CSW_DATA_SIZE, CSL_MSC_STORAGE_STATE_SENDING_CSW, CSL_USB_IOFLAG_NONE, CSL_MscObject::csw, CSL_MscObject::storageState, USB_isTransactionDone(), and USB_postTransaction().
Referenced by MSC_Bulk().
| CSL_Status MSC_HandleStateWaitForCBW | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbOutEp, | ||
| pUsbEpHandle | hUsbInEp | ||
| ) |
============================================================================
MSC_HandleStateWaitForCBW
Description
Handles the Wait for CBW state
Arguments
pMscHandle - Handle to Msc class object
hUsbOutEp - Out end point handle
hUsbInEp - In end point handle
Return Value
status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to sending data or stall
Modifies
storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
pUsbEpHandle hUbInEp;
Uint16 mscAppBuffer[420];
CSL_Status status;
pMscAppClassHandle pAppClassHandle;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(pAppClassHandle);
....
....
MSC_HandleStateWaitForCBW(pMscHandle, hUbOutEp, hUbInEp);
============================================================================
References CSL_MscObject::activityPresentFlag, CSL_MscObject::cbw, CSL_MscObject::cbwDataTransferLength, CSL_MSC_16BIT_MASK, CSL_MSC_16BIT_SHIFT, CSL_MSC_8BIT_SHIFT, CSL_MSC_CBW_2, CSL_MSC_CBW_3, CSL_MSC_CBW_4, CSL_MSC_CBW_5, CSL_MSC_CBW_6, CSL_MSC_CBW_7, CSL_MSC_CSW_2, CSL_MSC_CSW_3, CSL_MSC_CSW_4, CSL_MSC_CSW_5, CSL_MSC_CSW_6, CSL_MSC_CSW_DATA_SIZE, CSL_MSC_CSW_STATUS_COMMAND_FAILED, CSL_MSC_SCSI_ASC_INVALID_COMMAND_OPERATION_CODE, CSL_MSC_SCSI_COMMAND_INQUIRY, CSL_MSC_SCSI_COMMAND_MODE_SENSE_10, CSL_MSC_SCSI_COMMAND_MODE_SENSE_6, CSL_MSC_SCSI_COMMAND_PREVENT_ALLOW_MEDIA_REMOVAL, CSL_MSC_SCSI_COMMAND_READ_10, CSL_MSC_SCSI_COMMAND_READ_CAPACITY, CSL_MSC_SCSI_COMMAND_REQUEST_SENSE, CSL_MSC_SCSI_COMMAND_START_STOP_UNIT, CSL_MSC_SCSI_COMMAND_TEST_UNIT_READY, CSL_MSC_SCSI_COMMAND_VERIFY_10, CSL_MSC_SCSI_COMMAND_WRITE_10, CSL_MSC_SCSI_SENSEKEY_ILLEGAL_REQUEST, CSL_MSC_STORAGE_STATE_SENDING_CSW, CSL_MSC_STORAGE_STATE_SENDING_SHORT_PKT, CSL_MSC_STORAGE_STATE_SENDING_STALL, CSL_USB_IOFLAG_NONE, CSL_USB_IOFLAG_NOSHORT, CSL_USB_IOFLAG_NOT, CSL_MscObject::csw, MSC_ExecuteRead(), MSC_ExecuteWrite(), MSC_HandleInquiry(), MSC_HandleModeSense10(), MSC_HandleModeSense6(), MSC_HandlePreventAllowMediaRemoval(), MSC_HandleReadCapacity(), MSC_HandleRequestSense(), MSC_HandleStartStopUnit(), MSC_HandleTestUnitReady(), MSC_HandleVerify10(), MSC_SetSenseKeys(), MSC_verifyCBW(), CSL_MscObject::senseData, CSL_MscObject::storageState, USB_isTransactionDone(), USB_postTransaction(), and USB_stallEndpt().
Referenced by MSC_Bulk().
| CSL_Status MSC_HandleTestUnitReady | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbInEp, | ||
| Uint16 | logicalUnit | ||
| ) |
============================================================================
MSC_HandleTestUnitReady
Description
This handles the Test Unit Ready SCSI Command
Arguments
pMscHandle - Handle to Msc class object
hUsbInEp - In end point handle
logicalUnit - Logical unit number
Return Value
status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to sending CSW
Modifies
storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_HandleTestUnitReady(pMscHandle, hUbInEp, lunNum);
============================================================================
References CSL_MscObject::bulkInEpObj, CSL_MscObject::bulkOutEpObj, CSL_MscObject::cbwDataTransferLength, CSL_MSC_CSW_6, CSL_MSC_CSW_DATA_SIZE, CSL_MSC_CSW_STATUS_COMMAND_FAILED, CSL_MSC_CSW_STATUS_COMMAND_PASSED, CSL_MSC_MEDIA_BAD, CSL_MSC_MEDIA_PRESENT, CSL_MSC_MEDIACCESS_BADMEDIA, CSL_MSC_MEDIACCESS_NOTPRESENT, CSL_MSC_MEDIACCESS_SUCCESS, CSL_MSC_SCSI_ASC_MEDIA_MAY_HAVE_CHANGED, CSL_MSC_SCSI_ASC_MEDIA_NOT_PRESENT, CSL_MSC_SCSI_ASC_NO_ADDITIONAL_SENSE_INFORMATION, CSL_MSC_SCSI_SENSEKEY_NO_SENSE, CSL_MSC_SCSI_SENSEKEY_NOT_READY, CSL_MSC_SCSI_SENSEKEY_UNIT_ATTENTION, CSL_MSC_STORAGE_STATE_SENDING_CSW, CSL_MSC_STORAGE_STATE_SENDING_STALL, CSL_USB_IOFLAG_NOSHORT, CSL_USB_IOFLAG_NOT, CSL_MscObject::csw, CSL_MscObject::getMediaSize, CSL_MscObject::lbaBuffer, CSL_MscObject::lun, CSL_MscObject::mediaGetPresentState, CSL_MscObject::mediaInit, CSL_MscLogicalUnit::mediaSize, CSL_MscLogicalUnit::mediaState, MSC_SetSenseKeys(), CSL_MscObject::senseData, CSL_MscObject::storageState, USB_postTransaction(), and USB_stallEndpt().
Referenced by MSC_HandleStateWaitForCBW().
| static CSL_Status MSC_HandleVerify10 | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbInEp, | ||
| Uint16 | logicalUnit | ||
| ) | [inline, static] |
============================================================================
MSC_HandleVerify10
Description
This handles the Verify 10 SCSI Command
Arguments
pMscHandle - Handle to Msc class object
hUsbInEp - In end point handle
logicalUnit - Logical unit number
Return Value
Status returned by the MUSB module
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Changes the state to sending CSW
Modifies
storage state variable
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_HandleVerify10(pMscHandle, hUbInEp, lunNum);
============================================================================
References CSL_MscObject::bulkInEpObj, CSL_MscObject::bulkOutEpObj, CSL_MscObject::cbw, CSL_MscObject::cbwDataTransferLength, CSL_MSC_8BIT_HIGH_MASK, CSL_MSC_8BIT_MASK, CSL_MSC_8BIT_SHIFT, CSL_MSC_CBW_11, CSL_MSC_CSW_6, CSL_MSC_CSW_DATA_SIZE, CSL_MSC_CSW_STATUS_COMMAND_FAILED, CSL_MSC_CSW_STATUS_COMMAND_PASSED, CSL_MSC_SCSI_ASC_MISCOMPARE_VERIFY, CSL_MSC_SCSI_SENSEKEY_MISCOMPARE, CSL_MSC_STORAGE_STATE_SENDING_CSW, CSL_MSC_STORAGE_STATE_SENDING_STALL, CSL_MSC_VERIFY_PASSED, CSL_USB_IOFLAG_NOSHORT, CSL_USB_IOFLAG_NOT, CSL_MscObject::csw, CSL_MscObject::lbaBuffer, CSL_MscObject::lun, MSC_SetSenseKeys(), CSL_MscObject::senseData, CSL_MscObject::storageState, USB_postTransaction(), USB_stallEndpt(), and CSL_MscLogicalUnit::verifyFlag.
Referenced by MSC_HandleStateWaitForCBW().
| static CSL_Status MSC_initCtrlDesc | ( | CSL_MscCtrlObject * | pCtrlHandle | ) | [static] |
============================================================================
MSC_initCtrlDesc
Description
This function initializes the control object
Arguments
pCtrlHandle Handle to the CTL Object
Return Value CSL_Status
Pre Condition
None
Post Condition
Initializes control object
Modifies
Control object structure
Example
CSL_MscCtrlObject ctrlObj;
CSL_Status status;
status = MSC_initCtrlDesc(&ctrlObj);
============================================================================
| static CSL_Status MSC_initMscVal | ( | CSL_MscObject * | pMscHandle | ) | [static] |
============================================================================
MSC_initMscVal
Description
This function initializes the MSC object
Arguments
pMscHandle Handle to the Msc Object
Return Value CSL_Status
Pre Condition
None
Post Condition
Initializes MSC object
Modifies
MSC object structure
Example
CSL_MscObject mscObj;
CSL_Status status;
status = MSC_initMscVal(&mscObj);
============================================================================
| static fpMSC_REQ_HANDLER MSC_lookupReqHandler | ( | Uint16 | request, |
| CSL_MscRequestStruct * | pUSB_ReqTable | ||
| ) | [inline, static] |
============================================================================
MSC_lookupReqHandler
Description
This functions maps the request sent by host to the Msc request table and returns the corresponding request handler address
Arguments
request - Request sent by the host
pUSB_ReqTable - Request table structure pointer
Return Value
Request handler pointer
Pre Condition
Request table should be initialized and MSC_Open/MSC_OpenFullspeed function should be called successfully
Post Condition
Returns the request handler pointer
Modifies
None
Example
CSL_MscRequestRet (*fpRequestHandler)(CSL_MSC_REQUEST_ARGS)
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
pCtrlHandle->fpRequestHandler = MSC_lookupReqHandler(request,
pCtrlHandle->mscReqTable);
============================================================================
References CSL_MscRequestStruct::fpRequestHandler, and MSC_reqUnknown().
Referenced by MSC_Ctrl().
| CSL_Status MSC_Open | ( | pMscAppClassHandle | pAppClassHandle | ) |
============================================================================
MSC_Open
Description
This function Opens the Msc module. It initializes Msc and Ctrl handles with the data given by the application.
NOTE: THIS FUNCTION CONFIGURES USB MSC MODULE IN HIGH SPEED MODE
Arguments
pAppClassHandle Application handle to the MSC Class Obj
Return Value CSL_Status
Pre Condition
None
Post Condition
Initializes Msc and Ctrl handles
Modifies
Msc and Ctrl handle data
Example
CSL_MscInitStructApp mscAppHandle;
pMscAppClassHandle pAppClassHandle;
Uint16 mscAppBuffer[420];
CSL_Status status;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(pAppClassHandle);
============================================================================
References MSC_Setup().
| CSL_Status MSC_OpenFullspeed | ( | pMscAppClassHandle | pAppClassHandle | ) |
============================================================================
MSC_OpenFullspeed
Description
This function Opens the Msc module for fullspeed mode operation. It initializes Msc and Ctrl handles with the data given by the application
NOTE: THIS FUNCTION CONFIGURES USB MSC MODULE IN FULLSPEED MODE
Arguments
pAppClassHandle Application handle to the MSC Class Obj
Return Value CSL_Status
Pre Condition
None
Post Condition
Initializes Msc and Ctrl handles
Modifies
Msc and Ctrl handle data
Example
CSL_MscInitStructApp mscAppHandle;
pMscAppClassHandle pAppClassHandle;
Uint16 mscAppBuffer[420];
CSL_Status status;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_OpenFullspeed(pAppClassHandle);
============================================================================
References CSL_USB_EP0_PACKET_SIZE, MSC_Setup(), and USB_setFullSpeedMode().
| CSL_MscRequestRet MSC_reqBotMscReset | ( | CSL_UsbDevNum | devNum, |
| CSL_UsbSetupStruct * | usbSetup, | ||
| pUsbEpHandle | hInEp, | ||
| pUsbEpHandle | hOutEp, | ||
| void * | pMsc | ||
| ) |
============================================================================
MSC_reqBotMscReset
Description
This function handles the Bulk Only Mass storage Reset request from host
Arguments
devNum - USB device instance number
usbSetup - USB setup packet structure
hInEp - USB IN end point handle
hOutEp - USB OUT end point handle
pMsc - Pointer to the MSC Class Obj structure
Return Value
Pre Condition
MSC_lookupReqHandler should be called successfully
Post Condition
Resets storage state
Modifies
None
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
pCtrlHandle->fpRequestHandler = MSC_lookupReqHandler(request,
pCtrlHandle->mscReqTable);
pCtrlHandle->fpRequestHandler(pCtrlHandle->devNum,
&pCtrlHandle->usbSetup,hCtrlEpIn,hCtrlEpOut,pMSC);
============================================================================
References CSL_MscObject::bulkInEpObj, CSL_MscObject::bulkOutEpObj, CSL_MSC_STORAGE_STATE_RESET, MSC_HandleStateReset(), CSL_MscClassStruct::mscHandle, CSL_MscObject::storageState, and USB_abortTransaction().
| static CSL_MscRequestRet MSC_reqClearFeature | ( | CSL_UsbDevNum | devNum, |
| CSL_UsbSetupStruct * | usbSetup, | ||
| pUsbEpHandle | hInEp, | ||
| pUsbEpHandle | hOutEp, | ||
| void * | pMsc | ||
| ) | [inline, static] |
============================================================================
MSC_reqClearFeature
Description
This function handles the request to clear the feature set
Arguments
devNum - USB device number
usbSetup - USB setup structure pointer
hInEp - USB IN endpoint handle
hOutEp - USB OUT endpoint handle
pMsc - Handle to the MSC Class Obj
Return Value
Pre Condition
MSC_lookupReqHandler should be called successfully
Post Condition
Clears the feature
Modifies
USB registers
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
pCtrlHandle->fpRequestHandler = MSC_lookupReqHandler(request,
pCtrlHandle->mscReqTable);
pCtrlHandle->fpRequestHandler(pCtrlHandle->devNum,
&pCtrlHandle->usbSetup,hCtrlEpIn,hCtrlEpOut,pMSC);
============================================================================
References CSL_MSC_8BIT_MASK, CSL_USB_FEATURE_ENDPOINT_STALL, CSL_USB_FEATURE_REMOTE_WAKEUP, USB_clearEndptStall(), USB_epNumToHandle(), USB_setRemoteWakeup(), CSL_UsbSetupStruct::wIndex, and CSL_UsbSetupStruct::wValue.
| static CSL_MscRequestRet MSC_reqGetConfiguration | ( | CSL_UsbDevNum | devNum, |
| CSL_UsbSetupStruct * | usbSetup, | ||
| pUsbEpHandle | hInEp, | ||
| pUsbEpHandle | hOutEp, | ||
| void * | pMsc | ||
| ) | [inline, static] |
============================================================================
MSC_reqGetConfiguration
Description
This function handles the request from host to get configuration
Arguments
devNum - USB device number
usbSetup - USB setup structure pointer
hInEp - USB IN endpoint handle
hOutEp - USB OUT endpoint handle
pMsc - Handle to the MSC Class Obj
Return Value
Pre Condition
MSC_lookupReqHandler should be called successfully
Post Condition
Sends the configuration
Modifies
None
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
pCtrlHandle->fpRequestHandler = MSC_lookupReqHandler(request,
pCtrlHandle->mscReqTable);
pCtrlHandle->fpRequestHandler(pCtrlHandle->devNum,
&pCtrlHandle->usbSetup,hCtrlEpIn,hCtrlEpOut,pMSC);
============================================================================
References CSL_USB_IOFLAG_NONE, CSL_USB_IOFLAG_NOSHORT, CSL_MscCtrlObject::ctrlBuffer, CSL_MscClassStruct::ctrlHandle, CSL_MscCtrlObject::curConfigStat, and USB_postTransaction().
| CSL_MscRequestRet MSC_reqGetDescriptor | ( | CSL_UsbDevNum | devNum, |
| CSL_UsbSetupStruct * | usbSetup, | ||
| pUsbEpHandle | hInEp, | ||
| pUsbEpHandle | hOutEp, | ||
| void * | pMsc | ||
| ) |
============================================================================
MSC_reqGetDescriptor
Description
This function handles the request from host to get the descriptor
Arguments
CSL_MSC_REQUEST_ARGS - MSC request arguments
Return Value
Pre Condition
MSC_lookupReqHandler should be called successfully
Post Condition
Sends the descriptor
Modifies
None
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
pCtrlHandle->fpRequestHandler = MSC_lookupReqHandler(request,
pCtrlHandle->mscReqTable);
pCtrlHandle->fpRequestHandler(pCtrlHandle->devNum,
&pCtrlHandle->usbSetup,hCtrlEpIn,hCtrlEpOut,pMSC);
============================================================================
References CSL_MSC_8BIT_MASK, CSL_MSC_8BIT_SHIFT, CSL_MSC_UNICODE_SIZE, CSL_USB_CONFIGURATION_DESCRIPTOR_TYPE, CSL_USB_DEVICE_DESCRIPTOR_TYPE, CSL_USB_DEVICE_QUAL_DESCRIPTOR_TYPE, CSL_USB_IOFLAG_CAT, CSL_USB_IOFLAG_LNK, CSL_USB_IOFLAG_NONE, CSL_USB_IOFLAG_NOSHORT, CSL_USB_OTHERSPEED_CFG_DESCRIPTOR_TYPE, CSL_USB_STRING_DESCRIPTOR_TYPE, CSL_MscClassStruct::ctrlHandle, CSL_MscCtrlObject::deviceDescr, CSL_MscCtrlObject::deviceQualDescr, CSL_MscCtrlObject::pCfgDescr, CSL_MscCtrlObject::pOtherSpeedCfgDescr, CSL_MscCtrlObject::strDescr, CSL_MscCtrlObject::stringDescrLangid, USB_postTransaction(), CSL_UsbSetupStruct::wLength, and CSL_UsbSetupStruct::wValue.
| static CSL_MscRequestRet MSC_reqGetInterface | ( | CSL_UsbDevNum | devNum, |
| CSL_UsbSetupStruct * | usbSetup, | ||
| pUsbEpHandle | hInEp, | ||
| pUsbEpHandle | hOutEp, | ||
| void * | pMsc | ||
| ) | [inline, static] |
============================================================================
MSC_reqGetInterface
Description
This function handles the request from host to get interface unit number
Arguments
devNum - USB device number
usbSetup - USB setup structure pointer
hInEp - USB IN endpoint handle
hOutEp - USB OUT endpoint handle
pMsc - Handle to the MSC Class Obj
Return Value
Pre Condition
MSC_lookupReqHandler should be called successfully
Post Condition
Sends interface info
Modifies
None
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
pCtrlHandle->fpRequestHandler = MSC_lookupReqHandler(request,
pCtrlHandle->mscReqTable);
pCtrlHandle->fpRequestHandler(pCtrlHandle->devNum,
&pCtrlHandle->usbSetup,hCtrlEpIn,hCtrlEpOut,pMSC);
============================================================================
References CSL_USB_IOFLAG_NONE, CSL_MscCtrlObject::ctrlBuffer, CSL_MscClassStruct::ctrlHandle, USB_postTransaction(), and CSL_UsbSetupStruct::wIndex.
| static CSL_MscRequestRet MSC_reqGetMaxLUN | ( | CSL_UsbDevNum | devNum, |
| CSL_UsbSetupStruct * | usbSetup, | ||
| pUsbEpHandle | hInEp, | ||
| pUsbEpHandle | hOutEp, | ||
| void * | pMsc | ||
| ) | [inline, static] |
============================================================================
MSC_reqGetMaxLUN
Description
This function handles the request from host to send maximum logical unit number
Arguments
devNum - USB device number
usbSetup - USB setup structure pointer
hInEp - USB IN endpoint handle
hOutEp - USB OUT endpoint handle
pMsc - Handle to the MSC Class Obj
Return Value
Pre Condition
MSC_lookupReqHandler should be called successfully
Post Condition
Sends the max lun number
Modifies
None
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
pCtrlHandle->fpRequestHandler = MSC_lookupReqHandler(request,
pCtrlHandle->mscReqTable);
pCtrlHandle->fpRequestHandler(pCtrlHandle->devNum,
&pCtrlHandle->usbSetup,hCtrlEpIn,hCtrlEpOut,pMSC);
============================================================================
References CSL_USB_IOFLAG_NONE, CSL_MscCtrlObject::ctrlBuffer, CSL_MscClassStruct::ctrlHandle, CSL_MscClassStruct::mscHandle, CSL_MscObject::noOfLun, USB_postTransaction(), CSL_UsbSetupStruct::wIndex, CSL_UsbSetupStruct::wLength, and CSL_UsbSetupStruct::wValue.
| static CSL_MscRequestRet MSC_reqGetStatus | ( | CSL_UsbDevNum | devNum, |
| CSL_UsbSetupStruct * | usbSetup, | ||
| pUsbEpHandle | hInEp, | ||
| pUsbEpHandle | hOutEp, | ||
| void * | pMsc | ||
| ) | [inline, static] |
============================================================================
MSC_reqGetStatus
Description
This function handles the get status request from host
Arguments
devNum - USB device number
usbSetup - USB setup structure pointer
hInEp - USB IN endpoint handle
hOutEp - USB OUT endpoint handle
pMsc - Handle to the MSC Class Obj
Return Value
Pre Condition
MSC_lookupReqHandler should be called successfully
Post Condition
Sends the status
Modifies
None
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
pCtrlHandle->fpRequestHandler = MSC_lookupReqHandler(request,
pCtrlHandle->mscReqTable);
pCtrlHandle->fpRequestHandler(pCtrlHandle->devNum,
&pCtrlHandle->usbSetup,hCtrlEpIn,hCtrlEpOut,pMSC);
============================================================================
References CSL_UsbSetupStruct::bmRequestType, CSL_MSC_CURRDEV_STAT, CSL_MSC_REQUEST_TYPE_BASE, CSL_MSC_REQUEST_TYPE_DEVICE_STATUS, CSL_MSC_REQUEST_TYPE_EP_STATUS, CSL_MSC_REQUEST_TYPE_INTERFACE_STATUS, CSL_USB_IOFLAG_NONE, CSL_MscCtrlObject::ctrlBuffer, CSL_MscClassStruct::ctrlHandle, USB_epNumToHandle(), USB_getEndptStall(), USB_getRemoteWakeupStat(), USB_postTransaction(), and CSL_UsbSetupStruct::wIndex.
| static CSL_MscRequestRet MSC_reqSetAddress | ( | CSL_UsbDevNum | devNum, |
| CSL_UsbSetupStruct * | usbSetup, | ||
| pUsbEpHandle | hInEp, | ||
| pUsbEpHandle | hOutEp, | ||
| void * | pMsc | ||
| ) | [inline, static] |
============================================================================
MSC_reqSetAddress
Description
This function handles the request to set the device address
Arguments
devNum - USB device number
usbSetup - USB setup structure pointer
hInEp - USB IN endpoint handle
hOutEp - USB OUT endpoint handle
pMsc - Handle to the MSC Class Obj
Return Value
Pre Condition
MSC_lookupReqHandler should be called successfully
Post Condition
Sets the device address
Modifies
USB FADDR_POWER register
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
pCtrlHandle->fpRequestHandler = MSC_lookupReqHandler(request,
pCtrlHandle->mscReqTable);
pCtrlHandle->fpRequestHandler(pCtrlHandle->devNum,
&pCtrlHandle->usbSetup,hCtrlEpIn,hCtrlEpOut,pMSC);
============================================================================
References USB_setDevAddr(), and CSL_UsbSetupStruct::wValue.
| static CSL_MscRequestRet MSC_reqSetConfiguration | ( | CSL_UsbDevNum | devNum, |
| CSL_UsbSetupStruct * | usbSetup, | ||
| pUsbEpHandle | hInEp, | ||
| pUsbEpHandle | hOutEp, | ||
| void * | pMsc | ||
| ) | [inline, static] |
============================================================================
MSC_reqSetConfiguration
Description
This function handles the request to set the device configuration
Arguments
devNum - USB device number
usbSetup - USB setup structure pointer
hInEp - USB IN endpoint handle
hOutEp - USB OUT endpoint handle
pMsc - Handle to the MSC Class Obj
Return Value
Pre Condition
MSC_lookupReqHandler should be called successfully
Post Condition
Sets the configuration
Modifies
USB registers
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
pCtrlHandle->fpRequestHandler = MSC_lookupReqHandler(request,
pCtrlHandle->mscReqTable);
pCtrlHandle->fpRequestHandler(pCtrlHandle->devNum,
&pCtrlHandle->usbSetup,hCtrlEpIn,hCtrlEpOut,pMSC);
============================================================================
References CSL_MscClassStruct::ctrlHandle, CSL_MscCtrlObject::curConfigStat, USB_setConfiguration(), and CSL_UsbSetupStruct::wValue.
| static CSL_MscRequestRet MSC_reqSetFeature | ( | CSL_UsbDevNum | devNum, |
| CSL_UsbSetupStruct * | usbSetup, | ||
| pUsbEpHandle | hInEp, | ||
| pUsbEpHandle | hOutEp, | ||
| void * | pMsc | ||
| ) | [inline, static] |
============================================================================
MSC_reqSetFeature
Description
This function handles the request from host to set feature
Arguments
devNum - USB device number
usbSetup - USB setup structure pointer
hInEp - USB IN endpoint handle
hOutEp - USB OUT endpoint handle
pMsc - Handle to the MSC Class Obj
Return Value
Pre Condition
MSC_lookupReqHandler should be called successfully
Post Condition
Sets the feature
Modifies
USB regiters
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
pCtrlHandle->fpRequestHandler = MSC_lookupReqHandler(request,
pCtrlHandle->mscReqTable);
pCtrlHandle->fpRequestHandler(pCtrlHandle->devNum,
&pCtrlHandle->usbSetup,hCtrlEpIn,hCtrlEpOut,pMSC);
============================================================================
References CSL_MSC_8BIT_MASK, CSL_USB_FEATURE_ENDPOINT_STALL, CSL_USB_FEATURE_REMOTE_WAKEUP, USB_epNumToHandle(), USB_setRemoteWakeup(), USB_stallEndpt(), CSL_UsbSetupStruct::wIndex, and CSL_UsbSetupStruct::wValue.
| static CSL_MscRequestRet MSC_reqSetInterface | ( | CSL_UsbDevNum | devNum, |
| CSL_UsbSetupStruct * | usbSetup, | ||
| pUsbEpHandle | hInEp, | ||
| pUsbEpHandle | hOutEp, | ||
| void * | pMsc | ||
| ) | [inline, static] |
============================================================================
MSC_reqSetInterface
Description
This function handles the request from host to set interface unit number
Arguments
devNum - USB device number
usbSetup - USB setup structure pointer
hInEp - USB IN endpoint handle
hOutEp - USB OUT endpoint handle
pMsc - Handle to the MSC Class Obj
Return Value
Pre Condition
MSC_lookupReqHandler should be called successfully
Post Condition
Sends acknowledgement
Modifies
None
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
pCtrlHandle->fpRequestHandler = MSC_lookupReqHandler(request,
pCtrlHandle->mscReqTable);
pCtrlHandle->fpRequestHandler(pCtrlHandle->devNum,
&pCtrlHandle->usbSetup,hCtrlEpIn,hCtrlEpOut,pMSC);
============================================================================
References USB_setConfiguration(), CSL_UsbSetupStruct::wIndex, and CSL_UsbSetupStruct::wValue.
| static CSL_MscRequestRet MSC_reqUnknown | ( | CSL_UsbDevNum | devNum, |
| CSL_UsbSetupStruct * | usbSetup, | ||
| pUsbEpHandle | hInEp, | ||
| pUsbEpHandle | hOutEp, | ||
| void * | pMsc | ||
| ) | [inline, static] |
============================================================================
MSC_reqUnknown
Description
This function handles the case where the request sent by the host is unknown unit number
Arguments
devNum - USB device number
usbSetup - USB setup structure pointer
hInEp - USB IN endpoint handle
hOutEp - USB OUT endpoint handle
pMsc - Handle to the MSC Class Obj
Return Value
Pre Condition
MSC_lookupReqHandler should be called successfully
Post Condition
Sends acknowledgement
Modifies
None
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
CSL_MscCtrlObject *pCtrlHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
Uint16 request;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
pCtrlHandle->fpRequestHandler = MSC_lookupReqHandler(request,
pCtrlHandle->mscReqTable);
pCtrlHandle->fpRequestHandler(pCtrlHandle->devNum,
&pCtrlHandle->usbSetup,hCtrlEpIn,hCtrlEpOut,pMSC);
============================================================================
Referenced by MSC_Ctrl(), and MSC_lookupReqHandler().
| CSL_Status MSC_sendCswWithPhaseError | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbInEp | ||
| ) |
============================================================================
MSC_sendCswWithPhaseError
Description
This function sends CSW with phase error. This function is used to handle different error conditions by the SCSI commands.
Arguments
pMscHandle - Handle to Msc class object
hUsbInEp - In end point handle
Return Value
status returned by the MUSB module
Pre Condition
Error detected during the data transfer
Post Condition
Sends CSW with phase error
Modifies
CSW buffer
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
pUsbEpHandle hUbInEp;
Uint16 mscAppBuffer[420];
CSL_Status status;
pMscAppClassHandle pAppClassHandle;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(pAppClassHandle);
....
....
MSC_sendCswWithPhaseError(pMscHandle, hUbInEp);
============================================================================
References CSL_MscObject::cbwDataTransferLength, CSL_MSC_16BIT_MASK, CSL_MSC_16BIT_SHIFT, CSL_MSC_CSW_4, CSL_MSC_CSW_5, CSL_MSC_CSW_6, CSL_MSC_CSW_DATA_SIZE, CSL_MSC_CSW_STATUS_PHASE_ERROR, CSL_MSC_STORAGE_STATE_SENDING_CSW, CSL_USB_IOFLAG_NOSHORT, CSL_MscObject::csw, CSL_MscObject::storageState, and USB_postTransaction().
Referenced by MSC_ExecuteRead(), MSC_ExecuteWrite(), MSC_HandleInquiry(), MSC_HandleModeSense10(), MSC_HandleModeSense6(), MSC_HandleReadCapacity(), and MSC_HandleRequestSense().
| CSL_Status MSC_SetLunAttr | ( | pMscAppClassHandle | pAppClassHandle, |
| CSL_MscLunAttribApp * | lunHandle, | ||
| Uint16 | lunNum | ||
| ) |
============================================================================
MSC_SetLunAttr
Description
This function initializes the logical unit data structures.
Arguments
pAppClassHandle Handle of the MSC User Application Object
lunHandle Handle to the application Lun Object
lunNum Logical Unit Number
Return Value CSL_Status
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Initializes the logical unit
Modifies
Logical unit data structures
Example
CSL_MscInitStructApp mscAppHandle;
pMscAppClassHandle pAppClassHandle;
Uint16 mscAppBuffer[420];
CSL_Status status;
CSL_MscLunAttribApp lunObj;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(pAppClassHandle);
....
....
//Assign values to Lun Object structure
lunObj.removeableApp = 0;
lunObj.lbaSizeApp = 512;
....
....
status = MSC_SetLunAttr(&mscAppHandle, &lunObj, 0);
============================================================================
References CSL_MSC_VERIFY_PASSED, CSL_SCSI_DATA0_DEFVAL, CSL_SCSI_DATA1_DEFVAL, CSL_SCSI_DATA2_DEFVAL, CSL_SCSI_DATA30_DEFVAL, CSL_SCSI_DATA31_DEFVAL, CSL_SCSI_DATA32_DEFVAL, CSL_SCSI_DATA3_DEFVAL, CSL_SCSI_DATA4_DEFVAL, CSL_SCSI_DATA5_DEFVAL, CSL_SCSI_DATA_NULL_VAL, CSL_SCSI_DATA_SIZE1, CSL_SCSI_DATA_SIZE2, CSL_SCSI_DATA_SIZE3, CSL_SCSI_DATA_SIZE4, CSL_MscLogicalUnit::lbaSize, CSL_MscLunAttribApp::lbaSizeApp, CSL_MscObject::lun, CSL_MscLogicalUnit::mediaSize, CSL_MscLunAttribApp::mediaSizeApp, CSL_MscLogicalUnit::mediaState, CSL_MscClassStruct::mscHandle, CSL_MscInitStructApp::pMscObj, CSL_MscLogicalUnit::readwrite, CSL_MscLunAttribApp::readwriteApp, CSL_MscLogicalUnit::removeable, CSL_MscLunAttribApp::removeableApp, CSL_MscLunAttribApp::scsiInquiryConfData, CSL_MscLogicalUnit::scsiInquiryData, and CSL_MscLogicalUnit::verifyFlag.
| static void MSC_SetSenseKeys | ( | Uint16 * | senseData, |
| Uint16 | senseKey, | ||
| Uint16 | addSenseKey | ||
| ) | [inline, static] |
============================================================================
MSC_SetSenseKeys
Description
This function sets the sense key data
Arguments
senseData - Sense key data array
senseKey - Sense key data
addSenseKey - Sense key additional data
Return Value
None
Pre Condition
MSC module should be opened using MSC_Open/MSC_OpenFullspeed function
Post Condition
Sets sense key data
Modifies
SEnse key data array
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
Uint16 lunNum;
Uint16 mscAppBuffer[420];
CSL_Status status;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(&mscAppHandle);
....
....
MSC_SetSenseKeys(pMscHandle->senseData,
CSL_MSC_SCSI_SENSEKEY_ILLEGAL_REQUEST,
CSL_MSC_SCSI_ASC_INVALID_COMMAND_OPERATION_CODE);
============================================================================
References CSL_MSC_SSD_2, and CSL_MSC_SSD_7.
Referenced by MSC_ExecuteRead(), MSC_ExecuteWrite(), MSC_HandlePreventAllowMediaRemoval(), MSC_HandleReadCapacity(), MSC_HandleStartStopUnit(), MSC_HandleStateWaitForCBW(), MSC_HandleTestUnitReady(), and MSC_HandleVerify10().
| static CSL_Status MSC_Setup | ( | pMscAppClassHandle | pAppClassHandle, |
| Bool | usbSpeedCfg | ||
| ) | [static] |
============================================================================
MSC_Setup
Description
This function used to setup the Msc and Ctrl handles. This is an internal function and is called from MSC_Open or MSC_OpenFullspeed functions.
Arguments
pAppClassHandle Application handle to the MSC Class Obj
usbSpeedCfg USB speed selection parameter
0 - USB MSC operates in fullspeed mode
1 - USB MSC operates in highspeed mode
Return Value CSL_Status
Pre Condition
None
Post Condition
Initializes Msc and Ctrl handles
Modifies
Msc and Ctrl handle data
Example
CSL_MscInitStructApp mscAppHandle;
pMscAppClassHandle pAppClassHandle;
Uint16 mscAppBuffer[420];
CSL_Status status;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
// Setup USB for highspeed
status = MSC_Setup(pAppClassHandle, TRUE);
============================================================================
| static CSL_Status MSC_verifyCBW | ( | CSL_MscObject * | pMscHandle, |
| pUsbEpHandle | hUsbOutEp, | ||
| pUsbEpHandle | hUsbInEp | ||
| ) | [inline, static] |
============================================================================
MSC_verifyCBW
Description
Verifies the CBW received from host
Arguments
pMscHandle - Handle to Msc class object
hUsbOutEp - Out end point handle
hUsbInEp - In end point handle
Return Value CSL_Status
CSL_SOK - CBW is valid
CSL_ESYS_FAIL - CBW is invalid
Pre Condition
MSC_Open should be called successfully
Post Condition
None
Modifies
None
Example
CSL_MscInitStructApp mscAppHandle;
CSL_MscObject *pMscHandle;
pUsbEpHandle hUbOutEp;
pUsbEpHandle hUbInEp;
Uint16 mscAppBuffer[420];
CSL_Status status;
pMscAppClassHandle pAppClassHandle;
pAppClassHandle = &mscAppHandle;
// Assign values to all the members in mscAppHandle struct
mscAppHandle.pMscObj = &mscAppBuffer[0];
.....
.....
status = MSC_Open(pAppClassHandle);
....
....
MSC_verifyCBW(pMscHandle, hUbOutEp, hUbInEp);
============================================================================
References CSL_MscObject::cbw, CSL_MSC_16BIT_SHIFT, CSL_MSC_8BIT_SHIFT, CSL_MSC_CBW_0, CSL_MSC_CBW_1, CSL_MSC_CBW_6, CSL_MSC_CBW_DATA_SIZE, CSL_MSC_CBW_SIGNATURE, CSL_MscObject::noOfLun, and USB_getDataCountReadFromFifo().
Referenced by MSC_HandleStateWaitForCBW().
1.7.4