diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2010-09-05 07:11:53 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2010-09-05 07:11:53 +0000 |
commit | 18cbd31605dae070f00900161090a72d3eb0f8ab (patch) | |
tree | 1166a9c1b27630111d337b76a0eee1292b0d633b /LUFA/Drivers/USB/LowLevel/Pipe.c | |
parent | 0174d8ea70f3d7180e6ea3da2b3720273adb33d9 (diff) | |
download | lufa-18cbd31605dae070f00900161090a72d3eb0f8ab.tar.gz lufa-18cbd31605dae070f00900161090a72d3eb0f8ab.tar.bz2 lufa-18cbd31605dae070f00900161090a72d3eb0f8ab.zip |
Added new USB_Device_GetFrameNumber() and USB_Host_GetFrameNumber() functions to retrieve the current USB frame number.
Added new USB_Host_EnableSOFEvents(), USB_Host_DisableSOFEvents() and EVENT_USB_Host_StartOfFrame() for the user application handling of USB Start of Frame events while in USB Host mode.
Changed over all demos, drivers and internal functions to use the current frame number over the Start of Frame flag where possible to free up the Start of Frame flag for interrupt use in the user application.
Diffstat (limited to 'LUFA/Drivers/USB/LowLevel/Pipe.c')
-rw-r--r-- | LUFA/Drivers/USB/LowLevel/Pipe.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/LUFA/Drivers/USB/LowLevel/Pipe.c b/LUFA/Drivers/USB/LowLevel/Pipe.c index a8eb50f63..5f1090245 100644 --- a/LUFA/Drivers/USB/LowLevel/Pipe.c +++ b/LUFA/Drivers/USB/LowLevel/Pipe.c @@ -133,6 +133,8 @@ uint8_t Pipe_WaitUntilReady(void) #else uint16_t TimeoutMSRem = USB_STREAM_TIMEOUT_MS; #endif + + uint16_t PreviousFrameNumber = USB_Host_GetFrameNumber(); for (;;) { @@ -151,10 +153,12 @@ uint8_t Pipe_WaitUntilReady(void) return PIPE_READYWAIT_PipeStalled; else if (USB_HostState == HOST_STATE_Unattached) return PIPE_READYWAIT_DeviceDisconnected; - - if (USB_INT_HasOccurred(USB_INT_HSOFI)) + + uint16_t CurrentFrameNumber = USB_Host_GetFrameNumber(); + + if (CurrentFrameNumber != PreviousFrameNumber) { - USB_INT_Clear(USB_INT_HSOFI); + PreviousFrameNumber = CurrentFrameNumber; if (!(TimeoutMSRem--)) return PIPE_READYWAIT_Timeout; |