{\r
USB_KeyboardReport_Data_t KeyboardReport;\r
\r
- /* Select the keyboard report data in pipe */\r
+ /* Select keyboard data pipe */\r
Pipe_SelectPipe(KEYBOARD_DATAPIPE); \r
\r
+ #if !defined(INTERRUPT_DATA_PIPE)\r
+ /* Unfreeze keyboard data pipe */\r
+ Pipe_Unfreeze();\r
+ #endif\r
+\r
/* Ensure pipe contains data and is ready to be read before continuing */\r
if (!(Pipe_ReadWriteAllowed()))\r
- return;\r
+ {\r
+ #if !defined(INTERRUPT_DATA_PIPE)\r
+ /* Refreeze keyboard data pipe */\r
+ Pipe_Freeze();\r
+ #endif\r
\r
+ return;\r
+ }\r
+ \r
/* Read in keyboard report data */\r
Pipe_Read_Stream_LE(&KeyboardReport, sizeof(KeyboardReport));\r
\r
if (PressedKey)\r
putchar(PressedKey);\r
}\r
+ \r
+ #if !defined(INTERRUPT_DATA_PIPE)\r
+ /* Refreeze keyboard data pipe */\r
+ Pipe_Freeze();\r
+ #endif\r
}\r
\r
/** Task to set the configuration of the attached device after it has been enumerated, and to read and process\r
break;\r
}\r
\r
+ #if defined(INTERRUPT_DATA_PIPE) \r
+ /* Select and unfreeze keyboard data pipe */\r
+ Pipe_SelectPipe(KEYBOARD_DATAPIPE); \r
+ Pipe_Unfreeze();\r
+ #endif\r
+\r
puts_P(PSTR("Keyboard Enumerated.\r\n"));\r
- \r
+\r
USB_HostState = HOST_STATE_Ready;\r
break;\r
#if !defined(INTERRUPT_DATA_PIPE)\r
case HOST_STATE_Ready:\r
- /* Select and unfreeze keyboard data pipe */\r
- Pipe_SelectPipe(KEYBOARD_DATAPIPE); \r
- Pipe_Unfreeze();\r
-\r
/* If a report has been received, read and process it */\r
- if (Pipe_ReadWriteAllowed())\r
- ReadNextReport();\r
+ ReadNextReport();\r
\r
- /* Freeze keyboard data pipe */\r
- Pipe_Freeze();\r
break;\r
#endif\r
}\r