projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update UC3 platform driver support to use the bitmasks defined in the header files...
[pub/USBasp.git]
/
Demos
/
Host
/
LowLevel
/
MassStorageHost
/
Lib
/
MassStoreCommands.c
diff --git
a/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.c
b/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.c
index
7125896
..
48d6035
100644
(file)
--- a/
Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.c
+++ b/
Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.c
@@
-1,13
+1,13
@@
/*
LUFA Library
/*
LUFA Library
- Copyright (C) Dean Camera, 201
0
.
+ Copyright (C) Dean Camera, 201
1
.
dean [at] fourwalledcubicle [dot] com
dean [at] fourwalledcubicle [dot] com
- www.fourwalledcubicle.com
+ www.lufa-lib.org
*/
/*
*/
/*
- Copyright 201
0
Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 201
1
Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
@@
-63,25
+63,28
@@
static uint32_t MassStore_Tag = 1;
*
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
*/
*
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
*/
-static uint8_t MassStore_SendCommand(CommandBlockWrapper_t* const SCSICommandBlock,
+static uint8_t MassStore_SendCommand(
MS_
CommandBlockWrapper_t* const SCSICommandBlock,
void* BufferPtr)
{
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
void* BufferPtr)
{
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
- /* Each transmission should have a unique tag value, increment before use */
- SCSICommandBlock->Tag = ++MassStore_Tag;
-
/* Wrap Tag value when invalid - MS class defines tag values of 0 and 0xFFFFFFFF to be invalid */
/* Wrap Tag value when invalid - MS class defines tag values of 0 and 0xFFFFFFFF to be invalid */
- if (MassStore_Tag == 0xFFFFFFFF)
+ if (
++
MassStore_Tag == 0xFFFFFFFF)
MassStore_Tag = 1;
MassStore_Tag = 1;
+ /* Each transmission should have a unique tag value, increment before use */
+ SCSICommandBlock->Tag = MassStore_Tag;
+
/* Select the OUT data pipe for CBW transmission */
Pipe_SelectPipe(MASS_STORE_DATA_OUT_PIPE);
Pipe_Unfreeze();
/* Write the CBW command to the OUT pipe */
/* Select the OUT data pipe for CBW transmission */
Pipe_SelectPipe(MASS_STORE_DATA_OUT_PIPE);
Pipe_Unfreeze();
/* Write the CBW command to the OUT pipe */
- if ((ErrorCode = Pipe_Write_Stream_LE(SCSICommandBlock, sizeof(CommandBlockWrapper_t))) != PIPE_RWSTREAM_NoError)
- return ErrorCode;
+ if ((ErrorCode = Pipe_Write_Stream_LE(SCSICommandBlock, sizeof(MS_CommandBlockWrapper_t), NULL)) !=
+ PIPE_RWSTREAM_NoError)
+ {
+ return ErrorCode;
+ }
/* Send the data in the OUT pipe to the attached device */
Pipe_ClearOUT();
/* Send the data in the OUT pipe to the attached device */
Pipe_ClearOUT();
@@
-92,7
+95,7
@@
static uint8_t MassStore_SendCommand(CommandBlockWrapper_t* const SCSICommandBlo
/* Freeze pipe after use */
Pipe_Freeze();
/* Freeze pipe after use */
Pipe_Freeze();
- /* Send data if any */
+ /* Send data if any
has been given
*/
if ((BufferPtr != NULL) &&
((ErrorCode = MassStore_SendReceiveData(SCSICommandBlock, BufferPtr)) != PIPE_READYWAIT_NoError))
{
if ((BufferPtr != NULL) &&
((ErrorCode = MassStore_SendReceiveData(SCSICommandBlock, BufferPtr)) != PIPE_READYWAIT_NoError))
{
@@
-182,14
+185,14
@@
static uint8_t MassStore_WaitForDataReceived(void)
*
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
*/
*
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
*/
-static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* const SCSICommandBlock,
+static uint8_t MassStore_SendReceiveData(
MS_
CommandBlockWrapper_t* const SCSICommandBlock,
void* BufferPtr)
{
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
uint16_t BytesRem = SCSICommandBlock->DataTransferLength;
/* Check the direction of the SCSI command data stage */
void* BufferPtr)
{
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
uint16_t BytesRem = SCSICommandBlock->DataTransferLength;
/* Check the direction of the SCSI command data stage */
- if (SCSICommandBlock->Flags &
COMMAND_DIRECTION
_DATA_IN)
+ if (SCSICommandBlock->Flags &
MS_COMMAND_DIR
_DATA_IN)
{
/* Wait until the device has replied with some data */
if ((ErrorCode = MassStore_WaitForDataReceived()) != PIPE_RWSTREAM_NoError)
{
/* Wait until the device has replied with some data */
if ((ErrorCode = MassStore_WaitForDataReceived()) != PIPE_RWSTREAM_NoError)
@@
-200,7
+203,7
@@
static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* const SCSIComman
Pipe_Unfreeze();
/* Read in the block data from the pipe */
Pipe_Unfreeze();
/* Read in the block data from the pipe */
- if ((ErrorCode = Pipe_Read_Stream_LE(BufferPtr, BytesRem)) != PIPE_RWSTREAM_NoError)
+ if ((ErrorCode = Pipe_Read_Stream_LE(BufferPtr, BytesRem
, NULL
)) != PIPE_RWSTREAM_NoError)
return ErrorCode;
/* Acknowledge the packet */
return ErrorCode;
/* Acknowledge the packet */
@@
-213,7
+216,7
@@
static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* const SCSIComman
Pipe_Unfreeze();
/* Write the block data to the pipe */
Pipe_Unfreeze();
/* Write the block data to the pipe */
- if ((ErrorCode = Pipe_Write_Stream_LE(BufferPtr, BytesRem)) != PIPE_RWSTREAM_NoError)
+ if ((ErrorCode = Pipe_Write_Stream_LE(BufferPtr, BytesRem
, NULL
)) != PIPE_RWSTREAM_NoError)
return ErrorCode;
/* Acknowledge the packet */
return ErrorCode;
/* Acknowledge the packet */
@@
-238,7
+241,7
@@
static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* const SCSIComman
*
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails
*/
*
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails
*/
-static uint8_t MassStore_GetReturnedStatus(CommandStatusWrapper_t* const SCSICommandStatus)
+static uint8_t MassStore_GetReturnedStatus(
MS_
CommandStatusWrapper_t* const SCSICommandStatus)
{
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
{
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
@@
-251,9
+254,12
@@
static uint8_t MassStore_GetReturnedStatus(CommandStatusWrapper_t* const SCSICom
Pipe_Unfreeze();
/* Load in the CSW from the attached device */
Pipe_Unfreeze();
/* Load in the CSW from the attached device */
- if ((ErrorCode = Pipe_Read_Stream_LE(SCSICommandStatus, sizeof(CommandStatusWrapper_t))) != PIPE_RWSTREAM_NoError)
- return ErrorCode;
-
+ if ((ErrorCode = Pipe_Read_Stream_LE(SCSICommandStatus, sizeof(MS_CommandStatusWrapper_t), NULL)) !=
+ PIPE_RWSTREAM_NoError)
+ {
+ return ErrorCode;
+ }
+
/* Clear the data ready for next reception */
Pipe_ClearIN();
/* Clear the data ready for next reception */
Pipe_ClearIN();
@@
-261,7
+267,7
@@
static uint8_t MassStore_GetReturnedStatus(CommandStatusWrapper_t* const SCSICom
Pipe_Freeze();
/* Check to see if command failed */
Pipe_Freeze();
/* Check to see if command failed */
- if (SCSICommandStatus->Status !=
Command
_Pass)
+ if (SCSICommandStatus->Status !=
MS_SCSI_COMMAND
_Pass)
ErrorCode = MASS_STORE_SCSI_COMMAND_FAILED;
return ErrorCode;
ErrorCode = MASS_STORE_SCSI_COMMAND_FAILED;
return ErrorCode;
@@
-277,7
+283,7
@@
uint8_t MassStore_MassStorageReset(void)
USB_ControlRequest = (USB_Request_Header_t)
{
.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
USB_ControlRequest = (USB_Request_Header_t)
{
.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
- .bRequest = REQ_MassStorageReset,
+ .bRequest =
MS_
REQ_MassStorageReset,
.wValue = 0,
.wIndex = 0,
.wLength = 0,
.wValue = 0,
.wIndex = 0,
.wLength = 0,
@@
-307,7
+313,7
@@
uint8_t MassStore_GetMaxLUN(uint8_t* const MaxLUNIndex)
USB_ControlRequest = (USB_Request_Header_t)
{
.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
USB_ControlRequest = (USB_Request_Header_t)
{
.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
- .bRequest = REQ_GetMaxLUN,
+ .bRequest =
MS_
REQ_GetMaxLUN,
.wValue = 0,
.wIndex = 0,
.wLength = 1,
.wValue = 0,
.wIndex = 0,
.wLength = 1,
@@
-345,11
+351,11
@@
uint8_t MassStore_Inquiry(const uint8_t LUNIndex,
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
/* Create a CBW with a SCSI command to issue INQUIRY command */
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
/* Create a CBW with a SCSI command to issue INQUIRY command */
-
CommandBlockWrapper_t SCSICommandBlock = (
CommandBlockWrapper_t)
+
MS_CommandBlockWrapper_t SCSICommandBlock = (MS_
CommandBlockWrapper_t)
{
{
- .Signature = CBW_SIGNATURE,
+ .Signature =
MS_
CBW_SIGNATURE,
.DataTransferLength = sizeof(SCSI_Inquiry_Response_t),
.DataTransferLength = sizeof(SCSI_Inquiry_Response_t),
- .Flags =
COMMAND_DIRECTION
_DATA_IN,
+ .Flags =
MS_COMMAND_DIR
_DATA_IN,
.LUN = LUNIndex,
.SCSICommandLength = 6,
.SCSICommandData =
.LUN = LUNIndex,
.SCSICommandLength = 6,
.SCSICommandData =
@@
-363,7
+369,7
@@
uint8_t MassStore_Inquiry(const uint8_t LUNIndex,
}
};
}
};
- CommandStatusWrapper_t SCSICommandStatus;
+
MS_
CommandStatusWrapper_t SCSICommandStatus;
/* Send the command and any data to the attached device */
if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, InquiryPtr)) != PIPE_RWSTREAM_NoError)
/* Send the command and any data to the attached device */
if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, InquiryPtr)) != PIPE_RWSTREAM_NoError)
@@
-396,11
+402,11
@@
uint8_t MassStore_RequestSense(const uint8_t LUNIndex,
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
/* Create a CBW with a SCSI command to issue REQUEST SENSE command */
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
/* Create a CBW with a SCSI command to issue REQUEST SENSE command */
-
CommandBlockWrapper_t SCSICommandBlock = (
CommandBlockWrapper_t)
+
MS_CommandBlockWrapper_t SCSICommandBlock = (MS_
CommandBlockWrapper_t)
{
{
- .Signature = CBW_SIGNATURE,
+ .Signature =
MS_
CBW_SIGNATURE,
.DataTransferLength = sizeof(SCSI_Request_Sense_Response_t),
.DataTransferLength = sizeof(SCSI_Request_Sense_Response_t),
- .Flags =
COMMAND_DIRECTION
_DATA_IN,
+ .Flags =
MS_COMMAND_DIR
_DATA_IN,
.LUN = LUNIndex,
.SCSICommandLength = 6,
.SCSICommandData =
.LUN = LUNIndex,
.SCSICommandLength = 6,
.SCSICommandData =
@@
-414,7
+420,7
@@
uint8_t MassStore_RequestSense(const uint8_t LUNIndex,
}
};
}
};
- CommandStatusWrapper_t SCSICommandStatus;
+
MS_
CommandStatusWrapper_t SCSICommandStatus;
/* Send the command and any data to the attached device */
if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, SensePtr)) != PIPE_RWSTREAM_NoError)
/* Send the command and any data to the attached device */
if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, SensePtr)) != PIPE_RWSTREAM_NoError)
@@
-453,11
+459,11
@@
uint8_t MassStore_ReadDeviceBlock(const uint8_t LUNIndex,
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
/* Create a CBW with a SCSI command to read in the given blocks from the device */
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
/* Create a CBW with a SCSI command to read in the given blocks from the device */
-
CommandBlockWrapper_t SCSICommandBlock = (
CommandBlockWrapper_t)
+
MS_CommandBlockWrapper_t SCSICommandBlock = (MS_
CommandBlockWrapper_t)
{
{
- .Signature = CBW_SIGNATURE,
+ .Signature =
MS_
CBW_SIGNATURE,
.DataTransferLength = ((uint32_t)Blocks * BlockSize),
.DataTransferLength = ((uint32_t)Blocks * BlockSize),
- .Flags =
COMMAND_DIRECTION
_DATA_IN,
+ .Flags =
MS_COMMAND_DIR
_DATA_IN,
.LUN = LUNIndex,
.SCSICommandLength = 10,
.SCSICommandData =
.LUN = LUNIndex,
.SCSICommandLength = 10,
.SCSICommandData =
@@
-475,7
+481,7
@@
uint8_t MassStore_ReadDeviceBlock(const uint8_t LUNIndex,
}
};
}
};
- CommandStatusWrapper_t SCSICommandStatus;
+
MS_
CommandStatusWrapper_t SCSICommandStatus;
/* Send the command and any data to the attached device */
if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, BufferPtr)) != PIPE_RWSTREAM_NoError)
/* Send the command and any data to the attached device */
if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, BufferPtr)) != PIPE_RWSTREAM_NoError)
@@
-514,11
+520,11
@@
uint8_t MassStore_WriteDeviceBlock(const uint8_t LUNIndex,
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
/* Create a CBW with a SCSI command to write the given blocks to the device */
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
/* Create a CBW with a SCSI command to write the given blocks to the device */
-
CommandBlockWrapper_t SCSICommandBlock = (
CommandBlockWrapper_t)
+
MS_CommandBlockWrapper_t SCSICommandBlock = (MS_
CommandBlockWrapper_t)
{
{
- .Signature = CBW_SIGNATURE,
+ .Signature =
MS_
CBW_SIGNATURE,
.DataTransferLength = ((uint32_t)Blocks * BlockSize),
.DataTransferLength = ((uint32_t)Blocks * BlockSize),
- .Flags =
COMMAND_DIRECTION
_DATA_OUT,
+ .Flags =
MS_COMMAND_DIR
_DATA_OUT,
.LUN = LUNIndex,
.SCSICommandLength = 10,
.SCSICommandData =
.LUN = LUNIndex,
.SCSICommandLength = 10,
.SCSICommandData =
@@
-536,7
+542,7
@@
uint8_t MassStore_WriteDeviceBlock(const uint8_t LUNIndex,
}
};
}
};
- CommandStatusWrapper_t SCSICommandStatus;
+
MS_
CommandStatusWrapper_t SCSICommandStatus;
/* Send the command and any data to the attached device */
if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, BufferPtr)) != PIPE_RWSTREAM_NoError)
/* Send the command and any data to the attached device */
if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, BufferPtr)) != PIPE_RWSTREAM_NoError)
@@
-567,11
+573,11
@@
uint8_t MassStore_TestUnitReady(const uint8_t LUNIndex)
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
/* Create a CBW with a SCSI command to issue TEST UNIT READY command */
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
/* Create a CBW with a SCSI command to issue TEST UNIT READY command */
-
CommandBlockWrapper_t SCSICommandBlock = (
CommandBlockWrapper_t)
+
MS_CommandBlockWrapper_t SCSICommandBlock = (MS_
CommandBlockWrapper_t)
{
{
- .Signature = CBW_SIGNATURE,
+ .Signature =
MS_
CBW_SIGNATURE,
.DataTransferLength = 0,
.DataTransferLength = 0,
- .Flags =
COMMAND_DIRECTION
_DATA_IN,
+ .Flags =
MS_COMMAND_DIR
_DATA_IN,
.LUN = LUNIndex,
.SCSICommandLength = 6,
.SCSICommandData =
.LUN = LUNIndex,
.SCSICommandLength = 6,
.SCSICommandData =
@@
-585,7
+591,7
@@
uint8_t MassStore_TestUnitReady(const uint8_t LUNIndex)
}
};
}
};
- CommandStatusWrapper_t SCSICommandStatus;
+
MS_
CommandStatusWrapper_t SCSICommandStatus;
/* Send the command and any data to the attached device */
if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, NULL)) != PIPE_RWSTREAM_NoError)
/* Send the command and any data to the attached device */
if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, NULL)) != PIPE_RWSTREAM_NoError)
@@
-618,11
+624,11
@@
uint8_t MassStore_ReadCapacity(const uint8_t LUNIndex,
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
/* Create a CBW with a SCSI command to issue READ CAPACITY command */
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
/* Create a CBW with a SCSI command to issue READ CAPACITY command */
-
CommandBlockWrapper_t SCSICommandBlock = (
CommandBlockWrapper_t)
+
MS_CommandBlockWrapper_t SCSICommandBlock = (MS_
CommandBlockWrapper_t)
{
{
- .Signature = CBW_SIGNATURE,
+ .Signature =
MS_
CBW_SIGNATURE,
.DataTransferLength = sizeof(SCSI_Capacity_t),
.DataTransferLength = sizeof(SCSI_Capacity_t),
- .Flags =
COMMAND_DIRECTION
_DATA_IN,
+ .Flags =
MS_COMMAND_DIR
_DATA_IN,
.LUN = LUNIndex,
.SCSICommandLength = 10,
.SCSICommandData =
.LUN = LUNIndex,
.SCSICommandLength = 10,
.SCSICommandData =
@@
-640,7
+646,7
@@
uint8_t MassStore_ReadCapacity(const uint8_t LUNIndex,
}
};
}
};
- CommandStatusWrapper_t SCSICommandStatus;
+
MS_
CommandStatusWrapper_t SCSICommandStatus;
/* Send the command and any data to the attached device */
if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, CapacityPtr)) != PIPE_RWSTREAM_NoError)
/* Send the command and any data to the attached device */
if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, CapacityPtr)) != PIPE_RWSTREAM_NoError)
@@
-678,11
+684,11
@@
uint8_t MassStore_PreventAllowMediumRemoval(const uint8_t LUNIndex,
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
/* Create a CBW with a SCSI command to issue PREVENT ALLOW MEDIUM REMOVAL command */
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
/* Create a CBW with a SCSI command to issue PREVENT ALLOW MEDIUM REMOVAL command */
-
CommandBlockWrapper_t SCSICommandBlock = (
CommandBlockWrapper_t)
+
MS_CommandBlockWrapper_t SCSICommandBlock = (MS_
CommandBlockWrapper_t)
{
{
- .Signature = CBW_SIGNATURE,
+ .Signature =
MS_
CBW_SIGNATURE,
.DataTransferLength = 0,
.DataTransferLength = 0,
- .Flags =
COMMAND_DIRECTION
_DATA_OUT,
+ .Flags =
MS_COMMAND_DIR
_DATA_OUT,
.LUN = LUNIndex,
.SCSICommandLength = 6,
.SCSICommandData =
.LUN = LUNIndex,
.SCSICommandLength = 6,
.SCSICommandData =
@@
-696,7
+702,7
@@
uint8_t MassStore_PreventAllowMediumRemoval(const uint8_t LUNIndex,
}
};
}
};
- CommandStatusWrapper_t SCSICommandStatus;
+
MS_
CommandStatusWrapper_t SCSICommandStatus;
/* Send the command and any data to the attached device */
if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, NULL)) != PIPE_RWSTREAM_NoError)
/* Send the command and any data to the attached device */
if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, NULL)) != PIPE_RWSTREAM_NoError)