<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/12509">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">removed unused USB CDC stack<br><br>Change-Id: Ib1735ad4add9278be9a1fb730752377de99c4f4b<br>---<br>D documentation/usb_cdc_echo.rst<br>D documentation/usb_device_cdc.rst<br>D usb/class/cdc/device/atmel_devices_cdc.cat<br>D usb/class/cdc/device/atmel_devices_cdc.inf<br>D usb/class/cdc/device/cdcdf_acm.c<br>D usb/class/cdc/device/cdcdf_acm.h<br>D usb/class/cdc/device/cdcdf_acm_desc.h<br>D usb/class/cdc/usb_protocol_cdc.h<br>8 files changed, 0 insertions(+), 1,317 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/documentation/usb_cdc_echo.rst b/documentation/usb_cdc_echo.rst</span><br><span>deleted file mode 100644</span><br><span>index 5e4100d..0000000</span><br><span>--- a/documentation/usb_cdc_echo.rst</span><br><span>+++ /dev/null</span><br><span>@@ -1,45 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-============</span><br><span style="color: hsl(0, 100%, 40%);">-USB CDC ECHO</span><br><span style="color: hsl(0, 100%, 40%);">-============</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-This demo behaves like a virtual COM port based on USD device CDC. It echoes</span><br><span style="color: hsl(0, 100%, 40%);">-back bytes received from the console.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Drivers</span><br><span>--------</span><br><span style="color: hsl(0, 100%, 40%);">-* USB Device</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Supported Evaluation Kit</span><br><span>-------------------------</span><br><span style="color: hsl(0, 100%, 40%);">-* SAM D21 Xplained Pro</span><br><span style="color: hsl(0, 100%, 40%);">-* SAM DA1 Xplained Pro</span><br><span style="color: hsl(0, 100%, 40%);">-* SAM R21 Xplained Pro</span><br><span style="color: hsl(0, 100%, 40%);">-* SAM D11 Xplained Pro</span><br><span style="color: hsl(0, 100%, 40%);">-* SAM L21 Xplained Pro</span><br><span style="color: hsl(0, 100%, 40%);">-* SAM L22 Xplained Pro</span><br><span style="color: hsl(0, 100%, 40%);">-* SAM V71 Xplained Ultra</span><br><span style="color: hsl(0, 100%, 40%);">-* SAM E70 Xplained</span><br><span style="color: hsl(0, 100%, 40%);">-* SAM G55 Xplained Pro</span><br><span style="color: hsl(0, 100%, 40%);">-* SAM E54 Xplained Pro</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Interface Settings</span><br><span>-------------------</span><br><span style="color: hsl(0, 100%, 40%);">-* No extra board or wire connection is needed.</span><br><span style="color: hsl(0, 100%, 40%);">-* The enumerated serial port does not bridge to any specific USRT hardware but</span><br><span style="color: hsl(0, 100%, 40%);">-  simply loopback data, so whatever serial port setting works.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Running the Demo</span><br><span>-----------------</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-1. Download the selected example, or export the example to save the .atzip file.</span><br><span style="color: hsl(0, 100%, 40%);">-2. Import .atzip file into Atmel Studio 7, File->Import->Atmel Start Project.</span><br><span style="color: hsl(0, 100%, 40%);">-3. Build and flash into supported evaluation board.</span><br><span style="color: hsl(0, 100%, 40%);">-4. Connect PC host and TARGET USB plug with a USB cable.</span><br><span style="color: hsl(0, 100%, 40%);">-5. Press the RESET button.</span><br><span style="color: hsl(0, 100%, 40%);">-6. The serial port is detected by host PC. On Linux the driver will be installed</span><br><span style="color: hsl(0, 100%, 40%);">-   automatically. On Windows The INF and CAT file required can be extracted from</span><br><span style="color: hsl(0, 100%, 40%);">-   .atzip or found in generated Atmel Studio 7 project folder, relatively at</span><br><span style="color: hsl(0, 100%, 40%);">-   ./usb/class/cdc/device.</span><br><span style="color: hsl(0, 100%, 40%);">-7. Open the detected/enumerated serial port using a serial port monitor</span><br><span style="color: hsl(0, 100%, 40%);">-   (e.g., TeraTerm).</span><br><span style="color: hsl(0, 100%, 40%);">-8. Whatever sent from the serial port monitor will be echoed back then.</span><br><span>diff --git a/documentation/usb_device_cdc.rst b/documentation/usb_device_cdc.rst</span><br><span>deleted file mode 100644</span><br><span>index 305ff8f..0000000</span><br><span>--- a/documentation/usb_device_cdc.rst</span><br><span>+++ /dev/null</span><br><span>@@ -1,46 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-==============</span><br><span style="color: hsl(0, 100%, 40%);">-USB Device CDC</span><br><span style="color: hsl(0, 100%, 40%);">-==============</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-USB Device CDC (Communication Device Class)is a part of the USB Device Stack library.</span><br><span style="color: hsl(0, 100%, 40%);">-It provides support for Abstract Control Model, which is one of the USB PSTN Device</span><br><span style="color: hsl(0, 100%, 40%);">-Models. The device uses both a Data Class interface and a Communication Class interface</span><br><span style="color: hsl(0, 100%, 40%);">-for it. For more detailed definition and description about this model, user can refer to</span><br><span style="color: hsl(0, 100%, 40%);">-the related chapter in <Universal Serial Bus Communications Class Subclass Specification</span><br><span style="color: hsl(0, 100%, 40%);">-for PSTN Devices, Revision 1.2></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Features</span><br><span>---------</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-* Initialization/de-initialization.</span><br><span style="color: hsl(0, 100%, 40%);">-* Data transfer.</span><br><span style="color: hsl(0, 100%, 40%);">-* Callbacks management on:</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  * Transmission done</span><br><span style="color: hsl(0, 100%, 40%);">-  * Reception done</span><br><span style="color: hsl(0, 100%, 40%);">-  * Setting a new Line coding</span><br><span style="color: hsl(0, 100%, 40%);">-  * Line state changing</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Applications</span><br><span>-------------</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-* Used as a vritual serial.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Dependencies</span><br><span>-------------</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-* USB Device Driver</span><br><span style="color: hsl(0, 100%, 40%);">-* USB Device Stack Core</span><br><span style="color: hsl(0, 100%, 40%);">-* USB Protocol CDC</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Limitations</span><br><span>------------</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-* Only single instance can be supported, not applied for multiple case.</span><br><span style="color: hsl(0, 100%, 40%);">-* The INF and CAT file would be packed in atzip file. User can extract</span><br><span style="color: hsl(0, 100%, 40%);">-  them from "./usb/class/cdc/device".</span><br><span style="color: hsl(0, 100%, 40%);">-* If user wants to combine CDC with other classes into one device, USB</span><br><span style="color: hsl(0, 100%, 40%);">-  Device Stack Composite component should be added from the web page</span><br><span style="color: hsl(0, 100%, 40%);">-  rather than USB Device Stack CDC ACM.</span><br><span>diff --git a/usb/class/cdc/device/atmel_devices_cdc.cat b/usb/class/cdc/device/atmel_devices_cdc.cat</span><br><span>deleted file mode 100644</span><br><span>index 09a0673..0000000</span><br><span>--- a/usb/class/cdc/device/atmel_devices_cdc.cat</span><br><span>+++ /dev/null</span><br><span>Binary files differ</span><br><span>diff --git a/usb/class/cdc/device/atmel_devices_cdc.inf b/usb/class/cdc/device/atmel_devices_cdc.inf</span><br><span>deleted file mode 100644</span><br><span>index d2df608..0000000</span><br><span>--- a/usb/class/cdc/device/atmel_devices_cdc.inf</span><br><span>+++ /dev/null</span><br><span>@@ -1,182 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-; Windows 2000, XP, Vista, 7 and 8 (x32 and x64) setup file for Atmel CDC Devices</span><br><span style="color: hsl(0, 100%, 40%);">-; Copyright (c) 2000-2013 ATMEL, Inc.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[Version] </span><br><span style="color: hsl(0, 100%, 40%);">-Signature   = "$Windows NT$" </span><br><span style="color: hsl(0, 100%, 40%);">-Class       = Ports </span><br><span style="color: hsl(0, 100%, 40%);">-ClassGuid   = {4D36E978-E325-11CE-BFC1-08002BE10318} </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Provider    = %Manufacturer% </span><br><span style="color: hsl(0, 100%, 40%);">-LayoutFile  = layout.inf </span><br><span style="color: hsl(0, 100%, 40%);">-CatalogFile = atmel_devices_cdc.cat</span><br><span style="color: hsl(0, 100%, 40%);">-DriverVer   = 01/08/2013,6.0.0.0 </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-;----------------------------------------------------------</span><br><span style="color: hsl(0, 100%, 40%);">-; Targets</span><br><span style="color: hsl(0, 100%, 40%);">-;----------------------------------------------------------</span><br><span style="color: hsl(0, 100%, 40%);">-[Manufacturer] </span><br><span style="color: hsl(0, 100%, 40%);">-%Manufacturer%=DeviceList, NTAMD64, NTIA64, NT </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DeviceList] </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_XPLAINED%=DriverInstall, USB\VID_03EB&PID_2122 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_USB_ZIGBIT_Sub%=DriverInstall, USB\VID_03EB&PID_214B</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_USB_ZIGBIT_2_4%=DriverInstall, USB\VID_03EB&PID_214A</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_SFW_EXAMPLE%=DriverInstall, USB\VID_03EB&PID_2307 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_EVK1XXX%=DriverInstall, USB\VID_03EB&PID_2310 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE%=DriverInstall, USB\VID_03EB&PID_2404</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE2%=DriverInstall, USB\VID_03EB&PID_2421&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE4%=DriverInstall, USB\VID_03EB&PID_2424&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE2_COM1%=DriverInstall, USB\VID_03EB&PID_2425&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE2_COM2%=DriverInstall, USB\VID_03EB&PID_2425&MI_02</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM1%=DriverInstall, USB\VID_03EB&PID_2426&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM2%=DriverInstall, USB\VID_03EB&PID_2426&MI_02</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM3%=DriverInstall, USB\VID_03EB&PID_2426&MI_04</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM4%=DriverInstall, USB\VID_03EB&PID_2426&MI_06</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM5%=DriverInstall, USB\VID_03EB&PID_2426&MI_08</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM6%=DriverInstall, USB\VID_03EB&PID_2426&MI_0A</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM7%=DriverInstall, USB\VID_03EB&PID_2426&MI_0C</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DeviceList.NTAMD64]</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_XPLAINED%=DriverInstall.NTamd64, USB\VID_03EB&PID_2122 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_USB_ZIGBIT_Sub%=DriverInstall.NTamd64, USB\VID_03EB&PID_214B </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_USB_ZIGBIT_2_4%=DriverInstall.NTamd64, USB\VID_03EB&PID_214A </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_SFW_EXAMPLE%=DriverInstall.NTamd64, USB\VID_03EB&PID_2307 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_EVK1XXX%=DriverInstall.NTamd64, USB\VID_03EB&PID_2310 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE%=DriverInstall.NTamd64, USB\VID_03EB&PID_2404 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE2%=DriverInstall.NTamd64, USB\VID_03EB&PID_2421&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE4%=DriverInstall.NTamd64, USB\VID_03EB&PID_2424&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE2_COM1%=DriverInstall.NTamd64, USB\VID_03EB&PID_2425&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE2_COM2%=DriverInstall.NTamd64, USB\VID_03EB&PID_2425&MI_02</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM1%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM2%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_02</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM3%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_04</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM4%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_06</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM5%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_08</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM6%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_0A</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM7%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_0C</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DeviceList.NTIA64]</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_XPLAINED%=DriverInstall.NTamd64, USB\VID_03EB&PID_2122 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_USB_ZIGBIT_Sub%=DriverInstall.NTamd64, USB\VID_03EB&PID_214B</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_USB_ZIGBIT_2_4%=DriverInstall.NTamd64, USB\VID_03EB&PID_214A</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_SFW_EXAMPLE%=DriverInstall.NTamd64, USB\VID_03EB&PID_2307 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_EVK1XXX%=DriverInstall.NTamd64, USB\VID_03EB&PID_2310 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE%=DriverInstall.NTamd64, USB\VID_03EB&PID_2404 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE2%=DriverInstall.NTamd64, USB\VID_03EB&PID_2421&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE4%=DriverInstall.NTamd64, USB\VID_03EB&PID_2424&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE2_COM1%=DriverInstall.NTamd64, USB\VID_03EB&PID_2425&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE2_COM2%=DriverInstall.NTamd64, USB\VID_03EB&PID_2425&MI_02</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM1%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM2%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_02</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM3%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_04</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM4%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_06</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM5%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_08</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM6%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_0A</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM7%=DriverInstall.NTamd64, USB\VID_03EB&PID_2426&MI_0C</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DeviceList.NT]</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_XPLAINED%=DriverInstall.NT, USB\VID_03EB&PID_2122 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_USB_ZIGBIT_Sub%=DriverInstall.NT, USB\VID_03EB&PID_214B</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_USB_ZIGBIT_2_4%=DriverInstall.NT, USB\VID_03EB&PID_214A</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_SFW_EXAMPLE%=DriverInstall.NT, USB\VID_03EB&PID_2307 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_EVK1XXX%=DriverInstall.NT, USB\VID_03EB&PID_2310 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE%=DriverInstall.NT, USB\VID_03EB&PID_2404 </span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE2%=DriverInstall.NT, USB\VID_03EB&PID_2421&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_COMPOSITE_EXAMPLE4%=DriverInstall.NT, USB\VID_03EB&PID_2424&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE2_COM1%=DriverInstall.NT, USB\VID_03EB&PID_2425&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE2_COM2%=DriverInstall.NT, USB\VID_03EB&PID_2425&MI_02</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM1%=DriverInstall.NT, USB\VID_03EB&PID_2426&MI_00</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM2%=DriverInstall.NT, USB\VID_03EB&PID_2426&MI_02</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM3%=DriverInstall.NT, USB\VID_03EB&PID_2426&MI_04</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM4%=DriverInstall.NT, USB\VID_03EB&PID_2426&MI_06</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM5%=DriverInstall.NT, USB\VID_03EB&PID_2426&MI_08</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM6%=DriverInstall.NT, USB\VID_03EB&PID_2426&MI_0A</span><br><span style="color: hsl(0, 100%, 40%);">-%ATMEL_CDC_ASF_EXAMPLE3_COM7%=DriverInstall.NT, USB\VID_03EB&PID_2426&MI_0C</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-;----------------------------------------------------------</span><br><span style="color: hsl(0, 100%, 40%);">-; Windows 2000, XP, Vista, Windows 7, Windows 8 - 32bit</span><br><span style="color: hsl(0, 100%, 40%);">-;----------------------------------------------------------</span><br><span style="color: hsl(0, 100%, 40%);">-[Reader_Install.NTx86] </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DestinationDirs] </span><br><span style="color: hsl(0, 100%, 40%);">-DefaultDestDir=12 </span><br><span style="color: hsl(0, 100%, 40%);">-DriverInstall.NT.Copy=12 </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DriverInstall.NT] </span><br><span style="color: hsl(0, 100%, 40%);">-include=mdmcpq.inf</span><br><span style="color: hsl(0, 100%, 40%);">-CopyFiles=DriverInstall.NT.Copy </span><br><span style="color: hsl(0, 100%, 40%);">-AddReg=DriverInstall.NT.AddReg </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DriverInstall.NT.Copy] </span><br><span style="color: hsl(0, 100%, 40%);">-usbser.sys </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DriverInstall.NT.AddReg]</span><br><span style="color: hsl(0, 100%, 40%);">-HKR,,DevLoader,,*ntkern </span><br><span style="color: hsl(0, 100%, 40%);">-HKR,,NTMPDriver,,usbser.sys </span><br><span style="color: hsl(0, 100%, 40%);">-HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DriverInstall.NT.Services] </span><br><span style="color: hsl(0, 100%, 40%);">-AddService = usbser, 0x00000002, DriverService.NT </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DriverService.NT] </span><br><span style="color: hsl(0, 100%, 40%);">-DisplayName = %Serial.SvcDesc% </span><br><span style="color: hsl(0, 100%, 40%);">-ServiceType = 1 ; SERVICE_KERNEL_DRIVER </span><br><span style="color: hsl(0, 100%, 40%);">-StartType = 3 ; SERVICE_DEMAND_START </span><br><span style="color: hsl(0, 100%, 40%);">-ErrorControl = 1 ; SERVICE_ERROR_NORMAL </span><br><span style="color: hsl(0, 100%, 40%);">-ServiceBinary = %12%\usbser.sys </span><br><span style="color: hsl(0, 100%, 40%);">-LoadOrderGroup = Base </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-;----------------------------------------------------------</span><br><span style="color: hsl(0, 100%, 40%);">-; Windows XP, Vista, Windows 7, Windows 8 - 64bit</span><br><span style="color: hsl(0, 100%, 40%);">-;----------------------------------------------------------</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DriverInstall.NTamd64]</span><br><span style="color: hsl(0, 100%, 40%);">-include=mdmcpq.inf</span><br><span style="color: hsl(0, 100%, 40%);">-CopyFiles=DriverCopyFiles.NTamd64</span><br><span style="color: hsl(0, 100%, 40%);">-AddReg=DriverInstall.NTamd64.AddReg</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DriverCopyFiles.NTamd64]</span><br><span style="color: hsl(0, 100%, 40%);">-usbser.sys,,,0x20</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DriverInstall.NTamd64.AddReg]</span><br><span style="color: hsl(0, 100%, 40%);">-HKR,,DevLoader,,*ntkern</span><br><span style="color: hsl(0, 100%, 40%);">-HKR,,NTMPDriver,,usbser.sys</span><br><span style="color: hsl(0, 100%, 40%);">-HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DriverInstall.NTamd64.Services]</span><br><span style="color: hsl(0, 100%, 40%);">-AddService=usbser, 0x00000002, DriverService.NTamd64</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[DriverService.NTamd64]</span><br><span style="color: hsl(0, 100%, 40%);">-DisplayName=%Serial.SvcDesc%</span><br><span style="color: hsl(0, 100%, 40%);">-ServiceType=1</span><br><span style="color: hsl(0, 100%, 40%);">-StartType=3</span><br><span style="color: hsl(0, 100%, 40%);">-ErrorControl=1</span><br><span style="color: hsl(0, 100%, 40%);">-ServiceBinary=%12%\usbser.sys</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-;----------------------------------------------------------</span><br><span style="color: hsl(0, 100%, 40%);">-; String</span><br><span style="color: hsl(0, 100%, 40%);">-;----------------------------------------------------------</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[Strings] </span><br><span style="color: hsl(0, 100%, 40%);">-Manufacturer = "ATMEL, Inc." </span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_XPLAINED = "XPLAINED Virtual Com Port"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_USB_ZIGBIT_Sub = "ZigBit SubGHz USBstick Com Port"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_USB_ZIGBIT_2_4 = "ZigBit 2.4GHz USBstick Com Port"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_SFW_EXAMPLE = "Communication Device Class SFW example"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_EVK1XXX = "EVK1XXX Virtual Com Port"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_ASF_EXAMPLE = "Communication Device Class ASF example"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_ASF_COMPOSITE_EXAMPLE2 = "Communication Device Class ASF composite example 2"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_ASF_COMPOSITE_EXAMPLE4 = "Communication Device Class ASF composite example 4"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_ASF_EXAMPLE2_COM1 = "Communication Device Class ASF example2, COM1"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_ASF_EXAMPLE2_COM2 = "Communication Device Class ASF example2, COM2"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_ASF_EXAMPLE3_COM1 = "Communication Device Class ASF example3, COM1"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_ASF_EXAMPLE3_COM2 = "Communication Device Class ASF example3, COM2"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_ASF_EXAMPLE3_COM3 = "Communication Device Class ASF example3, COM3"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_ASF_EXAMPLE3_COM4 = "Communication Device Class ASF example3, COM4"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_ASF_EXAMPLE3_COM5 = "Communication Device Class ASF example3, COM5"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_ASF_EXAMPLE3_COM6 = "Communication Device Class ASF example3, COM6"</span><br><span style="color: hsl(0, 100%, 40%);">-ATMEL_CDC_ASF_EXAMPLE3_COM7 = "Communication Device Class ASF example3, COM7"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Serial.SvcDesc = "USB Serial emulation driver" </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/usb/class/cdc/device/cdcdf_acm.c b/usb/class/cdc/device/cdcdf_acm.c</span><br><span>deleted file mode 100644</span><br><span>index 2691cc8..0000000</span><br><span>--- a/usb/class/cdc/device/cdcdf_acm.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,379 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \file</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief USB Device Stack CDC ACM Function Implementation.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \asf_license_start</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \page License</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Subject to your compliance with these terms, you may use Microchip</span><br><span style="color: hsl(0, 100%, 40%);">- * software and any derivatives exclusively with Microchip products.</span><br><span style="color: hsl(0, 100%, 40%);">- * It is your responsibility to comply with third party license terms applicable</span><br><span style="color: hsl(0, 100%, 40%);">- * to your use of third party software (including open source software) that</span><br><span style="color: hsl(0, 100%, 40%);">- * may accompany Microchip software.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES,</span><br><span style="color: hsl(0, 100%, 40%);">- * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,</span><br><span style="color: hsl(0, 100%, 40%);">- * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,</span><br><span style="color: hsl(0, 100%, 40%);">- * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE</span><br><span style="color: hsl(0, 100%, 40%);">- * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL</span><br><span style="color: hsl(0, 100%, 40%);">- * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE</span><br><span style="color: hsl(0, 100%, 40%);">- * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE</span><br><span style="color: hsl(0, 100%, 40%);">- * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.  TO THE FULLEST EXTENT</span><br><span style="color: hsl(0, 100%, 40%);">- * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY</span><br><span style="color: hsl(0, 100%, 40%);">- * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,</span><br><span style="color: hsl(0, 100%, 40%);">- * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \asf_license_stop</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include "cdcdf_acm.h"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDCDF_ACM_VERSION 0x00000001u</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDCDF_ACM_COMM_EP_INDEX 0</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDCDF_ACM_DATA_EP_INDEX 1</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/** USB Device CDC ACM Fucntion Specific Data */</span><br><span style="color: hsl(0, 100%, 40%);">-struct cdcdf_acm_func_data {</span><br><span style="color: hsl(0, 100%, 40%);">-    /** CDC Device ACM Interface information */</span><br><span style="color: hsl(0, 100%, 40%);">-     uint8_t func_iface[2];</span><br><span style="color: hsl(0, 100%, 40%);">-  /** CDC Device ACM IN Endpoint */</span><br><span style="color: hsl(0, 100%, 40%);">-       uint8_t func_ep_in[2];</span><br><span style="color: hsl(0, 100%, 40%);">-  /** CDC Device ACM OUT Endpoint */</span><br><span style="color: hsl(0, 100%, 40%);">-      uint8_t func_ep_out;</span><br><span style="color: hsl(0, 100%, 40%);">-    /** CDC Device ACM Enable Flag */</span><br><span style="color: hsl(0, 100%, 40%);">-       bool enabled;</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static struct usbdf_driver        _cdcdf_acm;</span><br><span style="color: hsl(0, 100%, 40%);">-static struct cdcdf_acm_func_data _cdcdf_acm_funcd;</span><br><span style="color: hsl(0, 100%, 40%);">-static struct usb_cdc_line_coding usbd_cdc_line_coding;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static cdcdf_acm_notify_state_t    cdcdf_acm_notify_state    = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-static cdcdf_acm_set_line_coding_t cdcdf_acm_set_line_coding = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Enable CDC ACM Function</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] drv Pointer to USB device function driver</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] desc Pointer to USB interface descriptor</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Operation status.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-static int32_t cdcdf_acm_enable(struct usbdf_driver *drv, struct usbd_descriptors *desc)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- struct cdcdf_acm_func_data *func_data = (struct cdcdf_acm_func_data *)(drv->func_data);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      usb_ep_desc_t    ep_desc;</span><br><span style="color: hsl(0, 100%, 40%);">-       usb_iface_desc_t ifc_desc;</span><br><span style="color: hsl(0, 100%, 40%);">-      uint8_t *        ifc, *ep;</span><br><span style="color: hsl(0, 100%, 40%);">-      uint8_t          i;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     ifc = desc->sod;</span><br><span style="color: hsl(0, 100%, 40%);">-     for (i = 0; i < 2; i++) {</span><br><span style="color: hsl(0, 100%, 40%);">-            if (NULL == ifc) {</span><br><span style="color: hsl(0, 100%, 40%);">-                      return ERR_NOT_FOUND;</span><br><span style="color: hsl(0, 100%, 40%);">-           }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-               ifc_desc.bInterfaceNumber = ifc[2];</span><br><span style="color: hsl(0, 100%, 40%);">-             ifc_desc.bInterfaceClass  = ifc[5];</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-             if ((CDC_CLASS_COMM == ifc_desc.bInterfaceClass) || (CDC_CLASS_DATA == ifc_desc.bInterfaceClass)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     if (func_data->func_iface[i] == ifc_desc.bInterfaceNumber) { // Initialized</span><br><span style="color: hsl(0, 100%, 40%);">-                          return ERR_ALREADY_INITIALIZED;</span><br><span style="color: hsl(0, 100%, 40%);">-                 } else if (func_data->func_iface[i] != 0xFF) { // Occupied</span><br><span style="color: hsl(0, 100%, 40%);">-                           return ERR_NO_RESOURCE;</span><br><span style="color: hsl(0, 100%, 40%);">-                 } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                                func_data->func_iface[i] = ifc_desc.bInterfaceNumber;</span><br><span style="color: hsl(0, 100%, 40%);">-                        }</span><br><span style="color: hsl(0, 100%, 40%);">-               } else { // Not supported by this function driver</span><br><span style="color: hsl(0, 100%, 40%);">-                       return ERR_NOT_FOUND;</span><br><span style="color: hsl(0, 100%, 40%);">-           }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-               // Install endpoints</span><br><span style="color: hsl(0, 100%, 40%);">-            ep = usb_find_desc(ifc, desc->eod, USB_DT_ENDPOINT);</span><br><span style="color: hsl(0, 100%, 40%);">-         while (NULL != ep) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    ep_desc.bEndpointAddress = ep[2];</span><br><span style="color: hsl(0, 100%, 40%);">-                       ep_desc.bmAttributes     = ep[3];</span><br><span style="color: hsl(0, 100%, 40%);">-                       ep_desc.wMaxPacketSize   = usb_get_u16(ep + 4);</span><br><span style="color: hsl(0, 100%, 40%);">-                 if (usb_d_ep_init(ep_desc.bEndpointAddress, ep_desc.bmAttributes, ep_desc.wMaxPacketSize)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                            return ERR_NOT_INITIALIZED;</span><br><span style="color: hsl(0, 100%, 40%);">-                     }</span><br><span style="color: hsl(0, 100%, 40%);">-                       if (ep_desc.bEndpointAddress & USB_EP_DIR_IN) {</span><br><span style="color: hsl(0, 100%, 40%);">-                             func_data->func_ep_in[i] = ep_desc.bEndpointAddress;</span><br><span style="color: hsl(0, 100%, 40%);">-                         usb_d_ep_enable(func_data->func_ep_in[i]);</span><br><span style="color: hsl(0, 100%, 40%);">-                   } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                                func_data->func_ep_out = ep_desc.bEndpointAddress;</span><br><span style="color: hsl(0, 100%, 40%);">-                           usb_d_ep_enable(func_data->func_ep_out);</span><br><span style="color: hsl(0, 100%, 40%);">-                     }</span><br><span style="color: hsl(0, 100%, 40%);">-                       desc->sod = ep;</span><br><span style="color: hsl(0, 100%, 40%);">-                      ep        = usb_find_ep_desc(usb_desc_next(desc->sod), desc->eod);</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-               ifc = usb_find_desc(usb_desc_next(desc->sod), desc->eod, USB_DT_INTERFACE);</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-       // Installed</span><br><span style="color: hsl(0, 100%, 40%);">-    _cdcdf_acm_funcd.enabled = true;</span><br><span style="color: hsl(0, 100%, 40%);">-        return ERR_NONE;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Disable CDC ACM Function</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] drv Pointer to USB device function driver</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] desc Pointer to USB device descriptor</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Operation status.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-static int32_t cdcdf_acm_disable(struct usbdf_driver *drv, struct usbd_descriptors *desc)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       struct cdcdf_acm_func_data *func_data = (struct cdcdf_acm_func_data *)(drv->func_data);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      usb_iface_desc_t ifc_desc;</span><br><span style="color: hsl(0, 100%, 40%);">-      uint8_t          i;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     if (desc) {</span><br><span style="color: hsl(0, 100%, 40%);">-             ifc_desc.bInterfaceClass = desc->sod[5];</span><br><span style="color: hsl(0, 100%, 40%);">-             // Check interface</span><br><span style="color: hsl(0, 100%, 40%);">-              if ((ifc_desc.bInterfaceClass != CDC_CLASS_COMM) && (ifc_desc.bInterfaceClass != CDC_CLASS_DATA)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     return ERR_NOT_FOUND;</span><br><span style="color: hsl(0, 100%, 40%);">-           }</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       for (i = 0; i < 2; i++) {</span><br><span style="color: hsl(0, 100%, 40%);">-            if (func_data->func_iface[i] == 0xFF) {</span><br><span style="color: hsl(0, 100%, 40%);">-                      continue;</span><br><span style="color: hsl(0, 100%, 40%);">-               } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        func_data->func_iface[i] = 0xFF;</span><br><span style="color: hsl(0, 100%, 40%);">-                     if (func_data->func_ep_in[i] != 0xFF) {</span><br><span style="color: hsl(0, 100%, 40%);">-                              usb_d_ep_deinit(func_data->func_ep_in[i]);</span><br><span style="color: hsl(0, 100%, 40%);">-                           func_data->func_ep_in[i] = 0xFF;</span><br><span style="color: hsl(0, 100%, 40%);">-                     }</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       if (func_data->func_ep_out != 0xFF) {</span><br><span style="color: hsl(0, 100%, 40%);">-                usb_d_ep_deinit(func_data->func_ep_out);</span><br><span style="color: hsl(0, 100%, 40%);">-             func_data->func_ep_out = 0xFF;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       _cdcdf_acm_funcd.enabled = false;</span><br><span style="color: hsl(0, 100%, 40%);">-       return ERR_NONE;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief CDC ACM Control Function</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] drv Pointer to USB device function driver</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] ctrl USB device general function control type</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] param Parameter pointer</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Operation status.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-static int32_t cdcdf_acm_ctrl(struct usbdf_driver *drv, enum usbdf_control ctrl, void *param)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-      switch (ctrl) {</span><br><span style="color: hsl(0, 100%, 40%);">- case USBDF_ENABLE:</span><br><span style="color: hsl(0, 100%, 40%);">-              return cdcdf_acm_enable(drv, (struct usbd_descriptors *)param);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- case USBDF_DISABLE:</span><br><span style="color: hsl(0, 100%, 40%);">-             return cdcdf_acm_disable(drv, (struct usbd_descriptors *)param);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        case USBDF_GET_IFACE:</span><br><span style="color: hsl(0, 100%, 40%);">-           return ERR_UNSUPPORTED_OP;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      default:</span><br><span style="color: hsl(0, 100%, 40%);">-                return ERR_INVALID_ARG;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Process the CDC class set request</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] ep Endpoint address.</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] req Pointer to the request.</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Operation status.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-static int32_t cdcdf_acm_set_req(uint8_t ep, struct usb_req *req, enum usb_ctrl_stage stage)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- struct usb_cdc_line_coding line_coding_tmp;</span><br><span style="color: hsl(0, 100%, 40%);">-     uint16_t                   len      = req->wLength;</span><br><span style="color: hsl(0, 100%, 40%);">-  uint8_t *                  ctrl_buf = usbdc_get_ctrl_buffer();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  switch (req->bRequest) {</span><br><span style="color: hsl(0, 100%, 40%);">-     case USB_REQ_CDC_SET_LINE_CODING:</span><br><span style="color: hsl(0, 100%, 40%);">-               if (sizeof(struct usb_cdc_line_coding) != len) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        return ERR_INVALID_DATA;</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-               if (USB_SETUP_STAGE == stage) {</span><br><span style="color: hsl(0, 100%, 40%);">-                 return usbdc_xfer(ep, ctrl_buf, len, false);</span><br><span style="color: hsl(0, 100%, 40%);">-            } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        memcpy(&line_coding_tmp, ctrl_buf, sizeof(struct usb_cdc_line_coding));</span><br><span style="color: hsl(0, 100%, 40%);">-                     if ((NULL == cdcdf_acm_set_line_coding) || (true == cdcdf_acm_set_line_coding(&line_coding_tmp))) {</span><br><span style="color: hsl(0, 100%, 40%);">-                         usbd_cdc_line_coding = line_coding_tmp;</span><br><span style="color: hsl(0, 100%, 40%);">-                 }</span><br><span style="color: hsl(0, 100%, 40%);">-                       return ERR_NONE;</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-       case USB_REQ_CDC_SET_CONTROL_LINE_STATE:</span><br><span style="color: hsl(0, 100%, 40%);">-                usbdc_xfer(0, NULL, 0, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-              if (NULL != cdcdf_acm_notify_state) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   cdcdf_acm_notify_state(req->wValue);</span><br><span style="color: hsl(0, 100%, 40%);">-         }</span><br><span style="color: hsl(0, 100%, 40%);">-               return ERR_NONE;</span><br><span style="color: hsl(0, 100%, 40%);">-        default:</span><br><span style="color: hsl(0, 100%, 40%);">-                return ERR_INVALID_ARG;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Process the CDC class get request</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] ep Endpoint address.</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] req Pointer to the request.</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Operation status.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-static int32_t cdcdf_acm_get_req(uint8_t ep, struct usb_req *req, enum usb_ctrl_stage stage)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- uint16_t len = req->wLength;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (USB_DATA_STAGE == stage) {</span><br><span style="color: hsl(0, 100%, 40%);">-          return ERR_NONE;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       switch (req->bRequest) {</span><br><span style="color: hsl(0, 100%, 40%);">-     case USB_REQ_CDC_GET_LINE_CODING:</span><br><span style="color: hsl(0, 100%, 40%);">-               if (sizeof(struct usb_cdc_line_coding) != len) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        return ERR_INVALID_DATA;</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-               return usbdc_xfer(ep, (uint8_t *)&usbd_cdc_line_coding, len, false);</span><br><span style="color: hsl(0, 100%, 40%);">-        default:</span><br><span style="color: hsl(0, 100%, 40%);">-                return ERR_INVALID_ARG;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Process the CDC class request</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] ep Endpoint address.</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] req Pointer to the request.</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Operation status.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-static int32_t cdcdf_acm_req(uint8_t ep, struct usb_req *req, enum usb_ctrl_stage stage)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- if (0x01 != ((req->bmRequestType >> 5) & 0x03)) { // class request</span><br><span style="color: hsl(0, 100%, 40%);">-         return ERR_NOT_FOUND;</span><br><span style="color: hsl(0, 100%, 40%);">-   }</span><br><span style="color: hsl(0, 100%, 40%);">-       if ((req->wIndex == _cdcdf_acm_funcd.func_iface[0]) || (req->wIndex == _cdcdf_acm_funcd.func_iface[1])) {</span><br><span style="color: hsl(0, 100%, 40%);">-         if (req->bmRequestType & USB_EP_DIR_IN) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        return cdcdf_acm_get_req(ep, req, stage);</span><br><span style="color: hsl(0, 100%, 40%);">-               } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        return cdcdf_acm_set_req(ep, req, stage);</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span style="color: hsl(0, 100%, 40%);">-       } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                return ERR_NOT_FOUND;</span><br><span style="color: hsl(0, 100%, 40%);">-   }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/** USB Device CDC ACM Handler Struct */</span><br><span style="color: hsl(0, 100%, 40%);">-static struct usbdc_handler cdcdf_acm_req_h = {NULL, (FUNC_PTR)cdcdf_acm_req};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Initialize the USB CDC ACM Function Driver</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-int32_t cdcdf_acm_init(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- if (usbdc_get_state() > USBD_S_POWER) {</span><br><span style="color: hsl(0, 100%, 40%);">-              return ERR_DENIED;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       _cdcdf_acm.ctrl      = cdcdf_acm_ctrl;</span><br><span style="color: hsl(0, 100%, 40%);">-  _cdcdf_acm.func_data = &_cdcdf_acm_funcd;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   usbdc_register_function(&_cdcdf_acm);</span><br><span style="color: hsl(0, 100%, 40%);">-       usbdc_register_handler(USBDC_HDL_REQ, &cdcdf_acm_req_h);</span><br><span style="color: hsl(0, 100%, 40%);">-    return ERR_NONE;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Deinitialize the USB CDC ACM Function Driver</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-void cdcdf_acm_deinit(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       usb_d_ep_deinit(_cdcdf_acm_funcd.func_ep_in[CDCDF_ACM_COMM_EP_INDEX]);</span><br><span style="color: hsl(0, 100%, 40%);">-  usb_d_ep_deinit(_cdcdf_acm_funcd.func_ep_in[CDCDF_ACM_DATA_EP_INDEX]);</span><br><span style="color: hsl(0, 100%, 40%);">-  usb_d_ep_deinit(_cdcdf_acm_funcd.func_ep_out);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief USB CDC ACM Function Read Data</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-int32_t cdcdf_acm_read(uint8_t *buf, uint32_t size)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       if (!cdcdf_acm_is_enabled()) {</span><br><span style="color: hsl(0, 100%, 40%);">-          return ERR_DENIED;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-       return usbdc_xfer(_cdcdf_acm_funcd.func_ep_out, buf, size, false);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief USB CDC ACM Function Write Data</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-int32_t cdcdf_acm_write(uint8_t *buf, uint32_t size)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- if (!cdcdf_acm_is_enabled()) {</span><br><span style="color: hsl(0, 100%, 40%);">-          return ERR_DENIED;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-       return usbdc_xfer(_cdcdf_acm_funcd.func_ep_in[CDCDF_ACM_DATA_EP_INDEX], buf, size, true);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief USB CDC ACM Stop the data transfer</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-void cdcdf_acm_stop_xfer(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-     /* Stop transfer. */</span><br><span style="color: hsl(0, 100%, 40%);">-    usb_d_ep_abort(_cdcdf_acm_funcd.func_ep_in[CDCDF_ACM_DATA_EP_INDEX]);</span><br><span style="color: hsl(0, 100%, 40%);">-   usb_d_ep_abort(_cdcdf_acm_funcd.func_ep_out);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief USB CDC ACM Function Register Callback</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-int32_t cdcdf_acm_register_callback(enum cdcdf_acm_cb_type cb_type, FUNC_PTR func)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- switch (cb_type) {</span><br><span style="color: hsl(0, 100%, 40%);">-      case CDCDF_ACM_CB_READ:</span><br><span style="color: hsl(0, 100%, 40%);">-         usb_d_ep_register_callback(_cdcdf_acm_funcd.func_ep_out, USB_D_EP_CB_XFER, func);</span><br><span style="color: hsl(0, 100%, 40%);">-               break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case CDCDF_ACM_CB_WRITE:</span><br><span style="color: hsl(0, 100%, 40%);">-                usb_d_ep_register_callback(_cdcdf_acm_funcd.func_ep_in[CDCDF_ACM_DATA_EP_INDEX], USB_D_EP_CB_XFER, func);</span><br><span style="color: hsl(0, 100%, 40%);">-               break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case CDCDF_ACM_CB_LINE_CODING_C:</span><br><span style="color: hsl(0, 100%, 40%);">-                cdcdf_acm_set_line_coding = (cdcdf_acm_set_line_coding_t)func;</span><br><span style="color: hsl(0, 100%, 40%);">-          break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case CDCDF_ACM_CB_STATE_C:</span><br><span style="color: hsl(0, 100%, 40%);">-              cdcdf_acm_notify_state = (cdcdf_acm_notify_state_t)func;</span><br><span style="color: hsl(0, 100%, 40%);">-                break;</span><br><span style="color: hsl(0, 100%, 40%);">-  default:</span><br><span style="color: hsl(0, 100%, 40%);">-                return ERR_INVALID_ARG;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-       return ERR_NONE;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Check whether CDC ACM Function is enabled</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-bool cdcdf_acm_is_enabled(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-      return _cdcdf_acm_funcd.enabled;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Return the CDC ACM line coding structure start address</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-const struct usb_cdc_line_coding *cdcdf_acm_get_line_coding(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       return (const struct usb_cdc_line_coding *)&usbd_cdc_line_coding;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Return version</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-uint32_t cdcdf_acm_get_version(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       return CDCDF_ACM_VERSION;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/usb/class/cdc/device/cdcdf_acm.h b/usb/class/cdc/device/cdcdf_acm.h</span><br><span>deleted file mode 100644</span><br><span>index ad060bc..0000000</span><br><span>--- a/usb/class/cdc/device/cdcdf_acm.h</span><br><span>+++ /dev/null</span><br><span>@@ -1,108 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \file</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief USB Device Stack CDC ACM Function Definition.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \asf_license_start</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \page License</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Subject to your compliance with these terms, you may use Microchip</span><br><span style="color: hsl(0, 100%, 40%);">- * software and any derivatives exclusively with Microchip products.</span><br><span style="color: hsl(0, 100%, 40%);">- * It is your responsibility to comply with third party license terms applicable</span><br><span style="color: hsl(0, 100%, 40%);">- * to your use of third party software (including open source software) that</span><br><span style="color: hsl(0, 100%, 40%);">- * may accompany Microchip software.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES,</span><br><span style="color: hsl(0, 100%, 40%);">- * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,</span><br><span style="color: hsl(0, 100%, 40%);">- * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,</span><br><span style="color: hsl(0, 100%, 40%);">- * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE</span><br><span style="color: hsl(0, 100%, 40%);">- * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL</span><br><span style="color: hsl(0, 100%, 40%);">- * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE</span><br><span style="color: hsl(0, 100%, 40%);">- * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE</span><br><span style="color: hsl(0, 100%, 40%);">- * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.  TO THE FULLEST EXTENT</span><br><span style="color: hsl(0, 100%, 40%);">- * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY</span><br><span style="color: hsl(0, 100%, 40%);">- * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,</span><br><span style="color: hsl(0, 100%, 40%);">- * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \asf_license_stop</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#ifndef USBDF_CDC_ACM_SER_H_</span><br><span style="color: hsl(0, 100%, 40%);">-#define USBDF_CDC_ACM_SER_H_</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include "usbdc.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#include "usb_protocol_cdc.h"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/** CDC ACM Class Callback Type */</span><br><span style="color: hsl(0, 100%, 40%);">-enum cdcdf_acm_cb_type { CDCDF_ACM_CB_READ, CDCDF_ACM_CB_WRITE, CDCDF_ACM_CB_LINE_CODING_C, CDCDF_ACM_CB_STATE_C };</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/** CDC ACM Notify Line State Callback. */</span><br><span style="color: hsl(0, 100%, 40%);">-typedef void (*cdcdf_acm_notify_state_t)(uint16_t);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/** CDC ACM Set Line Coding Callback. */</span><br><span style="color: hsl(0, 100%, 40%);">-typedef bool (*cdcdf_acm_set_line_coding_t)(struct usb_cdc_line_coding *);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Initialize the USB CDC ACM Function Driver</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Operation status.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-int32_t cdcdf_acm_init(void);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Deinitialize the USB CDC ACM Function Driver</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Operation status.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-void cdcdf_acm_deinit(void);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief USB CDC ACM Function Read Data</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] buf Pointer to the buffer which receives data</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] size the size of data to be received</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Operation status.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-int32_t cdcdf_acm_read(uint8_t *buf, uint32_t size);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief USB CDC ACM Function Write Data</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] buf Pointer to the buffer which stores data</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] size the size of data to be sent</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Operation status.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-int32_t cdcdf_acm_write(uint8_t *buf, uint32_t size);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief USB CDC ACM Stop the currnet data transfer</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-void cdcdf_acm_stop_xfer(void);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief USB CDC ACM Function Register Callback</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] cb_type Callback type of CDC ACM Function</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] func Pointer to callback function</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Operation status.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-int32_t cdcdf_acm_register_callback(enum cdcdf_acm_cb_type cb_type, FUNC_PTR func);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Check whether CDC ACM Function is enabled</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Operation status.</span><br><span style="color: hsl(0, 100%, 40%);">- * \return true CDC ACM Function is enabled</span><br><span style="color: hsl(0, 100%, 40%);">- * \return false CDC ACM Function is disabled</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-bool cdcdf_acm_is_enabled(void);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Return the CDC ACM line coding structure start address</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Pointer to USB CDC ACM line coding data.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-const struct usb_cdc_line_coding *cdcdf_acm_get_line_coding(void);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Return version</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-uint32_t cdcdf_acm_get_version(void);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#endif /* USBDF_CDC_ACM_SER_H_ */</span><br><span>diff --git a/usb/class/cdc/device/cdcdf_acm_desc.h b/usb/class/cdc/device/cdcdf_acm_desc.h</span><br><span>deleted file mode 100644</span><br><span>index ca29d33..0000000</span><br><span>--- a/usb/class/cdc/device/cdcdf_acm_desc.h</span><br><span>+++ /dev/null</span><br><span>@@ -1,131 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \file</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief USB Device Stack CDC ACM Function Descriptor Setting.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \asf_license_start</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \page License</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Subject to your compliance with these terms, you may use Microchip</span><br><span style="color: hsl(0, 100%, 40%);">- * software and any derivatives exclusively with Microchip products.</span><br><span style="color: hsl(0, 100%, 40%);">- * It is your responsibility to comply with third party license terms applicable</span><br><span style="color: hsl(0, 100%, 40%);">- * to your use of third party software (including open source software) that</span><br><span style="color: hsl(0, 100%, 40%);">- * may accompany Microchip software.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES,</span><br><span style="color: hsl(0, 100%, 40%);">- * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,</span><br><span style="color: hsl(0, 100%, 40%);">- * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,</span><br><span style="color: hsl(0, 100%, 40%);">- * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE</span><br><span style="color: hsl(0, 100%, 40%);">- * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL</span><br><span style="color: hsl(0, 100%, 40%);">- * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE</span><br><span style="color: hsl(0, 100%, 40%);">- * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE</span><br><span style="color: hsl(0, 100%, 40%);">- * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.  TO THE FULLEST EXTENT</span><br><span style="color: hsl(0, 100%, 40%);">- * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY</span><br><span style="color: hsl(0, 100%, 40%);">- * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,</span><br><span style="color: hsl(0, 100%, 40%);">- * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \asf_license_stop</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#ifndef USBDF_CDC_ACM_DESC_H_</span><br><span style="color: hsl(0, 100%, 40%);">-#define USBDF_CDC_ACM_DESC_H_</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include "usb_protocol.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#include "usb_protocol_cdc.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#include "usbd_config.h"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDCD_ACM_DEV_DESC                                                                                              \</span><br><span style="color: hsl(0, 100%, 40%);">-       USB_DEV_DESC_BYTES(CONF_USB_CDCD_ACM_BCDUSB,                                                                       \</span><br><span style="color: hsl(0, 100%, 40%);">-                       0x02,                                                                                           \</span><br><span style="color: hsl(0, 100%, 40%);">-                       0x00,                                                                                           \</span><br><span style="color: hsl(0, 100%, 40%);">-                       0x00,                                                                                           \</span><br><span style="color: hsl(0, 100%, 40%);">-                       CONF_USB_CDCD_ACM_BMAXPKSZ0,                                                                    \</span><br><span style="color: hsl(0, 100%, 40%);">-                       CONF_USB_CDCD_ACM_IDVENDER,                                                                     \</span><br><span style="color: hsl(0, 100%, 40%);">-                       CONF_USB_CDCD_ACM_IDPRODUCT,                                                                    \</span><br><span style="color: hsl(0, 100%, 40%);">-                       CONF_USB_CDCD_ACM_BCDDEVICE,                                                                    \</span><br><span style="color: hsl(0, 100%, 40%);">-                       CONF_USB_CDCD_ACM_IMANUFACT,                                                                    \</span><br><span style="color: hsl(0, 100%, 40%);">-                       CONF_USB_CDCD_ACM_IPRODUCT,                                                                     \</span><br><span style="color: hsl(0, 100%, 40%);">-                       CONF_USB_CDCD_ACM_ISERIALNUM,                                                                   \</span><br><span style="color: hsl(0, 100%, 40%);">-                       CONF_USB_CDCD_ACM_BNUMCONFIG)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDCD_ACM_DEV_QUAL_DESC                                                                                         \</span><br><span style="color: hsl(0, 100%, 40%);">-        USB_DEV_QUAL_DESC_BYTES(                                                                                           \</span><br><span style="color: hsl(0, 100%, 40%);">-        CONF_USB_CDCD_ACM_BCDUSB, 0x02, 0x00, 0x00, CONF_USB_CDCD_ACM_BMAXPKSZ0, CONF_USB_CDCD_ACM_BNUMCONFIG)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDCD_ACM_CFG_DESC                                                                                              \</span><br><span style="color: hsl(0, 100%, 40%);">-      USB_CONFIG_DESC_BYTES(67,                                                                                          \</span><br><span style="color: hsl(0, 100%, 40%);">-                          2,                                                                                           \</span><br><span style="color: hsl(0, 100%, 40%);">-                          CONF_USB_CDCD_ACM_BCONFIGVAL,                                                                \</span><br><span style="color: hsl(0, 100%, 40%);">-                          CONF_USB_CDCD_ACM_ICONFIG,                                                                   \</span><br><span style="color: hsl(0, 100%, 40%);">-                          CONF_USB_CDCD_ACM_BMATTRI,                                                                   \</span><br><span style="color: hsl(0, 100%, 40%);">-                          CONF_USB_CDCD_ACM_BMAXPOWER)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDCD_ACM_OTH_SPD_CFG_DESC                                                                                      \</span><br><span style="color: hsl(0, 100%, 40%);">-      USB_OTH_SPD_CFG_DESC_BYTES(67,                                                                                     \</span><br><span style="color: hsl(0, 100%, 40%);">-                               2,                                                                                      \</span><br><span style="color: hsl(0, 100%, 40%);">-                               CONF_USB_CDCD_ACM_BCONFIGVAL,                                                           \</span><br><span style="color: hsl(0, 100%, 40%);">-                               CONF_USB_CDCD_ACM_ICONFIG,                                                              \</span><br><span style="color: hsl(0, 100%, 40%);">-                               CONF_USB_CDCD_ACM_BMATTRI,                                                              \</span><br><span style="color: hsl(0, 100%, 40%);">-                               CONF_USB_CDCD_ACM_BMAXPOWER)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDCD_ACM_COMM_IFACE_DESCES                                                                                     \</span><br><span style="color: hsl(0, 100%, 40%);">- USB_IFACE_DESC_BYTES(CONF_USB_CDCD_ACM_COMM_BIFCNUM,                                                               \</span><br><span style="color: hsl(0, 100%, 40%);">-                         CONF_USB_CDCD_ACM_COMM_BALTSET,                                                               \</span><br><span style="color: hsl(0, 100%, 40%);">-                         1,                                                                                            \</span><br><span style="color: hsl(0, 100%, 40%);">-                         0x2,                                                                                          \</span><br><span style="color: hsl(0, 100%, 40%);">-                         0x2,                                                                                          \</span><br><span style="color: hsl(0, 100%, 40%);">-                         0x0,                                                                                          \</span><br><span style="color: hsl(0, 100%, 40%);">-                         CONF_USB_CDCD_ACM_COMM_IIFC),                                                                 \</span><br><span style="color: hsl(0, 100%, 40%);">-        USB_CDC_HDR_DESC_BYTES(0x1001), USB_CDC_CALL_MGMT_DESC_BYTES(0x01, 0x00), USB_CDC_ACM_DESC_BYTES(0x02),        \</span><br><span style="color: hsl(0, 100%, 40%);">-        USB_CDC_UNION_DESC_BYTES(CONF_USB_CDCD_ACM_COMM_BIFCNUM, 0x01),                                                \</span><br><span style="color: hsl(0, 100%, 40%);">-        USB_ENDP_DESC_BYTES(CONF_USB_CDCD_ACM_COMM_INT_EPADDR,                                                         \</span><br><span style="color: hsl(0, 100%, 40%);">-                            3,                                                                                         \</span><br><span style="color: hsl(0, 100%, 40%);">-                            CONF_USB_CDCD_ACM_COMM_INT_MAXPKSZ,                                                        \</span><br><span style="color: hsl(0, 100%, 40%);">-                            CONF_USB_CDCD_ACM_COMM_INT_INTERVAL)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDCD_ACM_DATA_IFACE_DESCES                                                                                     \</span><br><span style="color: hsl(0, 100%, 40%);">-    USB_IFACE_DESC_BYTES(CONF_USB_CDCD_ACM_DATA_BIFCNUM,                                                               \</span><br><span style="color: hsl(0, 100%, 40%);">-                         CONF_USB_CDCD_ACM_DATA_BALTSET,                                                               \</span><br><span style="color: hsl(0, 100%, 40%);">-                         2,                                                                                            \</span><br><span style="color: hsl(0, 100%, 40%);">-                         0x0A,                                                                                         \</span><br><span style="color: hsl(0, 100%, 40%);">-                         0x0,                                                                                          \</span><br><span style="color: hsl(0, 100%, 40%);">-                         0x0,                                                                                          \</span><br><span style="color: hsl(0, 100%, 40%);">-                         CONF_USB_CDCD_ACM_DATA_IIFC),                                                                 \</span><br><span style="color: hsl(0, 100%, 40%);">-        USB_ENDP_DESC_BYTES(CONF_USB_CDCD_ACM_DATA_BULKOUT_EPADDR, 2, CONF_USB_CDCD_ACM_DATA_BULKOUT_MAXPKSZ, 0),      \</span><br><span style="color: hsl(0, 100%, 40%);">-        USB_ENDP_DESC_BYTES(CONF_USB_CDCD_ACM_DATA_BULKIN_EPADDR, 2, CONF_USB_CDCD_ACM_DATA_BULKIN_MAXPKSZ, 0)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDCD_ACM_DATA_IFACE_DESCES_HS                                                                                  \</span><br><span style="color: hsl(0, 100%, 40%);">-      USB_IFACE_DESC_BYTES(CONF_USB_CDCD_ACM_DATA_BIFCNUM,                                                               \</span><br><span style="color: hsl(0, 100%, 40%);">-                         CONF_USB_CDCD_ACM_DATA_BALTSET,                                                               \</span><br><span style="color: hsl(0, 100%, 40%);">-                         2,                                                                                            \</span><br><span style="color: hsl(0, 100%, 40%);">-                         0x0A,                                                                                         \</span><br><span style="color: hsl(0, 100%, 40%);">-                         0x0,                                                                                          \</span><br><span style="color: hsl(0, 100%, 40%);">-                         0x0,                                                                                          \</span><br><span style="color: hsl(0, 100%, 40%);">-                         CONF_USB_CDCD_ACM_DATA_IIFC),                                                                 \</span><br><span style="color: hsl(0, 100%, 40%);">-        USB_ENDP_DESC_BYTES(CONF_USB_CDCD_ACM_DATA_BULKOUT_EPADDR, 2, CONF_USB_CDCD_ACM_DATA_BULKOUT_MAXPKSZ_HS, 0),   \</span><br><span style="color: hsl(0, 100%, 40%);">-        USB_ENDP_DESC_BYTES(CONF_USB_CDCD_ACM_DATA_BULKIN_EPADDR, 2, CONF_USB_CDCD_ACM_DATA_BULKIN_MAXPKSZ_HS, 0)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDCD_ACM_STR_DESCES                                                                                            \</span><br><span style="color: hsl(0, 100%, 40%);">-   CONF_USB_CDCD_ACM_LANGID_DESC                                                                                      \</span><br><span style="color: hsl(0, 100%, 40%);">-    CONF_USB_CDCD_ACM_IMANUFACT_STR_DESC                                                                               \</span><br><span style="color: hsl(0, 100%, 40%);">-    CONF_USB_CDCD_ACM_IPRODUCT_STR_DESC                                                                                \</span><br><span style="color: hsl(0, 100%, 40%);">-    CONF_USB_CDCD_ACM_ISERIALNUM_STR_DESC                                                                              \</span><br><span style="color: hsl(0, 100%, 40%);">-    CONF_USB_CDCD_ACM_ICONFIG_STR_DESC</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/** USB Device descriptors and configuration descriptors */</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDCD_ACM_DESCES_LS_FS                                                                                          \</span><br><span style="color: hsl(0, 100%, 40%);">-   CDCD_ACM_DEV_DESC, CDCD_ACM_CFG_DESC, CDCD_ACM_COMM_IFACE_DESCES, CDCD_ACM_DATA_IFACE_DESCES, CDCD_ACM_STR_DESCES</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDCD_ACM_HS_DESCES_LS_FS                                                                                       \</span><br><span style="color: hsl(0, 100%, 40%);">-       CDCD_ACM_DEV_DESC, CDCD_ACM_DEV_QUAL_DESC, CDCD_ACM_CFG_DESC, CDCD_ACM_COMM_IFACE_DESCES,                          \</span><br><span style="color: hsl(0, 100%, 40%);">-        CDCD_ACM_DATA_IFACE_DESCES, CDCD_ACM_OTH_SPD_CFG_DESC, CDCD_ACM_COMM_IFACE_DESCES,                             \</span><br><span style="color: hsl(0, 100%, 40%);">-        CDCD_ACM_DATA_IFACE_DESCES_HS, CDCD_ACM_STR_DESCES</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDCD_ACM_HS_DESCES_HS                                                                                          \</span><br><span style="color: hsl(0, 100%, 40%);">-  CDCD_ACM_CFG_DESC, CDCD_ACM_COMM_IFACE_DESCES, CDCD_ACM_DATA_IFACE_DESCES_HS, CDCD_ACM_OTH_SPD_CFG_DESC,           \</span><br><span style="color: hsl(0, 100%, 40%);">-        CDCD_ACM_COMM_IFACE_DESCES, CDCD_ACM_DATA_IFACE_DESCES</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#endif /* USBDF_CDC_ACM_DESC_H_ */</span><br><span>diff --git a/usb/class/cdc/usb_protocol_cdc.h b/usb/class/cdc/usb_protocol_cdc.h</span><br><span>deleted file mode 100644</span><br><span>index 29d882a..0000000</span><br><span>--- a/usb/class/cdc/usb_protocol_cdc.h</span><br><span>+++ /dev/null</span><br><span>@@ -1,426 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \file</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief USB Communication Device Class (CDC) protocol definitions</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \asf_license_start</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \page License</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Subject to your compliance with these terms, you may use Microchip</span><br><span style="color: hsl(0, 100%, 40%);">- * software and any derivatives exclusively with Microchip products.</span><br><span style="color: hsl(0, 100%, 40%);">- * It is your responsibility to comply with third party license terms applicable</span><br><span style="color: hsl(0, 100%, 40%);">- * to your use of third party software (including open source software) that</span><br><span style="color: hsl(0, 100%, 40%);">- * may accompany Microchip software.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES,</span><br><span style="color: hsl(0, 100%, 40%);">- * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,</span><br><span style="color: hsl(0, 100%, 40%);">- * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,</span><br><span style="color: hsl(0, 100%, 40%);">- * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE</span><br><span style="color: hsl(0, 100%, 40%);">- * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL</span><br><span style="color: hsl(0, 100%, 40%);">- * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE</span><br><span style="color: hsl(0, 100%, 40%);">- * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE</span><br><span style="color: hsl(0, 100%, 40%);">- * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.  TO THE FULLEST EXTENT</span><br><span style="color: hsl(0, 100%, 40%);">- * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY</span><br><span style="color: hsl(0, 100%, 40%);">- * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,</span><br><span style="color: hsl(0, 100%, 40%);">- * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \asf_license_stop</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * Support and FAQ: visit <a href="https://www.microchip.com/support/">Microchip Support</a></span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-#ifndef _USB_PROTOCOL_CDC_H_</span><br><span style="color: hsl(0, 100%, 40%);">-#define _USB_PROTOCOL_CDC_H_</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include "usb_includes.h"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \ingroup usb_protocol_group</span><br><span style="color: hsl(0, 100%, 40%);">- * \defgroup cdc_protocol_group Communication Device Class Definitions</span><br><span style="color: hsl(0, 100%, 40%);">- * @{</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \name Possible values of class</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_CLASS_DEVICE 0x02 //!< USB Communication Device Class</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_CLASS_COMM 0x02   //!< CDC Communication Class Interface</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_CLASS_DATA 0x0A   //!< CDC Data Class Interface</span><br><span style="color: hsl(0, 100%, 40%);">-//@}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name USB CDC Subclass IDs</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SUBCLASS_DLCM 0x01 //!< Direct Line Control Model</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SUBCLASS_ACM 0x02  //!< Abstract Control Model</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SUBCLASS_TCM 0x03  //!< Telephone Control Model</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SUBCLASS_MCCM 0x04 //!< Multi-Channel Control Model</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SUBCLASS_CCM 0x05  //!< CAPI Control Model</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SUBCLASS_ETH 0x06  //!< Ethernet Networking Control Model</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SUBCLASS_ATM 0x07  //!< ATM Networking Control Model</span><br><span style="color: hsl(0, 100%, 40%);">-//@}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name USB CDC Communication Interface Protocol IDs</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_PROTOCOL_V25TER 0x01 //!< Common AT commands</span><br><span style="color: hsl(0, 100%, 40%);">-//@}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name USB CDC Data Interface Protocol IDs</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_PROTOCOL_I430 0x30   //!< ISDN BRI</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_PROTOCOL_HDLC 0x31   //!< HDLC</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_PROTOCOL_TRANS 0x32  //!< Transparent</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_PROTOCOL_Q921M 0x50  //!< Q.921 management protocol</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_PROTOCOL_Q921 0x51   //!< Q.931 [sic] Data link protocol</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_PROTOCOL_Q921TM 0x52 //!< Q.921 TEI-multiplexor</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_PROTOCOL_V42BIS 0x90 //!< Data compression procedures</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_PROTOCOL_Q931 0x91   //!< Euro-ISDN protocol control</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_PROTOCOL_V120 0x92   //!< V.24 rate adaption to ISDN</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_PROTOCOL_CAPI20 0x93 //!< CAPI Commands</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_PROTOCOL_HOST 0xFD   //!< Host based driver</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Describes the Protocol Unit Functional Descriptors [sic]</span><br><span style="color: hsl(0, 100%, 40%);">- * on Communication Class Interface</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_PROTOCOL_PUFD 0xFE</span><br><span style="color: hsl(0, 100%, 40%);">-//@}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name USB CDC Functional Descriptor Types</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_CS_INTERFACE 0x24 //!< Interface Functional Descriptor</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_CS_ENDPOINT 0x25  //!< Endpoint Functional Descriptor</span><br><span style="color: hsl(0, 100%, 40%);">-//@}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name USB CDC Functional Descriptor Subtypes</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SCS_HEADER 0x00    //!< Header Functional Descriptor</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SCS_CALL_MGMT 0x01 //!< Call Management</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SCS_ACM 0x02       //!< Abstract Control Management</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SCS_UNION 0x06     //!< Union Functional Descriptor</span><br><span style="color: hsl(0, 100%, 40%);">-//@}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name USB CDC Request IDs</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SEND_ENCAPSULATED_COMMAND 0x00</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_GET_ENCAPSULATED_RESPONSE 0x01</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_COMM_FEATURE 0x02</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_GET_COMM_FEATURE 0x03</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_CLEAR_COMM_FEATURE 0x04</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_AUX_LINE_STATE 0x10</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_HOOK_STATE 0x11</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_PULSE_SETUP 0x12</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SEND_PULSE 0x13</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_PULSE_TIME 0x14</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_RING_AUX_JACK 0x15</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_LINE_CODING 0x20</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_GET_LINE_CODING 0x21</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_CONTROL_LINE_STATE 0x22</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SEND_BREAK 0x23</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_RINGER_PARMS 0x30</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_GET_RINGER_PARMS 0x31</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_OPERATION_PARMS 0x32</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_GET_OPERATION_PARMS 0x33</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_LINE_PARMS 0x34</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_GET_LINE_PARMS 0x35</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_DIAL_DIGITS 0x36</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_UNIT_PARAMETER 0x37</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_GET_UNIT_PARAMETER 0x38</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_CLEAR_UNIT_PARAMETER 0x39</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_GET_PROFILE 0x3A</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_ETHERNET_MULTICAST_FILTERS 0x40</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_ETHERNET_POWER_MANAGEMENT_PATTERNFILTER 0x41</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_GET_ETHERNET_POWER_MANAGEMENT_PATTERNFILTER 0x42</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_ETHERNET_PACKET_FILTER 0x43</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_GET_ETHERNET_STATISTIC 0x44</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_ATM_DATA_FORMAT 0x50</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_GET_ATM_DEVICE_STATISTICS 0x51</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_SET_ATM_DEFAULT_VC 0x52</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_GET_ATM_VC_STATISTICS 0x53</span><br><span style="color: hsl(0, 100%, 40%);">-// Added bNotification codes according cdc spec 1.1 chapter 6.3</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_NOTIFY_RING_DETECT 0x09</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_NOTIFY_SERIAL_STATE 0x20</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_NOTIFY_CALL_STATE_CHANGE 0x28</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_REQ_CDC_NOTIFY_LINE_STATE_CHANGE 0x29</span><br><span style="color: hsl(0, 100%, 40%);">-//@}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * Need to pack structures tightly, or the compiler might insert padding</span><br><span style="color: hsl(0, 100%, 40%);">- * and violate the spec-mandated layout.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-COMPILER_PACK_SET(1)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name USB CDC Descriptors</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! CDC Header Functional Descriptor</span><br><span style="color: hsl(0, 100%, 40%);">-typedef struct usb_cdc_hdr_desc {</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t bFunctionLength;</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t bDescriptorType;</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t bDescriptorSubtype;</span><br><span style="color: hsl(0, 100%, 40%);">-     le16_t  bcdCDC;</span><br><span style="color: hsl(0, 100%, 40%);">-} usb_cdc_hdr_desc_t;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_CDC_HDR_DESC_LEN 5</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_CDC_HDR_DESC_BYTES(bcdCDC)                                                                                 \</span><br><span style="color: hsl(0, 100%, 40%);">-      USB_CDC_HDR_DESC_LEN,                  /* bFunctionLength */                                                       \</span><br><span style="color: hsl(0, 100%, 40%);">-        CDC_CS_INTERFACE,                  /* bDescriptorType */                                                       \</span><br><span style="color: hsl(0, 100%, 40%);">-        CDC_SCS_HEADER,                    /* bDescriptorSubtype */                                                    \</span><br><span style="color: hsl(0, 100%, 40%);">-        LE_BYTE0(bcdCDC), LE_BYTE1(bcdCDC) /* bcdCDC */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! CDC Call Management Functional Descriptor</span><br><span style="color: hsl(0, 100%, 40%);">-typedef struct usb_cdc_call_mgmt_desc {</span><br><span style="color: hsl(0, 100%, 40%);">- uint8_t bFunctionLength;</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t bDescriptorType;</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t bDescriptorSubtype;</span><br><span style="color: hsl(0, 100%, 40%);">-     uint8_t bmCapabilities;</span><br><span style="color: hsl(0, 100%, 40%);">- uint8_t bDataInterface;</span><br><span style="color: hsl(0, 100%, 40%);">-} usb_cdc_call_mgmt_desc_t;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_CDC_CALL_MGMT_DESC_LEN 5</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_CDC_CALL_MGMT_DESC_BYTES(bmCapabilities, bDataInterface)                                                   \</span><br><span style="color: hsl(0, 100%, 40%);">-  USB_CDC_CALL_MGMT_DESC_LEN, /* bFunctionLength */                                                                  \</span><br><span style="color: hsl(0, 100%, 40%);">-        CDC_CS_INTERFACE,       /* bDescriptorType */                                                                  \</span><br><span style="color: hsl(0, 100%, 40%);">-        CDC_SCS_CALL_MGMT,      /* bDescriptorSubtype */                                                               \</span><br><span style="color: hsl(0, 100%, 40%);">-        bmCapabilities, bDataInterface</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! CDC ACM Functional Descriptor</span><br><span style="color: hsl(0, 100%, 40%);">-typedef struct usb_cdc_acm_desc {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t bFunctionLength;</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t bDescriptorType;</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t bDescriptorSubtype;</span><br><span style="color: hsl(0, 100%, 40%);">-     uint8_t bmCapabilities;</span><br><span style="color: hsl(0, 100%, 40%);">-} usb_cdc_acm_desc_t;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_CDC_ACM_DESC_LEN 4</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_CDC_ACM_DESC_BYTES(bmCapabilities)                                                                         \</span><br><span style="color: hsl(0, 100%, 40%);">-      USB_CDC_ACM_DESC_LEN, /* bFunctionLength */                                                                        \</span><br><span style="color: hsl(0, 100%, 40%);">-        CDC_CS_INTERFACE, /* bDescriptorType */                                                                        \</span><br><span style="color: hsl(0, 100%, 40%);">-        CDC_SCS_ACM,      /* bDescriptorSubType */                                                                     \</span><br><span style="color: hsl(0, 100%, 40%);">-        bmCapabilities</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! CDC Union Functional Descriptor</span><br><span style="color: hsl(0, 100%, 40%);">-typedef struct usb_cdc_union_desc {</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t bFunctionLength;</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t bDescriptorType;</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t bDescriptorSubtype;</span><br><span style="color: hsl(0, 100%, 40%);">-     uint8_t bMasterInterface;</span><br><span style="color: hsl(0, 100%, 40%);">-       uint8_t bSlaveInterface0;</span><br><span style="color: hsl(0, 100%, 40%);">-} usb_cdc_union_desc_t;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_CDC_UNION_DESC_LEN 5</span><br><span style="color: hsl(0, 100%, 40%);">-#define USB_CDC_UNION_DESC_BYTES(bMasterInterface, bSlaveInterface)                                                    \</span><br><span style="color: hsl(0, 100%, 40%);">-        USB_CDC_UNION_DESC_LEN, CDC_CS_INTERFACE, CDC_SCS_UNION, bMasterInterface, bSlaveInterface</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name USB CDC Call Management Capabilities</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-//! Device handles call management itself</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_CALL_MGMT_SUPPORTED (1 << 0)</span><br><span style="color: hsl(0, 100%, 40%);">-//! Device can send/receive call management info over a Data Class interface</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_CALL_MGMT_OVER_DCI (1 << 1)</span><br><span style="color: hsl(0, 100%, 40%);">-//@}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name USB CDC ACM Capabilities</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-//! Device supports the request combination of</span><br><span style="color: hsl(0, 100%, 40%);">-//! Set_Comm_Feature, Clear_Comm_Feature, and Get_Comm_Feature.</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_ACM_SUPPORT_FEATURE_REQUESTS (1 << 0)</span><br><span style="color: hsl(0, 100%, 40%);">-//! Device supports the request combination of</span><br><span style="color: hsl(0, 100%, 40%);">-//! Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding,</span><br><span style="color: hsl(0, 100%, 40%);">-//! and the notification Serial_State.</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_ACM_SUPPORT_LINE_REQUESTS (1 << 1)</span><br><span style="color: hsl(0, 100%, 40%);">-//! Device supports the request Send_Break</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_ACM_SUPPORT_SENDBREAK_REQUESTS (1 << 2)</span><br><span style="color: hsl(0, 100%, 40%);">-//! Device supports the notification Network_Connection.</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_ACM_SUPPORT_NOTIFY_REQUESTS (1 << 3)</span><br><span style="color: hsl(0, 100%, 40%);">-//@}</span><br><span style="color: hsl(0, 100%, 40%);">-//@}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name USB CDC line control</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name USB CDC line coding</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! Line Coding structure</span><br><span style="color: hsl(0, 100%, 40%);">-typedef struct usb_cdc_line_coding {</span><br><span style="color: hsl(0, 100%, 40%);">-        le32_t  dwDTERate;   //!< Data rate, bits per second</span><br><span style="color: hsl(0, 100%, 40%);">- uint8_t bCharFormat; //!< 0-1 Stop bit,1-1.5 Stop bits,2-2 Stop bits</span><br><span style="color: hsl(0, 100%, 40%);">- uint8_t bParityType; //!< 0-None,1-Odd,2-Even,3-Mark,4-Space</span><br><span style="color: hsl(0, 100%, 40%);">- uint8_t bDataBits;   //!< 5,6,7,8 or 16</span><br><span style="color: hsl(0, 100%, 40%);">-} usb_cdc_line_coding_t;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! Possible values of bCharFormat</span><br><span style="color: hsl(0, 100%, 40%);">-enum cdc_char_format {</span><br><span style="color: hsl(0, 100%, 40%);">-      CDC_STOP_BITS_1   = 0, //!< 1 stop bit</span><br><span style="color: hsl(0, 100%, 40%);">-       CDC_STOP_BITS_1_5 = 1, //!< 1.5 stop bits</span><br><span style="color: hsl(0, 100%, 40%);">-    CDC_STOP_BITS_2   = 2  //!< 2 stop bits</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! Possible values of bParityType</span><br><span style="color: hsl(0, 100%, 40%);">-enum cdc_parity {</span><br><span style="color: hsl(0, 100%, 40%);">- CDC_PAR_NONE  = 0, //!< No parity</span><br><span style="color: hsl(0, 100%, 40%);">-    CDC_PAR_ODD   = 1, //!< Odd parity</span><br><span style="color: hsl(0, 100%, 40%);">-   CDC_PAR_EVEN  = 2, //!< Even parity</span><br><span style="color: hsl(0, 100%, 40%);">-  CDC_PAR_MARK  = 3, //!< Parity forced to 1 (mark)</span><br><span style="color: hsl(0, 100%, 40%);">-    CDC_PAR_SPACE = 4  //!< Parity forced to 0 (space)</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-//@}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name USB CDC control signals</span><br><span style="color: hsl(0, 100%, 40%);">-//! spec 1.1 chapter 6.2.14</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! Control signal structure</span><br><span style="color: hsl(0, 100%, 40%);">-typedef struct usb_cdc_control_signal {</span><br><span style="color: hsl(0, 100%, 40%);">-  union {</span><br><span style="color: hsl(0, 100%, 40%);">-         le16_t value;</span><br><span style="color: hsl(0, 100%, 40%);">-           struct {</span><br><span style="color: hsl(0, 100%, 40%);">-                        uint8_t dte_present;</span><br><span style="color: hsl(0, 100%, 40%);">-                    uint8_t carrier_ctrl;</span><br><span style="color: hsl(0, 100%, 40%);">-           } modem;</span><br><span style="color: hsl(0, 100%, 40%);">-                struct {</span><br><span style="color: hsl(0, 100%, 40%);">-                        uint8_t DTR : 1; //!< Data Terminal Ready</span><br><span style="color: hsl(0, 100%, 40%);">-                    uint8_t RTS : 1; //!< Request To Send</span><br><span style="color: hsl(0, 100%, 40%);">-                } rs232;</span><br><span style="color: hsl(0, 100%, 40%);">-                struct {</span><br><span style="color: hsl(0, 100%, 40%);">-                        uint8_t s108_2 : 1; //!< V.24 signal 108/2</span><br><span style="color: hsl(0, 100%, 40%);">-                   uint8_t s105 : 1;   //!< V.24 signal 105</span><br><span style="color: hsl(0, 100%, 40%);">-             } v24;</span><br><span style="color: hsl(0, 100%, 40%);">-  };</span><br><span style="color: hsl(0, 100%, 40%);">-} usb_cdc_control_signal_t;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name Possible values in usb_cdc_control_signal_t</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-//! Carrier control for half duplex modems.</span><br><span style="color: hsl(0, 100%, 40%);">-//! This signal corresponds to V.24 signal 105 and RS-232 signal RTS.</span><br><span style="color: hsl(0, 100%, 40%);">-//! The device ignores the value of this bit</span><br><span style="color: hsl(0, 100%, 40%);">-//! when operating in full duplex mode.</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_CTRL_SIGNAL_ACTIVATE_CARRIER (1 << 1)</span><br><span style="color: hsl(0, 100%, 40%);">-//! Indicates to DCE if DTE is present or not.</span><br><span style="color: hsl(0, 100%, 40%);">-//! This signal corresponds to V.24 signal 108/2 and RS-232 signal DTR.</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_CTRL_SIGNAL_DTE_PRESENT (1 << 0)</span><br><span style="color: hsl(0, 100%, 40%);">-//@}</span><br><span style="color: hsl(0, 100%, 40%);">-//@}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name USB CDC notification message</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-typedef struct usb_cdc_notify_msg {</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t bmRequestType;</span><br><span style="color: hsl(0, 100%, 40%);">-  uint8_t bNotification;</span><br><span style="color: hsl(0, 100%, 40%);">-  union {</span><br><span style="color: hsl(0, 100%, 40%);">-         le16_t wValue;</span><br><span style="color: hsl(0, 100%, 40%);">-          struct {</span><br><span style="color: hsl(0, 100%, 40%);">-                        uint8_t low;</span><br><span style="color: hsl(0, 100%, 40%);">-                    uint8_t high;</span><br><span style="color: hsl(0, 100%, 40%);">-           } wValueBytes;</span><br><span style="color: hsl(0, 100%, 40%);">-  };</span><br><span style="color: hsl(0, 100%, 40%);">-      union {</span><br><span style="color: hsl(0, 100%, 40%);">-         le16_t wIndex;</span><br><span style="color: hsl(0, 100%, 40%);">-          struct {</span><br><span style="color: hsl(0, 100%, 40%);">-                        uint8_t low;</span><br><span style="color: hsl(0, 100%, 40%);">-                    uint8_t high;</span><br><span style="color: hsl(0, 100%, 40%);">-           } wIndexBytes;</span><br><span style="color: hsl(0, 100%, 40%);">-  };</span><br><span style="color: hsl(0, 100%, 40%);">-      union {</span><br><span style="color: hsl(0, 100%, 40%);">-         le16_t wLength;</span><br><span style="color: hsl(0, 100%, 40%);">-         struct {</span><br><span style="color: hsl(0, 100%, 40%);">-                        uint8_t low;</span><br><span style="color: hsl(0, 100%, 40%);">-                    uint8_t high;</span><br><span style="color: hsl(0, 100%, 40%);">-           } wLengthBytes;</span><br><span style="color: hsl(0, 100%, 40%);">- };</span><br><span style="color: hsl(0, 100%, 40%);">-} usb_cdc_notify_msg_t;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name USB CDC serial state</span><br><span style="color: hsl(0, 100%, 40%);">-//@{*</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! UART State Bitmap (cdc spec 1.1 chapter 6.3.5)</span><br><span style="color: hsl(0, 100%, 40%);">-typedef union usb_cdc_uart_state {</span><br><span style="color: hsl(0, 100%, 40%);">-        le16_t value;</span><br><span style="color: hsl(0, 100%, 40%);">-   struct {</span><br><span style="color: hsl(0, 100%, 40%);">-                uint8_t bRxCarrier : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-         uint8_t bTxCarrier : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-         uint8_t bBreak : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-             uint8_t bRingSignal : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-                uint8_t bFraming : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-           uint8_t bParity : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            uint8_t bOverRun;</span><br><span style="color: hsl(0, 100%, 40%);">-       } bitmap;</span><br><span style="color: hsl(0, 100%, 40%);">-       struct {</span><br><span style="color: hsl(0, 100%, 40%);">-                uint8_t bDCD : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-               uint8_t bDSR : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-               uint8_t bBreak : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-             uint8_t bRingSignal : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-                uint8_t bFraming : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-           uint8_t bParity : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            uint8_t bOverRun;</span><br><span style="color: hsl(0, 100%, 40%);">-       } rs232;</span><br><span style="color: hsl(0, 100%, 40%);">-        struct {</span><br><span style="color: hsl(0, 100%, 40%);">-                uint8_t bS109 : 1; //!< V.24 signal 109</span><br><span style="color: hsl(0, 100%, 40%);">-              uint8_t bS106 : 1; //!< V.24 signal 106</span><br><span style="color: hsl(0, 100%, 40%);">-              uint8_t bBreak : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-             uint8_t bRingSignal : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-                uint8_t bFraming : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-           uint8_t bParity : 1;</span><br><span style="color: hsl(0, 100%, 40%);">-            uint8_t bOverRun;</span><br><span style="color: hsl(0, 100%, 40%);">-       } v24;</span><br><span style="color: hsl(0, 100%, 40%);">-} usb_cdc_uart_state_t;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! Hardware handshake support (cdc spec 1.1 chapter 6.3.5)</span><br><span style="color: hsl(0, 100%, 40%);">-typedef struct usb_cdc_notify_serial_state {</span><br><span style="color: hsl(0, 100%, 40%);">-    usb_cdc_notify_msg_t     header;</span><br><span style="color: hsl(0, 100%, 40%);">-        union usb_cdc_uart_state state;</span><br><span style="color: hsl(0, 100%, 40%);">-} usb_cdc_notify_serial_state_t;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! \name Possible values in usb_cdc_notify_serial_state_t</span><br><span style="color: hsl(0, 100%, 40%);">-//@{</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SERIAL_STATE_DCD CPU_TO_LE16((1 << 0))</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SERIAL_STATE_DSR CPU_TO_LE16((1 << 1))</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SERIAL_STATE_BREAK CPU_TO_LE16((1 << 2))</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SERIAL_STATE_RING CPU_TO_LE16((1 << 3))</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SERIAL_STATE_FRAMING CPU_TO_LE16((1 << 4))</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SERIAL_STATE_PARITY CPU_TO_LE16((1 << 5))</span><br><span style="color: hsl(0, 100%, 40%);">-#define CDC_SERIAL_STATE_OVERRUN CPU_TO_LE16((1 << 6))</span><br><span style="color: hsl(0, 100%, 40%);">-//@}</span><br><span style="color: hsl(0, 100%, 40%);">-//! @}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! @}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-COMPILER_PACK_RESET()</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-//! @}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Fill a CDC SetLineCoding request</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[out] req   Pointer to the request to fill</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in]  iface Interface Number</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-static inline void usb_fill_SetLineCoding_req(struct usb_req *req, uint8_t iface)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-        req->bmRequestType = 0x21;</span><br><span style="color: hsl(0, 100%, 40%);">-   req->bRequest      = USB_REQ_CDC_SET_LINE_CODING;</span><br><span style="color: hsl(0, 100%, 40%);">-    req->wValue        = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-      req->wIndex        = iface;</span><br><span style="color: hsl(0, 100%, 40%);">-  req->wLength       = sizeof(usb_cdc_line_coding_t);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Fill a CDC SetControlLineState request</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[out] req   Pointer to the request to fill</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in]  iface Interface Number</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in]  ctrl  Control Signal Bitmap</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-static inline void usb_fill_SetControlLineState_req(struct usb_req *req, uint8_t iface, uint16_t ctrl)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-  req->bmRequestType = 0x21;</span><br><span style="color: hsl(0, 100%, 40%);">-   req->bRequest      = USB_REQ_CDC_SET_CONTROL_LINE_STATE;</span><br><span style="color: hsl(0, 100%, 40%);">-     req->wValue        = ctrl;</span><br><span style="color: hsl(0, 100%, 40%);">-   req->wIndex        = iface;</span><br><span style="color: hsl(0, 100%, 40%);">-  req->wLength       = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#endif // _USB_PROTOCOL_CDC_H_</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12509">change 12509</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/12509"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-asf4-dfu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: Ib1735ad4add9278be9a1fb730752377de99c4f4b </div>
<div style="display:none"> Gerrit-Change-Number: 12509 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: Kévin Redon <kredon@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>