diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2015-03-15 20:12:59 +1100 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2015-03-15 20:12:59 +1100 |
commit | faf41c444544a5d1af4f5fc9d0561831c3f825c8 (patch) | |
tree | 60a0da43b63886d17d030aa45a48b1e7b5eb6810 /Demos | |
parent | be2df78637004801ea05902afe2b0e55da43ff47 (diff) | |
download | lufa-faf41c444544a5d1af4f5fc9d0561831c3f825c8.tar.gz lufa-faf41c444544a5d1af4f5fc9d0561831c3f825c8.tar.bz2 lufa-faf41c444544a5d1af4f5fc9d0561831c3f825c8.zip |
Add CDC control line state change handlers to the class driver demos, to demonstrate how to read DTR change events.
Diffstat (limited to 'Demos')
4 files changed, 70 insertions, 0 deletions
diff --git a/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.c b/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.c index e48653897..0ac74a712 100644 --- a/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.c +++ b/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.c @@ -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 + } +} diff --git a/Demos/Device/ClassDriver/VirtualSerial/VirtualSerial.c b/Demos/Device/ClassDriver/VirtualSerial/VirtualSerial.c index 2d98df760..d9429ba32 100644 --- a/Demos/Device/ClassDriver/VirtualSerial/VirtualSerial.c +++ b/Demos/Device/ClassDriver/VirtualSerial/VirtualSerial.c @@ -185,3 +185,18 @@ void EVENT_USB_Device_ControlRequest(void) CDC_Device_ProcessControlRequest(&VirtualSerial_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; +} diff --git a/Demos/Device/ClassDriver/VirtualSerialMassStorage/VirtualSerialMassStorage.c b/Demos/Device/ClassDriver/VirtualSerialMassStorage/VirtualSerialMassStorage.c index 1d2028316..bdffb279e 100644 --- a/Demos/Device/ClassDriver/VirtualSerialMassStorage/VirtualSerialMassStorage.c +++ b/Demos/Device/ClassDriver/VirtualSerialMassStorage/VirtualSerialMassStorage.c @@ -224,6 +224,22 @@ void EVENT_USB_Device_ControlRequest(void) MS_Device_ProcessControlRequest(&Disk_MS_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; +} + /** Mass Storage class driver callback function the reception of SCSI commands from the host, which must be processed. * * \param[in] MSInterfaceInfo Pointer to the Mass Storage class interface configuration structure being referenced diff --git a/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.c b/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.c index 02eb4875d..dfe233dd5 100644 --- a/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.c +++ b/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.c @@ -265,3 +265,18 @@ void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDI // Unused (but mandatory for the HID class driver) in this demo, since there are no Host->Device reports } +/** 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; +} |