X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/654baf7d609963cf25da328f2b3fc8ced0eaf68a..f42a4f3a47f23208d70dca308d302d9ba5a80c46:/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.c diff --git a/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.c b/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.c index eaba6185a..746a00725 100644 --- a/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.c +++ b/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2013. + Copyright (C) Dean Camera, 2015. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2013 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2015 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -45,7 +45,7 @@ USB_ClassInfo_CDC_Device_t VirtualSerial1_CDC_Interface = { .Config = { - .ControlInterfaceNumber = 0, + .ControlInterfaceNumber = INTERFACE_ID_CDC1_CCI, .DataINEndpoint = { .Address = CDC1_TX_EPADDR, @@ -76,7 +76,7 @@ USB_ClassInfo_CDC_Device_t VirtualSerial2_CDC_Interface = { .Config = { - .ControlInterfaceNumber = 2, + .ControlInterfaceNumber = INTERFACE_ID_CDC2_CCI, .DataINEndpoint = { .Address = CDC2_TX_EPADDR, @@ -216,3 +216,27 @@ void EVENT_USB_Device_ControlRequest(void) CDC_Device_ProcessControlRequest(&VirtualSerial2_CDC_Interface); } +/** CDC class driver callback function the processing of changes to the virtual + * control lines sent from the host.. + * + * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced + */ +void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t *const CDCInterfaceInfo) +{ + /* You can get changes to the virtual CDC lines in this callback; a common + use-case is to use the Data Terminal Ready (DTR) flag to enable and + disable CDC communications in your application when set to avoid the + application blocking while waiting for a host to become ready and read + in the pending data from the USB endpoints. + */ + bool HostReady = (CDCInterfaceInfo->State.ControlLineStates.HostToDevice & CDC_CONTROL_LINE_OUT_DTR) != 0; + + if (CDCInterfaceInfo == &VirtualSerial1_CDC_Interface) + { + // CDC interface 1's host is ready to send/receive data + } + else + { + // CDC interface 2's host is ready to send/receive data + } +}