diff options
| author | Dean <Dean@d5102386-fcda-11dd-9fdb-3debd5008f28> | 2009-07-21 02:48:41 +0000 |
|---|---|---|
| committer | Dean <Dean@d5102386-fcda-11dd-9fdb-3debd5008f28> | 2009-07-21 02:48:41 +0000 |
| commit | 33f3ec44a4792d055ca4722a38b1e76d87cae5f0 (patch) | |
| tree | eafc8a4dcb64a038afcb16fcae8d48033dc74249 /Demos/Device/LowLevel/GenericHID/GenericHID.c | |
| parent | 718686d01b9773c5567ebd1949d8d67fbd71890f (diff) | |
Add explicit guards to all device mode tasks to ensure the device is connected and configured before running the task, to prevent any user tasks from locking up the main USB task if the device has not been properly configured.
git-svn-id: http://lufa-lib.googlecode.com/svn/trunk@673 d5102386-fcda-11dd-9fdb-3debd5008f28
Diffstat (limited to 'Demos/Device/LowLevel/GenericHID/GenericHID.c')
| -rw-r--r-- | Demos/Device/LowLevel/GenericHID/GenericHID.c | 70 |
1 files changed, 35 insertions, 35 deletions
diff --git a/Demos/Device/LowLevel/GenericHID/GenericHID.c b/Demos/Device/LowLevel/GenericHID/GenericHID.c index f4674947..5c6d1ee4 100644 --- a/Demos/Device/LowLevel/GenericHID/GenericHID.c +++ b/Demos/Device/LowLevel/GenericHID/GenericHID.c @@ -202,47 +202,47 @@ void CreateGenericHIDReport(uint8_t* DataArray) void HID_Task(void)
{
- /* Check if the USB system is connected to a host */
- if (USB_IsConnected)
+ /* Device must be connected and configured for the task to run */
+ if (!(USB_IsConnected) || !(USB_ConfigurationNumber))
+ return;
+
+ Endpoint_SelectEndpoint(GENERIC_OUT_EPNUM);
+
+ /* Check to see if a packet has been sent from the host */
+ if (Endpoint_IsOUTReceived())
{
- Endpoint_SelectEndpoint(GENERIC_OUT_EPNUM);
-
- /* Check to see if a packet has been sent from the host */
- if (Endpoint_IsOUTReceived())
+ /* Check to see if the packet contains data */
+ if (Endpoint_IsReadWriteAllowed())
{
- /* Check to see if the packet contains data */
- if (Endpoint_IsReadWriteAllowed())
- {
- /* Create a temporary buffer to hold the read in report from the host */
- uint8_t GenericData[GENERIC_REPORT_SIZE];
-
- /* Read Generic Report Data */
- Endpoint_Read_Stream_LE(&GenericData, sizeof(GenericData));
-
- /* Process Generic Report Data */
- ProcessGenericHIDReport(GenericData);
- }
+ /* Create a temporary buffer to hold the read in report from the host */
+ uint8_t GenericData[GENERIC_REPORT_SIZE];
+
+ /* Read Generic Report Data */
+ Endpoint_Read_Stream_LE(&GenericData, sizeof(GenericData));
+
+ /* Process Generic Report Data */
+ ProcessGenericHIDReport(GenericData);
+ }
- /* Finalize the stream transfer to send the last packet */
- Endpoint_ClearOUT();
- }
+ /* Finalize the stream transfer to send the last packet */
+ Endpoint_ClearOUT();
+ }
- Endpoint_SelectEndpoint(GENERIC_IN_EPNUM);
+ Endpoint_SelectEndpoint(GENERIC_IN_EPNUM);
+
+ /* Check to see if the host is ready to accept another packet */
+ if (Endpoint_IsINReady())
+ {
+ /* Create a temporary buffer to hold the report to send to the host */
+ uint8_t GenericData[GENERIC_REPORT_SIZE];
- /* Check to see if the host is ready to accept another packet */
- if (Endpoint_IsINReady())
- {
- /* Create a temporary buffer to hold the report to send to the host */
- uint8_t GenericData[GENERIC_REPORT_SIZE];
-
- /* Create Generic Report Data */
- CreateGenericHIDReport(GenericData);
+ /* Create Generic Report Data */
+ CreateGenericHIDReport(GenericData);
- /* Write Generic Report Data */
- Endpoint_Write_Stream_LE(&GenericData, sizeof(GenericData));
+ /* Write Generic Report Data */
+ Endpoint_Write_Stream_LE(&GenericData, sizeof(GenericData));
- /* Finalize the stream transfer to send the last packet */
- Endpoint_ClearIN();
- }
+ /* Finalize the stream transfer to send the last packet */
+ Endpoint_ClearIN();
}
}
|
