From c1782ac024a42c06680f511c939e653aacdb411d Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 10 Nov 2009 06:22:03 +0000 Subject: Added new stream creation function to the CDC Class drivers, to easily make standard streams from CDC Class driver instances. --- Demos/Device/ClassDriver/CDC/CDC.c | 34 +++++++++++--------------------- Demos/Device/ClassDriver/CDC/CDC.h | 1 + Demos/Host/ClassDriver/CDCHost/CDCHost.c | 22 --------------------- 3 files changed, 13 insertions(+), 44 deletions(-) (limited to 'Demos') diff --git a/Demos/Device/ClassDriver/CDC/CDC.c b/Demos/Device/ClassDriver/CDC/CDC.c index 90cbaf0bc..5d74cb1a5 100644 --- a/Demos/Device/ClassDriver/CDC/CDC.c +++ b/Demos/Device/ClassDriver/CDC/CDC.c @@ -60,27 +60,10 @@ USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface = }, }; -#if 0 -/* NOTE: Here you can set up a standard stream using the created virtual serial port, so that the standard stream functions in - * can be used on the virtual serial port (e.g. fprintf(&USBSerial, "Test"); to print a string). +/** Standard file stream for the CDC interface when set up, so that the virtual CDC COM port can be + * used like any regular character stream in the C APIs */ - -static int CDC_putchar(char c, FILE *stream) -{ - CDC_Device_SendByte(&VirtualSerial_CDC_Interface, c); - return 0; -} - -static int CDC_getchar(FILE *stream) -{ - if (!(CDC_Device_BytesReceived(&VirtualSerial_CDC_Interface))) - return -1; - - return CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface); -} - -static FILE USBSerial = FDEV_SETUP_STREAM(CDC_putchar, CDC_getchar, _FDEV_SETUP_RW); -#endif +static FILE USBSerialStream; /** Main program entry point. This routine contains the overall program flow, including initial * setup of all components and the main program loop. @@ -89,6 +72,9 @@ int main(void) { SetupHardware(); + /* Create a regular character stream for the interface so that it can be used with the stdio.h functions */ + CDC_Device_CreateStream(&VirtualSerial_CDC_Interface, &USBSerialStream); + LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); for (;;) @@ -143,8 +129,12 @@ void CheckJoystickMovement(void) if ((ReportString != NULL) && (ActionSent == false)) { ActionSent = true; - - CDC_Device_SendString(&VirtualSerial_CDC_Interface, ReportString, strlen(ReportString)); + + // Write the string to the virtual COM port via the created character stream + fputs(ReportString, &USBSerialStream); + + // Alternatively, without the stream: + // CDC_Device_SendString(&VirtualSerial_CDC_Interface, ReportString, strlen(ReportString)); } } diff --git a/Demos/Device/ClassDriver/CDC/CDC.h b/Demos/Device/ClassDriver/CDC/CDC.h index ee375a466..9cc72487c 100644 --- a/Demos/Device/ClassDriver/CDC/CDC.h +++ b/Demos/Device/ClassDriver/CDC/CDC.h @@ -41,6 +41,7 @@ #include #include #include + #include #include "Descriptors.h" diff --git a/Demos/Host/ClassDriver/CDCHost/CDCHost.c b/Demos/Host/ClassDriver/CDCHost/CDCHost.c index ded3e4c10..e28f2f9e5 100644 --- a/Demos/Host/ClassDriver/CDCHost/CDCHost.c +++ b/Demos/Host/ClassDriver/CDCHost/CDCHost.c @@ -54,28 +54,6 @@ USB_ClassInfo_CDC_Host_t VirtualSerial_CDC_Interface = .NotificationPipeDoubleBank = false, }, }; - -#if 0 -/* NOTE: Here you can set up a standard stream using the created virtual serial port, so that the standard stream functions in - * can be used on the virtual serial port (e.g. fprintf(&USBSerial, "Test"); to print a string). - */ - -static int CDC_putchar(char c, FILE *stream) -{ - CDC_Host_SendByte(&VirtualSerial_CDC_Interface, c); - return 0; -} - -static int CDC_getchar(FILE *stream) -{ - if (!(CDC_Host_BytesReceived(&VirtualSerial_CDC_Interface))) - return -1; - - return CDC_Host_ReceiveByte(&VirtualSerial_CDC_Interface); -} - -static FILE USBSerial = FDEV_SETUP_STREAM(CDC_putchar, CDC_getchar, _FDEV_SETUP_RW); -#endif /** Main program entry point. This routine configures the hardware required by the application, then * enters a loop to run the application tasks in sequence. -- cgit v1.2.3