projects
/
pub
/
lufa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added new USB_Device_GetFrameNumber() and USB_Host_GetFrameNumber() functions to...
[pub/lufa.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
b94bbca
..
c86e51b
100644
(file)
--- a/
Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.c
+++ b/
Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.c
@@
-110,20
+110,23
@@
static uint8_t MassStore_SendCommand(CommandBlockWrapper_t* const SCSICommandBlo
*/
static uint8_t MassStore_WaitForDataReceived(void)
{
*/
static uint8_t MassStore_WaitForDataReceived(void)
{
- uint16_t TimeoutMSRem = COMMAND_DATA_TIMEOUT_MS;
+ uint16_t TimeoutMSRem = COMMAND_DATA_TIMEOUT_MS;
+ uint16_t PreviousFrameNumber = USB_Host_GetFrameNumber();
/* Select the IN data pipe for data reception */
Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);
Pipe_Unfreeze();
/* Select the IN data pipe for data reception */
Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);
Pipe_Unfreeze();
-
+
/* Wait until data received in the IN pipe */
while (!(Pipe_IsINReceived()))
{
/* Wait until data received in the IN pipe */
while (!(Pipe_IsINReceived()))
{
+ uint16_t CurrentFrameNumber = USB_Host_GetFrameNumber();
+
/* Check to see if a new frame has been issued (1ms elapsed) */
/* Check to see if a new frame has been issued (1ms elapsed) */
- if (
USB_INT_HasOccurred(USB_INT_HSOFI)
)
+ if (
CurrentFrameNumber != PreviousFrameNumber
)
{
{
- /*
Clear the flag and decrement the timeout period counter
*/
-
USB_INT_Clear(USB_INT_HSOFI)
;
+ /*
Save the new frame number and decrement the timeout period
*/
+
PreviousFrameNumber = CurrentFrameNumber
;
TimeoutMSRem--;
/* Check to see if the timeout period for the command has elapsed */
TimeoutMSRem--;
/* Check to see if the timeout period for the command has elapsed */
@@
-465,7
+468,7
@@
uint8_t MassStore_ReadDeviceBlock(const uint8_t LUNIndex,
(BlockAddress >> 16),
(BlockAddress >> 8),
(BlockAddress & 0xFF), // LSB of Block Address
(BlockAddress >> 16),
(BlockAddress >> 8),
(BlockAddress & 0xFF), // LSB of Block Address
- 0x00, //
Unused (reserved)
+ 0x00, //
Reserved
0x00, // MSB of Total Blocks to Read
Blocks, // LSB of Total Blocks to Read
0x00 // Unused (control)
0x00, // MSB of Total Blocks to Read
Blocks, // LSB of Total Blocks to Read
0x00 // Unused (control)