aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/USB/Class/Device/CDC.c
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 /LUFA/Drivers/USB/Class/Device/CDC.c
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 'LUFA/Drivers/USB/Class/Device/CDC.c')
-rw-r--r--LUFA/Drivers/USB/Class/Device/CDC.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/LUFA/Drivers/USB/Class/Device/CDC.c b/LUFA/Drivers/USB/Class/Device/CDC.c
index dfee2bb1b..d0cb29ecf 100644
--- a/LUFA/Drivers/USB/Class/Device/CDC.c
+++ b/LUFA/Drivers/USB/Class/Device/CDC.c
@@ -234,4 +234,24 @@ void CDC_Device_SendControlLineStateChange(USB_ClassInfo_CDC_Device_t* const CDC
Endpoint_ClearIN();
}
+void CDC_Device_CreateStream(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo, FILE* Stream)
+{
+ *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar, _FDEV_SETUP_RW);
+ fdev_set_udata(Stream, CDCInterfaceInfo);
+}
+
+static int CDC_Device_putchar(char c, FILE* Stream)
+{
+ CDC_Device_SendByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream), c);
+ return 0;
+}
+
+static int CDC_Device_getchar(FILE* Stream)
+{
+ if (!(CDC_Device_BytesReceived((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream))))
+ return -1;
+
+ return CDC_Device_ReceiveByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream));
+}
+
#endif