Add CDC control line state change handlers to the class driver demos, to demonstrate...
authorDean Camera <dean@fourwalledcubicle.com>
Sun, 15 Mar 2015 09:12:59 +0000 (20:12 +1100)
committerDean Camera <dean@fourwalledcubicle.com>
Sun, 15 Mar 2015 09:12:59 +0000 (20:12 +1100)
Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.c
Demos/Device/ClassDriver/VirtualSerial/VirtualSerial.c
Demos/Device/ClassDriver/VirtualSerialMassStorage/VirtualSerialMassStorage.c
Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.c

index e486538..0ac74a7 100644 (file)
@@ -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
+       }
+}
index 2d98df7..d9429ba 100644 (file)
@@ -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;
+}
index 1d20283..bdffb27 100644 (file)
@@ -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
index 02eb487..dfe233d 100644 (file)
@@ -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;
+}