aboutsummaryrefslogtreecommitdiffstats
path: root/Demos/Device
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2009-11-10 06:22:03 +0000
committerDean Camera <dean@fourwalledcubicle.com>2009-11-10 06:22:03 +0000
commitc1782ac024a42c06680f511c939e653aacdb411d (patch)
tree339e55e1aea49b719bfe8f31f4a9892791375a0d /Demos/Device
parentd6edfe35c8a9490407e4a5e34f8e5108c6a260a3 (diff)
downloadlufa-c1782ac024a42c06680f511c939e653aacdb411d.tar.gz
lufa-c1782ac024a42c06680f511c939e653aacdb411d.tar.bz2
lufa-c1782ac024a42c06680f511c939e653aacdb411d.zip
Added new stream creation function to the CDC Class drivers, to easily make standard streams from CDC Class driver instances.
Diffstat (limited to 'Demos/Device')
-rw-r--r--Demos/Device/ClassDriver/CDC/CDC.c34
-rw-r--r--Demos/Device/ClassDriver/CDC/CDC.h1
2 files changed, 13 insertions, 22 deletions
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
- * <stdio.h> 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 <avr/wdt.h>
#include <avr/power.h>
#include <string.h>
+ #include <stdio.h>
#include "Descriptors.h"