\r
#include "CDCHost.h"\r
\r
+#if 0\r
+/* NOTE: Here you can set up a standard stream using the created virtual serial port, so that the standard stream functions in\r
+ * <stdio.h> can be used on the virtual serial port (e.g. fprintf(&USBSerial, "Test"); to print a string).\r
+ */\r
+ \r
+static int CDC_putchar(char c, FILE *stream)\r
+{ \r
+ Pipe_SelectPipe(CDC_DATAPIPE_OUT);\r
+ \r
+ if (Pipe_WaitUntilReady())\r
+ return -1;\r
+\r
+ Pipe_Write_Byte(c);\r
+ Pipe_ClearIN();\r
+ \r
+ return 0;\r
+}\r
+\r
+static int CDC_getchar(FILE *stream)\r
+{\r
+ int c;\r
+\r
+ Pipe_SelectPipe(CDC_DATAPIPE_IN);\r
+ \r
+ for (;;)\r
+ {\r
+ if (Pipe_WaitUntilReady())\r
+ return -1;\r
+ \r
+ if (!(Pipe_BytesInPipe()))\r
+ {\r
+ Pipe_ClearOUT();\r
+ }\r
+ else\r
+ {\r
+ c = Pipe_Read_Byte();\r
+ break;\r
+ }\r
+ }\r
+ \r
+ return c;\r
+}\r
+\r
+static FILE USBSerial = FDEV_SETUP_STREAM(CDC_putchar, CDC_getchar, _FDEV_SETUP_RW);\r
+#endif\r
+\r
/** Main program entry point. This routine configures the hardware required by the application, then\r
- * starts the scheduler to run the application tasks.\r
+ * enters a loop to run the application tasks in sequence.\r
*/\r
int main(void)\r
{\r
USB_HostState = HOST_STATE_Configured;\r
break;\r
case HOST_STATE_Configured:\r
- /* Select and the data IN pipe */\r
+ /* Select the data IN pipe */\r
Pipe_SelectPipe(CDC_DATAPIPE_IN);\r
+ Pipe_SetPipeToken(PIPE_TOKEN_IN);\r
Pipe_Unfreeze();\r
\r
/* Check to see if a packet has been received */\r