diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2009-10-11 06:14:08 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2009-10-11 06:14:08 +0000 |
commit | be9d0a5aa97c84cc8723f69f2b88576965e386aa (patch) | |
tree | a8ffa2c456db709cc5c981524f8f882b430882c2 /Demos/Host/LowLevel/CDCHost | |
parent | c7bc3ec391da3904f0db6398171c7fed37d4f836 (diff) | |
download | lufa-be9d0a5aa97c84cc8723f69f2b88576965e386aa.tar.gz lufa-be9d0a5aa97c84cc8723f69f2b88576965e386aa.tar.bz2 lufa-be9d0a5aa97c84cc8723f69f2b88576965e386aa.zip |
Added stdio.h stream examples for the virtual CDC UART in the CDC host demos.
Removed accidental reference to the incomplete MIDI class bootloader in the Bootloader folder makefile.
Diffstat (limited to 'Demos/Host/LowLevel/CDCHost')
-rw-r--r-- | Demos/Host/LowLevel/CDCHost/CDCHost.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Demos/Host/LowLevel/CDCHost/CDCHost.c b/Demos/Host/LowLevel/CDCHost/CDCHost.c index 7a1788b17..0b09c5a93 100644 --- a/Demos/Host/LowLevel/CDCHost/CDCHost.c +++ b/Demos/Host/LowLevel/CDCHost/CDCHost.c @@ -36,6 +36,52 @@ #include "CDCHost.h"
+#if 0
+/* NOTE: Here you can set up a standard stream using the created virtual serial port, so that the standard stream functions in
+ * <stdio.h> 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)
+{
+ Pipe_SelectPipe(CDC_DATAPIPE_OUT);
+
+ if (Pipe_WaitUntilReady())
+ return -1;
+
+ Pipe_Write_Byte(c);
+ Pipe_ClearIN();
+
+ return 0;
+}
+
+static int CDC_getchar(FILE *stream)
+{
+ int c;
+
+ Pipe_SelectPipe(CDC_DATAPIPE_IN);
+
+ for (;;)
+ {
+ if (Pipe_WaitUntilReady())
+ return -1;
+
+ if (!(Pipe_BytesInPipe()))
+ {
+ Pipe_ClearOUT();
+ }
+ else
+ {
+ c = Pipe_Read_Byte();
+ break;
+ }
+ }
+
+ return c;
+}
+
+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.
*/
|