﻿<?xml version="1.0" encoding="utf-8"?>

<component_viewer schemaVersion="0.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="Component_Viewer.xsd">
  <component name="USB Device/Host" shortname="USBD/H" version="6.16.1"/>       <!-- name and version of the component  -->

  <typedefs>
    <!-- USB Library Version -->
    <typedef  name="lib_version_t"                info="USB Library Version"    size="4">
      <member name="major"                        type="uint8_t"                offset="0"   info="Major"/>
      <member name="minor"                        type="uint8_t"                offset="1"   info="Minor"/>
      <member name="patch"                        type="uint16_t"               offset="2"   info="Patch"/>
    </typedef>

    <!-- USB Generic Typedefs ************************************************************************************************ -->
    <!-- USB Device Descriptor -->
    <typedef  name="USB_DEVICE_DESCRIPTOR"        info="USB Device Descriptor"  size="18">
      <member name="bLength"                      type="uint8_t"                offset="0"   info="Size of descriptor in bytes"/>
      <member name="bDescriptorType"              type="uint8_t"                offset="1"   info="DEVICE Descriptor Type"/>
      <member name="bcdUSB"                       type="uint16_t"               offset="2"   info="USB Specification Release Number"/>
      <member name="bDeviceClass"                 type="uint8_t"                offset="4"   info="Class code"/>
      <member name="bDeviceSubClass"              type="uint8_t"                offset="5"   info="Subclass code"/>
      <member name="bDeviceProtocol"              type="uint8_t"                offset="6"   info="Protocol code"/>
      <member name="bMaxPacketSize0"              type="uint8_t"                offset="7"   info="Maximum packet size for endpoint zero"/>
      <member name="idVendor"                     type="uint16_t"               offset="8"   info="Vendor ID"/>
      <member name="idProduct"                    type="uint16_t"               offset="10"  info="Product ID"/>
      <member name="bcdDevice"                    type="uint16_t"               offset="12"  info="Device release number"/>
      <member name="iManufacturer"                type="uint8_t"                offset="14"  info="Index of manufacturer string descriptor"/>
      <member name="iProduct"                     type="uint8_t"                offset="15"  info="Index of product string descriptor"/>
      <member name="iSerialNumber"                type="uint8_t"                offset="16"  info="Index of device’s serial number string descriptor"/>
      <member name="bNumConfigurations"           type="uint8_t"                offset="17"  info="Number of possible configurations"/>
    </typedef>

    <!-- USB Configuration Descriptor -->
    <typedef  name="USB_CONFIGURATION_DESCRIPTOR" info="USB Configuration Descriptor" size="9">
      <member name="bLength"                      type="uint8_t"                offset="0"   info="Size of descriptor in bytes"/>
      <member name="bDescriptorType"              type="uint8_t"                offset="1"   info="CONFIGURATION Descriptor Type"/>
      <member name="wTotalLength"                 type="uint16_t"               offset="2"   info="Total length of configuration"/>
      <member name="bNumInterfaces"               type="uint8_t"                offset="4"   info="Number of interfaces"/>
      <member name="bConfigurationValue"          type="uint8_t"                offset="5"   info="Configuration value"/>
      <member name="iConfiguration"               type="uint8_t"                offset="6"   info="Index of configuration string descriptor"/>
      <member name="bmAttributes"                 type="uint8_t"                offset="7"   info="Configuration characteristics"/>
      <member name="bMaxPower"                    type="uint8_t"                offset="8"   info="Maximum power consumption"/>
    </typedef>

    <!-- USB Interface Descriptor -->
    <typedef  name="USB_INTERFACE_DESCRIPTOR"     info="USB Interface Descriptor" size="9">
      <member name="bLength"                      type="uint8_t"                offset="0"   info="Size of descriptor in bytes"/>
      <member name="bDescriptorType"              type="uint8_t"                offset="1"   info="INTERFACE Descriptor Type"/>
      <member name="bInterfaceNumber"             type="uint8_t"                offset="2"   info="Number of this interface"/>
      <member name="bAlternateSetting"            type="uint8_t"                offset="3"   info="Alternate setting value"/>
      <member name="bNumEndpoints"                type="uint8_t"                offset="4"   info="Number of endpoints"/>
      <member name="bInterfaceClass"              type="uint8_t"                offset="5"   info="Class code"/>
      <member name="bInterfaceSubClass"           type="uint8_t"                offset="6"   info="Subclass code"/>
      <member name="bInterfaceProtocol"           type="uint8_t"                offset="7"   info="Protocol code"/>
      <member name="iInterface"                   type="uint8_t"                offset="8"   info="Index of interface string descriptor"/>
    </typedef>

    <!-- USB Endpoint Descriptor -->
    <typedef  name="USB_ENDPOINT_DESCRIPTOR"      info="USB Endpoint Descriptor" size="7">
      <member name="bLength"                      type="uint8_t"                offset="0"   info="Size of descriptor in bytes"/>
      <member name="bDescriptorType"              type="uint8_t"                offset="1"   info="ENDPOINT Descriptor Type"/>
      <member name="bEndpointAddress"             type="uint8_t"                offset="2"   info="Endpoint address"/>
      <member name="bmAttributes"                 type="uint8_t"                offset="3"   info="Endpoint attributes"/>
      <member name="wMaxPacketSize"               type="uint16_t"               offset="4"   info="Maximum packet size"/>
      <member name="bInterval"                    type="uint8_t"                offset="6"   info="Polling interval"/>
    </typedef>

    <!-- USB String Descriptor -->
    <typedef  name="USB_STRING_DESCRIPTOR"        info="USB String Descriptor"  size="4">
      <member name="bLength"                      type="uint8_t"                offset="0"   info="Size of descriptor in bytes"/>
      <member name="bDescriptorType"              type="uint8_t"                offset="1"   info="STRING Descriptor Type"/>
      <member name="bString"                      type="uint16_t"               offset="2"   info="UNICODE encoded string"/>
    </typedef>

    <!-- USB Setup Packet Structure -->
    <typedef name="usb_sp_w0_struct"              info="USB Device Setup Packet (word 0)"    size="4">
      <member name="bmRequestTypeD7"              type="uint8_t"                offset="0">
        <enum name="Host-to-Device"                 value="0x00"/>
        <enum name="Device-to-Host"                 value="0x80"/>
      </member>
      <member name="bmRequestTypeD5_6"            type="uint8_t"                offset="0">
        <enum name="Standard"                       value="0x00"/>
        <enum name="Class"                          value="0x20"/>
        <enum name="Vendor"                         value="0x40"/>
        <enum name="Reserved"                       value="0x60"/>
      </member>
      <member name="bmRequestTypeD0_4"            type="uint8_t"                offset="0">
        <enum name="Device"                         value="0x00"/>
        <enum name="Interface"                      value="0x01"/>
        <enum name="Endpoint"                       value="0x02"/>
        <enum name="Other"                          value="0x03"/>
        <enum name="Reserved"                       value="0x04"/>
      </member>
      <member name="bRequest"                     type="uint8_t"                offset="1">
        <enum name="GET_STATUS"                     value="0"/>
        <enum name="CLEAR_FEATURE"                  value="1"/>
        <enum name="Reserved for future use"        value="2"/>
        <enum name="SET_FEATURE"                    value="3"/>
        <enum name="Reserved for future use 1"      value="4"/>
        <enum name="SET_ADDRESS"                    value="5"/>
        <enum name="GET_DESCRIPTOR"                 value="6"/>
        <enum name="SET_DESCRIPTOR"                 value="7"/>
        <enum name="GET_CONFIGURATION"              value="8"/>
        <enum name="SET_CONFIGURATION"              value="9"/>
        <enum name="GET_INTERFACE"                  value="10"/>
        <enum name="SET_INTERFACE"                  value="11"/>
        <enum name="SYNCH_FRAME"                    value="12"/>
      </member>
      <member name="wValueL"                      type="uint8_t"                offset="2"/>
      <member name="wValueH"                      type="uint8_t"                offset="3">
        <enum name="DEVICE"                         value="1"/>
        <enum name="CONFIGURATION"                  value="2"/>
        <enum name="STRING"                         value="3"/>
        <enum name="INTERFACE"                      value="4"/>
        <enum name="ENDPOINT"                       value="5"/>
        <enum name="DEVICE_QUALIFIER"               value="6"/>
        <enum name="OTHER_SPEED_CONFIGURATION"      value="7"/>
        <enum name="INTERFACE_POWER"                value="8"/>
      </member>
    </typedef>
    <typedef name="usb_sp_w1_struct"              info="USB Device Setup Packet (word 1)"    size="4">
      <member name="wIndex"                       type="uint16_t"               offset="0"/>
      <member name="wLength"                      type="uint16_t"               offset="2"/>
    </typedef>

    <!-- USB Endpoint Type enumerator -->
    <typedef name="usbEpType_enum"                info="USB endpoint type"      size="1">
      <member name="value"                        type="uint8_t"                offset="0">
        <enum name="Control"                        value="0"                   info="Control Endpoint type"/>
        <enum name="Isochronous"                    value="1"                   info="Isochronous Endpoint type"/>
        <enum name="Bulk"                           value="2"                   info="Bulk Endpoint type"/>
        <enum name="Interrupt"                      value="3"                   info="Interrupt Endpoint type"/>
      </member>
    </typedef>

    <!-- USB Status enumerator -->
    <typedef name="usbStatus_enum"                info="USB status"             size="1">
      <member name="value"                        type="uint8_t"                offset="0">
        <enum name="usbOK"                          value="0"                   info="success"/>
        <enum name="usbTimeout"                     value="1"                   info="timeout"/>
        <enum name="usbInvalidParameter"            value="2"                   info="invalid parameter"/>
        <enum name="usbThreadError"                 value="16"                  info="thread error"/>
        <enum name="usbTimerError"                  value="17"                  info="timer error"/>
        <enum name="usbSemaphoreError"              value="18"                  info="semaphore error"/>
        <enum name="usbMutexError"                  value="19"                  info="mutex error"/>
        <enum name="usbControllerError"             value="32"                  info="controller number"/>
        <enum name="usbDeviceError"                 value="33"                  info="device number error"/>
        <enum name="usbDriverError"                 value="34"                  info="driver error"/>
        <enum name="usbDriverBusy"                  value="35"                  info="busy status"/>
        <enum name="usbMemoryError"                 value="36"                  info="memory management error"/>
        <enum name="usbNotConfigured"               value="37"                  info="unconfigured device status"/>
        <enum name="usbClassErrorADC"               value="38"                  info="ADC instance error"/>
        <enum name="usbClassErrorCDC"               value="39"                  info="CDC instance error"/>
        <enum name="usbClassErrorHID"               value="40"                  info="HID instance error"/>
        <enum name="usbClassErrorMSC"               value="41"                  info="MSC instance error"/>
        <enum name="usbClassErrorCustom"            value="42"                  info="Custom Class instance error"/>
        <enum name="usbUnsupportedClass"            value="43"                  info="unsupported class status"/>
        <enum name="usbTransferStall"               value="64"                  info="transfer stall"/>
        <enum name="usbTransferError"               value="65"                  info="transfer error"/>
        <enum name="usbUnknownError"                value="255"                 info="unspecified error"/>
      </member>
    </typedef>

    <!-- USB Driver status enumerator -->
    <typedef name="usbDriver_enum"                info="USB driver status"      size="1">
      <member name="value"                        type="int8_t"                 offset="0">
        <enum name="ARM_DRIVER_OK"                  value="0"                   info="Operation succeeded"/>
        <enum name="ARM_DRIVER_ERROR"               value="-1"                  info="Unspecified error"/>
        <enum name="ARM_DRIVER_ERROR_BUSY"          value="-2"                  info="Driver is busy"/>
        <enum name="ARM_DRIVER_ERROR_TIMEOUT"       value="-3"                  info="Timeout occurred"/>
        <enum name="ARM_DRIVER_ERROR_UNSUPPORTED"   value="-4"                  info="Operation not supported"/>
        <enum name="ARM_DRIVER_ERROR_PARAMETER"     value="-5"                  info="Parameter error"/>
        <enum name="ARM_DRIVER_ERROR_SPECIFIC"      value="-6"                  info="Start of driver specific errors"/>
      </member>
    </typedef>

    <!-- USB Driver bus speed enumerator -->
    <typedef name="usbDriver_speed_enum"          info="USB speed"              size="1">
      <member name="speed"                        type="uint8_t"                offset="0">
        <enum name="LS"                             value="0"/>
        <enum name="FS"                             value="1"/>
        <enum name="HS"                             value="2"/>
        <enum name="unknown speed"                  value="3"/>
      </member>
    </typedef>

    <!-- USB Driver status enumerator -->
    <typedef name="usbDriver_PowCtrl_enum"        info="USB driver power control state"      size="1">
      <member name="value"                        type="uint8_t"                offset="0">
        <enum name="ARM_POWER_OFF"                  value="0"                   info="Power off"/>
        <enum name="ARM_POWER_LOW"                  value="1"                   info="Low-power"/>
        <enum name="ARM_POWER_FULL"                 value="2"                   info="Power full"/>
      </member>
    </typedef>

    <!-- Event Recorder Parameter Encoded 32-bit Structure -->
    <typedef name="4BY"                           info="USB Device 32-bit parameter structure" size="4">
      <member name="DB0"                          type="uint16_t"               offset="0"/>
      <member name="B0"                           type="uint8_t"                offset="0"/>
      <member name="B1"                           type="uint8_t"                offset="1"/>
      <member name="DB1"                          type="uint16_t"               offset="2"/>
      <member name="B2"                           type="uint8_t"                offset="2"/>
      <member name="B3"                           type="uint8_t"                offset="3"/>
    </typedef>

    <!-- Generic Boolean Enumerator -->
    <typedef name="usb_bool_enum"                 info="USB boolean"            size="1">
      <member name="true_false"                   type="uint8_t"                offset="0">
        <enum name="false"                          value="0"/>
        <enum name="true"                           value="1"/>
      </member>
      <member name="active"                       type="uint8_t"                offset="0">
        <enum name="inactive"                       value="0"/>
        <enum name="active"                         value="1"/>
      </member>
      <member name="on_off"                       type="uint8_t"                offset="0">
        <enum name="off"                            value="0"/>
        <enum name="on"                             value="1"/>
      </member>
    </typedef>

    <!-- USB Device Driver signal device events enumerator -->
    <typedef name="usbdDriver_SigDevEvt_enum"     info="USB Device Driver signal device events" size="1">
      <member name="value"                        type="uint8_t"                offset="0">
        <enum name="ARM_USBD_EVENT_VBUS_ON"         value="1"                   info="VBUS On"/>
        <enum name="ARM_USBD_EVENT_VBUS_OFF"        value="2"                   info="VBUS Off"/>
        <enum name="ARM_USBD_EVENT_RESET"           value="4"                   info="Reset occurred"/>
        <enum name="ARM_USBD_EVENT_HIGH_SPEED"      value="8"                   info="Switch to High Speed occurred"/>
        <enum name="ARM_USBD_EVENT_SUSPEND"         value="16"                  info="Suspend occurred"/>
        <enum name="ARM_USBD_EVENT_RESUME"          value="32"                  info="Resume occurred"/>
      </member>
    </typedef>

    <!-- USB Device Driver signal endpoint events enumerator -->
    <typedef name="usbdDriver_SigEpEvt_enum"      info="USB Device Driver signal endpoint events" size="1">
      <member name="value"                        type="uint8_t"                offset="0">
        <enum name="ARM_USBD_EVENT_SETUP"           value="1"                   info="SETUP Packet"/>
        <enum name="ARM_USBD_EVENT_OUT"             value="2"                   info="OUT Packet(s)"/>
        <enum name="ARM_USBD_EVENT_IN"              value="4"                   info="IN Packet(s)"/>
      </member>
    </typedef>

    <!-- USB Device Custom Device/Class status type enumerator -->
    <typedef name="usbdRequestStatus"             info="USB Custom Device/Class status type" size="1">
      <member name="value"                        type="uint8_t"                offset="0">
        <enum name="usbdRequestNotProcessed"        value="0"                   info="Request was not processed"/>
        <enum name="usbdRequestOK"                  value="1"                   info="Request was processed"/>
        <enum name="usbdRequestStall"               value="2"                   info="Request should be stalled"/>
        <enum name="usbdRequestNAK"                 value="3"                   info="Request should be NAKed"/>
      </member>
    </typedef>

    <!-- USB Device HID report type enumerator -->
    <typedef name="usbdHID_rtype_enum"            info="USB Device HID report type" size="1">
      <member name="value"                        type="uint8_t"                offset="0">
        <enum name="HID_REPORT_INPUT"               value="1"                   info="Input report request"/>
        <enum name="HID_REPORT_OUTPUT"              value="2"                   info="Output report request"/>
        <enum name="HID_REPORT_FEATURE"             value="3"                   info="Feature report request"/>
      </member>
    </typedef>

    <!-- USB Device HID request type enumerator -->
    <typedef name="usbdHID_req_enum"            info="USB Device HID request type" size="1">
      <member name="value"                        type="uint8_t"                offset="0">
        <enum name="USBD_HID_REQ_EP_CTRL"          value="0"                   info="Request from control endpoint"/>
        <enum name="USBD_HID_REQ_EP_INT"           value="1"                   info="Request from interrupt endpoint"/>
        <enum name="USBD_HID_REQ_PERIOD_UPDATE"    value="2"                   info="Request from periodic update"/>
      </member>
    </typedef>

    <!-- USB Device MSC status code enumerator -->
    <typedef name="usbdMSC_status_enum"           info="USB Device MSC status code" size="1">
      <member name="value"                        type="uint8_t"                offset="0">
        <enum name="Ok"                             value="0"                   info="Ok"/>
        <enum name="No media"                       value="1"                   info="Not Ready - medium not present"/>
        <enum name="Write error"                    value="2"                   info="Medium Error - write fault"/>
        <enum name="Read error"                     value="3"                   info="Medium Error - unrecoverable read error"/>
        <enum name="Illegal command"                value="4"                   info="Illegal Request - invalid/unsupported command code"/>
        <enum name="Illegal CDB"                    value="5"                   info="Illegal Request - invalid field in CDB (Command Descriptor Block)"/>
        <enum name="Illegal parameter"              value="6"                   info="Illegal Request - invalid parameter value"/>
        <enum name="Media write protected"          value="7"                   info="Write Protect - command not allowed"/>
      </member>
    </typedef>

    <!-- USB Host Driver signal port events enumerator -->
    <typedef name="usbhDriver_SigPortEvt_enum"    info="USB Host Driver signal port events" size="4">
      <member name="value"                        type="uint32_t"               offset="0">
        <enum name="ARM_USBH_EVENT_CONNECT"         value="1"                   info="Device connect"/>
        <enum name="ARM_USBH_EVENT_DISCONNECT"      value="2"                   info="Device disconnect"/>
        <enum name="ARM_USBH_EVENT_OVERCURRENT"     value="4"                   info="Overcurrent occurred"/>
        <enum name="ARM_USBH_EVENT_RESET"           value="8"                   info="Bus reset finished"/>
        <enum name="ARM_USBH_EVENT_SUSPEND"         value="16"                  info="Bus suspend activated"/>
        <enum name="ARM_USBH_EVENT_RESUME"          value="32"                  info="Bus resume activated"/>
        <enum name="ARM_USBH_EVENT_REMOTE_WAKEUP"   value="64"                  info="Remote wakeup occurred"/>
      </member>
    </typedef>

    <!-- USB Host Driver signal pipe events enumerator -->
    <typedef name="usbhDriver_SigPipeEvt_enum"    info="USB Host Driver signal pipe events" size="1">
      <member name="value"                        type="uint8_t"                offset="0">
        <enum name="ARM_USBH_EVENT_TRANSFER_COMPLETE" value="1"                   info="Transfer completed"/>
        <enum name="ARM_USBH_EVENT_HANDSHAKE_NAK"     value="2"                   info="Handshake NAK received"/>
        <enum name="ARM_USBH_EVENT_HANDSHAKE_NYET"    value="4"                   info="Handshake NYET received"/>
        <enum name="ARM_USBH_EVENT_HANDSHAKE_MDATA"   value="8"                   info="Handshake MDATA received)"/>
        <enum name="ARM_USBH_EVENT_HANDSHAKE_STALL"   value="16"                  info="Handshake STALL received"/>
        <enum name="ARM_USBH_EVENT_HANDSHAKE_ERR"     value="32"                  info="Handshake ERR received"/>
        <enum name="ARM_USBH_EVENT_BUS_ERROR"         value="64"                  info="Bus error occurred"/>
      </member>
    </typedef>

    <!-- USB Host Driver signal port events enumerator -->
    <typedef name="usbhNotify_enum"               info="USB Host notification events" size="1">
      <member name="value"                        type="uint8_t"                offset="0">
        <enum name="USBH_NOTIFY_CONNECT"               value="0"                  info="Port connection happened"/>
        <enum name="USBH_NOTIFY_DISCONNECT"            value="1"                  info="Port disconnection happened"/>
        <enum name="USBH_NOTIFY_OVERCURRENT"           value="2"                  info="Port overcurrent happened"/>
        <enum name="USBH_NOTIFY_REMOTE_WAKEUP"         value="3"                  info="Port remote wakeup signaling happened"/>
        <enum name="USBH_NOTIFY_READY"                 value="4"                  info="Device was successfully enumerated, initialized and is ready for communication"/>
        <enum name="USBH_NOTIFY_UNKNOWN_DEVICE"        value="5"                  info="Device was successfully enumerated but there is no driver for it"/>
        <enum name="USBH_NOTIFY_INSUFFICIENT_POWER"    value="6"                  info="Device requires more power consumption than available"/>
        <enum name="USBH_NOTIFY_CONFIGURATION_FAILED"  value="7"                  info="Device was not successfully configured (not enough resources)"/>
        <enum name="USBH_NOTIFY_INITIALIZATION_FAILED" value="8"                  info="Device was not successfully initialized"/>
      </member>
    </typedef>

    <!-- USB Device Typedefs ************************************************************************************************* -->
    <!-- USB Device Runtime Structure -->
    <typedef  name="usbd_data_t"                  info="USB Device Runtime Structure" size="176">
      <member name="init"                         type="uint8_t"                offset="0"   info="Initialized status"/>
      <member name="device_address"               type="uint8_t"                offset="1"   info="Device address"/>
      <member name="device_status"                type="uint16_t"               offset="2"   info="Device status"/>
      <member name="configuration"                type="uint8_t"                offset="4"   info="Active configuration">
        <enum name="Unconfigured"                   value="0"                                  info="Unconfigured device"/>
        <enum name="Configured"                     value="1"                                  info="Configured device"/>
      </member>
      <member name="interface"                    type="uint8_t"                offset="5"   info="Active interface"/>
      <member name="endpoint_mask"                type="uint32_t"               offset="8"   info="Mask containing active endpoints"/>
      <member name="endpoint_halt"                type="uint32_t"               offset="12"  info="Mask containing halted endpoints"/>
      <member name="endpoint_no_halt_clr"         type="uint32_t"               offset="16"  info="Mask containing endpoints on which halt clear is prevented"/>
      <member name="ep0_out_active"               type="uint32_t"               offset="20"  info="Endpoint 0 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep1_out_active"               type="uint32_t"               offset="24"  info="Endpoint 1 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep2_out_active"               type="uint32_t"               offset="28"  info="Endpoint 2 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep3_out_active"               type="uint32_t"               offset="32"  info="Endpoint 3 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep4_out_active"               type="uint32_t"               offset="36"  info="Endpoint 4 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep5_out_active"               type="uint32_t"               offset="40"  info="Endpoint 5 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep6_out_active"               type="uint32_t"               offset="44"  info="Endpoint 6 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep7_out_active"               type="uint32_t"               offset="48"  info="Endpoint 7 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep8_out_active"               type="uint32_t"               offset="52"  info="Endpoint 8 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep9_out_active"               type="uint32_t"               offset="56"  info="Endpoint 9 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep10_out_active"              type="uint32_t"               offset="60"  info="Endpoint 10 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep11_out_active"              type="uint32_t"               offset="64"  info="Endpoint 11 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep12_out_active"              type="uint32_t"               offset="68"  info="Endpoint 12 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep13_out_active"              type="uint32_t"               offset="72"  info="Endpoint 13 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep14_out_active"              type="uint32_t"               offset="76"  info="Endpoint 14 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep15_out_active"              type="uint32_t"               offset="80"  info="Endpoint 15 OUT active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>

      <member name="ep0_in_active"                type="uint32_t"               offset="84"  info="Endpoint 0 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep1_in_active"                type="uint32_t"               offset="88"  info="Endpoint 1 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep2_in_active"                type="uint32_t"               offset="92"  info="Endpoint 2 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep3_in_active"                type="uint32_t"               offset="96"  info="Endpoint 3 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep4_in_active"                type="uint32_t"               offset="100" info="Endpoint 4 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep5_in_active"                type="uint32_t"               offset="104" info="Endpoint 5 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep6_in_active"                type="uint32_t"               offset="108" info="Endpoint 6 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep7_in_active"                type="uint32_t"               offset="112" info="Endpoint 7 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep8_in_active"                type="uint32_t"               offset="116" info="Endpoint 8 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep9_in_active"                type="uint32_t"               offset="120" info="Endpoint 9 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep10_in_active"               type="uint32_t"               offset="124" info="Endpoint 10 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep11_in_active"               type="uint32_t"               offset="128" info="Endpoint 11 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep12_in_active"               type="uint32_t"               offset="132" info="Endpoint 12 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep13_in_active"               type="uint32_t"               offset="136" info="Endpoint 13 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep14_in_active"               type="uint32_t"               offset="140" info="Endpoint 14 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="ep15_in_active"               type="uint32_t"               offset="144" info="Endpoint 15 IN active">
        <enum name="Inactive"                       value="0"                                  info="Inactive transfer on Endpoint"/>
        <enum name="Active"                         value="1"                                  info="Active transfer on Endpoint"/>
      </member>
      <member name="num_interfaces"               type="uint8_t"                offset="148" info="Number of available interfaces"/>
      <member name="high_speed"                   type="uint8_t"                offset="149" info="Information if device is in high speed">
        <enum name="LS_FS"                          value="0"                                  info="Low/full speed"/>
        <enum name="HS"                             value="1"                                  info="High speed"/>
      </member>                                                               
      <member name="zlp"                          type="uint8_t"                offset="150" info="Zero length packet flag"/>
      <member name="ext_handle"                   type="uint8_t"                offset="151" info="Externally handled request"/>
      <member name="ep0_data_ptr"                 type="uint32_t"               offset="152" info="Control Endpoint 0 pointer to data"/>
      <member name="ep0_cnt "                     type="uint16_t"               offset="156" info="Control Endpoint 0 byte count"/>
      <member name="pad0"                         type="uint16_t"               offset="158" info="Padding"/>
      <member name="setup_packet0"                type="uint32_t"               offset="160" info="Setup Packet structure word 0"/>
      <member name="setup_packet1"                type="uint32_t"               offset="164" info="Setup Packet structure word 1"/>
      <member name="buf_ptr"                      type="uint32_t"               offset="168" info="Pointer to buffer for in/out data"/>
      <member name="len"                          type="int32_t"                offset="172" info="Length for in/out data"/>
    </typedef>

    <!-- USB Device Configuration Structure -->
    <typedef  name="usbd_dev_t"                   info="USB Device Configuration Structure"  const="1" size="28">
      <member name="driver"                       type="uint32_t"               offset="0"   info="Pointer to driver"/>
      <member name="alt_setting_ptr"              type="uint32_t"               offset="4"   info="Pointer to alternate settings"/>
      <member name="ep0_buf_ptr"                  type="uint32_t"               offset="8"   info="Pointer to Control Endpoint 0 buffer"/>
      <member name="data_ptr"                     type="*usbd_data_t"           offset="12"  info="Pointer to structure containing device information"/>
      <member name="bmattributes"                 type="uint8_t"                offset="16"  info="bmAttributes configuration setting"/>
      <member name="hs"                           type="uint8_t"                offset="17"  info="High-speed capability setting">
        <enum name="Low/Full Speed"      value="0" info="Low/Full Speed Only"/>
        <enum name="Low/Full/High Speed" value="1" info="High-speed Capable"/>
      </member>
      <member name="if_num"                       type="uint16_t"               offset="18"  info="Number of interfaces"/>
      <member name="ep_num"                       type="uint8_t"                offset="20"  info="Number of endpoints"/>
      <member name="max_packet0"                  type="uint8_t"                offset="21"  info="Maximum packet size for Control Endpoint 0"/>
      <member name="ser_num_str_len"              type="uint16_t"               offset="22"  info="Maximum length of Serial Number String"/>
      <member name="vendor_code"                  type="uint8_t"                offset="24"  info="Maximum length of Serial Number String"/>
      <member name="pad0"                         type="uint8_t"                offset="25"  info="Padding (1 byte)"/>
      <member name="ep0_buf_size"                 type="uint16_t"               offset="26"  info="Buffer size for Control Transfer"/>
    </typedef>

    <!-- USB Device Custom Class Runtime Structure -->
    <typedef  name="usbd_cc_t"                    info="USB Device Custom Class Runtime Structure" size="76">
      <member name="dev_num"                      type="uint8_t"                offset="0"   info="Device instance configuration setting"/>
      <member name="pad0"                         type="uint8_t"                offset="1"   info="Padding"/>
      <member name="ep_msk"                       type="uint16_t"               offset="2"   info="Mask of used endpoints"/>
      <member name="if0_en"                       type="uint8_t"                offset="4"   info="Interface 0 enable"/>
      <member name="if0_num"                      type="uint8_t"                offset="5"   info="Interface 0 number"/>
      <member name="if0_ep0_en"                   type="uint8_t"                offset="6"   info="Interface 0 endpoint 0. enable"/>
      <member name="if0_ep0_addr"                 type="uint8_t"                offset="7"   info="Interface 0 endpoint 0. address"/>
      <member name="if0_ep1_en"                   type="uint8_t"                offset="8"   info="Interface 0 endpoint 1. enable"/>
      <member name="if0_ep1_addr"                 type="uint8_t"                offset="9"   info="Interface 0 endpoint 1. address"/>
      <member name="if0_ep2_en"                   type="uint8_t"                offset="10"  info="Interface 0 endpoint 2. enable"/>
      <member name="if0_ep2_addr"                 type="uint8_t"                offset="11"  info="Interface 0 endpoint 2. address"/>
      <member name="if0_ep3_en"                   type="uint8_t"                offset="12"  info="Interface 0 endpoint 3. enable"/>
      <member name="if0_ep3_addr"                 type="uint8_t"                offset="13"  info="Interface 0 endpoint 3. address"/>
      <member name="if0_ep4_en"                   type="uint8_t"                offset="14"  info="Interface 0 endpoint 4. enable"/>
      <member name="if0_ep4_addr"                 type="uint8_t"                offset="15"  info="Interface 0 endpoint 4. address"/>
      <member name="if0_ep5_en"                   type="uint8_t"                offset="16"  info="Interface 0 endpoint 5. enable"/>
      <member name="if0_ep5_addr"                 type="uint8_t"                offset="17"  info="Interface 0 endpoint 5. address"/>
      <member name="if0_ep6_en"                   type="uint8_t"                offset="18"  info="Interface 0 endpoint 6. enable"/>
      <member name="if0_ep6_addr"                 type="uint8_t"                offset="19"  info="Interface 0 endpoint 6. address"/>
      <member name="if0_ep7_en"                   type="uint8_t"                offset="20"  info="Interface 0 endpoint 7. enable"/>
      <member name="if0_ep7_addr"                 type="uint8_t"                offset="21"  info="Interface 0 endpoint 7. address"/>
      <member name="if1_en"                       type="uint8_t"                offset="22"  info="Interface 1 enable"/>
      <member name="if1_num"                      type="uint8_t"                offset="23"  info="Interface 1 number"/>
      <member name="if1_ep0_en"                   type="uint8_t"                offset="24"  info="Interface 1 endpoint 0. enable"/>
      <member name="if1_ep0_addr"                 type="uint8_t"                offset="25"  info="Interface 1 endpoint 0. address"/>
      <member name="if1_ep1_en"                   type="uint8_t"                offset="26"  info="Interface 1 endpoint 1. enable"/>
      <member name="if1_ep1_addr"                 type="uint8_t"                offset="27"  info="Interface 1 endpoint 1. address"/>
      <member name="if1_ep2_en"                   type="uint8_t"                offset="28"  info="Interface 1 endpoint 2. enable"/>
      <member name="if1_ep2_addr"                 type="uint8_t"                offset="29"  info="Interface 1 endpoint 2. address"/>
      <member name="if1_ep3_en"                   type="uint8_t"                offset="30"  info="Interface 1 endpoint 3. enable"/>
      <member name="if1_ep3_addr"                 type="uint8_t"                offset="31"  info="Interface 1 endpoint 3. address"/>
      <member name="if1_ep4_en"                   type="uint8_t"                offset="32"  info="Interface 1 endpoint 4. enable"/>
      <member name="if1_ep4_addr"                 type="uint8_t"                offset="33"  info="Interface 1 endpoint 4. address"/>
      <member name="if1_ep5_en"                   type="uint8_t"                offset="34"  info="Interface 1 endpoint 5. enable"/>
      <member name="if1_ep5_addr"                 type="uint8_t"                offset="35"  info="Interface 1 endpoint 5. address"/>
      <member name="if1_ep6_en"                   type="uint8_t"                offset="36"  info="Interface 1 endpoint 6. enable"/>
      <member name="if1_ep6_addr"                 type="uint8_t"                offset="37"  info="Interface 1 endpoint 6. address"/>
      <member name="if1_ep7_en"                   type="uint8_t"                offset="38"  info="Interface 1 endpoint 7. enable"/>
      <member name="if1_ep7_addr"                 type="uint8_t"                offset="39"  info="Interface 1 endpoint 7. address"/>
      <member name="if2_en"                       type="uint8_t"                offset="40"  info="Interface 2 enable"/>
      <member name="if2_num"                      type="uint8_t"                offset="41"  info="Interface 2 number"/>
      <member name="if2_ep0_en"                   type="uint8_t"                offset="42"  info="Interface 2 endpoint 0. enable"/>
      <member name="if2_ep0_addr"                 type="uint8_t"                offset="43"  info="Interface 2 endpoint 0. address"/>
      <member name="if2_ep1_en"                   type="uint8_t"                offset="44"  info="Interface 2 endpoint 1. enable"/>
      <member name="if2_ep1_addr"                 type="uint8_t"                offset="45"  info="Interface 2 endpoint 1. address"/>
      <member name="if2_ep2_en"                   type="uint8_t"                offset="46"  info="Interface 2 endpoint 2. enable"/>
      <member name="if2_ep2_addr"                 type="uint8_t"                offset="47"  info="Interface 2 endpoint 2. address"/>
      <member name="if2_ep3_en"                   type="uint8_t"                offset="48"  info="Interface 2 endpoint 3. enable"/>
      <member name="if2_ep3_addr"                 type="uint8_t"                offset="49"  info="Interface 2 endpoint 3. address"/>
      <member name="if2_ep4_en"                   type="uint8_t"                offset="50"  info="Interface 2 endpoint 4. enable"/>
      <member name="if2_ep4_addr"                 type="uint8_t"                offset="51"  info="Interface 2 endpoint 4. address"/>
      <member name="if2_ep5_en"                   type="uint8_t"                offset="52"  info="Interface 2 endpoint 5. enable"/>
      <member name="if2_ep5_addr"                 type="uint8_t"                offset="53"  info="Interface 2 endpoint 5. address"/>
      <member name="if2_ep6_en"                   type="uint8_t"                offset="54"  info="Interface 2 endpoint 6. enable"/>
      <member name="if2_ep6_addr"                 type="uint8_t"                offset="55"  info="Interface 2 endpoint 6. address"/>
      <member name="if2_ep7_en"                   type="uint8_t"                offset="56"  info="Interface 2 endpoint 7. enable"/>
      <member name="if2_ep7_addr"                 type="uint8_t"                offset="57"  info="Interface 2 endpoint 7. address"/>
      <member name="if3_en"                       type="uint8_t"                offset="58"  info="Interface 3 enable"/>
      <member name="if3_num"                      type="uint8_t"                offset="59"  info="Interface 3 number"/>
      <member name="if3_ep0_en"                   type="uint8_t"                offset="60"  info="Interface 3 endpoint 0. enable"/>
      <member name="if3_ep0_addr"                 type="uint8_t"                offset="61"  info="Interface 3 endpoint 0. address"/>
      <member name="if3_ep1_en"                   type="uint8_t"                offset="62"  info="Interface 3 endpoint 1. enable"/>
      <member name="if3_ep1_addr"                 type="uint8_t"                offset="63"  info="Interface 3 endpoint 1. address"/>
      <member name="if3_ep2_en"                   type="uint8_t"                offset="64"  info="Interface 3 endpoint 2. enable"/>
      <member name="if3_ep2_addr"                 type="uint8_t"                offset="65"  info="Interface 3 endpoint 2. address"/>
      <member name="if3_ep3_en"                   type="uint8_t"                offset="66"  info="Interface 3 endpoint 3. enable"/>
      <member name="if3_ep3_addr"                 type="uint8_t"                offset="67"  info="Interface 3 endpoint 3. address"/>
      <member name="if3_ep4_en"                   type="uint8_t"                offset="68"  info="Interface 3 endpoint 4. enable"/>
      <member name="if3_ep4_addr"                 type="uint8_t"                offset="69"  info="Interface 3 endpoint 4. address"/>
      <member name="if3_ep5_en"                   type="uint8_t"                offset="70"  info="Interface 3 endpoint 5. enable"/>
      <member name="if3_ep5_addr"                 type="uint8_t"                offset="71"  info="Interface 3 endpoint 5. address"/>
      <member name="if3_ep6_en"                   type="uint8_t"                offset="72"  info="Interface 3 endpoint 6. enable"/>
      <member name="if3_ep6_addr"                 type="uint8_t"                offset="73"  info="Interface 3 endpoint 6. address"/>
      <member name="if3_ep7_en"                   type="uint8_t"                offset="74"  info="Interface 3 endpoint 7. enable"/>
      <member name="if3_ep7_addr"                 type="uint8_t"                offset="75"  info="Interface 3 endpoint 7. address"/>
      <var    name="if_num"                       type="uint32_t"                            value="0"/>
   </typedef>

    <!-- USB Device Audio Speaker Runtime Structure -->
    <typedef  name="usbd_adc_spkr_data_t"         info="USB Device Audio Speaker Runtime Structure" size="36">
      <member name="active"                       type="uint8_t"                offset="0"   info="Streaming interface active">
        <enum name="Stopped"                        value="0"                                  info="Playing is stopped"/>
        <enum name="Active"                         value="1"                                  info="Playing is active"/>
      </member>
      <member name="mute"                         type="uint8_t"                offset="1"   info="Mute state">
        <enum name="Off"                            value="0"                                  info="Mute is inactive"/>
        <enum name="On"                             value="1"                                  info="Mute is active"/>
      </member>
      <member name="vol_cur0"                     type="uint16_t"               offset="2"   info="Volume current (left) value"/>
      <member name="vol_cur1"                     type="uint16_t"               offset="4"   info="Volume current (right) value"/>
      <member name="vol_min0"                     type="uint16_t"               offset="6"   info="Volume minimum (left) value"/>
      <member name="vol_min1"                     type="uint16_t"               offset="8"   info="Volume minimum (right) value"/>
      <member name="vol_max0"                     type="uint16_t"               offset="10"  info="Volume maximum (left) value"/>
      <member name="vol_max1"                     type="uint16_t"               offset="12"  info="Volume maximum (right) value"/>
      <member name="vol_res0"                     type="uint16_t"               offset="14"  info="Volume (left) resolution"/>
      <member name="vol_res1"                     type="uint16_t"               offset="16"  info="Volume (right) resolution"/>
      <member name="receive_active"               type="uint8_t"                offset="18"  info="Reception of data on the USB Bus active"/>
      <member name="ptr_data_received"            type="uint32_t"               offset="20"  info="Pointer to receive intermediate buffer to received unread data"/>
      <member name="data_received_cnt"            type="uint32_t"               offset="24"  info="Number of received bytes (cumulative)"/>
      <member name="ptr_data_read"                type="uint32_t"               offset="28"  info="Pointer to receive intermediate buffer to received read data"/>
      <member name="data_read_cnt"                type="uint32_t"               offset="32"  info="Number of read bytes (cumulative)"/>
    </typedef>

    <!-- USB Device Audio Microphone Runtime Structure -->
    <typedef  name="usbd_adc_mic_data_t"          info="USB Device Audio Microphone Runtime Structure" size="36">
      <member name="active"                       type="uint8_t"                offset="0"   info="Streaming interface active">
        <enum name="Stopped"                        value="0"                                  info="Recording is stopped"/>
        <enum name="Active"                         value="1"                                  info="Recording is active"/>
      </member>
      <member name="mute"                         type="uint8_t"                offset="1"   info="Mute state">
        <enum name="Off"                            value="0"                                  info="Mute is inactive"/>
        <enum name="On"                             value="1"                                  info="Mute is active"/>
      </member>
      <member name="vol_cur0"                     type="uint16_t"               offset="2"   info="Volume current (left) value"/>
      <member name="vol_cur1"                     type="uint16_t"               offset="4"   info="Volume current (right) value"/>
      <member name="vol_min0"                     type="uint16_t"               offset="6"   info="Volume minimum (left) value"/>
      <member name="vol_min1"                     type="uint16_t"               offset="8"   info="Volume minimum (right) value"/>
      <member name="vol_max0"                     type="uint16_t"               offset="10"  info="Volume maximum (left) value"/>
      <member name="vol_max1"                     type="uint16_t"               offset="12"  info="Volume maximum (right) value"/>
      <member name="vol_res0"                     type="uint16_t"               offset="14"  info="Volume (left) resolution"/>
      <member name="vol_res1"                     type="uint16_t"               offset="16"  info="Volume (right) resolution"/>
      <member name="send_active"                  type="uint8_t"                offset="18"  info="Sending of data on the USB Bus active"/>
      <member name="ptr_data_to_send"             type="uint32_t"               offset="20"  info="Pointer to send intermediate buffer to data to be sent"/>
      <member name="data_to_send_cnt"             type="uint32_t"               offset="24"  info="Number of bytes to send (cumulative)"/>
      <member name="ptr_data_sent"                type="uint32_t"               offset="28"  info="Pointer to send intermediate buffer to data already sent"/>
      <member name="data_sent_cnt"                type="uint32_t"               offset="32"  info="Number of bytes sent (cumulative)"/>
    </typedef>

    <!-- USB Device Audio In/Out Configuration Structure -->
    <typedef  name="usbd_adc_code_t"              info="USB Device Audio In/Out Configuration Structure" const="1" size="30">
      <member name="data_buf"                     type="uint32_t"               offset="0"   info="Data buffer for audio samples"/>
      <member name="sif_num"                      type="uint8_t"                offset="4"   info="Audio streaming (zero bandwidth) interface number (operational is next)"/>
      <member name="fu_id"                        type="uint8_t"                offset="5"   info="Feature unit ID"/>
      <member name="ep_iso"                       type="uint8_t"                offset="6"   info="Isochronous endpoint number"/>
      <member name="ch_num"                       type="uint32_t"               offset="8"   info="Number of channels (1 = mono, 2 = stereo)">
        <enum name="Disabled"                       value="0"                                  info="Wrong configuration"/>
        <enum name="Mono"                           value="1"                                  info="Single audio channel (mono)"/>
        <enum name="Stereo"                         value="2"                                  info="Dual audio channels (stereo)"/>
      </member>
      <member name="data_freq"                    type="uint32_t"               offset="12"  info="Data frequency setting"/>
      <member name="sample_sz"                    type="uint32_t"               offset="16"  info="Sample size (in bytes)"/>
      <member name="sample_res"                   type="uint32_t"               offset="20"  info="Sample resolution (in bits)"/>
      <member name="data_buf_sz"                  type="uint32_t"               offset="24"  info="Data buffer size"/>
      <member name="max_packet_size"              type="uint16_t"               offset="28"  info="Maximum packet size for isochronous endpoint (for LS/FS)"/>
    </typedef>

    <!-- USB Device Audio Configuration Structure -->
    <typedef  name="usbd_adc_t"                   info="USB Device Audio Configuration Structure" const="1" size="18">
      <member name="spkr_data_ptr"                type="*usbd_adc_spkr_data_t"  offset="0"   info="Pointer to structure containing speaker (out) runtime values"/>
      <member name="out_cfg"                      type="*usbd_adc_code_t"       offset="4"   info="Pointer to structure containing out configuration settings"/>
      <member name="mic_data_ptr"                 type="*usbd_adc_mic_data_t"   offset="8"   info="Pointer to structure containing microphone (in) runtime values"/>
      <member name="in_cfg"                       type="*usbd_adc_code_t"       offset="12"  info="Pointer to structure containing in configuration settings"/>
      <member name="dev_num"                      type="uint8_t"                offset="16"  info="Device instance configuration setting"/>
      <member name="cif_num"                      type="uint8_t"                offset="17"  info="Audio control interface number"/>
    </typedef>

    <!-- USB Device CDC Runtime Structure -->
    <typedef  name="usbd_cdc_data_t"              info="USB Device CDC Runtime Structure" size="124">
      <member name="send_active"                  type="uint8_t"                offset="0"   info="Flag active while data is being sent"/>
      <member name="send_zlp"                     type="uint8_t"                offset="1"   info="Flag active when zero length packet needs to be sent"/>
      <member name="receive_active"               type="uint8_t"                offset="2"   info="Flag active while data is being received"/>
      <member name="notify_active"                type="uint8_t"                offset="3"   info="Flag active while notification is being sent"/>
      <member name="ptr_data_to_send"             type="uint32_t"               offset="4"   info="Pointer to send intermediate buffer to data to be sent"/>
      <member name="data_to_send_cnt"             type="uint32_t"               offset="8"   info="Number of bytes to send (cumulative)"/>
      <member name="ptr_data_sent"                type="uint32_t"               offset="12"  info="Pointer to send intermediate buffer to data already sent"/>
      <member name="data_sent_cnt"                type="uint32_t"               offset="16"  info="Number of bytes sent (cumulative)"/>
      <member name="ptr_data_received"            type="uint32_t"               offset="20"  info="Pointer to receive intermediate buffer to received unread data"/>
      <member name="data_received_cnt"            type="uint32_t"               offset="24"  info="Number of bytes received (cumulative)"/>
      <member name="ptr_data_read"                type="uint32_t"               offset="28"  info="Pointer to receive intermediate buffer to received read data"/>
      <member name="data_read_cnt"                type="uint32_t"               offset="32"  info="Number of bytes read (cumulative)"/>
      <member name="control_line_state"           type="uint16_t"               offset="36"  info="Control line state settings bitmap (bit 0: DTR state, bit 1: - RTS state)"/>
      <member name="ncm_ntb_format"               type="uint8_t"                offset="38"  info="NCM used NTB format (SetNtbFormat/GetNtbFormat)"/>
      <member name="ncm_crc_mode"                 type="uint8_t"                offset="39"  info="NCM used CRC mode (SetCrcMode/GetCrcMode)"/>
      <member name="ncm_max_datagram_size"        type="uint16_t"               offset="40"  info="NCM maximum datagram size (SetMaxDatagramSize/GetMaxDatagramSize)"/>
      <member name="pad0"                         type="uint16_t"               offset="42"  info="Explicit padding"/>
      <member name="ncm_ntb_input_size"           type="uint32_t"               offset="44"  info="NCM maximum NTB IN size that can be sent to host (SetNtbInputSize/GetNtbInputSize)"/>
      <member name="ncm_in_ntb_seq"               type="uint32_t"               offset="48"  info="NCM IN NTB sequence number"/>
      <member name="ncm_out_ntb_seq"              type="uint32_t"               offset="52"  info="NCM OUT NTB sequence number"/>
      <member name="ncm_addr_in_ndp"              type="uint32_t"               offset="56"  info="NCM address to current NDP in IN NTB (for sending)"/>
      <member name="ncm_addr_out_ndp"             type="uint32_t"               offset="60"  info="NCM address to current NDP in OUT NTB (received)"/>
      <member name="ncm_in_datagram_index"        type="uint32_t"               offset="64"  info="NCM current datagram index in current NDP in IN NTB (for sending)"/>
      <member name="ncm_in_datagram_num"          type="uint32_t"               offset="68"  info="NCM number of datagrams for current NDP in IN NTB (for sending)"/>
      <member name="ncm_out_datagram_index"       type="uint32_t"               offset="72"  info="NCM current datagram index in current NDP in OUT NTB (received)"/>
      <member name="ncm_ntb_in_len"               type="uint32_t"               offset="76"  info="NCM current IN NTB data size (for sending)"/>
      <member name="ncm_ntb_in_buf_len0"          type="uint32_t"               offset="80"  info="NCM current IN NTB data size in respective buffer (for sending), index 0"/>
      <member name="ncm_ntb_in_buf_len1"          type="uint32_t"               offset="84"  info="NCM current IN NTB data size in respective buffer (for sending), index 1"/>
      <member name="ncm_ntb_out_buf_len0"         type="uint32_t"               offset="88"  info="NCM current OUT NTB data size in respective buffer (received), index 0"/>
      <member name="ncm_ntb_out_buf_len1"         type="uint32_t"               offset="92"  info="NCM current OUT NTB data size in respective buffer (received), index 1"/>
      <member name="ncm_ntb_param0"               type="uint32_t"               offset="96"  info="NCM NTB parameter structure, word 0"/>
      <member name="ncm_ntb_param1"               type="uint32_t"               offset="100" info="NCM NTB parameter structure, word 1"/>
      <member name="ncm_ntb_param2"               type="uint32_t"               offset="104" info="NCM NTB parameter structure, word 2"/>
      <member name="ncm_ntb_param3"               type="uint32_t"               offset="108" info="NCM NTB parameter structure, word 3"/>
      <member name="ncm_ntb_param4"               type="uint32_t"               offset="112" info="NCM NTB parameter structure, word 4"/>
      <member name="ncm_ntb_param5"               type="uint32_t"               offset="116" info="NCM NTB parameter structure, word 5"/>
      <member name="ncm_ntb_param6"               type="uint32_t"               offset="120" info="NCM NTB parameter structure, word 6"/>
    </typedef>

    <!-- USB Device CDC Configuration Structure -->
    <typedef  name="usbd_cdc_t"                   info="USB Device CDC Configuration Structure" const="1" size="72">
      <member name="send_buf"                     type="uint32_t"               offset="0"   info="Send data buffer"/>
      <member name="receive_buf"                  type="uint32_t"               offset="4"   info="Receive data buffer"/>
      <member name="notify_buf"                   type="uint32_t"               offset="8"   info="Notify data buffer"/>
      <member name="send_mps_buf"                 type="uint32_t"               offset="12"  info="4-byte aligned intermediate send buffer (max packet size)"/>
      <member name="receive_mps_buf"              type="uint32_t"               offset="16"  info="4-byte aligned intermediate receive buffer (max packet size)"/>
      <member name="data_ptr"                     type="uint32_t"               offset="20"  info="Pointer to structure containing runtime values"/>
      <member name="dev_num"                      type="uint8_t"                offset="24"  info="Device instance configuration setting"/>
      <member name="acm"                          type="uint8_t"                offset="25"  info="Abstract control model">
        <enum name="NCM"                            value="0"                                  info="Network Control Model"/>
        <enum name="ACM"                            value="1"                                  info="Abstract Control Model"/>
      </member>
      <member name="rndis"                        type="uint8_t"                offset="26"  info="RNDIS">
        <enum name="VirtualCOM"                     value="0"                                  info="VirtualCOM (No protocol)"/>
        <enum name="RNDIS"                          value="1"                                  info="RNDIS (Vendor-specific protocol)"/>
      </member>
      <member name="cif_num"                      type="uint8_t"                offset="27"  info="Communication class interface number"/>
      <member name="dif_num"                      type="uint8_t"                offset="28"  info="Data class interface number"/>
      <member name="ep_int_in"                    type="uint8_t"                offset="29"  info="Interrupt in endpoint number"/>
      <member name="ep_bulk_in"                   type="uint8_t"                offset="30"  info="Bulk in endpoint number"/>
      <member name="ep_bulk_out"                  type="uint8_t"                offset="31"  info="Bulk out endpoint number"/>
      <member name="send_buf_sz"                  type="uint16_t"               offset="32"  info="Maximum size of send buffer"/>
      <member name="receive_buf_sz"               type="uint16_t"               offset="34"  info="Maximum size of receive buffer"/>
      <member name="int_max_packet_size_fs"       type="uint16_t"               offset="36"  info="Maximum packet size for interrupt endpoint for LS/FS"/>
      <member name="int_max_packet_size_hs"       type="uint16_t"               offset="38"  info="Maximum packet size for interrupt endpoint for HS"/>
      <member name="bulk_max_packet_size_fs"      type="uint16_t"               offset="40"  info="Maximum packet size for bulk endpoints for LS/FS"/>
      <member name="bulk_max_packet_size_hs"      type="uint16_t"               offset="42"  info="Maximum packet size for bulk endpoints for HS"/>
      <member name="ncm_raw"                      type="uint8_t"                offset="44"  info="NCM raw access configuration"/>
      <member name="ncm_in_buf_cnt"               type="uint8_t"                offset="45"  info="NCM number of input buffers"/>
      <member name="ncm_out_buf_cnt"              type="uint8_t"                offset="46"  info="NCM number of output buffers"/>
      <member name="ncm_ntb_formats"              type="uint8_t"                offset="47"  info="NCM Supported NTB Formats configuration"/>
      <member name="ncm_ntb_in_max_size"          type="uint32_t"               offset="48"  info="NCM Maximum IN NTB Size configuration"/>
      <member name="ncm_ntb_out_max_size"         type="uint32_t"               offset="52"  info="NCM Maximum OUT NTB Size configuration"/>
      <member name="ncm_max_segment_size"         type="uint16_t"               offset="56"  info="NCM Maximum Segment Size configuration"/>
      <member name="ncm_ndp_in_divisor"           type="uint16_t"               offset="58"  info="NCM IN NTB Datagram Payload Alignment Divisor configuration"/>
      <member name="ncm_ndp_in_payload_reminder"  type="uint16_t"               offset="60"  info="NCM IN NTB Datagram Payload Alignment Remainder configuration"/>
      <member name="ncm_ndp_in_alignment"         type="uint16_t"               offset="62"  info="NCM NDP Alignment Modulus in IN NTB configuration"/>
      <member name="ncm_ndp_out_divisor"          type="uint16_t"               offset="64"  info="NCM OUT NTB Datagram Payload Alignment Divisor configuration"/>
      <member name="ncm_ndp_out_payload_reminder" type="uint16_t"               offset="66"  info="NCM OUT NTB Datagram Payload Alignment Remainder configuration"/>
      <member name="ncm_ndp_out_alignment"        type="uint16_t"               offset="68"  info="NCM NDP Alignment Modulus in OUT NTB configuration"/>
      <member name="pad1"                         type="uint16_t"               offset="70"  info="Padding"/>
    </typedef>

    <!-- USB Device HID Runtime Structure -->
    <typedef  name="usbd_hid_data_t"              info="USB Device HID Runtime Structure"    size="32">
      <member name="protocol"                     type="uint8_t"                offset="0"   info="Active protocol"/>
      <member name="data_out_async_req"           type="uint8_t"                offset="1"   info="Request to asynchronously send data flag"/>
      <member name="polling_count"                type="uint16_t"               offset="2"   info="Polling count used for data update"/>
      <member name="data_out_update_req_mask"     type="uint32_t"               offset="4"   info="Request to update send data flag"/>
      <member name="ptr_data_out"                 type="uint32_t"               offset="8"   info="Send data buffer"/>
      <member name="ptr_data_in"                  type="uint32_t"               offset="12"  info="Receive data buffer"/>
      <member name="ptr_data_feat"                type="uint32_t"               offset="16"  info="Feature data buffer"/>
      <member name="data_out_to_send_len"         type="uint16_t"               offset="20"  info="Length of data to be sent"/>
      <member name="data_out_sent_len"            type="uint16_t"               offset="22"  info="Length of data already sent"/>
      <member name="data_in_rece_len"             type="uint16_t"               offset="24"  info="Length of received data"/>
      <member name="data_feat_rece_len"           type="uint16_t"               offset="26"  info="Length of received feature data"/>
      <member name="data_out_end_with_zlp_packet" type="uint8_t"                offset="28"  info="Data send ended with Zero Length Packet (ZLP) flag"/>
      <member name="last_in_report"               type="uint8_t"                offset="29"  info="Last input report index if multiple input reports are specified"/>
      <member name="pad0"                         type="uint8_t"                offset="30"  info="Padding (2 bytes)"/>
    </typedef>

    <!-- USB Device HID Configuration Structure -->
    <typedef  name="usbd_hid_t"                   info="USB Device CDC Runtime Structure"    const="1" size="56">
      <member name="idle_count"                   type="uint32_t"               offset="0"   info="Pointer to idle count data for each report"/>
      <member name="idle_reload"                  type="uint32_t"               offset="4"   info="Pointer to idle reload data for each report"/>
      <member name="idle_set"                     type="uint32_t"               offset="8"   info="Pointer to idle set data (using SetIdle) for each report"/>
      <member name="in_report"                    type="uint32_t"               offset="12"  info="Input report data buffer for each report"/>
      <member name="out_report"                   type="uint32_t"               offset="16"  info="Output report data buffer for each report"/>
      <member name="feat_report"                  type="uint32_t"               offset="20"  info="Feature report data buffer for each report"/>
      <member name="data_ptr"                     type="uint32_t"               offset="24"  info="Pointer to structure containing runtime values for each report"/>
      <member name="dev_num"                      type="uint8_t"                offset="28"  info="Device instance configuration setting"/>
      <member name="if_num"                       type="uint8_t"                offset="29"  info="Interface number"/>
      <member name="ep_int_in"                    type="uint8_t"                offset="30"  info="Interrupt in endpoint number"/>
      <member name="ep_int_out"                   type="uint8_t"                offset="31"  info="Interrupt out endpoint number (0 if not used)">
        <enum name="Not used"                       value="0"                                  info="Endpoint is not in use"/>
        <enum name="1"                              value="1"                                  info="Endpoint 1"/>
        <enum name="2"                              value="2"                                  info="Endpoint 2"/>
        <enum name="3"                              value="3"                                  info="Endpoint 3"/>
        <enum name="4"                              value="4"                                  info="Endpoint 4"/>
        <enum name="5"                              value="5"                                  info="Endpoint 5"/>
        <enum name="6"                              value="6"                                  info="Endpoint 6"/>
        <enum name="7"                              value="7"                                  info="Endpoint 7"/>
        <enum name="8"                              value="8"                                  info="Endpoint 8"/>
        <enum name="9"                              value="9"                                  info="Endpoint 9"/>
        <enum name="10"                             value="10"                                 info="Endpoint 10"/>
        <enum name="11"                             value="11"                                 info="Endpoint 11"/>
        <enum name="12"                             value="12"                                 info="Endpoint 12"/>
        <enum name="13"                             value="13"                                 info="Endpoint 13"/>
        <enum name="14"                             value="14"                                 info="Endpoint 14"/>
        <enum name="15"                             value="15"                                 info="Endpoint 15"/>
      </member>
      <member name="ep_int_in_interval_fs"        type="uint16_t"               offset="32"  info="Interrupt in endpoint polling interval configuration setting for LS/FS"/>
      <member name="ep_int_in_interval_hs"        type="uint16_t"               offset="34"  info="Interrupt in endpoint polling interval configuration setting for HS"/>
      <member name="ep_int_in_max_packet_size_fs" type="uint16_t"               offset="36"  info="Interrupt in endpoint maximum packet size interrupt endpoints for LS/FS"/>
      <member name="ep_int_in_max_packet_size_hs" type="uint16_t"               offset="38"  info="Interrupt in endpoint maximum packet size interrupt endpoints for HS"/>
      <member name="ep_int_out_interval_fs"       type="uint16_t"               offset="40"  info="Interrupt out endpoint polling interval configuration setting for LS/FS"/>
      <member name="ep_int_out_interval_hs"       type="uint16_t"               offset="42"  info="Interrupt out endpoint polling interval configuration setting for HS"/>
      <member name="ep_int_out_max_packet_size_fs" type="uint16_t"               offset="44"  info="Interrupt out endpoint maximum packet size interrupt endpoints for LS/FS"/>
      <member name="ep_int_out_max_packet_size_hs" type="uint16_t"               offset="46"  info="Interrupt out endpoint maximum packet size interrupt endpoints for HS"/>
      <member name="in_report_num"                type="uint8_t"                offset="48"  info="Number of input reports"/>
      <member name="out_report_num"               type="uint8_t"                offset="49"  info="Number of output reports"/>
      <member name="in_report_max_sz"             type="uint16_t"               offset="50"  info="Maximum input report size"/>
      <member name="out_report_max_sz"            type="uint16_t"               offset="52"  info="Maximum output report size"/>
      <member name="feat_report_max_sz"           type="uint16_t"               offset="54"  info="Maximum feature report size"/>
    </typedef>

    <!-- USB Device MSC Runtime Structure -->
    <typedef  name="usbd_msc_data_t"              info="USB Device MSC Runtime Structure"    size="124">
      <member name="cbw"                          type="uint8_t"                offset="0"   info="Command block wrapper (31 bytes)"/>
      <member name="csw"                          type="uint8_t"                offset="31"  info="Command status wrapper (13 bytes)"/>
      <member name="block"                        type="uint32_t"               offset="44"  info="Read/write operation block"/>
      <member name="offset"                       type="uint32_t"               offset="48"  info="Read/write operation offset"/>
      <member name="length"                       type="uint32_t"               offset="52"  info="Read write operation remaining length"/>
      <member name="block_buf"                    type="uint32_t"               offset="56"  info="Data buffer for media data read/write"/>
      <member name="block_buf_size"               type="uint32_t"               offset="60"  info="Size of data buffer for media data read/write"/>
      <member name="bulk_len"                     type="uint32_t"               offset="64"  info="Bulk in/out length"/>
      <member name="bulk_req_len"                 type="uint32_t"               offset="68"  info="Bulk in/out requested length"/>
      <member name="mem_ok"                       type="uint8_t"                offset="72"  info="Memory verify status"/>
      <member name="bulk_stage"                   type="uint8_t"                offset="73"  info="Bulk stage"/>
      <member name="pad0"                         type="uint8_t"                offset="74"  info="Padding (2 bytes)"/>
      <member name="max_lun"                      type="uint8_t"                offset="75"  info="Maximum number of logical units (LUNs)"/>
      <member name="lun0_request_sense"           type="uint8_t"                offset="76"  info="Current request sense information"/>
      <member name="lun0_pad0"                    type="uint8_t"                offset="77"  info="Padding (3 bytes)"/>
      <member name="lun0_block_size"              type="uint32_t"               offset="80"  info="Media block size"/>
      <member name="lun0_block_count"             type="uint32_t"               offset="84"  info="Media total number of blocks"/>
      <member name="lun1_request_sense"           type="uint8_t"                offset="88"  info="Current request sense information"/>
      <member name="lun1_pad0"                    type="uint8_t"                offset="89"  info="Padding (3 bytes)"/>
      <member name="lun1_block_size"              type="uint32_t"               offset="92"  info="Media block size"/>
      <member name="lun1_block_count"             type="uint32_t"               offset="96"  info="Media total number of blocks"/>
      <member name="lun2_request_sense"           type="uint8_t"                offset="100" info="Current request sense information"/>
      <member name="lun2_pad0"                    type="uint8_t"                offset="101" info="Padding (3 bytes)"/>
      <member name="lun2_block_size"              type="uint32_t"               offset="104" info="Media block size"/>
      <member name="lun2_block_count"             type="uint32_t"               offset="108" info="Media total number of blocks"/>
      <member name="lun3_request_sense"           type="uint8_t"                offset="112" info="Current request sense information"/>
      <member name="lun3_pad0"                    type="uint8_t"                offset="113" info="Padding (3 bytes)"/>
      <member name="lun3_block_size"              type="uint32_t"               offset="116" info="Media block size"/>
      <member name="lun3_block_count"             type="uint32_t"               offset="120" info="Media total number of blocks"/>
      <var    name="lun0_media_size"              type="uint64_t"                            value="0"/>
      <var    name="lun0_media_size_dbl"          type="double"                              value="0"/>
      <var    name="lun0_media_size_xB"           type="double"                              value="0"/>
      <var    name="lun0_media_size_x"            type="uint8_t"                             value="0"/>
      <var    name="lun1_media_size"              type="uint64_t"                            value="0"/>
      <var    name="lun1_media_size_dbl"          type="double"                              value="0"/>
      <var    name="lun1_media_size_xB"           type="double"                              value="0"/>
      <var    name="lun1_media_size_x"            type="uint8_t"                             value="0"/>
      <var    name="lun2_media_size"              type="uint64_t"                            value="0"/>
      <var    name="lun2_media_size_dbl"          type="double"                              value="0"/>
      <var    name="lun2_media_size_xB"           type="double"                              value="0"/>
      <var    name="lun2_media_size_x"            type="uint8_t"                             value="0"/>
      <var    name="lun3_media_size"              type="uint64_t"                            value="0"/>
      <var    name="lun3_media_size_dbl"          type="double"                              value="0"/>
      <var    name="lun3_media_size_xB"           type="double"                              value="0"/>
      <var    name="lun3_media_size_x"            type="uint8_t"                             value="0"/>
    </typedef>

    <!-- USB Device MSC Configuration Structure -->
    <typedef  name="usbd_msc_t"                   info="USB Device MSC Configuration Structure" const="1" size="40">
      <member name="bulk_buf"                     type="uint32_t"               offset="0"   info="Pointer to data buffer for bulk transfers"/>
      <member name="data_ptr"                     type="uint32_t"               offset="4"   info="Pointer to structure containing runtime values"/>
      <member name="dev_num"                      type="uint8_t"                offset="8"   info="Device instance configuration setting"/>
      <member name="if_num"                       type="uint8_t"                offset="9"   info="Interface number"/>
      <member name="ep_bulk_in"                   type="uint8_t"                offset="10"  info="Bulk in endpoint number"/>
      <member name="ep_bulk_out"                  type="uint8_t"                offset="11"  info="Bulk out endpoint number"/>
      <member name="bulk_buf_sz"                  type="uint32_t"               offset="12"  info="Size of bulk buffer"/>
      <member name="max_packet_size_fs"           type="uint16_t"               offset="16"  info="Maximum packet size for bulk endpoints for LS/FS"/>
      <member name="max_packet_size_hs"           type="uint16_t"               offset="18"  info="Maximum packet size for bulk endpoints for HS"/>
      <member name="max_lun"                      type="uint8_t"                offset="20"  info="Maximum number of logical units (LUNs)"/>
      <member name="pad0"                         type="uint8_t"                offset="21"  info="Padding (3 bytes)"/>
      <member name="lun0_inquiry_data"            type="uint32_t"               offset="24"  info="Pointer to data returned upon SCSI Inquiry request for LUN0"/>
      <member name="lun1_inquiry_data"            type="uint32_t"               offset="28"  info="Pointer to data returned upon SCSI Inquiry request for LUN1"/>
      <member name="lun2_inquiry_data"            type="uint32_t"               offset="32"  info="Pointer to data returned upon SCSI Inquiry request for LUN2"/>
      <member name="lun3_inquiry_data"            type="uint32_t"               offset="36"  info="Pointer to data returned upon SCSI Inquiry request for LUN3"/>
    </typedef>

    <!-- USB Host Typedefs *************************************************************************************************** -->
    <!-- USB Host Transfer Runtime Structure -->
    <typedef  name="USBH_TRANSFER_INFO_t"         info="USB Host Transfer Runtime Structure" size="32">
      <member name="ptr_transfer"                 type="uint32_t"               offset="0"   info="Pointer to transfer structure"/>
      <member name="ptr_pipe"                     type="uint32_t"               offset="4"   info="Pointer to pipe structure"/>
      <member name="packet"                       type="uint32_t"               offset="8"   info="Packet"/>
      <member name="data"                         type="uint32_t"               offset="12"  info="Pointer to data"/>
      <member name="num"                          type="uint32_t"               offset="16"  info="Number of bytes to transfer"/>
      <member name="num_transferred_total"        type="uint32_t"               offset="20"  info="Total number of bytes transferred"/>
      <member name="num_to_transfer"              type="uint32_t"               offset="24"  info="Number of bytes to transfer in single transfer"/>
      <member name="active"                       type="uint32_t"               offset="28"  info="Activity flag"/>
      <member name="iso_ptr_pipe1"                type="uint32_t"               offset="32"  info="Iso pointer to additional pipe structure"/>
      <member name="iso_data1"                    type="uint32_t"               offset="36"  info="Iso pointer to data for second transfer"/>
      <member name="iso_max_transfer_size"        type="uint16_t"               offset="40"  info="Iso maximum transfer size per frame"/>
      <member name="iso_interval"                 type="uint16_t"               offset="42"  info="Iso endpoint interval in (u)SOFs"/>
      <member name="iso_last_frame_index"         type="uint32_t"               offset="44"  info="Iso last transfer frame index"/>
      <member name="iso_frame_index0"             type="uint32_t"               offset="48"  info="Iso transfer frame index [0]"/>
      <member name="iso_frame_index1"             type="uint32_t"               offset="52"  info="Iso transfer frame index [1]"/>
    </typedef>

    <!-- USB Host Pipe Runtime Structure -->
    <typedef  name="USBH_PIPE"                    info="USB Host Pipe Runtime Structure" size="20">
      <member name="hw_handle"                    type="uint32_t"               offset="0"   info="Handle to Hardware resource"/>
      <member name="thread_id"                    type="uint32_t"               offset="4"   info="Thread ID of active transfer"/>
      <member name="bEndpointAddress"             type="uint8_t"                offset="8"   info="Endpoint Address + direction"/>
      <member name="bmAttributes"                 type="uint8_t"                offset="9"   info="Endpoint Attributes (type + Isochronous info)"/>
      <member name="wMaxPacketSize"               type="uint16_t"               offset="10"  info="Maximum Packet Size + Isochronous info"/>
      <member name="bInterval"                    type="uint8_t"                offset="12"  info="Interval"/>
      <member name="device"                       type="uint8_t"                offset="13"  info="Device Index"/>
      <member name="locked"                       type="uint8_t"                offset="14"  info="Locked flag"/>
      <member name="transfer_active"              type="uint8_t"                offset="15"  info="Transfer active flag"/>
      <member name="transferred"                  type="uint32_t"               offset="16"  info="Last transferred information"/>
      <member name="cb_pipe_event"                type="uint32_t"               offset="20"  info="Pipe event callback"/>
    </typedef>

    <!-- USB Host Device Instance Runtime Structure -->
    <typedef  name="USBH_DEV"                     info="USB Host Device Instance Runtime Structure" size="28">
      <member name="state"                        type="uint8_t"                offset="0"   info="Device configuration and initialization state">
        <enum name="Unused"                         value="0"                                  info="Unconfigured"/>
        <enum name="Locked"                         value="1"                                  info="Locked"/>
        <enum name="Configured"                     value="3"                                  info="Configured"/>
        <enum name="Configured and Initialized"     value="7"                                  info="Configured and Initialized"/>
        <enum name="Unsupported"                    value="9"                                  info="Unsupported"/>
      </member>
      <member name="ctrl"                         type="uint8_t"                offset="4"   info="Index of USB Host controller"/>
      <member name="dev_addr"                     type="uint8_t"                offset="5"   info="Device communication Address"/>
      <member name="dev_speed"                    type="uint8_t"                offset="6"   info="Device communication Speed">
        <enum name="Low Speed"                      value="0" info="Low Speed"/>
        <enum name="Full Speed"                     value="1" info="Full Speed"/>
        <enum name="High Speed"                     value="2" info="High Speed"/>
      </member>
      <member name="hub_addr"                     type="uint8_t"                offset="7"   info="Hub communication Address"/>
      <member name="hub_port"                     type="uint8_t"                offset="8"   info="Hub communication Port"/>
      <member name="pad0"                         type="uint8_t"                offset="9"   info="Padding"/>
      <member name="max_packet_size"              type="uint8_t"                offset="10"  info="Maximum Packet Size"/>
      <member name="vid"                          type="uint16_t"               offset="12"  info="Vendor ID"/>
      <member name="pid"                          type="uint16_t"               offset="14"  info="Product ID"/>
      <member name="class_custom"                 type="uint8_t"                offset="16"  info="Class Custom handling"/>
      <member name="class_instance"               type="uint8_t"                offset="17"  info="Class instance"/>
      <member name="class_driver"                 type="uint8_t"                offset="18"  info="Class Driver used">
        <enum name="CDC"                            value="0x02"                               info="Communication Device"/>
        <enum name="HID"                            value="0x03"                               info="Human Interface Device"/>
        <enum name="MSC"                            value="0x08"                               info="Mass Storage Device"/>
      </member>
      <member name="dev_desc_len"                 type="uint8_t"                offset="19"  info="Device Descriptor Length"/>
      <member name="cfg_desc_len"                 type="uint8_t"                offset="20"  info="Configuration Descriptor Length"/>
      <member name="pad1"                         type="uint8_t"                offset="22"  info="Padding"/>
      <member name="pad2"                         type="uint8_t"                offset="23"  info="Padding"/>
      <member name="recovery_thread_id"           type="uint32_t"               offset="24"  info="Thread ID of thread that activated Recovery"/>
    </typedef>

    <!-- USB Host Controller Instance Runtime Structure -->
    <typedef  name="USBH_HCI"                     info="USB Host Controller Instance Runtime Structure" size="124">
      <member name="init"                         type="uint16_t"               offset="0"   info="Initialized status"/>
      <member name="port_con"                     type="uint16_t"               offset="2"   info="Port connected map in software"/>
      <member name="port_discon"                  type="uint16_t"               offset="4"   info="Port disconnect map in software"/>
      <member name="port_oc"                      type="uint16_t"               offset="6"   info="Port over-current"/>
      <member name="port_lock"                    type="uint8_t"                offset="8"   info="Port locked (for enumeration (0 = none, 1..128 = locked port))"/>
      <member name="port_retry"                   type="uint8_t"                offset="9"   info="Port enumeration retry counter of currently locked port"/>
      <member name="port_rst"                     type="uint8_t"                offset="10"  info="Port reset (for enumeration or recovery (0 = none, 1..128 = reset active port))"/>
      <member name="device"                       type="uint8_t"                offset="11"  info="Device index of enumerating device"/>
      <member name="port_state"                   type="uint8_t"                offset="12"  info="Port states (8 bits per port)"/>
      <member name="port_event"                   type="uint32_t"               offset="28"  info="Port events (32 bits per port)"/>
      <member name="port_debounce"                type="uint16_t"               offset="92"  info="Port debounce active"/>
      <member name="debounce_restart"             type="uint8_t"                offset="94"  info="De-bounce restart"/>
      <member name="last_dev_addr"                type="uint8_t"                offset="95"  info="Last addressed device address"/>
      <member name="port_mem_max"                 type="uint32_t"               offset="96"  info="Port maximum available memory from the common memory pool"/>
      <member name="debounce_countdown"           type="uint16_t"               offset="100" info="De-bounce countdown counter"/>
      <member name="debounce_max_countdown"       type="uint16_t"               offset="102" info="De-bounce maximum countdown counter"/>
      <member name="dev_addr_mask"                type="uint32_t"               offset="104" info="Mask of used device addresses (16 bytes)"/>
      <member name="def_pipe_hndl"                type="uint32_t"               offset="120" info="Default Pipe Handle"/>
    </typedef>

    <!-- USB Host Mass Storage Instance Runtime Structure -->
    <typedef  name="USBH_MSC"                     info="USB Host Mass Storage Instance Runtime Structure" size="28">
      <member name="ptr_dev"                      type="*USBH_DEV"              offset="0"   info="Pointer to device structure"/>
      <member name="bulk_in_pipe_hndl"            type="uint32_t"               offset="4"   info="Bulk in pipe handle"/>
      <member name="bulk_out_pipe_hndl"           type="uint32_t"               offset="8"   info="Bulk out pipe handle"/>
      <member name="tag"                          type="uint32_t"               offset="12"  info="Tag command/data/status protocol"/>
      <member name="block_count"                  type="uint32_t"               offset="16"  info="Block count (capacity)"/>
      <member name="block_size"                   type="uint32_t"               offset="20"  info="Block size (capacity)"/>
      <member name="max_lun"                      type="uint8_t"                offset="24"  info="Maximum logical units"/>
      <member name="media_ok"                     type="uint8_t"                offset="25"  info="Physical media ready status"/>
      <member name="pad0"                         type="uint16_t"               offset="26"  info="Explicit padding"/>
      <var    name="media_size"                   type="uint64_t"                            value="0"/>
      <var    name="media_size_dbl"               type="double"                              value="0"/>
      <var    name="media_size_xB"                type="double"                              value="0"/>
      <var    name="media_size_x"                 type="uint8_t"                             value="0"/>
    </typedef>

    <!-- USB Host Human Interface Device Instance Runtime Structure -->
    <typedef  name="USBH_HID"                     info="USB Host Human Interface Device Instance Runtime Structure" size="52">
      <member name="ptr_dev"                      type="*USBH_DEV"              offset="0"   info="Pointer to device structure"/>
      <member name="int_in_pipe_hndl"             type="uint32_t"               offset="4"   info="Interrupt in pipe handle"/>
      <member name="int_out_pipe_hndl"            type="uint32_t"               offset="8"   info="Interrupt out pipe handle"/>
      <member name="int_in_thread_id"             type="uint32_t"               offset="12"  info="Interrupt in pipe thread ID"/>
      <member name="ptr_int_in_buf"               type="uint32_t"               offset="16"  info="Pointer to interrupt in buffer"/>
      <member name="report_desc_len"              type="uint16_t"               offset="20"  info="Report descriptor length"/>
      <member name="report_desc_type"             type="uint8_t"                offset="22"  info="Report descriptor type"/>
      <member name="protocol"                     type="uint8_t"                offset="23"  info="Protocol type (HID_PROTOCOL_KEYBOARD or HID_PROTOCOL_MOUSE)"/>
      <member name="hid_in_data_len"              type="uint16_t"               offset="24"  info="Report input data bytes received"/>
      <member name="hid_in_data_buf"              type="uint8_t"                offset="34"  info="Report input data buffer (8 bytes)"/>
      <member name="hid_in_data_buf_ex"           type="uint8_t"                offset="42"  info="Report input data buffer last state (8 bytes)"/>
      <member name="keyboard_in_key_pos"          type="uint8_t"                offset="43"  info="Report input current key position"/>
      <member name="pad0"                         type="uint8_t"                offset="44"  info="Explicit padding"/>
      <member name="mouse_state"                  type="uint8_t"                offset="45"  info="Current mouse position and state (6 bytes)"/>
      <member name="pad1"                         type="uint16_t"               offset="50"  info="Explicit padding"/>
    </typedef>

    <!-- USB Host Communication Device Instance Runtime Structure -->
    <typedef  name="USBH_CDC"                     info="USB Host Communication Device Instance Runtime Structure" size="20">
      <member name="ptr_dev"                      type="*USBH_DEV"              offset="0"   info="Pointer to device structure"/>
      <member name="bulk_in_pipe_hndl"            type="uint32_t"               offset="4"   info="Bulk in pipe handle"/>
      <member name="bulk_out_pipe_hndl"           type="uint32_t"               offset="8"   info="Bulk out pipe handle"/>
      <member name="int_in_pipe_hndl"             type="uint32_t"               offset="12"  info="Interrupt in pipe handle"/>
      <member name="int_in_thread_id"             type="uint32_t"               offset="16"  info="Interrupt in pipe thread ID"/>
    </typedef>

    <!-- USB Host Auxiliary Structures -->
    <typedef  name="usbh_hci_type_t"              info="USB Host Controller Interface Type"  size="1">
      <member name="type"                         type="uint8_t"                offset="0"   info="Controller Interface Type">
        <enum name="Custom"                         value="0"                                  info="Custom"/>
        <enum name="OHCI"                           value="1"                                  info="OHCI"/>
        <enum name="EHCI"                           value="2"                                  info="EHCI"/>
      </member>
    </typedef>
  </typedefs>

  <objects>
    <object name="USB Device and Host">

      <!-- USB Global Variables ********************************************************************************************** -->
      <var  name="usb_lib_version_major"             type="uint32_t"            value="0"/>
      <var  name="usb_lib_version_minor"             type="uint32_t"            value="0"/>
      <var  name="usb_lib_version_revision"          type="uint32_t"            value="0"/>
      <var  name="debug_val"                         type="uint32_t"            value="0"/>
      <var  name="usb_i"                             type="uint32_t"            value="0"/>
      <var  name="usbh0_disp_i"                      type="uint32_t"            value="0"/>
      <var  name="usbh1_disp_i"                      type="uint32_t"            value="0"/>
      <var  name="usbh2_disp_i"                      type="uint32_t"            value="0"/>
      <var  name="usbh3_disp_i"                      type="uint32_t"            value="0"/>

      <read name="usb_lib_version"                   type="uint32_t"            symbol="usb_lib_version" const="1"/>
      <calc>usb_lib_version_major    = ( usb_lib_version / 10000000U);</calc>
      <calc>usb_lib_version_minor    = ((usb_lib_version / 10000U   ) % 1000U);</calc>
      <calc>usb_lib_version_revision = ((usb_lib_version)             % 10000U);</calc>

      <!-- USB Device Component variables ************************************************************************************ -->
      <!-- USB Device 0: if it exists read and prepare variables for display -->
      <var  name="usbd0_en"                          type="uint8_t"             value="__Symbol_exists(&quot;usbd0_dev&quot;)"/>
      <var  name="usbd0_ep0_out_en"                  type="uint8_t"             value="1"/>
      <var  name="usbd0_ep1_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd0_ep2_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd0_ep3_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd0_ep4_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd0_ep5_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd0_ep6_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd0_ep7_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd0_ep8_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd0_ep9_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd0_ep10_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd0_ep11_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd0_ep12_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd0_ep13_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd0_ep14_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd0_ep15_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd0_ep0_in_en"                   type="uint8_t"             value="1"/>
      <var  name="usbd0_ep1_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd0_ep2_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd0_ep3_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd0_ep4_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd0_ep5_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd0_ep6_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd0_ep7_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd0_ep8_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd0_ep9_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd0_ep10_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd0_ep11_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd0_ep12_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd0_ep13_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd0_ep14_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd0_ep15_in_en"                  type="uint8_t"             value="0"/>
      <read cond="usbd0_en" name="usbd0_cfg"         type="usbd_dev_t"                   symbol="usbd0_dev"                  const="1"/>
      <read cond="usbd0_en" name="usbd0_device_desc" type="USB_DEVICE_DESCRIPTOR"        symbol="usbd0_device_descriptor"    const="1"/>
      <read cond="usbd0_en" name="usbd0_config_desc" type="USB_CONFIGURATION_DESCRIPTOR" symbol="usbd0_config_descriptor_fs" const="1"/>
      <read cond="usbd0_en" name="usbd0_data"        type="usbd_data_t"                  symbol="usbd0_data"/>
      <calc cond="usbd0_en">usbd0_ep1_out_en  = (usbd0_data.endpoint_mask &gt;&gt;  1) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep2_out_en  = (usbd0_data.endpoint_mask &gt;&gt;  2) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep3_out_en  = (usbd0_data.endpoint_mask &gt;&gt;  3) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep4_out_en  = (usbd0_data.endpoint_mask &gt;&gt;  4) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep5_out_en  = (usbd0_data.endpoint_mask &gt;&gt;  5) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep6_out_en  = (usbd0_data.endpoint_mask &gt;&gt;  6) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep7_out_en  = (usbd0_data.endpoint_mask &gt;&gt;  7) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep8_out_en  = (usbd0_data.endpoint_mask &gt;&gt;  8) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep9_out_en  = (usbd0_data.endpoint_mask &gt;&gt;  9) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep10_out_en = (usbd0_data.endpoint_mask &gt;&gt; 10) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep11_out_en = (usbd0_data.endpoint_mask &gt;&gt; 11) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep12_out_en = (usbd0_data.endpoint_mask &gt;&gt; 12) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep13_out_en = (usbd0_data.endpoint_mask &gt;&gt; 13) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep14_out_en = (usbd0_data.endpoint_mask &gt;&gt; 14) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep15_out_en = (usbd0_data.endpoint_mask &gt;&gt; 15) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep1_in_en   = (usbd0_data.endpoint_mask &gt;&gt; 17) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep2_in_en   = (usbd0_data.endpoint_mask &gt;&gt; 18) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep3_in_en   = (usbd0_data.endpoint_mask &gt;&gt; 19) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep4_in_en   = (usbd0_data.endpoint_mask &gt;&gt; 20) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep5_in_en   = (usbd0_data.endpoint_mask &gt;&gt; 21) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep6_in_en   = (usbd0_data.endpoint_mask &gt;&gt; 22) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep7_in_en   = (usbd0_data.endpoint_mask &gt;&gt; 23) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep8_in_en   = (usbd0_data.endpoint_mask &gt;&gt; 24) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep9_in_en   = (usbd0_data.endpoint_mask &gt;&gt; 25) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep10_in_en  = (usbd0_data.endpoint_mask &gt;&gt; 26) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep11_in_en  = (usbd0_data.endpoint_mask &gt;&gt; 27) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep12_in_en  = (usbd0_data.endpoint_mask &gt;&gt; 28) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep13_in_en  = (usbd0_data.endpoint_mask &gt;&gt; 29) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep14_in_en  = (usbd0_data.endpoint_mask &gt;&gt; 30) &amp; 1;</calc>
      <calc cond="usbd0_en">usbd0_ep15_in_en  = (usbd0_data.endpoint_mask &gt;&gt; 31) &amp; 1;</calc>
      <!-- USB Device 0 end -->

      <!-- USB Device 1: if it exists read and prepare variables for display -->
      <var  name="usbd1_en"                          type="uint8_t"             value="__Symbol_exists(&quot;usbd1_dev&quot;)"/>
      <var  name="usbd1_ep0_out_en"                  type="uint8_t"             value="1"/>
      <var  name="usbd1_ep1_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd1_ep2_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd1_ep3_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd1_ep4_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd1_ep5_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd1_ep6_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd1_ep7_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd1_ep8_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd1_ep9_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd1_ep10_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd1_ep11_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd1_ep12_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd1_ep13_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd1_ep14_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd1_ep15_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd1_ep0_in_en"                   type="uint8_t"             value="1"/>
      <var  name="usbd1_ep1_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd1_ep2_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd1_ep3_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd1_ep4_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd1_ep5_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd1_ep6_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd1_ep7_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd1_ep8_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd1_ep9_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd1_ep10_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd1_ep11_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd1_ep12_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd1_ep13_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd1_ep14_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd1_ep15_in_en"                  type="uint8_t"             value="0"/>
      <read cond="usbd1_en" name="usbd1_cfg"         type="usbd_dev_t"                   symbol="usbd1_dev"                  const="1"/>
      <read cond="usbd1_en" name="usbd1_device_desc" type="USB_DEVICE_DESCRIPTOR"        symbol="usbd1_device_descriptor"    const="1"/>
      <read cond="usbd1_en" name="usbd1_config_desc" type="USB_CONFIGURATION_DESCRIPTOR" symbol="usbd1_config_descriptor_fs" const="1"/>
      <read cond="usbd1_en" name="usbd1_data"        type="usbd_data_t"                  symbol="usbd1_data"/>
      <calc cond="usbd1_en">usbd1_ep1_out_en  = (usbd1_data.endpoint_mask &gt;&gt;  1) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep2_out_en  = (usbd1_data.endpoint_mask &gt;&gt;  2) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep3_out_en  = (usbd1_data.endpoint_mask &gt;&gt;  3) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep4_out_en  = (usbd1_data.endpoint_mask &gt;&gt;  4) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep5_out_en  = (usbd1_data.endpoint_mask &gt;&gt;  5) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep6_out_en  = (usbd1_data.endpoint_mask &gt;&gt;  6) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep7_out_en  = (usbd1_data.endpoint_mask &gt;&gt;  7) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep8_out_en  = (usbd1_data.endpoint_mask &gt;&gt;  8) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep9_out_en  = (usbd1_data.endpoint_mask &gt;&gt;  9) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep10_out_en = (usbd1_data.endpoint_mask &gt;&gt; 10) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep11_out_en = (usbd1_data.endpoint_mask &gt;&gt; 11) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep12_out_en = (usbd1_data.endpoint_mask &gt;&gt; 12) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep13_out_en = (usbd1_data.endpoint_mask &gt;&gt; 13) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep14_out_en = (usbd1_data.endpoint_mask &gt;&gt; 14) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep15_out_en = (usbd1_data.endpoint_mask &gt;&gt; 15) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep1_in_en   = (usbd1_data.endpoint_mask &gt;&gt; 17) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep2_in_en   = (usbd1_data.endpoint_mask &gt;&gt; 18) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep3_in_en   = (usbd1_data.endpoint_mask &gt;&gt; 19) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep4_in_en   = (usbd1_data.endpoint_mask &gt;&gt; 20) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep5_in_en   = (usbd1_data.endpoint_mask &gt;&gt; 21) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep6_in_en   = (usbd1_data.endpoint_mask &gt;&gt; 22) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep7_in_en   = (usbd1_data.endpoint_mask &gt;&gt; 23) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep8_in_en   = (usbd1_data.endpoint_mask &gt;&gt; 24) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep9_in_en   = (usbd1_data.endpoint_mask &gt;&gt; 25) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep10_in_en  = (usbd1_data.endpoint_mask &gt;&gt; 26) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep11_in_en  = (usbd1_data.endpoint_mask &gt;&gt; 27) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep12_in_en  = (usbd1_data.endpoint_mask &gt;&gt; 28) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep13_in_en  = (usbd1_data.endpoint_mask &gt;&gt; 29) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep14_in_en  = (usbd1_data.endpoint_mask &gt;&gt; 30) &amp; 1;</calc>
      <calc cond="usbd1_en">usbd1_ep15_in_en  = (usbd1_data.endpoint_mask &gt;&gt; 31) &amp; 1;</calc>
      <!-- USB Device 1 end -->

      <!-- USB Device 2: if it exists read and prepare variables for display -->
      <var  name="usbd2_en"                          type="uint8_t"             value="__Symbol_exists(&quot;usbd2_dev&quot;)"/>
      <var  name="usbd2_ep0_out_en"                  type="uint8_t"             value="1"/>
      <var  name="usbd2_ep1_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd2_ep2_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd2_ep3_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd2_ep4_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd2_ep5_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd2_ep6_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd2_ep7_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd2_ep8_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd2_ep9_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd2_ep10_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd2_ep11_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd2_ep12_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd2_ep13_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd2_ep14_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd2_ep15_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd2_ep0_in_en"                   type="uint8_t"             value="1"/>
      <var  name="usbd2_ep1_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd2_ep2_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd2_ep3_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd2_ep4_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd2_ep5_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd2_ep6_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd2_ep7_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd2_ep8_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd2_ep9_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd2_ep10_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd2_ep11_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd2_ep12_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd2_ep13_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd2_ep14_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd2_ep15_in_en"                  type="uint8_t"             value="0"/>
      <read cond="usbd2_en" name="usbd2_cfg"         type="usbd_dev_t"                   symbol="usbd2_dev"                  const="1"/>
      <read cond="usbd2_en" name="usbd2_device_desc" type="USB_DEVICE_DESCRIPTOR"        symbol="usbd2_device_descriptor"    const="1"/>
      <read cond="usbd2_en" name="usbd2_config_desc" type="USB_CONFIGURATION_DESCRIPTOR" symbol="usbd2_config_descriptor_fs" const="1"/>
      <read cond="usbd2_en" name="usbd2_data"        type="usbd_data_t"                  symbol="usbd2_data"/>
      <calc cond="usbd2_en">usbd2_ep1_out_en  = (usbd2_data.endpoint_mask &gt;&gt;  1) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep2_out_en  = (usbd2_data.endpoint_mask &gt;&gt;  2) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep3_out_en  = (usbd2_data.endpoint_mask &gt;&gt;  3) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep4_out_en  = (usbd2_data.endpoint_mask &gt;&gt;  4) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep5_out_en  = (usbd2_data.endpoint_mask &gt;&gt;  5) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep6_out_en  = (usbd2_data.endpoint_mask &gt;&gt;  6) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep7_out_en  = (usbd2_data.endpoint_mask &gt;&gt;  7) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep8_out_en  = (usbd2_data.endpoint_mask &gt;&gt;  8) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep9_out_en  = (usbd2_data.endpoint_mask &gt;&gt;  9) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep10_out_en = (usbd2_data.endpoint_mask &gt;&gt; 10) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep11_out_en = (usbd2_data.endpoint_mask &gt;&gt; 11) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep12_out_en = (usbd2_data.endpoint_mask &gt;&gt; 12) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep13_out_en = (usbd2_data.endpoint_mask &gt;&gt; 13) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep14_out_en = (usbd2_data.endpoint_mask &gt;&gt; 14) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep15_out_en = (usbd2_data.endpoint_mask &gt;&gt; 15) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep1_in_en   = (usbd2_data.endpoint_mask &gt;&gt; 17) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep2_in_en   = (usbd2_data.endpoint_mask &gt;&gt; 18) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep3_in_en   = (usbd2_data.endpoint_mask &gt;&gt; 19) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep4_in_en   = (usbd2_data.endpoint_mask &gt;&gt; 20) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep5_in_en   = (usbd2_data.endpoint_mask &gt;&gt; 21) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep6_in_en   = (usbd2_data.endpoint_mask &gt;&gt; 22) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep7_in_en   = (usbd2_data.endpoint_mask &gt;&gt; 23) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep8_in_en   = (usbd2_data.endpoint_mask &gt;&gt; 24) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep9_in_en   = (usbd2_data.endpoint_mask &gt;&gt; 25) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep10_in_en  = (usbd2_data.endpoint_mask &gt;&gt; 26) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep11_in_en  = (usbd2_data.endpoint_mask &gt;&gt; 27) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep12_in_en  = (usbd2_data.endpoint_mask &gt;&gt; 28) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep13_in_en  = (usbd2_data.endpoint_mask &gt;&gt; 29) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep14_in_en  = (usbd2_data.endpoint_mask &gt;&gt; 30) &amp; 1;</calc>
      <calc cond="usbd2_en">usbd2_ep15_in_en  = (usbd2_data.endpoint_mask &gt;&gt; 31) &amp; 1;</calc>
      <!-- USB Device 2 end -->

      <!-- USB Device 3: if it exists read and prepare variables for display -->
      <var  name="usbd3_en"                          type="uint8_t"             value="__Symbol_exists(&quot;usbd3_dev&quot;)"/>
      <var  name="usbd3_ep0_out_en"                  type="uint8_t"             value="1"/>
      <var  name="usbd3_ep1_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd3_ep2_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd3_ep3_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd3_ep4_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd3_ep5_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd3_ep6_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd3_ep7_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd3_ep8_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd3_ep9_out_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd3_ep10_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd3_ep11_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd3_ep12_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd3_ep13_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd3_ep14_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd3_ep15_out_en"                 type="uint8_t"             value="0"/>
      <var  name="usbd3_ep0_in_en"                   type="uint8_t"             value="1"/>
      <var  name="usbd3_ep1_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd3_ep2_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd3_ep3_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd3_ep4_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd3_ep5_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd3_ep6_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd3_ep7_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd3_ep8_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd3_ep9_in_en"                   type="uint8_t"             value="0"/>
      <var  name="usbd3_ep10_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd3_ep11_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd3_ep12_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd3_ep13_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd3_ep14_in_en"                  type="uint8_t"             value="0"/>
      <var  name="usbd3_ep15_in_en"                  type="uint8_t"             value="0"/>
      <read cond="usbd3_en" name="usbd3_cfg"         type="usbd_dev_t"                   symbol="usbd3_dev"                  const="1"/>
      <read cond="usbd3_en" name="usbd3_device_desc" type="USB_DEVICE_DESCRIPTOR"        symbol="usbd3_device_descriptor"    const="1"/>
      <read cond="usbd3_en" name="usbd3_config_desc" type="USB_CONFIGURATION_DESCRIPTOR" symbol="usbd3_config_descriptor_fs" const="1"/>
      <read cond="usbd3_en" name="usbd3_data"        type="usbd_data_t"                  symbol="usbd3_data"/>
      <calc cond="usbd3_en">usbd3_ep1_out_en  = (usbd3_data.endpoint_mask &gt;&gt;  1) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep2_out_en  = (usbd3_data.endpoint_mask &gt;&gt;  2) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep3_out_en  = (usbd3_data.endpoint_mask &gt;&gt;  3) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep4_out_en  = (usbd3_data.endpoint_mask &gt;&gt;  4) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep5_out_en  = (usbd3_data.endpoint_mask &gt;&gt;  5) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep6_out_en  = (usbd3_data.endpoint_mask &gt;&gt;  6) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep7_out_en  = (usbd3_data.endpoint_mask &gt;&gt;  7) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep8_out_en  = (usbd3_data.endpoint_mask &gt;&gt;  8) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep9_out_en  = (usbd3_data.endpoint_mask &gt;&gt;  9) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep10_out_en = (usbd3_data.endpoint_mask &gt;&gt; 10) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep11_out_en = (usbd3_data.endpoint_mask &gt;&gt; 11) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep12_out_en = (usbd3_data.endpoint_mask &gt;&gt; 12) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep13_out_en = (usbd3_data.endpoint_mask &gt;&gt; 13) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep14_out_en = (usbd3_data.endpoint_mask &gt;&gt; 14) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep15_out_en = (usbd3_data.endpoint_mask &gt;&gt; 15) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep1_in_en   = (usbd3_data.endpoint_mask &gt;&gt; 17) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep2_in_en   = (usbd3_data.endpoint_mask &gt;&gt; 18) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep3_in_en   = (usbd3_data.endpoint_mask &gt;&gt; 19) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep4_in_en   = (usbd3_data.endpoint_mask &gt;&gt; 20) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep5_in_en   = (usbd3_data.endpoint_mask &gt;&gt; 21) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep6_in_en   = (usbd3_data.endpoint_mask &gt;&gt; 22) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep7_in_en   = (usbd3_data.endpoint_mask &gt;&gt; 23) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep8_in_en   = (usbd3_data.endpoint_mask &gt;&gt; 24) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep9_in_en   = (usbd3_data.endpoint_mask &gt;&gt; 25) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep10_in_en  = (usbd3_data.endpoint_mask &gt;&gt; 26) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep11_in_en  = (usbd3_data.endpoint_mask &gt;&gt; 27) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep12_in_en  = (usbd3_data.endpoint_mask &gt;&gt; 28) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep13_in_en  = (usbd3_data.endpoint_mask &gt;&gt; 29) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep14_in_en  = (usbd3_data.endpoint_mask &gt;&gt; 30) &amp; 1;</calc>
      <calc cond="usbd3_en">usbd3_ep15_in_en  = (usbd3_data.endpoint_mask &gt;&gt; 31) &amp; 1;</calc>
      <!-- USB Device 3 end -->

      <!-- USB Device Custom Class: if it exists read and prepare variables for display -->
        <!-- Declare and define all variables for this class -->
        <var  name="usbd_cc_en"      type="uint8_t" value="__Symbol_exists(&quot;usbd_custom_class&quot;)"/>
        <var  name="usbd_cc_num"     type="uint8_t" value="0"/>
        <var  name="usbd0_cc0_en"    type="uint8_t" value="0"/>
        <var  name="usbd1_cc0_en"    type="uint8_t" value="0"/>
        <var  name="usbd2_cc0_en"    type="uint8_t" value="0"/>
        <var  name="usbd3_cc0_en"    type="uint8_t" value="0"/>
        <var  name="usbd0_cc1_en"    type="uint8_t" value="0"/>
        <var  name="usbd1_cc1_en"    type="uint8_t" value="0"/>
        <var  name="usbd2_cc1_en"    type="uint8_t" value="0"/>
        <var  name="usbd3_cc1_en"    type="uint8_t" value="0"/>
        <var  name="usbd0_cc2_en"    type="uint8_t" value="0"/>
        <var  name="usbd1_cc2_en"    type="uint8_t" value="0"/>
        <var  name="usbd2_cc2_en"    type="uint8_t" value="0"/>
        <var  name="usbd3_cc2_en"    type="uint8_t" value="0"/>
        <var  name="usbd0_cc3_en"    type="uint8_t" value="0"/>
        <var  name="usbd1_cc3_en"    type="uint8_t" value="0"/>
        <var  name="usbd2_cc3_en"    type="uint8_t" value="0"/>
        <var  name="usbd3_cc3_en"    type="uint8_t" value="0"/>
        <var  name="usbd_cc0_if_num" type="uint8_t" value="0"/>
        <var  name="usbd_cc1_if_num" type="uint8_t" value="0"/>
        <var  name="usbd_cc2_if_num" type="uint8_t" value="0"/>
        <var  name="usbd_cc3_if_num" type="uint8_t" value="0"/>

        <!-- Prepare for display all variables by reading and calculating -->
        <read cond="usbd_cc_en" name="usbd_cc_num_hw" type="uint8_t" symbol="usbd_custom_class_num" const="1"/>
        <calc cond="(usbd_cc_en == 1)">usbd_cc_num = usbd_cc_num_hw;</calc>
        <calc cond="(usbd_cc_en == 0)">usbd_cc_num = 0;</calc>
        <readlist cond="usbd_cc_en" name="usbd_cc"  type="usbd_cc_t" symbol="usbd_custom_class"     based="0" count="usbd_cc_num" init="1" const="1"/>
        <calc cond="(usbd_cc_num&gt;0)">
          usbd0_cc0_en      = (usbd_cc[0].dev_num == 0) ? 1 : 0;
          usbd1_cc0_en      = (usbd_cc[0].dev_num == 1) ? 1 : 0;
          usbd2_cc0_en      = (usbd_cc[0].dev_num == 2) ? 1 : 0;
          usbd3_cc0_en      = (usbd_cc[0].dev_num == 3) ? 1 : 0;
          usbd_cc[0].if_num = (usbd_cc[0].if0_en + usbd_cc[0].if1_en + usbd_cc[0].if2_en + usbd_cc[0].if3_en);
        </calc>
        <calc cond="(usbd_cc_num&gt;1)">
          usbd0_cc1_en      = (usbd_cc[1].dev_num == 0) ? 1 : 0;
          usbd1_cc1_en      = (usbd_cc[1].dev_num == 1) ? 1 : 0;
          usbd2_cc1_en      = (usbd_cc[1].dev_num == 2) ? 1 : 0;
          usbd3_cc1_en      = (usbd_cc[1].dev_num == 3) ? 1 : 0;
          usbd_cc[1].if_num = (usbd_cc[1].if0_en + usbd_cc[1].if1_en + usbd_cc[1].if2_en + usbd_cc[1].if3_en);
        </calc>
        <calc cond="(usbd_cc_num&gt;2)">
          usbd0_cc2_en      = (usbd_cc[2].dev_num == 0) ? 1 : 0;
          usbd1_cc2_en      = (usbd_cc[2].dev_num == 1) ? 1 : 0;
          usbd2_cc2_en      = (usbd_cc[2].dev_num == 2) ? 1 : 0;
          usbd3_cc2_en      = (usbd_cc[2].dev_num == 3) ? 1 : 0;
          usbd_cc[2].if_num = (usbd_cc[2].if0_en + usbd_cc[2].if1_en + usbd_cc[2].if2_en + usbd_cc[2].if3_en);
        </calc>
        <calc cond="(usbd_cc_num&gt;3)">
          usbd0_cc3_en      = (usbd_cc[3].dev_num == 0) ? 1 : 0;
          usbd1_cc3_en      = (usbd_cc[3].dev_num == 1) ? 1 : 0;
          usbd2_cc3_en      = (usbd_cc[3].dev_num == 2) ? 1 : 0;
          usbd3_cc3_en      = (usbd_cc[3].dev_num == 3) ? 1 : 0;
          usbd_cc[3].if_num = (usbd_cc[3].if0_en + usbd_cc[3].if1_en + usbd_cc[3].if2_en + usbd_cc[3].if3_en);
        </calc>
      <!-- USB Device Custom Class end -->

      <!-- USB Device Audio Device Class (ADC): if it exists read and prepare variables for display -->
        <!-- Declare and define all variables for this class -->
        <var  name="usbd_adc_en"       type="uint8_t" value="__Symbol_exists(&quot;usbd_adc&quot;)"/>
        <var  name="usbd_adc_num"      type="uint8_t" value="0"/>
        <var  name="usbd0_adc0_en"     type="uint8_t" value="0"/>
        <var  name="usbd1_adc0_en"     type="uint8_t" value="0"/>
        <var  name="usbd2_adc0_en"     type="uint8_t" value="0"/>
        <var  name="usbd3_adc0_en"     type="uint8_t" value="0"/>
        <var  name="usbd0_adc1_en"     type="uint8_t" value="0"/>
        <var  name="usbd1_adc1_en"     type="uint8_t" value="0"/>
        <var  name="usbd2_adc1_en"     type="uint8_t" value="0"/>
        <var  name="usbd3_adc1_en"     type="uint8_t" value="0"/>
        <var  name="usbd0_adc2_en"     type="uint8_t" value="0"/>
        <var  name="usbd1_adc2_en"     type="uint8_t" value="0"/>
        <var  name="usbd2_adc2_en"     type="uint8_t" value="0"/>
        <var  name="usbd3_adc2_en"     type="uint8_t" value="0"/>
        <var  name="usbd0_adc3_en"     type="uint8_t" value="0"/>
        <var  name="usbd1_adc3_en"     type="uint8_t" value="0"/>
        <var  name="usbd2_adc3_en"     type="uint8_t" value="0"/>
        <var  name="usbd3_adc3_en"     type="uint8_t" value="0"/>
        <var  name="usbd_adc0_spkr_en" type="uint8_t" value="__Symbol_exists(&quot;usbd_adc0_out_data&quot;)"/>
        <var  name="usbd_adc0_mic_en"  type="uint8_t" value="__Symbol_exists(&quot;usbd_adc0_in_data&quot;)"/>
        <var  name="usbd_adc1_spkr_en" type="uint8_t" value="__Symbol_exists(&quot;usbd_adc1_out_data&quot;)"/>
        <var  name="usbd_adc1_mic_en"  type="uint8_t" value="__Symbol_exists(&quot;usbd_adc1_in_data&quot;)"/>
        <var  name="usbd_adc2_spkr_en" type="uint8_t" value="__Symbol_exists(&quot;usbd_adc2_out_data&quot;)"/>
        <var  name="usbd_adc2_mic_en"  type="uint8_t" value="__Symbol_exists(&quot;usbd_adc2_in_data&quot;)"/>
        <var  name="usbd_adc3_spkr_en" type="uint8_t" value="__Symbol_exists(&quot;usbd_adc3_out_data&quot;)"/>
        <var  name="usbd_adc3_mic_en"  type="uint8_t" value="__Symbol_exists(&quot;usbd_adc3_in_data&quot;)"/>

        <!-- Prepare for display all variables by reading and calculating -->
        <read cond="usbd_adc_en" name="usbd_adc_num_hw" type="uint8_t" symbol="usbd_adc_num" const="1"/>
        <calc cond="(usbd_adc_en == 1)">usbd_adc_num = usbd_adc_num_hw;</calc>
        <calc cond="(usbd_adc_en == 0)">usbd_adc_num = 0;</calc>
        <readlist cond="usbd_adc_en"       name="usbd_adc"            type="usbd_adc_t"           symbol="usbd_adc"            based="0" count="usbd_adc_num" init="1" const="1"/>
        <read     cond="usbd_adc0_spkr_en" name="usbd_adc0_spkr_data" type="usbd_adc_spkr_data_t" symbol="usbd_adc0_spkr_data" />
        <read     cond="usbd_adc0_mic_en"  name="usbd_adc0_mic_data"  type="usbd_adc_mic_data_t"  symbol="usbd_adc0_mic_data"  />
        <read     cond="usbd_adc1_spkr_en" name="usbd_adc1_spkr_data" type="usbd_adc_spkr_data_t" symbol="usbd_adc1_spkr_data" />
        <read     cond="usbd_adc1_mic_en"  name="usbd_adc1_mic_data"  type="usbd_adc_mic_data_t"  symbol="usbd_adc1_mic_data"  />
        <read     cond="usbd_adc2_spkr_en" name="usbd_adc2_spkr_data" type="usbd_adc_spkr_data_t" symbol="usbd_adc2_spkr_data" />
        <read     cond="usbd_adc2_mic_en"  name="usbd_adc2_mic_data"  type="usbd_adc_mic_data_t"  symbol="usbd_adc2_mic_data"  />
        <read     cond="usbd_adc3_spkr_en" name="usbd_adc3_spkr_data" type="usbd_adc_spkr_data_t" symbol="usbd_adc3_spkr_data" />
        <read     cond="usbd_adc3_mic_en"  name="usbd_adc3_mic_data"  type="usbd_adc_mic_data_t"  symbol="usbd_adc3_mic_data"  />
        <read     cond="usbd_adc0_spkr_en" name="usbd_adc0_out_data"  type="usbd_adc_code_t"      symbol="usbd_adc0_out_data" const="1"/>
        <read     cond="usbd_adc0_mic_en"  name="usbd_adc0_in_data"   type="usbd_adc_code_t"      symbol="usbd_adc0_in_data"  const="1"/>
        <read     cond="usbd_adc1_spkr_en" name="usbd_adc1_out_data"  type="usbd_adc_code_t"      symbol="usbd_adc1_out_data" const="1"/>
        <read     cond="usbd_adc1_mic_en"  name="usbd_adc1_in_data"   type="usbd_adc_code_t"      symbol="usbd_adc1_in_data"  const="1"/>
        <read     cond="usbd_adc2_spkr_en" name="usbd_adc2_out_data"  type="usbd_adc_code_t"      symbol="usbd_adc2_out_data" const="1"/>
        <read     cond="usbd_adc2_mic_en"  name="usbd_adc2_in_data"   type="usbd_adc_code_t"      symbol="usbd_adc2_in_data"  const="1"/>
        <read     cond="usbd_adc3_spkr_en" name="usbd_adc3_out_data"  type="usbd_adc_code_t"      symbol="usbd_adc3_out_data" const="1"/>
        <read     cond="usbd_adc3_mic_en"  name="usbd_adc3_in_data"   type="usbd_adc_code_t"      symbol="usbd_adc3_in_data"  const="1"/>
        <calc cond="(usbd_adc_num&gt;0)">
          usbd0_adc0_en = (usbd_adc[0].dev_num == 0) ? 1 : 0;
          usbd1_adc0_en = (usbd_adc[0].dev_num == 1) ? 1 : 0;
          usbd2_adc0_en = (usbd_adc[0].dev_num == 2) ? 1 : 0;
          usbd3_adc0_en = (usbd_adc[0].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_adc_num&gt;1)">
          usbd0_adc1_en = (usbd_adc[1].dev_num == 0) ? 1 : 0;
          usbd1_adc1_en = (usbd_adc[1].dev_num == 1) ? 1 : 0;
          usbd2_adc1_en = (usbd_adc[1].dev_num == 2) ? 1 : 0;
          usbd3_adc1_en = (usbd_adc[1].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_adc_num&gt;2)">
          usbd0_adc2_en = (usbd_adc[2].dev_num == 0) ? 1 : 0;
          usbd1_adc2_en = (usbd_adc[2].dev_num == 1) ? 1 : 0;
          usbd2_adc2_en = (usbd_adc[2].dev_num == 2) ? 1 : 0;
          usbd3_adc2_en = (usbd_adc[2].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_adc_num&gt;3)">
          usbd0_adc3_en = (usbd_adc[3].dev_num == 0) ? 1 : 0;
          usbd1_adc3_en = (usbd_adc[3].dev_num == 1) ? 1 : 0;
          usbd2_adc3_en = (usbd_adc[3].dev_num == 2) ? 1 : 0;
          usbd3_adc3_en = (usbd_adc[3].dev_num == 3) ? 1 : 0;
        </calc>
      <!-- USB Device Audio Device Class (ADC) end -->

      <!-- USB Device Communication Device Class (CDC): if it exists read and prepare variables for display -->
        <!-- Declare and define all variables for this class -->
        <var  name="usbd_cdc_en"   type="uint8_t" value="__Symbol_exists(&quot;usbd_cdc&quot;)"/>
        <var  name="usbd_cdc_num"  type="uint8_t" value="0"/>
        <var  name="usbd0_cdc0_en" type="uint8_t" value="0"/>
        <var  name="usbd1_cdc0_en" type="uint8_t" value="0"/>
        <var  name="usbd2_cdc0_en" type="uint8_t" value="0"/>
        <var  name="usbd3_cdc0_en" type="uint8_t" value="0"/>
        <var  name="usbd0_cdc1_en" type="uint8_t" value="0"/>
        <var  name="usbd1_cdc1_en" type="uint8_t" value="0"/>
        <var  name="usbd2_cdc1_en" type="uint8_t" value="0"/>
        <var  name="usbd3_cdc1_en" type="uint8_t" value="0"/>
        <var  name="usbd0_cdc2_en" type="uint8_t" value="0"/>
        <var  name="usbd1_cdc2_en" type="uint8_t" value="0"/>
        <var  name="usbd2_cdc2_en" type="uint8_t" value="0"/>
        <var  name="usbd3_cdc2_en" type="uint8_t" value="0"/>
        <var  name="usbd0_cdc3_en" type="uint8_t" value="0"/>
        <var  name="usbd1_cdc3_en" type="uint8_t" value="0"/>
        <var  name="usbd2_cdc3_en" type="uint8_t" value="0"/>
        <var  name="usbd3_cdc3_en" type="uint8_t" value="0"/>
        <var  name="usbd0_cdc4_en" type="uint8_t" value="0"/>
        <var  name="usbd1_cdc4_en" type="uint8_t" value="0"/>
        <var  name="usbd2_cdc4_en" type="uint8_t" value="0"/>
        <var  name="usbd3_cdc4_en" type="uint8_t" value="0"/>
        <var  name="usbd0_cdc5_en" type="uint8_t" value="0"/>
        <var  name="usbd1_cdc5_en" type="uint8_t" value="0"/>
        <var  name="usbd2_cdc5_en" type="uint8_t" value="0"/>
        <var  name="usbd3_cdc5_en" type="uint8_t" value="0"/>
        <var  name="usbd0_cdc6_en" type="uint8_t" value="0"/>
        <var  name="usbd1_cdc6_en" type="uint8_t" value="0"/>
        <var  name="usbd2_cdc6_en" type="uint8_t" value="0"/>
        <var  name="usbd3_cdc6_en" type="uint8_t" value="0"/>
        <var  name="usbd0_cdc7_en" type="uint8_t" value="0"/>
        <var  name="usbd1_cdc7_en" type="uint8_t" value="0"/>
        <var  name="usbd2_cdc7_en" type="uint8_t" value="0"/>
        <var  name="usbd3_cdc7_en" type="uint8_t" value="0"/>

        <!-- Prepare for display all variables by reading and calculating -->
        <read cond="usbd_cdc_en" name="usbd_cdc_num_hw" type="uint8_t" symbol="usbd_cdc_num" const="1"/>
        <calc cond="(usbd_cdc_en == 1)">usbd_cdc_num = usbd_cdc_num_hw;</calc>
        <calc cond="(usbd_cdc_en == 0)">usbd_cdc_num = 0;</calc>
        <readlist cond="usbd_cdc_en" name="usbd_cdc" type="usbd_cdc_t" symbol="usbd_cdc" based="0" count="usbd_cdc_num" init="1" const="1"/>
        <calc cond="(usbd_cdc_num&gt;0)">
          usbd0_cdc0_en = (usbd_cdc[0].dev_num == 0) ? 1 : 0;
          usbd1_cdc0_en = (usbd_cdc[0].dev_num == 1) ? 1 : 0;
          usbd2_cdc0_en = (usbd_cdc[0].dev_num == 2) ? 1 : 0;
          usbd3_cdc0_en = (usbd_cdc[0].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_cdc_num&gt;1)">
          usbd0_cdc1_en = (usbd_cdc[1].dev_num == 0) ? 1 : 0;
          usbd1_cdc1_en = (usbd_cdc[1].dev_num == 1) ? 1 : 0;
          usbd2_cdc1_en = (usbd_cdc[1].dev_num == 2) ? 1 : 0;
          usbd3_cdc1_en = (usbd_cdc[1].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_cdc_num&gt;2)">
          usbd0_cdc2_en = (usbd_cdc[2].dev_num == 0) ? 1 : 0;
          usbd1_cdc2_en = (usbd_cdc[2].dev_num == 1) ? 1 : 0;
          usbd2_cdc2_en = (usbd_cdc[2].dev_num == 2) ? 1 : 0;
          usbd3_cdc2_en = (usbd_cdc[2].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_cdc_num&gt;3)">
          usbd0_cdc3_en = (usbd_cdc[3].dev_num == 0) ? 1 : 0;
          usbd1_cdc3_en = (usbd_cdc[3].dev_num == 1) ? 1 : 0;
          usbd2_cdc3_en = (usbd_cdc[3].dev_num == 2) ? 1 : 0;
          usbd3_cdc3_en = (usbd_cdc[3].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_cdc_num&gt;4)">
          usbd0_cdc4_en = (usbd_cdc[4].dev_num == 0) ? 1 : 0;
          usbd1_cdc4_en = (usbd_cdc[4].dev_num == 1) ? 1 : 0;
          usbd2_cdc4_en = (usbd_cdc[4].dev_num == 2) ? 1 : 0;
          usbd3_cdc4_en = (usbd_cdc[4].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_cdc_num&gt;5)">
          usbd0_cdc5_en = (usbd_cdc[5].dev_num == 0) ? 1 : 0;
          usbd1_cdc5_en = (usbd_cdc[5].dev_num == 1) ? 1 : 0;
          usbd2_cdc5_en = (usbd_cdc[5].dev_num == 2) ? 1 : 0;
          usbd3_cdc5_en = (usbd_cdc[5].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_cdc_num&gt;6)">
          usbd0_cdc6_en = (usbd_cdc[6].dev_num == 0) ? 1 : 0;
          usbd1_cdc6_en = (usbd_cdc[6].dev_num == 1) ? 1 : 0;
          usbd2_cdc6_en = (usbd_cdc[6].dev_num == 2) ? 1 : 0;
          usbd3_cdc6_en = (usbd_cdc[6].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_cdc_num&gt;7)">
          usbd0_cdc7_en = (usbd_cdc[7].dev_num == 0) ? 1 : 0;
          usbd1_cdc7_en = (usbd_cdc[7].dev_num == 1) ? 1 : 0;
          usbd2_cdc7_en = (usbd_cdc[7].dev_num == 2) ? 1 : 0;
          usbd3_cdc7_en = (usbd_cdc[7].dev_num == 3) ? 1 : 0;
        </calc>
      <!-- USB Device Communication Device Class (CDC) end -->

      <!-- USB Device Human Interface Device (HID): if it exists read and prepare variables for display -->
        <!-- Declare and define all variables for this class -->
        <var  name="usbd_hid_en"   type="uint8_t" value="__Symbol_exists(&quot;usbd_hid&quot;)"/>
        <var  name="usbd_hid_num"  type="uint8_t" value="0"/>
        <var  name="usbd0_hid0_en" type="uint8_t" value="0"/>
        <var  name="usbd1_hid0_en" type="uint8_t" value="0"/>
        <var  name="usbd2_hid0_en" type="uint8_t" value="0"/>
        <var  name="usbd3_hid0_en" type="uint8_t" value="0"/>
        <var  name="usbd0_hid1_en" type="uint8_t" value="0"/>
        <var  name="usbd1_hid1_en" type="uint8_t" value="0"/>
        <var  name="usbd2_hid1_en" type="uint8_t" value="0"/>
        <var  name="usbd3_hid1_en" type="uint8_t" value="0"/>
        <var  name="usbd0_hid2_en" type="uint8_t" value="0"/>
        <var  name="usbd1_hid2_en" type="uint8_t" value="0"/>
        <var  name="usbd2_hid2_en" type="uint8_t" value="0"/>
        <var  name="usbd3_hid2_en" type="uint8_t" value="0"/>
        <var  name="usbd0_hid3_en" type="uint8_t" value="0"/>
        <var  name="usbd1_hid3_en" type="uint8_t" value="0"/>
        <var  name="usbd2_hid3_en" type="uint8_t" value="0"/>
        <var  name="usbd3_hid3_en" type="uint8_t" value="0"/>

        <!-- Prepare for display all variables by reading and calculating -->
        <read cond="usbd_hid_en" name="usbd_hid_num_hw" type="uint8_t" symbol="usbd_hid_num" const="1"/>
        <calc cond="(usbd_hid_en == 1)">usbd_hid_num = usbd_hid_num_hw;</calc>
        <calc cond="(usbd_hid_en == 0)">usbd_hid_num = 0;</calc>
        <readlist cond="usbd_hid_en" name="usbd_hid" type="usbd_hid_t" symbol="usbd_hid" based="0" count="usbd_hid_num" init="1" const="1"/>
        <calc cond="(usbd_hid_num&gt;0)">
          usbd0_hid0_en = (usbd_hid[0].dev_num == 0) ? 1 : 0;
          usbd1_hid0_en = (usbd_hid[0].dev_num == 1) ? 1 : 0;
          usbd2_hid0_en = (usbd_hid[0].dev_num == 2) ? 1 : 0;
          usbd3_hid0_en = (usbd_hid[0].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_hid_num&gt;1)">
          usbd0_hid1_en = (usbd_hid[1].dev_num == 0) ? 1 : 0;
          usbd1_hid1_en = (usbd_hid[1].dev_num == 1) ? 1 : 0;
          usbd2_hid1_en = (usbd_hid[1].dev_num == 2) ? 1 : 0;
          usbd3_hid1_en = (usbd_hid[1].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_hid_num&gt;2)">
          usbd0_hid2_en = (usbd_hid[2].dev_num == 0) ? 1 : 0;
          usbd1_hid2_en = (usbd_hid[2].dev_num == 1) ? 1 : 0;
          usbd2_hid2_en = (usbd_hid[2].dev_num == 2) ? 1 : 0;
          usbd3_hid2_en = (usbd_hid[2].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_hid_num&gt;3)">
          usbd0_hid3_en = (usbd_hid[3].dev_num == 0) ? 1 : 0;
          usbd1_hid3_en = (usbd_hid[3].dev_num == 1) ? 1 : 0;
          usbd2_hid3_en = (usbd_hid[3].dev_num == 2) ? 1 : 0;
          usbd3_hid3_en = (usbd_hid[3].dev_num == 3) ? 1 : 0;
        </calc>
      <!-- USB Device Human Interface Device (HID) end -->

      <!-- USB Device Mass Storage Device Class (MSC): if it exists read and prepare variables for display -->
        <!-- Declare and define all variables for this class -->
        <var  name="usbd_msc_en"          type="uint8_t"  value="__Symbol_exists(&quot;usbd_msc&quot;)"/>
        <var  name="usbd_msc_num"         type="uint8_t"  value="0"/>
        <var  name="usbd0_msc0_en"        type="uint8_t"  value="0"/>
        <var  name="usbd1_msc0_en"        type="uint8_t"  value="0"/>
        <var  name="usbd2_msc0_en"        type="uint8_t"  value="0"/>
        <var  name="usbd3_msc0_en"        type="uint8_t"  value="0"/>
        <var  name="usbd0_msc1_en"        type="uint8_t"  value="0"/>
        <var  name="usbd1_msc1_en"        type="uint8_t"  value="0"/>
        <var  name="usbd2_msc1_en"        type="uint8_t"  value="0"/>
        <var  name="usbd3_msc1_en"        type="uint8_t"  value="0"/>
        <var  name="usbd0_msc2_en"        type="uint8_t"  value="0"/>
        <var  name="usbd1_msc2_en"        type="uint8_t"  value="0"/>
        <var  name="usbd2_msc2_en"        type="uint8_t"  value="0"/>
        <var  name="usbd3_msc2_en"        type="uint8_t"  value="0"/>
        <var  name="usbd0_msc3_en"        type="uint8_t"  value="0"/>
        <var  name="usbd1_msc3_en"        type="uint8_t"  value="0"/>
        <var  name="usbd2_msc3_en"        type="uint8_t"  value="0"/>
        <var  name="usbd3_msc3_en"        type="uint8_t"  value="0"/>

        <!-- Prepare for display all variables by reading and calculating -->
        <read cond="usbd_msc_en" name="usbd_msc_num_hw" type="uint8_t" symbol="usbd_msc_num" const="1"/>
        <calc cond="(usbd_msc_en == 1)">usbd_msc_num = usbd_msc_num_hw;</calc>
        <calc cond="(usbd_msc_en == 0)">usbd_msc_num = 0;</calc>
        <readlist cond="usbd_msc_en" name="usbd_msc"      type="usbd_msc_t"      symbol="usbd_msc"      based="0" count="usbd_msc_num" init="1" const="1"/>
        <readlist cond="usbd_msc_en" name="usbd_msc_data" type="usbd_msc_data_t" symbol="usbd_msc_data" based="0" count="usbd_msc_num" init="1"/>
        <calc cond="(usbd_msc_num&gt;0)">
          usbd0_msc0_en                   = (usbd_msc[0].dev_num == 0) ? 1 : 0;
          usbd1_msc0_en                   = (usbd_msc[0].dev_num == 1) ? 1 : 0;
          usbd2_msc0_en                   = (usbd_msc[0].dev_num == 2) ? 1 : 0;
          usbd3_msc0_en                   = (usbd_msc[0].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_msc_num&gt;1)">
          usbd0_msc1_en                   = (usbd_msc[1].dev_num == 0) ? 1 : 0;
          usbd1_msc1_en                   = (usbd_msc[1].dev_num == 1) ? 1 : 0;
          usbd2_msc1_en                   = (usbd_msc[1].dev_num == 2) ? 1 : 0;
          usbd3_msc1_en                   = (usbd_msc[1].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_msc_num&gt;2)">
          usbd0_msc2_en                   = (usbd_msc[2].dev_num == 0) ? 1 : 0;
          usbd1_msc2_en                   = (usbd_msc[2].dev_num == 1) ? 1 : 0;
          usbd2_msc2_en                   = (usbd_msc[2].dev_num == 2) ? 1 : 0;
          usbd3_msc2_en                   = (usbd_msc[2].dev_num == 3) ? 1 : 0;
        </calc>
        <calc cond="(usbd_msc_num&gt;3)">
          usbd0_msc3_en                   = (usbd_msc[3].dev_num == 0) ? 1 : 0;
          usbd1_msc3_en                   = (usbd_msc[3].dev_num == 1) ? 1 : 0;
          usbd2_msc3_en                   = (usbd_msc[3].dev_num == 2) ? 1 : 0;
          usbd3_msc3_en                   = (usbd_msc[3].dev_num == 3) ? 1 : 0;
        </calc>
        <list name="usb_i" start="0" limit="usbd_msc_data._count" >
          <calc>
            usbd_msc_data[usb_i].lun0_media_size     =  usbd_msc_data[usb_i].lun0_block_size;
            usbd_msc_data[usb_i].lun0_media_size    *=  usbd_msc_data[usb_i].lun0_block_count;
            usbd_msc_data[usb_i].lun0_media_size_dbl =  usbd_msc_data[usb_i].lun0_media_size;
          </calc>
          <calc cond="(usbd_msc[usb_i].max_lun&gt;0)">
            usbd_msc_data[usb_i].lun1_media_size     =  usbd_msc_data[usb_i].lun1_block_size;
            usbd_msc_data[usb_i].lun1_media_size    *=  usbd_msc_data[usb_i].lun1_block_count;
            usbd_msc_data[usb_i].lun1_media_size_dbl =  usbd_msc_data[usb_i].lun1_media_size;
          </calc>
          <calc cond="(usbd_msc[usb_i].max_lun&gt;0)">
            usbd_msc_data[usb_i].lun2_media_size     =  usbd_msc_data[usb_i].lun2_block_size;
            usbd_msc_data[usb_i].lun2_media_size    *=  usbd_msc_data[usb_i].lun2_block_count;
            usbd_msc_data[usb_i].lun2_media_size_dbl =  usbd_msc_data[usb_i].lun2_media_size;
          </calc>
          <calc cond="(usbd_msc[usb_i].max_lun&gt;0)">
            usbd_msc_data[usb_i].lun3_media_size     =  usbd_msc_data[usb_i].lun3_block_size;
            usbd_msc_data[usb_i].lun3_media_size    *=  usbd_msc_data[usb_i].lun3_block_count;
            usbd_msc_data[usb_i].lun3_media_size_dbl =  usbd_msc_data[usb_i].lun3_media_size;
          </calc>
          <calc cond="usbd_msc_data[usb_i].lun0_media_size &gt;           (1024)">usbd_msc_data[usb_i].lun0_media_size_xB = usbd_msc_data[usb_i].lun0_media_size_dbl /           (1024); usbd_msc_data[usb_i].lun0_media_size_x = 1;</calc>
          <calc cond="usbd_msc_data[usb_i].lun0_media_size &gt;      (1024*1024)">usbd_msc_data[usb_i].lun0_media_size_xB = usbd_msc_data[usb_i].lun0_media_size_dbl /      (1024*1024); usbd_msc_data[usb_i].lun0_media_size_x = 2;</calc>
          <calc cond="usbd_msc_data[usb_i].lun0_media_size &gt; (1024*1024*1024)">usbd_msc_data[usb_i].lun0_media_size_xB = usbd_msc_data[usb_i].lun0_media_size_dbl / (1024*1024*1024); usbd_msc_data[usb_i].lun0_media_size_x = 3;</calc>
          <calc cond="usbd_msc_data[usb_i].lun1_media_size &gt;           (1024)">usbd_msc_data[usb_i].lun1_media_size_xB = usbd_msc_data[usb_i].lun1_media_size_dbl /           (1024); usbd_msc_data[usb_i].lun1_media_size_x = 1;</calc>
          <calc cond="usbd_msc_data[usb_i].lun1_media_size &gt;      (1024*1024)">usbd_msc_data[usb_i].lun1_media_size_xB = usbd_msc_data[usb_i].lun1_media_size_dbl /      (1024*1024); usbd_msc_data[usb_i].lun1_media_size_x = 2;</calc>
          <calc cond="usbd_msc_data[usb_i].lun1_media_size &gt; (1024*1024*1024)">usbd_msc_data[usb_i].lun1_media_size_xB = usbd_msc_data[usb_i].lun1_media_size_dbl / (1024*1024*1024); usbd_msc_data[usb_i].lun1_media_size_x = 3;</calc>
          <calc cond="usbd_msc_data[usb_i].lun2_media_size &gt;           (1024)">usbd_msc_data[usb_i].lun2_media_size_xB = usbd_msc_data[usb_i].lun2_media_size_dbl /           (1024); usbd_msc_data[usb_i].lun2_media_size_x = 1;</calc>
          <calc cond="usbd_msc_data[usb_i].lun2_media_size &gt;      (1024*1024)">usbd_msc_data[usb_i].lun2_media_size_xB = usbd_msc_data[usb_i].lun2_media_size_dbl /      (1024*1024); usbd_msc_data[usb_i].lun2_media_size_x = 2;</calc>
          <calc cond="usbd_msc_data[usb_i].lun2_media_size &gt; (1024*1024*1024)">usbd_msc_data[usb_i].lun2_media_size_xB = usbd_msc_data[usb_i].lun2_media_size_dbl / (1024*1024*1024); usbd_msc_data[usb_i].lun2_media_size_x = 3;</calc>
          <calc cond="usbd_msc_data[usb_i].lun3_media_size &gt;           (1024)">usbd_msc_data[usb_i].lun3_media_size_xB = usbd_msc_data[usb_i].lun3_media_size_dbl /           (1024); usbd_msc_data[usb_i].lun3_media_size_x = 1;</calc>
          <calc cond="usbd_msc_data[usb_i].lun3_media_size &gt;      (1024*1024)">usbd_msc_data[usb_i].lun3_media_size_xB = usbd_msc_data[usb_i].lun3_media_size_dbl /      (1024*1024); usbd_msc_data[usb_i].lun3_media_size_x = 2;</calc>
          <calc cond="usbd_msc_data[usb_i].lun3_media_size &gt; (1024*1024*1024)">usbd_msc_data[usb_i].lun3_media_size_xB = usbd_msc_data[usb_i].lun3_media_size_dbl / (1024*1024*1024); usbd_msc_data[usb_i].lun3_media_size_x = 3;</calc>
        </list>
      <!-- USB Device Mass Storage Device Class (MSC) end -->

      <!-- USB Host Component variables ************************************************************************************** -->
      <!-- USB Host 0: if it exists read and prepare variables for display -->
      <var  name="usbh0_en"                type="uint8_t"         value="__Symbol_exists(&quot;usbh0_pipe&quot;)"/>
      <var  name="usbh0_ehci_used"         type="uint8_t"         value="__Symbol_exists(&quot;usbh0_ehci_ptr&quot;) &amp;&amp; __Symbol_exists(&quot;usbh0_ehci&quot;)"/>
      <var  name="usbh0_ohci_used"         type="uint8_t"         value="__Symbol_exists(&quot;usbh0_ohci_ptr&quot;) &amp;&amp; __Symbol_exists(&quot;usbh0_ohci&quot;)"/>
      <var  name="usbh0_hc_used"           type="uint8_t"         value="__Symbol_exists(&quot;usbh0_hc_ptr&quot;)   &amp;&amp; !usbh0_ehci_used &amp;&amp; !usbh0_ohci_used"/>
      <var  name="usbh0_transfer_exists"   type="uint8_t"         value="__Symbol_exists(&quot;usbh0_transfer&quot;)"/>
      <var  name="usbh0_hci_type"          type="usbh_hci_type_t" value="0"/>
      <var  name="usbh0_pipe_used_num"     type="uint32_t"        value="0"/>
      <var  name="usbh0_transfer_used_num" type="uint32_t"        value="0"/>

      <read     cond="usbh0_hc_used"         name="usbh0_hc_ptr"       type="uint32_t"             symbol="usbh0_hc_ptr"        const="1"/>
      <read     cond="usbh0_ohci_used"       name="usbh0_ohci_ptr"     type="uint32_t"             symbol="usbh0_ohci_ptr"      const="1"/>
      <read     cond="usbh0_ehci_used"       name="usbh0_ehci_ptr"     type="uint32_t"             symbol="usbh0_ehci_ptr"      const="1"/>
      <read     cond="usbh0_en"              name="usbh0_pipe_num"     type="uint32_t"             symbol="usbh0_pipe_num"      const="1"/>
      <readlist cond="usbh0_en"              name="usbh0_pipe"         type="USBH_PIPE"            symbol="usbh0_pipe"          based="0" count="usbh0_pipe_num" init="1"/>
      <readlist cond="usbh0_transfer_exists" name="usbh0_transfer"     type="USBH_TRANSFER_INFO_t" symbol="usbh0_transfer_info" based="0" count="usbh0_pipe_num" init="1"/>
      <calc     cond="usbh0_hc_used">
        usbh0_hci_type.type = 0;
      </calc>
      <calc     cond="usbh0_ohci_used">
        usbh0_hci_type.type = 1;
      </calc>
      <calc     cond="usbh0_ehci_used">
        usbh0_hci_type.type = 2;
      </calc>
      <list name="usb_i" start="0" limit="usbh0_pipe._count" >                                               <!-- list: use above local var "i"  -->
        <calc>usbh0_pipe_used_num += (usbh0_pipe[usb_i].hw_handle != 0) ? 1 : 0;</calc>
      </list>
      <list cond="usbh0_transfer_exists" name="usb_i" start="0" limit="usbh0_transfer._count" >                                               <!-- list: use above local var "i"  -->
        <calc>usbh0_transfer_used_num += (usbh0_transfer[usb_i].active != 0) ? 1 : 0;</calc>
      </list>
      <!-- USB Host 0 end -->

      <!-- USB Host 1: if it exists read and prepare variables for display -->
      <var  name="usbh1_en"                type="uint8_t"         value="__Symbol_exists(&quot;usbh1_pipe&quot;)"/>
      <var  name="usbh1_ehci_used"         type="uint8_t"         value="__Symbol_exists(&quot;usbh1_ehci_ptr&quot;) &amp;&amp; __Symbol_exists(&quot;usbh1_ehci&quot;)"/>
      <var  name="usbh1_ohci_used"         type="uint8_t"         value="__Symbol_exists(&quot;usbh1_ohci_ptr&quot;) &amp;&amp; __Symbol_exists(&quot;usbh1_ohci&quot;)"/>
      <var  name="usbh1_hc_used"           type="uint8_t"         value="__Symbol_exists(&quot;usbh1_hc_ptr&quot;)   &amp;&amp; !usbh1_ehci_used &amp;&amp; !usbh1_ohci_used"/>
      <var  name="usbh1_transfer_exists"   type="uint8_t"         value="__Symbol_exists(&quot;usbh1_transfer&quot;)"/>
      <var  name="usbh1_hci_type"          type="usbh_hci_type_t" value="0"/>
      <var  name="usbh1_pipe_used_num"     type="uint32_t"        value="0"/>
      <var  name="usbh1_transfer_used_num" type="uint32_t"        value="0"/>

      <read     cond="usbh1_hc_used"         name="usbh1_hc_ptr"       type="uint32_t"             symbol="usbh1_hc_ptr"        const="1"/>
      <read     cond="usbh1_ohci_used"       name="usbh1_ohci_ptr"     type="uint32_t"             symbol="usbh1_ohci_ptr"      const="1"/>
      <read     cond="usbh1_ehci_used"       name="usbh1_ehci_ptr"     type="uint32_t"             symbol="usbh1_ehci_ptr"      const="1"/>
      <read     cond="usbh1_en"              name="usbh1_pipe_num"     type="uint32_t"             symbol="usbh1_pipe_num"      const="1"/>
      <readlist cond="usbh1_en"              name="usbh1_pipe"         type="USBH_PIPE"            symbol="usbh1_pipe"          based="0" count="usbh1_pipe_num" init="1"/>
      <readlist cond="usbh1_transfer_exists" name="usbh1_transfer"     type="USBH_TRANSFER_INFO_t" symbol="usbh1_transfer_info" based="0" count="usbh1_pipe_num" init="1"/>
      <calc     cond="usbh1_hc_used">
        usbh1_hci_type.type = 0;
      </calc>
      <calc     cond="usbh1_ohci_used">
        usbh1_hci_type.type = 1;
      </calc>
      <calc     cond="usbh1_ehci_used">
        usbh1_hci_type.type = 2;
      </calc>
      <list name="usb_i" start="0" limit="usbh1_pipe._count" >                                               <!-- list: use above local var "i"  -->
        <calc>usbh1_pipe_used_num += (usbh1_pipe[usb_i].hw_handle != 0) ? 1 : 0;</calc>
      </list>
      <list cond="usbh1_transfer_exists" name="usb_i" start="0" limit="usbh1_transfer._count" >                                               <!-- list: use above local var "i"  -->
        <calc>usbh1_transfer_used_num += (usbh1_transfer[usb_i].active != 0) ? 1 : 0;</calc>
      </list>
      <!-- USB Host 1 end -->

      <!-- USB Host 2: if it exists read and prepare variables for display -->
      <var  name="usbh2_en"                type="uint8_t"         value="__Symbol_exists(&quot;usbh2_pipe&quot;)"/>
      <var  name="usbh2_ehci_used"         type="uint8_t"         value="__Symbol_exists(&quot;usbh2_ehci_ptr&quot;) &amp;&amp; __Symbol_exists(&quot;usbh2_ehci&quot;)"/>
      <var  name="usbh2_ohci_used"         type="uint8_t"         value="__Symbol_exists(&quot;usbh2_ohci_ptr&quot;) &amp;&amp; __Symbol_exists(&quot;usbh2_ohci&quot;)"/>
      <var  name="usbh2_hc_used"           type="uint8_t"         value="__Symbol_exists(&quot;usbh2_hc_ptr&quot;)   &amp;&amp; !usbh2_ehci_used &amp;&amp; !usbh2_ohci_used"/>
      <var  name="usbh2_transfer_exists"   type="uint8_t"         value="__Symbol_exists(&quot;usbh2_transfer&quot;)"/>
      <var  name="usbh2_hci_type"          type="usbh_hci_type_t" value="0"/>
      <var  name="usbh2_pipe_used_num"     type="uint32_t"        value="0"/>
      <var  name="usbh2_transfer_used_num" type="uint32_t"        value="0"/>

      <read     cond="usbh2_hc_used"         name="usbh2_hc_ptr"       type="uint32_t"             symbol="usbh2_hc_ptr"        const="1"/>
      <read     cond="usbh2_ohci_used"       name="usbh2_ohci_ptr"     type="uint32_t"             symbol="usbh2_ohci_ptr"      const="1"/>
      <read     cond="usbh2_ehci_used"       name="usbh2_ehci_ptr"     type="uint32_t"             symbol="usbh2_ehci_ptr"      const="1"/>
      <read     cond="usbh2_en"              name="usbh2_pipe_num"     type="uint32_t"             symbol="usbh2_pipe_num"      const="1"/>
      <readlist cond="usbh2_en"              name="usbh2_pipe"         type="USBH_PIPE"            symbol="usbh2_pipe"          based="0" count="usbh2_pipe_num" init="1"/>
      <readlist cond="usbh2_transfer_exists" name="usbh2_transfer"     type="USBH_TRANSFER_INFO_t" symbol="usbh2_transfer_info" based="0" count="usbh2_pipe_num" init="1"/>
      <calc     cond="usbh2_hc_used">
        usbh2_hci_type.type = 0;
      </calc>
      <calc     cond="usbh2_ohci_used">
        usbh2_hci_type.type = 1;
      </calc>
      <calc     cond="usbh2_ehci_used">
        usbh2_hci_type.type = 2;
      </calc>
      <list name="usb_i" start="0" limit="usbh2_pipe._count" >                                               <!-- list: use above local var "i"  -->
        <calc>usbh2_pipe_used_num += (usbh2_pipe[usb_i].hw_handle != 0) ? 1 : 0;</calc>
      </list>
      <list cond="usbh2_transfer_exists" name="usb_i" start="0" limit="usbh2_transfer._count" >                                               <!-- list: use above local var "i"  -->
        <calc>usbh2_transfer_used_num += (usbh2_transfer[usb_i].active != 0) ? 1 : 0;</calc>
      </list>
      <!-- USB Host 2 end -->

      <!-- USB Host 3: if it exists read and prepare variables for display -->
      <var  name="usbh3_en"                type="uint8_t"         value="__Symbol_exists(&quot;usbh3_pipe&quot;)"/>
      <var  name="usbh3_ehci_used"         type="uint8_t"         value="__Symbol_exists(&quot;usbh3_ehci_ptr&quot;) &amp;&amp; __Symbol_exists(&quot;usbh3_ehci&quot;)"/>
      <var  name="usbh3_ohci_used"         type="uint8_t"         value="__Symbol_exists(&quot;usbh3_ohci_ptr&quot;) &amp;&amp; __Symbol_exists(&quot;usbh3_ohci&quot;)"/>
      <var  name="usbh3_hc_used"           type="uint8_t"         value="__Symbol_exists(&quot;usbh3_hc_ptr&quot;)   &amp;&amp; !usbh3_ehci_used &amp;&amp; !usbh3_ohci_used"/>
      <var  name="usbh3_transfer_exists"   type="uint8_t"         value="__Symbol_exists(&quot;usbh3_transfer&quot;)"/>
      <var  name="usbh3_hci_type"          type="usbh_hci_type_t" value="0"/>
      <var  name="usbh3_pipe_used_num"     type="uint32_t"        value="0"/>
      <var  name="usbh3_transfer_used_num" type="uint32_t"        value="0"/>

      <read     cond="usbh3_hc_used"         name="usbh3_hc_ptr"       type="uint32_t"             symbol="usbh3_hc_ptr"        const="1"/>
      <read     cond="usbh3_ohci_used"       name="usbh3_ohci_ptr"     type="uint32_t"             symbol="usbh3_ohci_ptr"      const="1"/>
      <read     cond="usbh3_ehci_used"       name="usbh3_ehci_ptr"     type="uint32_t"             symbol="usbh3_ehci_ptr"      const="1"/>
      <read     cond="usbh3_en"              name="usbh3_pipe_num"     type="uint32_t"             symbol="usbh3_pipe_num"      const="1"/>
      <readlist cond="usbh3_en"              name="usbh3_pipe"         type="USBH_PIPE"            symbol="usbh3_pipe"          based="0" count="usbh3_pipe_num" init="1"/>
      <readlist cond="usbh3_transfer_exists" name="usbh3_transfer"     type="USBH_TRANSFER_INFO_t" symbol="usbh3_transfer_info" based="0" count="usbh3_pipe_num" init="1"/>
      <calc     cond="usbh3_hc_used">
        usbh3_hci_type.type = 0;
      </calc>
      <calc     cond="usbh3_ohci_used">
        usbh3_hci_type.type = 1;
      </calc>
      <calc     cond="usbh3_ehci_used">
        usbh3_hci_type.type = 2;
      </calc>
      <list name="usb_i" start="0" limit="usbh3_pipe._count">
        <calc>usbh3_pipe_used_num += (usbh3_pipe[usb_i].hw_handle != 0) ? 1 : 0;</calc>
      </list>
      <list cond="usbh3_transfer_exists" name="usb_i" start="0" limit="usbh3_transfer._count">
        <calc>usbh3_transfer_used_num += (usbh3_transfer[usb_i].active != 0) ? 1 : 0;</calc>
      </list>
      <!-- USB Host 3 end -->

      <!-- USB Host Device Instances: if it exists read and prepare variables for display -->
        <!-- Declare and define all variables -->
        <var  name="usbh_dev_en"     type="uint8_t" value="__Symbol_exists(&quot;usbh_dev&quot;)"/>
        <var  name="usbh_dev_num"    type="uint8_t" value="0"/>

        <!-- Prepare for display all variables by reading and calculating -->
        <read cond="usbh_dev_en" name="usbh_dev_num_hw" type="uint8_t"  symbol="usbh_dev_num" const="1"/>
        <calc cond="(usbh_dev_en == 1)">usbh_dev_num = usbh_dev_num_hw;</calc>
        <calc cond="(usbh_dev_en == 0)">usbh_dev_num = 0;</calc>
        <readlist cond="usbh_dev_en" name="usbh_dev"    type="USBH_DEV" symbol="usbh_dev"     based="0" count="usbh_dev_num" init="1"/>
      <!-- USB Host Device Instances end -->

      <!-- USB Host MSC Instances: if it exists read and prepare variables for display -->
        <!-- Declare and define all variables -->
        <var  name="usbh_msc_en"          type="uint8_t" value="__Symbol_exists(&quot;usbh_msc&quot;)"/>
        <var  name="usbh_msc_num"         type="uint8_t" value="0"/>

        <!-- Prepare for display all variables by reading and calculating -->
        <read cond="usbh_msc_en" name="usbh_msc_num_hw" type="uint8_t" symbol="usbh_msc_num" const="1"/>
        <calc cond="(usbh_msc_en == 1)">usbh_msc_num = usbh_msc_num_hw;</calc>
        <calc cond="(usbh_msc_en == 0)">usbh_msc_num = 0;</calc>
        <readlist cond="usbh_msc_en" name="usbh_msc"    type="USBH_MSC" symbol="usbh_msc"    based="0" count="usbh_msc_num" init="1"/>
        <list name="usb_i" start="0" limit="usbh_msc._count" >
          <calc>
            usbh_msc[usb_i].media_size     = usbh_msc[usb_i].block_count;
            usbh_msc[usb_i].media_size    *= usbh_msc[usb_i].block_size;
            usbh_msc[usb_i].media_size_dbl = usbh_msc[usb_i].media_size;
          </calc>
          <calc>                                                                                                                                           usbh_msc[usb_i].media_size_x = 0;</calc>
          <calc cond="usbh_msc[usb_i].media_size &gt;           (1024)">usbh_msc[usb_i].media_size_xB = usbh_msc[usb_i].media_size_dbl /           (1024); usbh_msc[usb_i].media_size_x = 1;</calc>
          <calc cond="usbh_msc[usb_i].media_size &gt;      (1024*1024)">usbh_msc[usb_i].media_size_xB = usbh_msc[usb_i].media_size_dbl /      (1024*1024); usbh_msc[usb_i].media_size_x = 2;</calc>
          <calc cond="usbh_msc[usb_i].media_size &gt; (1024*1024*1024)">usbh_msc[usb_i].media_size_xB = usbh_msc[usb_i].media_size_dbl / (1024*1024*1024); usbh_msc[usb_i].media_size_x = 3;</calc>
        </list>

      <out name="USB Device and Host">

<!---   <item property="Debug Value" value="%x[debug_val]"/> -->

        <item property="Library Version" value="%d[usb_lib_version_major].%d[usb_lib_version_minor].%d[usb_lib_version_revision]"/>

        <!-- USB Device Component display ************************************************************************************ -->
        <!-- USB Device 0: if it exists display it -->
        <item cond="usbd0_en" property="Device 0">
          <item property="Vendor ID"                             value="%x[usbd0_device_desc.idVendor]"/>
          <item property="Product ID"                            value="%x[usbd0_device_desc.idProduct]" />
          <item property="Speed"                                 value="%E[usbd0_cfg.hs]" />
          <item property="Endpoint 0 Maximum Packet Size"        value="%d[usbd0_device_desc.bMaxPacketSize0]" />
          <item property="Number of Interfaces"                  value="%d[usbd0_config_desc.bNumInterfaces]" />
          <item property="Assigned Address"                      value="%d[usbd0_data.device_address]" />
          <item property="Configuration Status"                  value="%E[usbd0_data.configuration]" />
          <item property="Endpoint Activity">
            <item cond="(usbd0_ep0_out_en )" property="EP0 OUT"  value="%E[usbd0_data.ep0_out_active ]"/>
            <item cond="(usbd0_ep0_in_en  )" property="EP0 IN"   value="%E[usbd0_data.ep0_in_active  ]"/>
            <item cond="(usbd0_ep1_out_en )" property="EP1 OUT"  value="%E[usbd0_data.ep1_out_active ]"/>
            <item cond="(usbd0_ep1_in_en  )" property="EP1 IN"   value="%E[usbd0_data.ep1_in_active  ]"/>
            <item cond="(usbd0_ep2_out_en )" property="EP2 OUT"  value="%E[usbd0_data.ep2_out_active ]"/>
            <item cond="(usbd0_ep2_in_en  )" property="EP2 IN"   value="%E[usbd0_data.ep2_in_active  ]"/>
            <item cond="(usbd0_ep3_out_en )" property="EP3 OUT"  value="%E[usbd0_data.ep3_out_active ]"/>
            <item cond="(usbd0_ep3_in_en  )" property="EP3 IN"   value="%E[usbd0_data.ep3_in_active  ]"/>
            <item cond="(usbd0_ep4_out_en )" property="EP4 OUT"  value="%E[usbd0_data.ep4_out_active ]"/>
            <item cond="(usbd0_ep4_in_en  )" property="EP4 IN"   value="%E[usbd0_data.ep4_in_active  ]"/>
            <item cond="(usbd0_ep5_out_en )" property="EP5 OUT"  value="%E[usbd0_data.ep5_out_active ]"/>
            <item cond="(usbd0_ep5_in_en  )" property="EP5 IN"   value="%E[usbd0_data.ep5_in_active  ]"/>
            <item cond="(usbd0_ep6_out_en )" property="EP6 OUT"  value="%E[usbd0_data.ep6_out_active ]"/>
            <item cond="(usbd0_ep6_in_en  )" property="EP6 IN"   value="%E[usbd0_data.ep6_in_active  ]"/>
            <item cond="(usbd0_ep7_out_en )" property="EP7 OUT"  value="%E[usbd0_data.ep7_out_active ]"/>
            <item cond="(usbd0_ep7_in_en  )" property="EP7 IN"   value="%E[usbd0_data.ep7_in_active  ]"/>
            <item cond="(usbd0_ep8_out_en )" property="EP8 OUT"  value="%E[usbd0_data.ep8_out_active ]"/>
            <item cond="(usbd0_ep8_in_en  )" property="EP8 IN"   value="%E[usbd0_data.ep8_in_active  ]"/>
            <item cond="(usbd0_ep9_out_en )" property="EP9 OUT"  value="%E[usbd0_data.ep9_out_active ]"/>
            <item cond="(usbd0_ep9_in_en  )" property="EP9 IN"   value="%E[usbd0_data.ep9_in_active  ]"/>
            <item cond="(usbd0_ep10_out_en)" property="EP10 OUT" value="%E[usbd0_data.ep10_out_active]"/>
            <item cond="(usbd0_ep10_in_en )" property="EP10 IN"  value="%E[usbd0_data.ep10_in_active ]"/>
            <item cond="(usbd0_ep11_out_en)" property="EP11 OUT" value="%E[usbd0_data.ep11_out_active]"/>
            <item cond="(usbd0_ep11_in_en )" property="EP11 IN"  value="%E[usbd0_data.ep11_in_active ]"/>
            <item cond="(usbd0_ep12_out_en)" property="EP12 OUT" value="%E[usbd0_data.ep12_out_active]"/>
            <item cond="(usbd0_ep12_in_en )" property="EP12 IN"  value="%E[usbd0_data.ep12_in_active ]"/>
            <item cond="(usbd0_ep13_out_en)" property="EP13 OUT" value="%E[usbd0_data.ep13_out_active]"/>
            <item cond="(usbd0_ep13_in_en )" property="EP13 IN"  value="%E[usbd0_data.ep13_in_active ]"/>
            <item cond="(usbd0_ep14_out_en)" property="EP14 OUT" value="%E[usbd0_data.ep14_out_active]"/>
            <item cond="(usbd0_ep14_in_en )" property="EP14 IN"  value="%E[usbd0_data.ep14_in_active ]"/>
            <item cond="(usbd0_ep15_out_en)" property="EP15 OUT" value="%E[usbd0_data.ep15_out_active]"/>
            <item cond="(usbd0_ep15_in_en )" property="EP15 IN"  value="%E[usbd0_data.ep15_in_active ]"/>
          </item>

          <item cond="(usbd0_cc0_en)" property="Custom Class 0" value="%d[usbd_cc[0].if_num] interface(s)"/>
          <item cond="(usbd0_cc1_en)" property="Custom Class 1" value="%d[usbd_cc[1].if_num] interface(s)"/>
          <item cond="(usbd0_cc2_en)" property="Custom Class 2" value="%d[usbd_cc[2].if_num] interface(s)"/>
          <item cond="(usbd0_cc3_en)" property="Custom Class 3" value="%d[usbd_cc[3].if_num] interface(s)"/>

          <item cond="(usbd0_adc0_en)" property="Audio Device Class 0">
            <item cond="(usbd_adc0_spkr_en==1)" property="Speaker" value="%E[usbd_adc0_out_data.ch_num], %d[usbd_adc0_out_data.data_freq] Hz, %d[usbd_adc0_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc0_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc0_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc0_spkr_data.mute]"/>
              <item cond="usbd_adc0_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc0_spkr_data.vol_cur0]/%d[usbd_adc0_spkr_data.vol_max0]"/>
              <item cond="usbd_adc0_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc0_spkr_data.vol_cur0]/%d[usbd_adc0_spkr_data.vol_max0]"/>
              <item cond="usbd_adc0_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc0_spkr_data.vol_cur1]/%d[usbd_adc0_spkr_data.vol_max1]"/>
            </item>
            <item cond="(usbd_adc0_mic_en==1)"  property="Microphone" value="%E[usbd_adc0_in_data.ch_num], %d[usbd_adc0_in_data.data_freq] Hz, %d[usbd_adc0_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc0_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc0_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc0_mic_data.mute]"/>
              <item cond="usbd_adc0_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc0_mic_data.vol_cur0]/%d[usbd_adc0_mic_data.vol_max0]"/>
              <item cond="usbd_adc0_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc0_mic_data.vol_cur0]/%d[usbd_adc0_mic_data.vol_max0]"/>
              <item cond="usbd_adc0_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc0_mic_data.vol_cur1]/%d[usbd_adc0_mic_data.vol_max1]"/>
            </item>
          </item>
          <item cond="(usbd0_adc1_en)" property="Audio Device Class 1">
            <item cond="(usbd_adc1_spkr_en==1)" property="Speaker" value="%E[usbd_adc1_out_data.ch_num], %d[usbd_adc1_out_data.data_freq] Hz, %d[usbd_adc1_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc1_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc1_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc1_spkr_data.mute]"/>
              <item cond="usbd_adc1_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc1_spkr_data.vol_cur0]/%d[usbd_adc1_spkr_data.vol_max0]"/>
              <item cond="usbd_adc1_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc1_spkr_data.vol_cur0]/%d[usbd_adc1_spkr_data.vol_max0]"/>
              <item cond="usbd_adc1_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc1_spkr_data.vol_cur1]/%d[usbd_adc1_spkr_data.vol_max1]"/>
            </item>
            <item cond="(usbd_adc1_mic_en==1)"  property="Microphone" value="%E[usbd_adc1_in_data.ch_num], %d[usbd_adc1_in_data.data_freq] Hz, %d[usbd_adc1_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc1_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc1_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc1_mic_data.mute]"/>
              <item cond="usbd_adc1_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc1_mic_data.vol_cur0]/%d[usbd_adc1_mic_data.vol_max0]"/>
              <item cond="usbd_adc1_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc1_mic_data.vol_cur0]/%d[usbd_adc1_mic_data.vol_max0]"/>
              <item cond="usbd_adc1_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc1_mic_data.vol_cur1]/%d[usbd_adc1_mic_data.vol_max1]"/>
            </item>
          </item>
          <item cond="(usbd0_adc2_en)" property="Audio Device Class 2">
            <item cond="(usbd_adc2_spkr_en==1)" property="Speaker" value="%E[usbd_adc2_out_data.ch_num], %d[usbd_adc2_out_data.data_freq] Hz, %d[usbd_adc2_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc2_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc2_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc2_spkr_data.mute]"/>
              <item cond="usbd_adc2_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc2_spkr_data.vol_cur0]/%d[usbd_adc2_spkr_data.vol_max0]"/>
              <item cond="usbd_adc2_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc2_spkr_data.vol_cur0]/%d[usbd_adc2_spkr_data.vol_max0]"/>
              <item cond="usbd_adc2_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc2_spkr_data.vol_cur1]/%d[usbd_adc2_spkr_data.vol_max1]"/>
            </item>
            <item cond="(usbd_adc2_mic_en==1)"  property="Microphone" value="%E[usbd_adc2_in_data.ch_num], %d[usbd_adc2_in_data.data_freq] Hz, %d[usbd_adc2_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc2_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc2_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc2_mic_data.mute]"/>
              <item cond="usbd_adc2_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc2_mic_data.vol_cur0]/%d[usbd_adc2_mic_data.vol_max0]"/>
              <item cond="usbd_adc2_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc2_mic_data.vol_cur0]/%d[usbd_adc2_mic_data.vol_max0]"/>
              <item cond="usbd_adc2_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc2_mic_data.vol_cur1]/%d[usbd_adc2_mic_data.vol_max1]"/>
            </item>
          </item>
          <item cond="(usbd0_adc3_en)" property="Audio Device Class 3">
            <item cond="(usbd_adc3_spkr_en==1)" property="Speaker" value="%E[usbd_adc3_out_data.ch_num], %d[usbd_adc3_out_data.data_freq] Hz, %d[usbd_adc3_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc3_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc3_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc3_spkr_data.mute]"/>
              <item cond="usbd_adc3_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc3_spkr_data.vol_cur0]/%d[usbd_adc3_spkr_data.vol_max0]"/>
              <item cond="usbd_adc3_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc3_spkr_data.vol_cur0]/%d[usbd_adc3_spkr_data.vol_max0]"/>
              <item cond="usbd_adc3_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc3_spkr_data.vol_cur1]/%d[usbd_adc3_spkr_data.vol_max1]"/>
            </item>
            <item cond="(usbd_adc3_mic_en==1)"  property="Microphone" value="%E[usbd_adc3_in_data.ch_num], %d[usbd_adc3_in_data.data_freq] Hz, %d[usbd_adc3_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc0_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc3_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc3_mic_data.mute]"/>
              <item cond="usbd_adc3_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc3_mic_data.vol_cur0]/%d[usbd_adc3_mic_data.vol_max0]"/>
              <item cond="usbd_adc3_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc3_mic_data.vol_cur0]/%d[usbd_adc3_mic_data.vol_max0]"/>
              <item cond="usbd_adc3_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc3_mic_data.vol_cur1]/%d[usbd_adc3_mic_data.vol_max1]"/>
            </item>
          </item>

          <item cond="(usbd0_cdc0_en)" property="Communication Device Class 0" value="Subclass: %E[usbd_cdc[0].acm], EP INT IN: %d[usbd_cdc[0].ep_int_in], EP BULK IN: %d[usbd_cdc[0].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[0].ep_bulk_out]"/>
          <item cond="(usbd0_cdc1_en)" property="Communication Device Class 1" value="Subclass: %E[usbd_cdc[1].acm], EP INT IN: %d[usbd_cdc[1].ep_int_in], EP BULK IN: %d[usbd_cdc[1].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[1].ep_bulk_out]"/>
          <item cond="(usbd0_cdc2_en)" property="Communication Device Class 2" value="Subclass: %E[usbd_cdc[2].acm], EP INT IN: %d[usbd_cdc[2].ep_int_in], EP BULK IN: %d[usbd_cdc[2].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[2].ep_bulk_out]"/>
          <item cond="(usbd0_cdc3_en)" property="Communication Device Class 3" value="Subclass: %E[usbd_cdc[3].acm], EP INT IN: %d[usbd_cdc[3].ep_int_in], EP BULK IN: %d[usbd_cdc[3].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[3].ep_bulk_out]"/>
          <item cond="(usbd0_cdc4_en)" property="Communication Device Class 4" value="Subclass: %E[usbd_cdc[4].acm], EP INT IN: %d[usbd_cdc[4].ep_int_in], EP BULK IN: %d[usbd_cdc[4].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[4].ep_bulk_out]"/>
          <item cond="(usbd0_cdc5_en)" property="Communication Device Class 5" value="Subclass: %E[usbd_cdc[5].acm], EP INT IN: %d[usbd_cdc[5].ep_int_in], EP BULK IN: %d[usbd_cdc[5].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[5].ep_bulk_out]"/>
          <item cond="(usbd0_cdc6_en)" property="Communication Device Class 6" value="Subclass: %E[usbd_cdc[6].acm], EP INT IN: %d[usbd_cdc[6].ep_int_in], EP BULK IN: %d[usbd_cdc[6].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[6].ep_bulk_out]"/>
          <item cond="(usbd0_cdc7_en)" property="Communication Device Class 7" value="Subclass: %E[usbd_cdc[7].acm], EP INT IN: %d[usbd_cdc[7].ep_int_in], EP BULK IN: %d[usbd_cdc[7].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[7].ep_bulk_out]"/>

          <item cond="(usbd0_hid0_en)" property="Human Interface Device 0" value="In reports %d[usbd_hid[0].in_report_num], Out reports %d[usbd_hid[0].out_report_num], EP INT IN: %d[usbd_hid[0].ep_int_in], EP INT OUT: %E[usbd_hid[0].ep_int_out]"/>
          <item cond="(usbd0_hid1_en)" property="Human Interface Device 1" value="In reports %d[usbd_hid[1].in_report_num], Out reports %d[usbd_hid[1].out_report_num], EP INT IN: %d[usbd_hid[1].ep_int_in], EP INT OUT: %E[usbd_hid[1].ep_int_out]"/>
          <item cond="(usbd0_hid2_en)" property="Human Interface Device 2" value="In reports %d[usbd_hid[2].in_report_num], Out reports %d[usbd_hid[2].out_report_num], EP INT IN: %d[usbd_hid[2].ep_int_in], EP INT OUT: %E[usbd_hid[2].ep_int_out]"/>
          <item cond="(usbd0_hid3_en)" property="Human Interface Device 3" value="In reports %d[usbd_hid[3].in_report_num], Out reports %d[usbd_hid[3].out_report_num], EP INT IN: %d[usbd_hid[3].ep_int_in], EP INT OUT: %E[usbd_hid[3].ep_int_out]"/>

          <item cond="(usbd0_msc0_en)" property="Mass Storage Device 0" value="EP BULK IN: %d[usbd_msc[0].ep_bulk_in], EP BULK OUT: %E[usbd_msc[0].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[0].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun0_media_size] B"/>
              <item cond="usbd_msc_data[0].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[0].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[0].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun1_media_size] B"/>
              <item cond="usbd_msc_data[0].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[0].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[0].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun2_media_size] B"/>
              <item cond="usbd_msc_data[0].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[0].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[0].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun3_media_size] B"/>
              <item cond="usbd_msc_data[0].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun3_media_size_xB] GB"/>
            </item>
          </item>
          <item cond="(usbd0_msc1_en)" property="Mass Storage Device 1" value="EP BULK IN: %d[usbd_msc[1].ep_bulk_in], EP BULK OUT: %E[usbd_msc[1].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[1].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun0_media_size] B"/>
              <item cond="usbd_msc_data[1].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[1].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[1].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun1_media_size] B"/>
              <item cond="usbd_msc_data[1].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[1].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[1].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun2_media_size] B"/>
              <item cond="usbd_msc_data[1].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[1].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[1].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun3_media_size] B"/>
              <item cond="usbd_msc_data[1].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun3_media_size_xB] GB"/>
            </item>
          </item>
          <item cond="(usbd0_msc2_en)" property="Mass Storage Device 2" value="EP BULK IN: %d[usbd_msc[2].ep_bulk_in], EP BULK OUT: %E[usbd_msc[2].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[2].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun0_media_size] B"/>
              <item cond="usbd_msc_data[2].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[2].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[2].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun1_media_size] B"/>
              <item cond="usbd_msc_data[2].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[2].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[2].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun2_media_size] B"/>
              <item cond="usbd_msc_data[2].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[2].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[2].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun3_media_size] B"/>
              <item cond="usbd_msc_data[2].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun3_media_size_xB] GB"/>
            </item>
          </item>
          <item cond="(usbd0_msc3_en)" property="Mass Storage Device 3" value="EP BULK IN: %d[usbd_msc[3].ep_bulk_in], EP BULK OUT: %E[usbd_msc[3].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[3].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun0_media_size] B"/>
              <item cond="usbd_msc_data[3].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[3].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[3].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun1_media_size] B"/>
              <item cond="usbd_msc_data[3].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[3].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[3].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun2_media_size] B"/>
              <item cond="usbd_msc_data[3].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[3].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[3].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun3_media_size] B"/>
              <item cond="usbd_msc_data[3].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun3_media_size_xB] GB"/>
            </item>
          </item>
        </item>
        <!-- USB Device 0 display end -->

        <!-- USB Device 1: if it exists display it -->
        <item cond="usbd1_en" property="Device 1">
          <item property="Vendor ID"                             value="%x[usbd1_device_desc.idVendor]"/>
          <item property="Product ID"                            value="%x[usbd1_device_desc.idProduct]" />
          <item property="Speed"                                 value="%E[usbd1_cfg.hs]" />
          <item property="Endpoint 0 Maximum Packet Size"        value="%d[usbd1_device_desc.bMaxPacketSize0]" />
          <item property="Number of Interfaces"                  value="%d[usbd1_config_desc.bNumInterfaces]" />
          <item property="Assigned Address"                      value="%d[usbd1_data.device_address]" />
          <item property="Configuration Status"                  value="%E[usbd1_data.configuration]" />
          <item property="Endpoint Activity">
            <item cond="(usbd1_ep0_out_en )" property="EP0 OUT"  value="%E[usbd1_data.ep0_out_active ]"/>
            <item cond="(usbd1_ep0_in_en  )" property="EP0 IN"   value="%E[usbd1_data.ep0_in_active  ]"/>
            <item cond="(usbd1_ep1_out_en )" property="EP1 OUT"  value="%E[usbd1_data.ep1_out_active ]"/>
            <item cond="(usbd1_ep1_in_en  )" property="EP1 IN"   value="%E[usbd1_data.ep1_in_active  ]"/>
            <item cond="(usbd1_ep2_out_en )" property="EP2 OUT"  value="%E[usbd1_data.ep2_out_active ]"/>
            <item cond="(usbd1_ep2_in_en  )" property="EP2 IN"   value="%E[usbd1_data.ep2_in_active  ]"/>
            <item cond="(usbd1_ep3_out_en )" property="EP3 OUT"  value="%E[usbd1_data.ep3_out_active ]"/>
            <item cond="(usbd1_ep3_in_en  )" property="EP3 IN"   value="%E[usbd1_data.ep3_in_active  ]"/>
            <item cond="(usbd1_ep4_out_en )" property="EP4 OUT"  value="%E[usbd1_data.ep4_out_active ]"/>
            <item cond="(usbd1_ep4_in_en  )" property="EP4 IN"   value="%E[usbd1_data.ep4_in_active  ]"/>
            <item cond="(usbd1_ep5_out_en )" property="EP5 OUT"  value="%E[usbd1_data.ep5_out_active ]"/>
            <item cond="(usbd1_ep5_in_en  )" property="EP5 IN"   value="%E[usbd1_data.ep5_in_active  ]"/>
            <item cond="(usbd1_ep6_out_en )" property="EP6 OUT"  value="%E[usbd1_data.ep6_out_active ]"/>
            <item cond="(usbd1_ep6_in_en  )" property="EP6 IN"   value="%E[usbd1_data.ep6_in_active  ]"/>
            <item cond="(usbd1_ep7_out_en )" property="EP7 OUT"  value="%E[usbd1_data.ep7_out_active ]"/>
            <item cond="(usbd1_ep7_in_en  )" property="EP7 IN"   value="%E[usbd1_data.ep7_in_active  ]"/>
            <item cond="(usbd1_ep8_out_en )" property="EP8 OUT"  value="%E[usbd1_data.ep8_out_active ]"/>
            <item cond="(usbd1_ep8_in_en  )" property="EP8 IN"   value="%E[usbd1_data.ep8_in_active  ]"/>
            <item cond="(usbd1_ep9_out_en )" property="EP9 OUT"  value="%E[usbd1_data.ep9_out_active ]"/>
            <item cond="(usbd1_ep9_in_en  )" property="EP9 IN"   value="%E[usbd1_data.ep9_in_active  ]"/>
            <item cond="(usbd1_ep10_out_en)" property="EP10 OUT" value="%E[usbd1_data.ep10_out_active]"/>
            <item cond="(usbd1_ep10_in_en )" property="EP10 IN"  value="%E[usbd1_data.ep10_in_active ]"/>
            <item cond="(usbd1_ep11_out_en)" property="EP11 OUT" value="%E[usbd1_data.ep11_out_active]"/>
            <item cond="(usbd1_ep11_in_en )" property="EP11 IN"  value="%E[usbd1_data.ep11_in_active ]"/>
            <item cond="(usbd1_ep12_out_en)" property="EP12 OUT" value="%E[usbd1_data.ep12_out_active]"/>
            <item cond="(usbd1_ep12_in_en )" property="EP12 IN"  value="%E[usbd1_data.ep12_in_active ]"/>
            <item cond="(usbd1_ep13_out_en)" property="EP13 OUT" value="%E[usbd1_data.ep13_out_active]"/>
            <item cond="(usbd1_ep13_in_en )" property="EP13 IN"  value="%E[usbd1_data.ep13_in_active ]"/>
            <item cond="(usbd1_ep14_out_en)" property="EP14 OUT" value="%E[usbd1_data.ep14_out_active]"/>
            <item cond="(usbd1_ep14_in_en )" property="EP14 IN"  value="%E[usbd1_data.ep14_in_active ]"/>
            <item cond="(usbd1_ep15_out_en)" property="EP15 OUT" value="%E[usbd1_data.ep15_out_active]"/>
            <item cond="(usbd1_ep15_in_en )" property="EP15 IN"  value="%E[usbd1_data.ep15_in_active ]"/>
          </item>

          <item cond="(usbd1_cc0_en)" property="Custom Class 0" value="%d[usbd_cc[0].if_num] interface(s)"/>
          <item cond="(usbd1_cc1_en)" property="Custom Class 1" value="%d[usbd_cc[1].if_num] interface(s)"/>
          <item cond="(usbd1_cc2_en)" property="Custom Class 2" value="%d[usbd_cc[2].if_num] interface(s)"/>
          <item cond="(usbd1_cc3_en)" property="Custom Class 3" value="%d[usbd_cc[3].if_num] interface(s)"/>

          <item cond="(usbd1_adc0_en)" property="Audio Device Class 0">
            <item cond="(usbd_adc0_spkr_en==1)" property="Speaker" value="%E[usbd_adc0_out_data.ch_num], %d[usbd_adc0_out_data.data_freq] Hz, %d[usbd_adc0_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc0_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc0_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc0_spkr_data.mute]"/>
              <item cond="usbd_adc0_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc0_spkr_data.vol_cur[0]]/%d[usbd_adc0_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc0_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc0_spkr_data.vol_cur[0]]/%d[usbd_adc0_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc0_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc0_spkr_data.vol_cur[1]]/%d[usbd_adc0_spkr_data.vol_max[1]]"/>
            </item>
            <item cond="(usbd_adc0_mic_en==1)"  property="Microphone" value="%E[usbd_adc0_in_data.ch_num], %d[usbd_adc0_in_data.data_freq] Hz, %d[usbd_adc0_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc0_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc0_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc0_mic_data.mute]"/>
              <item cond="usbd_adc0_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc0_mic_data.vol_cur[0]]/%d[usbd_adc0_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc0_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc0_mic_data.vol_cur[0]]/%d[usbd_adc0_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc0_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc0_mic_data.vol_cur[1]]/%d[usbd_adc0_mic_data.vol_max[1]]"/>
            </item>
          </item>
          <item cond="(usbd1_adc1_en)" property="Audio Device Class 1">
            <item cond="(usbd_adc1_spkr_en==1)" property="Speaker" value="%E[usbd_adc1_out_data.ch_num], %d[usbd_adc1_out_data.data_freq] Hz, %d[usbd_adc1_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc1_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc1_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc1_spkr_data.mute]"/>
              <item cond="usbd_adc1_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc1_spkr_data.vol_cur[0]]/%d[usbd_adc1_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc1_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc1_spkr_data.vol_cur[0]]/%d[usbd_adc1_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc1_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc1_spkr_data.vol_cur[1]]/%d[usbd_adc1_spkr_data.vol_max[1]]"/>
            </item>
            <item cond="(usbd_adc1_mic_en==1)"  property="Microphone" value="%E[usbd_adc1_in_data.ch_num], %d[usbd_adc1_in_data.data_freq] Hz, %d[usbd_adc1_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc1_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc1_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc1_mic_data.mute]"/>
              <item cond="usbd_adc1_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc1_mic_data.vol_cur[0]]/%d[usbd_adc1_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc1_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc1_mic_data.vol_cur[0]]/%d[usbd_adc1_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc1_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc1_mic_data.vol_cur[1]]/%d[usbd_adc1_mic_data.vol_max[1]]"/>
            </item>
          </item>
          <item cond="(usbd1_adc2_en)" property="Audio Device Class 2">
            <item cond="(usbd_adc2_spkr_en==1)" property="Speaker" value="%E[usbd_adc2_out_data.ch_num], %d[usbd_adc2_out_data.data_freq] Hz, %d[usbd_adc2_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc2_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc2_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc2_spkr_data.mute]"/>
              <item cond="usbd_adc2_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc2_spkr_data.vol_cur[0]]/%d[usbd_adc2_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc2_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc2_spkr_data.vol_cur[0]]/%d[usbd_adc2_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc2_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc2_spkr_data.vol_cur[1]]/%d[usbd_adc2_spkr_data.vol_max[1]]"/>
            </item>
            <item cond="(usbd_adc2_mic_en==1)"  property="Microphone" value="%E[usbd_adc2_in_data.ch_num], %d[usbd_adc2_in_data.data_freq] Hz, %d[usbd_adc2_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc2_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc2_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc2_mic_data.mute]"/>
              <item cond="usbd_adc2_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc2_mic_data.vol_cur[0]]/%d[usbd_adc2_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc2_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc2_mic_data.vol_cur[0]]/%d[usbd_adc2_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc2_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc2_mic_data.vol_cur[1]]/%d[usbd_adc2_mic_data.vol_max[1]]"/>
            </item>
          </item>
          <item cond="(usbd1_adc3_en)" property="Audio Device Class 3">
            <item cond="(usbd_adc3_spkr_en==1)" property="Speaker" value="%E[usbd_adc3_out_data.ch_num], %d[usbd_adc3_out_data.data_freq] Hz, %d[usbd_adc3_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc3_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc3_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc3_spkr_data.mute]"/>
              <item cond="usbd_adc3_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc3_spkr_data.vol_cur[0]]/%d[usbd_adc3_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc3_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc3_spkr_data.vol_cur[0]]/%d[usbd_adc3_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc3_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc3_spkr_data.vol_cur[1]]/%d[usbd_adc3_spkr_data.vol_max[1]]"/>
            </item>
            <item cond="(usbd_adc3_mic_en==1)"  property="Microphone" value="%E[usbd_adc3_in_data.ch_num], %d[usbd_adc3_in_data.data_freq] Hz, %d[usbd_adc3_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc0_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc3_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc3_mic_data.mute]"/>
              <item cond="usbd_adc3_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc3_mic_data.vol_cur[0]]/%d[usbd_adc3_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc3_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc3_mic_data.vol_cur[0]]/%d[usbd_adc3_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc3_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc3_mic_data.vol_cur[1]]/%d[usbd_adc3_mic_data.vol_max[1]]"/>
            </item>
          </item>

          <item cond="(usbd1_cdc0_en)" property="Communication Device Class 0" value="Subclass: %E[usbd_cdc[0].acm], EP INT IN: %d[usbd_cdc[0].ep_int_in], EP BULK IN: %d[usbd_cdc[0].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[0].ep_bulk_out]"/>
          <item cond="(usbd1_cdc1_en)" property="Communication Device Class 1" value="Subclass: %E[usbd_cdc[1].acm], EP INT IN: %d[usbd_cdc[1].ep_int_in], EP BULK IN: %d[usbd_cdc[1].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[1].ep_bulk_out]"/>
          <item cond="(usbd1_cdc2_en)" property="Communication Device Class 2" value="Subclass: %E[usbd_cdc[2].acm], EP INT IN: %d[usbd_cdc[2].ep_int_in], EP BULK IN: %d[usbd_cdc[2].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[2].ep_bulk_out]"/>
          <item cond="(usbd1_cdc3_en)" property="Communication Device Class 3" value="Subclass: %E[usbd_cdc[3].acm], EP INT IN: %d[usbd_cdc[3].ep_int_in], EP BULK IN: %d[usbd_cdc[3].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[3].ep_bulk_out]"/>
          <item cond="(usbd1_cdc4_en)" property="Communication Device Class 4" value="Subclass: %E[usbd_cdc[4].acm], EP INT IN: %d[usbd_cdc[4].ep_int_in], EP BULK IN: %d[usbd_cdc[4].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[4].ep_bulk_out]"/>
          <item cond="(usbd1_cdc5_en)" property="Communication Device Class 5" value="Subclass: %E[usbd_cdc[5].acm], EP INT IN: %d[usbd_cdc[5].ep_int_in], EP BULK IN: %d[usbd_cdc[5].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[5].ep_bulk_out]"/>
          <item cond="(usbd1_cdc6_en)" property="Communication Device Class 6" value="Subclass: %E[usbd_cdc[6].acm], EP INT IN: %d[usbd_cdc[6].ep_int_in], EP BULK IN: %d[usbd_cdc[6].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[6].ep_bulk_out]"/>
          <item cond="(usbd1_cdc7_en)" property="Communication Device Class 7" value="Subclass: %E[usbd_cdc[7].acm], EP INT IN: %d[usbd_cdc[7].ep_int_in], EP BULK IN: %d[usbd_cdc[7].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[7].ep_bulk_out]"/>

          <item cond="(usbd1_hid0_en)" property="Human Interface Device 0" value="In reports %d[usbd_hid[0].in_report_num], Out reports %d[usbd_hid[0].out_report_num], EP INT IN: %d[usbd_hid[0].ep_int_in], EP INT OUT: %E[usbd_hid[0].ep_int_out]"/>
          <item cond="(usbd1_hid1_en)" property="Human Interface Device 1" value="In reports %d[usbd_hid[1].in_report_num], Out reports %d[usbd_hid[1].out_report_num], EP INT IN: %d[usbd_hid[1].ep_int_in], EP INT OUT: %E[usbd_hid[1].ep_int_out]"/>
          <item cond="(usbd1_hid2_en)" property="Human Interface Device 2" value="In reports %d[usbd_hid[2].in_report_num], Out reports %d[usbd_hid[2].out_report_num], EP INT IN: %d[usbd_hid[2].ep_int_in], EP INT OUT: %E[usbd_hid[2].ep_int_out]"/>
          <item cond="(usbd1_hid3_en)" property="Human Interface Device 3" value="In reports %d[usbd_hid[3].in_report_num], Out reports %d[usbd_hid[3].out_report_num], EP INT IN: %d[usbd_hid[3].ep_int_in], EP INT OUT: %E[usbd_hid[3].ep_int_out]"/>

          <item cond="(usbd1_msc0_en)" property="Mass Storage Device 0" value="EP BULK IN: %d[usbd_msc[0].ep_bulk_in], EP BULK OUT: %E[usbd_msc[0].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[0].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun0_media_size] B"/>
              <item cond="usbd_msc_data[0].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[0].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[0].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun1_media_size] B"/>
              <item cond="usbd_msc_data[0].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[0].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[0].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun2_media_size] B"/>
              <item cond="usbd_msc_data[0].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[0].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[0].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun3_media_size] B"/>
              <item cond="usbd_msc_data[0].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun3_media_size_xB] GB"/>
            </item>
          </item>
          <item cond="(usbd1_msc1_en)" property="Mass Storage Device 1" value="EP BULK IN: %d[usbd_msc[1].ep_bulk_in], EP BULK OUT: %E[usbd_msc[1].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[1].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun0_media_size] B"/>
              <item cond="usbd_msc_data[1].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[1].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[1].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun1_media_size] B"/>
              <item cond="usbd_msc_data[1].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[1].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[1].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun2_media_size] B"/>
              <item cond="usbd_msc_data[1].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[1].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[1].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun3_media_size] B"/>
              <item cond="usbd_msc_data[1].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun3_media_size_xB] GB"/>
            </item>
          </item>
          <item cond="(usbd1_msc2_en)" property="Mass Storage Device 2" value="EP BULK IN: %d[usbd_msc[2].ep_bulk_in], EP BULK OUT: %E[usbd_msc[2].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[2].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun0_media_size] B"/>
              <item cond="usbd_msc_data[2].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[2].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[2].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun1_media_size] B"/>
              <item cond="usbd_msc_data[2].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[2].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[2].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun2_media_size] B"/>
              <item cond="usbd_msc_data[2].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[2].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[2].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun3_media_size] B"/>
              <item cond="usbd_msc_data[2].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun3_media_size_xB] GB"/>
            </item>
          </item>
          <item cond="(usbd1_msc3_en)" property="Mass Storage Device 3" value="EP BULK IN: %d[usbd_msc[3].ep_bulk_in], EP BULK OUT: %E[usbd_msc[3].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[3].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun0_media_size] B"/>
              <item cond="usbd_msc_data[3].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[3].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[3].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun1_media_size] B"/>
              <item cond="usbd_msc_data[3].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[3].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[3].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun2_media_size] B"/>
              <item cond="usbd_msc_data[3].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[3].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[3].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun3_media_size] B"/>
              <item cond="usbd_msc_data[3].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun3_media_size_xB] GB"/>
            </item>
          </item>
        </item>
        <!-- USB Device 1 display end -->

        <!-- USB Device 2: if it exists display it -->
        <item cond="usbd2_en" property="Device 2">
          <item property="Vendor ID"                             value="%x[usbd2_device_desc.idVendor]"/>
          <item property="Product ID"                            value="%x[usbd2_device_desc.idProduct]" />
          <item property="Speed"                                 value="%E[usbd2_cfg.hs]" />
          <item property="Endpoint 0 Maximum Packet Size"        value="%d[usbd2_device_desc.bMaxPacketSize0]" />
          <item property="Number of Interfaces"                  value="%d[usbd2_config_desc.bNumInterfaces]" />
          <item property="Assigned Address"                      value="%d[usbd2_data.device_address]" />
          <item property="Configuration Status"                  value="%E[usbd2_data.configuration]" />
          <item property="Endpoint Activity">
            <item cond="(usbd2_ep0_out_en )" property="EP0 OUT"  value="%E[usbd2_data.ep0_out_active ]"/>
            <item cond="(usbd2_ep0_in_en  )" property="EP0 IN"   value="%E[usbd2_data.ep0_in_active  ]"/>
            <item cond="(usbd2_ep1_out_en )" property="EP1 OUT"  value="%E[usbd2_data.ep1_out_active ]"/>
            <item cond="(usbd2_ep1_in_en  )" property="EP1 IN"   value="%E[usbd2_data.ep1_in_active  ]"/>
            <item cond="(usbd2_ep2_out_en )" property="EP2 OUT"  value="%E[usbd2_data.ep2_out_active ]"/>
            <item cond="(usbd2_ep2_in_en  )" property="EP2 IN"   value="%E[usbd2_data.ep2_in_active  ]"/>
            <item cond="(usbd2_ep3_out_en )" property="EP3 OUT"  value="%E[usbd2_data.ep3_out_active ]"/>
            <item cond="(usbd2_ep3_in_en  )" property="EP3 IN"   value="%E[usbd2_data.ep3_in_active  ]"/>
            <item cond="(usbd2_ep4_out_en )" property="EP4 OUT"  value="%E[usbd2_data.ep4_out_active ]"/>
            <item cond="(usbd2_ep4_in_en  )" property="EP4 IN"   value="%E[usbd2_data.ep4_in_active  ]"/>
            <item cond="(usbd2_ep5_out_en )" property="EP5 OUT"  value="%E[usbd2_data.ep5_out_active ]"/>
            <item cond="(usbd2_ep5_in_en  )" property="EP5 IN"   value="%E[usbd2_data.ep5_in_active  ]"/>
            <item cond="(usbd2_ep6_out_en )" property="EP6 OUT"  value="%E[usbd2_data.ep6_out_active ]"/>
            <item cond="(usbd2_ep6_in_en  )" property="EP6 IN"   value="%E[usbd2_data.ep6_in_active  ]"/>
            <item cond="(usbd2_ep7_out_en )" property="EP7 OUT"  value="%E[usbd2_data.ep7_out_active ]"/>
            <item cond="(usbd2_ep7_in_en  )" property="EP7 IN"   value="%E[usbd2_data.ep7_in_active  ]"/>
            <item cond="(usbd2_ep8_out_en )" property="EP8 OUT"  value="%E[usbd2_data.ep8_out_active ]"/>
            <item cond="(usbd2_ep8_in_en  )" property="EP8 IN"   value="%E[usbd2_data.ep8_in_active  ]"/>
            <item cond="(usbd2_ep9_out_en )" property="EP9 OUT"  value="%E[usbd2_data.ep9_out_active ]"/>
            <item cond="(usbd2_ep9_in_en  )" property="EP9 IN"   value="%E[usbd2_data.ep9_in_active  ]"/>
            <item cond="(usbd2_ep10_out_en)" property="EP10 OUT" value="%E[usbd2_data.ep10_out_active]"/>
            <item cond="(usbd2_ep10_in_en )" property="EP10 IN"  value="%E[usbd2_data.ep10_in_active ]"/>
            <item cond="(usbd2_ep11_out_en)" property="EP11 OUT" value="%E[usbd2_data.ep11_out_active]"/>
            <item cond="(usbd2_ep11_in_en )" property="EP11 IN"  value="%E[usbd2_data.ep11_in_active ]"/>
            <item cond="(usbd2_ep12_out_en)" property="EP12 OUT" value="%E[usbd2_data.ep12_out_active]"/>
            <item cond="(usbd2_ep12_in_en )" property="EP12 IN"  value="%E[usbd2_data.ep12_in_active ]"/>
            <item cond="(usbd2_ep13_out_en)" property="EP13 OUT" value="%E[usbd2_data.ep13_out_active]"/>
            <item cond="(usbd2_ep13_in_en )" property="EP13 IN"  value="%E[usbd2_data.ep13_in_active ]"/>
            <item cond="(usbd2_ep14_out_en)" property="EP14 OUT" value="%E[usbd2_data.ep14_out_active]"/>
            <item cond="(usbd2_ep14_in_en )" property="EP14 IN"  value="%E[usbd2_data.ep14_in_active ]"/>
            <item cond="(usbd2_ep15_out_en)" property="EP15 OUT" value="%E[usbd2_data.ep15_out_active]"/>
            <item cond="(usbd2_ep15_in_en )" property="EP15 IN"  value="%E[usbd2_data.ep15_in_active ]"/>
          </item>

          <item cond="(usbd2_cc0_en)" property="Custom Class 0" value="%d[usbd_cc[0].if_num] interface(s)"/>
          <item cond="(usbd2_cc1_en)" property="Custom Class 1" value="%d[usbd_cc[1].if_num] interface(s)"/>
          <item cond="(usbd2_cc2_en)" property="Custom Class 2" value="%d[usbd_cc[2].if_num] interface(s)"/>
          <item cond="(usbd2_cc3_en)" property="Custom Class 3" value="%d[usbd_cc[3].if_num] interface(s)"/>

          <item cond="(usbd2_adc0_en)" property="Audio Device Class 0">
            <item cond="(usbd_adc0_spkr_en==1)" property="Speaker" value="%E[usbd_adc0_out_data.ch_num], %d[usbd_adc0_out_data.data_freq] Hz, %d[usbd_adc0_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc0_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc0_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc0_spkr_data.mute]"/>
              <item cond="usbd_adc0_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc0_spkr_data.vol_cur[0]]/%d[usbd_adc0_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc0_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc0_spkr_data.vol_cur[0]]/%d[usbd_adc0_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc0_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc0_spkr_data.vol_cur[1]]/%d[usbd_adc0_spkr_data.vol_max[1]]"/>
            </item>
            <item cond="(usbd_adc0_mic_en==1)"  property="Microphone" value="%E[usbd_adc0_in_data.ch_num], %d[usbd_adc0_in_data.data_freq] Hz, %d[usbd_adc0_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc0_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc0_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc0_mic_data.mute]"/>
              <item cond="usbd_adc0_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc0_mic_data.vol_cur[0]]/%d[usbd_adc0_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc0_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc0_mic_data.vol_cur[0]]/%d[usbd_adc0_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc0_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc0_mic_data.vol_cur[1]]/%d[usbd_adc0_mic_data.vol_max[1]]"/>
            </item>
          </item>
          <item cond="(usbd2_adc1_en)" property="Audio Device Class 1">
            <item cond="(usbd_adc1_spkr_en==1)" property="Speaker" value="%E[usbd_adc1_out_data.ch_num], %d[usbd_adc1_out_data.data_freq] Hz, %d[usbd_adc1_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc1_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc1_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc1_spkr_data.mute]"/>
              <item cond="usbd_adc1_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc1_spkr_data.vol_cur[0]]/%d[usbd_adc1_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc1_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc1_spkr_data.vol_cur[0]]/%d[usbd_adc1_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc1_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc1_spkr_data.vol_cur[1]]/%d[usbd_adc1_spkr_data.vol_max[1]]"/>
            </item>
            <item cond="(usbd_adc1_mic_en==1)"  property="Microphone" value="%E[usbd_adc1_in_data.ch_num], %d[usbd_adc1_in_data.data_freq] Hz, %d[usbd_adc1_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc1_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc1_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc1_mic_data.mute]"/>
              <item cond="usbd_adc1_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc1_mic_data.vol_cur[0]]/%d[usbd_adc1_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc1_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc1_mic_data.vol_cur[0]]/%d[usbd_adc1_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc1_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc1_mic_data.vol_cur[1]]/%d[usbd_adc1_mic_data.vol_max[1]]"/>
            </item>
          </item>
          <item cond="(usbd2_adc2_en)" property="Audio Device Class 2">
            <item cond="(usbd_adc2_spkr_en==1)" property="Speaker" value="%E[usbd_adc2_out_data.ch_num], %d[usbd_adc2_out_data.data_freq] Hz, %d[usbd_adc2_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc2_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc2_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc2_spkr_data.mute]"/>
              <item cond="usbd_adc2_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc2_spkr_data.vol_cur[0]]/%d[usbd_adc2_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc2_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc2_spkr_data.vol_cur[0]]/%d[usbd_adc2_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc2_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc2_spkr_data.vol_cur[1]]/%d[usbd_adc2_spkr_data.vol_max[1]]"/>
            </item>
            <item cond="(usbd_adc2_mic_en==1)"  property="Microphone" value="%E[usbd_adc2_in_data.ch_num], %d[usbd_adc2_in_data.data_freq] Hz, %d[usbd_adc2_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc2_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc2_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc2_mic_data.mute]"/>
              <item cond="usbd_adc2_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc2_mic_data.vol_cur[0]]/%d[usbd_adc2_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc2_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc2_mic_data.vol_cur[0]]/%d[usbd_adc2_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc2_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc2_mic_data.vol_cur[1]]/%d[usbd_adc2_mic_data.vol_max[1]]"/>
            </item>
          </item>
          <item cond="(usbd2_adc3_en)" property="Audio Device Class 3">
            <item cond="(usbd_adc3_spkr_en==1)" property="Speaker" value="%E[usbd_adc3_out_data.ch_num], %d[usbd_adc3_out_data.data_freq] Hz, %d[usbd_adc3_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc3_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc3_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc3_spkr_data.mute]"/>
              <item cond="usbd_adc3_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc3_spkr_data.vol_cur[0]]/%d[usbd_adc3_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc3_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc3_spkr_data.vol_cur[0]]/%d[usbd_adc3_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc3_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc3_spkr_data.vol_cur[1]]/%d[usbd_adc3_spkr_data.vol_max[1]]"/>
            </item>
            <item cond="(usbd_adc3_mic_en==1)"  property="Microphone" value="%E[usbd_adc3_in_data.ch_num], %d[usbd_adc3_in_data.data_freq] Hz, %d[usbd_adc3_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc0_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc3_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc3_mic_data.mute]"/>
              <item cond="usbd_adc3_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc3_mic_data.vol_cur[0]]/%d[usbd_adc3_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc3_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc3_mic_data.vol_cur[0]]/%d[usbd_adc3_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc3_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc3_mic_data.vol_cur[1]]/%d[usbd_adc3_mic_data.vol_max[1]]"/>
            </item>
          </item>

          <item cond="(usbd2_cdc0_en)" property="Communication Device Class 0" value="Subclass: %E[usbd_cdc[0].acm], EP INT IN: %d[usbd_cdc[0].ep_int_in], EP BULK IN: %d[usbd_cdc[0].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[0].ep_bulk_out]"/>
          <item cond="(usbd2_cdc1_en)" property="Communication Device Class 1" value="Subclass: %E[usbd_cdc[1].acm], EP INT IN: %d[usbd_cdc[1].ep_int_in], EP BULK IN: %d[usbd_cdc[1].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[1].ep_bulk_out]"/>
          <item cond="(usbd2_cdc2_en)" property="Communication Device Class 2" value="Subclass: %E[usbd_cdc[2].acm], EP INT IN: %d[usbd_cdc[2].ep_int_in], EP BULK IN: %d[usbd_cdc[2].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[2].ep_bulk_out]"/>
          <item cond="(usbd2_cdc3_en)" property="Communication Device Class 3" value="Subclass: %E[usbd_cdc[3].acm], EP INT IN: %d[usbd_cdc[3].ep_int_in], EP BULK IN: %d[usbd_cdc[3].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[3].ep_bulk_out]"/>
          <item cond="(usbd2_cdc4_en)" property="Communication Device Class 4" value="Subclass: %E[usbd_cdc[4].acm], EP INT IN: %d[usbd_cdc[4].ep_int_in], EP BULK IN: %d[usbd_cdc[4].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[4].ep_bulk_out]"/>
          <item cond="(usbd2_cdc5_en)" property="Communication Device Class 5" value="Subclass: %E[usbd_cdc[5].acm], EP INT IN: %d[usbd_cdc[5].ep_int_in], EP BULK IN: %d[usbd_cdc[5].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[5].ep_bulk_out]"/>
          <item cond="(usbd2_cdc6_en)" property="Communication Device Class 6" value="Subclass: %E[usbd_cdc[6].acm], EP INT IN: %d[usbd_cdc[6].ep_int_in], EP BULK IN: %d[usbd_cdc[6].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[6].ep_bulk_out]"/>
          <item cond="(usbd2_cdc7_en)" property="Communication Device Class 7" value="Subclass: %E[usbd_cdc[7].acm], EP INT IN: %d[usbd_cdc[7].ep_int_in], EP BULK IN: %d[usbd_cdc[7].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[7].ep_bulk_out]"/>

          <item cond="(usbd2_hid0_en)" property="Human Interface Device 0" value="In reports %d[usbd_hid[0].in_report_num], Out reports %d[usbd_hid[0].out_report_num], EP INT IN: %d[usbd_hid[0].ep_int_in], EP INT OUT: %E[usbd_hid[0].ep_int_out]"/>
          <item cond="(usbd2_hid1_en)" property="Human Interface Device 1" value="In reports %d[usbd_hid[1].in_report_num], Out reports %d[usbd_hid[1].out_report_num], EP INT IN: %d[usbd_hid[1].ep_int_in], EP INT OUT: %E[usbd_hid[1].ep_int_out]"/>
          <item cond="(usbd2_hid2_en)" property="Human Interface Device 2" value="In reports %d[usbd_hid[2].in_report_num], Out reports %d[usbd_hid[2].out_report_num], EP INT IN: %d[usbd_hid[2].ep_int_in], EP INT OUT: %E[usbd_hid[2].ep_int_out]"/>
          <item cond="(usbd2_hid3_en)" property="Human Interface Device 3" value="In reports %d[usbd_hid[3].in_report_num], Out reports %d[usbd_hid[3].out_report_num], EP INT IN: %d[usbd_hid[3].ep_int_in], EP INT OUT: %E[usbd_hid[3].ep_int_out]"/>

          <item cond="(usbd2_msc0_en)" property="Mass Storage Device 0" value="EP BULK IN: %d[usbd_msc[0].ep_bulk_in], EP BULK OUT: %E[usbd_msc[0].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[0].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun0_media_size] B"/>
              <item cond="usbd_msc_data[0].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[0].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[0].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun1_media_size] B"/>
              <item cond="usbd_msc_data[0].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[0].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[0].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun2_media_size] B"/>
              <item cond="usbd_msc_data[0].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[0].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[0].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun3_media_size] B"/>
              <item cond="usbd_msc_data[0].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun3_media_size_xB] GB"/>
            </item>
          </item>
          <item cond="(usbd2_msc1_en)" property="Mass Storage Device 1" value="EP BULK IN: %d[usbd_msc[1].ep_bulk_in], EP BULK OUT: %E[usbd_msc[1].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[1].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun0_media_size] B"/>
              <item cond="usbd_msc_data[1].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[1].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[1].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun1_media_size] B"/>
              <item cond="usbd_msc_data[1].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[1].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[1].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun2_media_size] B"/>
              <item cond="usbd_msc_data[1].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[1].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[1].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun3_media_size] B"/>
              <item cond="usbd_msc_data[1].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun3_media_size_xB] GB"/>
            </item>
          </item>
          <item cond="(usbd2_msc2_en)" property="Mass Storage Device 2" value="EP BULK IN: %d[usbd_msc[2].ep_bulk_in], EP BULK OUT: %E[usbd_msc[2].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[2].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun0_media_size] B"/>
              <item cond="usbd_msc_data[2].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[2].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[2].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun1_media_size] B"/>
              <item cond="usbd_msc_data[2].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[2].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[2].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun2_media_size] B"/>
              <item cond="usbd_msc_data[2].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[2].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[2].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun3_media_size] B"/>
              <item cond="usbd_msc_data[2].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun3_media_size_xB] GB"/>
            </item>
          </item>
          <item cond="(usbd2_msc3_en)" property="Mass Storage Device 3" value="EP BULK IN: %d[usbd_msc[3].ep_bulk_in], EP BULK OUT: %E[usbd_msc[3].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[3].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun0_media_size] B"/>
              <item cond="usbd_msc_data[3].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[3].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[3].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun1_media_size] B"/>
              <item cond="usbd_msc_data[3].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[3].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[3].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun2_media_size] B"/>
              <item cond="usbd_msc_data[3].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[3].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[3].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun3_media_size] B"/>
              <item cond="usbd_msc_data[3].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun3_media_size_xB] GB"/>
            </item>
          </item>
        </item>
        <!-- USB Device 2 display end -->

        <!-- USB Device 3: if it exists display it -->
        <item cond="usbd3_en" property="Device 3">
          <item property="Vendor ID"                             value="%x[usbd3_device_desc.idVendor]"/>
          <item property="Product ID"                            value="%x[usbd3_device_desc.idProduct]" />
          <item property="Speed"                                 value="%E[usbd3_cfg.hs]" />
          <item property="Endpoint 0 Maximum Packet Size"        value="%d[usbd3_device_desc.bMaxPacketSize0]" />
          <item property="Number of Interfaces"                  value="%d[usbd3_config_desc.bNumInterfaces]" />
          <item property="Assigned Address"                      value="%d[usbd3_data.device_address]" />
          <item property="Configuration Status"                  value="%E[usbd3_data.configuration]" />
          <item property="Endpoint Activity">
            <item cond="(usbd3_ep0_out_en )" property="EP0 OUT"  value="%E[usbd3_data.ep0_out_active ]"/>
            <item cond="(usbd3_ep0_in_en  )" property="EP0 IN"   value="%E[usbd3_data.ep0_in_active  ]"/>
            <item cond="(usbd3_ep1_out_en )" property="EP1 OUT"  value="%E[usbd3_data.ep1_out_active ]"/>
            <item cond="(usbd3_ep1_in_en  )" property="EP1 IN"   value="%E[usbd3_data.ep1_in_active  ]"/>
            <item cond="(usbd3_ep2_out_en )" property="EP2 OUT"  value="%E[usbd3_data.ep2_out_active ]"/>
            <item cond="(usbd3_ep2_in_en  )" property="EP2 IN"   value="%E[usbd3_data.ep2_in_active  ]"/>
            <item cond="(usbd3_ep3_out_en )" property="EP3 OUT"  value="%E[usbd3_data.ep3_out_active ]"/>
            <item cond="(usbd3_ep3_in_en  )" property="EP3 IN"   value="%E[usbd3_data.ep3_in_active  ]"/>
            <item cond="(usbd3_ep4_out_en )" property="EP4 OUT"  value="%E[usbd3_data.ep4_out_active ]"/>
            <item cond="(usbd3_ep4_in_en  )" property="EP4 IN"   value="%E[usbd3_data.ep4_in_active  ]"/>
            <item cond="(usbd3_ep5_out_en )" property="EP5 OUT"  value="%E[usbd3_data.ep5_out_active ]"/>
            <item cond="(usbd3_ep5_in_en  )" property="EP5 IN"   value="%E[usbd3_data.ep5_in_active  ]"/>
            <item cond="(usbd3_ep6_out_en )" property="EP6 OUT"  value="%E[usbd3_data.ep6_out_active ]"/>
            <item cond="(usbd3_ep6_in_en  )" property="EP6 IN"   value="%E[usbd3_data.ep6_in_active  ]"/>
            <item cond="(usbd3_ep7_out_en )" property="EP7 OUT"  value="%E[usbd3_data.ep7_out_active ]"/>
            <item cond="(usbd3_ep7_in_en  )" property="EP7 IN"   value="%E[usbd3_data.ep7_in_active  ]"/>
            <item cond="(usbd3_ep8_out_en )" property="EP8 OUT"  value="%E[usbd3_data.ep8_out_active ]"/>
            <item cond="(usbd3_ep8_in_en  )" property="EP8 IN"   value="%E[usbd3_data.ep8_in_active  ]"/>
            <item cond="(usbd3_ep9_out_en )" property="EP9 OUT"  value="%E[usbd3_data.ep9_out_active ]"/>
            <item cond="(usbd3_ep9_in_en  )" property="EP9 IN"   value="%E[usbd3_data.ep9_in_active  ]"/>
            <item cond="(usbd3_ep10_out_en)" property="EP10 OUT" value="%E[usbd3_data.ep10_out_active]"/>
            <item cond="(usbd3_ep10_in_en )" property="EP10 IN"  value="%E[usbd3_data.ep10_in_active ]"/>
            <item cond="(usbd3_ep11_out_en)" property="EP11 OUT" value="%E[usbd3_data.ep11_out_active]"/>
            <item cond="(usbd3_ep11_in_en )" property="EP11 IN"  value="%E[usbd3_data.ep11_in_active ]"/>
            <item cond="(usbd3_ep12_out_en)" property="EP12 OUT" value="%E[usbd3_data.ep12_out_active]"/>
            <item cond="(usbd3_ep12_in_en )" property="EP12 IN"  value="%E[usbd3_data.ep12_in_active ]"/>
            <item cond="(usbd3_ep13_out_en)" property="EP13 OUT" value="%E[usbd3_data.ep13_out_active]"/>
            <item cond="(usbd3_ep13_in_en )" property="EP13 IN"  value="%E[usbd3_data.ep13_in_active ]"/>
            <item cond="(usbd3_ep14_out_en)" property="EP14 OUT" value="%E[usbd3_data.ep14_out_active]"/>
            <item cond="(usbd3_ep14_in_en )" property="EP14 IN"  value="%E[usbd3_data.ep14_in_active ]"/>
            <item cond="(usbd3_ep15_out_en)" property="EP15 OUT" value="%E[usbd3_data.ep15_out_active]"/>
            <item cond="(usbd3_ep15_in_en )" property="EP15 IN"  value="%E[usbd3_data.ep15_in_active ]"/>
          </item>

          <item cond="(usbd3_cc0_en)" property="Custom Class 0" value="%d[usbd_cc[0].if_num] interface(s)"/>
          <item cond="(usbd3_cc1_en)" property="Custom Class 1" value="%d[usbd_cc[1].if_num] interface(s)"/>
          <item cond="(usbd3_cc2_en)" property="Custom Class 2" value="%d[usbd_cc[2].if_num] interface(s)"/>
          <item cond="(usbd3_cc3_en)" property="Custom Class 3" value="%d[usbd_cc[3].if_num] interface(s)"/>

          <item cond="(usbd3_adc0_en)" property="Audio Device Class 0">
            <item cond="(usbd_adc0_spkr_en==1)" property="Speaker" value="%E[usbd_adc0_out_data.ch_num], %d[usbd_adc0_out_data.data_freq] Hz, %d[usbd_adc0_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc0_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc0_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc0_spkr_data.mute]"/>
              <item cond="usbd_adc0_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc0_spkr_data.vol_cur[0]]/%d[usbd_adc0_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc0_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc0_spkr_data.vol_cur[0]]/%d[usbd_adc0_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc0_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc0_spkr_data.vol_cur[1]]/%d[usbd_adc0_spkr_data.vol_max[1]]"/>
            </item>
            <item cond="(usbd_adc0_mic_en==1)"  property="Microphone" value="%E[usbd_adc0_in_data.ch_num], %d[usbd_adc0_in_data.data_freq] Hz, %d[usbd_adc0_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc0_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc0_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc0_mic_data.mute]"/>
              <item cond="usbd_adc0_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc0_mic_data.vol_cur[0]]/%d[usbd_adc0_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc0_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc0_mic_data.vol_cur[0]]/%d[usbd_adc0_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc0_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc0_mic_data.vol_cur[1]]/%d[usbd_adc0_mic_data.vol_max[1]]"/>
            </item>
          </item>
          <item cond="(usbd3_adc1_en)" property="Audio Device Class 1">
            <item cond="(usbd_adc1_spkr_en==1)" property="Speaker" value="%E[usbd_adc1_out_data.ch_num], %d[usbd_adc1_out_data.data_freq] Hz, %d[usbd_adc1_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc1_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc1_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc1_spkr_data.mute]"/>
              <item cond="usbd_adc1_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc1_spkr_data.vol_cur[0]]/%d[usbd_adc1_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc1_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc1_spkr_data.vol_cur[0]]/%d[usbd_adc1_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc1_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc1_spkr_data.vol_cur[1]]/%d[usbd_adc1_spkr_data.vol_max[1]]"/>
            </item>
            <item cond="(usbd_adc1_mic_en==1)"  property="Microphone" value="%E[usbd_adc1_in_data.ch_num], %d[usbd_adc1_in_data.data_freq] Hz, %d[usbd_adc1_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc1_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc1_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc1_mic_data.mute]"/>
              <item cond="usbd_adc1_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc1_mic_data.vol_cur[0]]/%d[usbd_adc1_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc1_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc1_mic_data.vol_cur[0]]/%d[usbd_adc1_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc1_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc1_mic_data.vol_cur[1]]/%d[usbd_adc1_mic_data.vol_max[1]]"/>
            </item>
          </item>
          <item cond="(usbd3_adc2_en)" property="Audio Device Class 2">
            <item cond="(usbd_adc2_spkr_en==1)" property="Speaker" value="%E[usbd_adc2_out_data.ch_num], %d[usbd_adc2_out_data.data_freq] Hz, %d[usbd_adc2_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc2_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc2_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc2_spkr_data.mute]"/>
              <item cond="usbd_adc2_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc2_spkr_data.vol_cur[0]]/%d[usbd_adc2_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc2_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc2_spkr_data.vol_cur[0]]/%d[usbd_adc2_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc2_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc2_spkr_data.vol_cur[1]]/%d[usbd_adc2_spkr_data.vol_max[1]]"/>
            </item>
            <item cond="(usbd_adc2_mic_en==1)"  property="Microphone" value="%E[usbd_adc2_in_data.ch_num], %d[usbd_adc2_in_data.data_freq] Hz, %d[usbd_adc2_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc2_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc2_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc2_mic_data.mute]"/>
              <item cond="usbd_adc2_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc2_mic_data.vol_cur[0]]/%d[usbd_adc2_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc2_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc2_mic_data.vol_cur[0]]/%d[usbd_adc2_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc2_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc2_mic_data.vol_cur[1]]/%d[usbd_adc2_mic_data.vol_max[1]]"/>
            </item>
          </item>
          <item cond="(usbd3_adc3_en)" property="Audio Device Class 3">
            <item cond="(usbd_adc3_spkr_en==1)" property="Speaker" value="%E[usbd_adc3_out_data.ch_num], %d[usbd_adc3_out_data.data_freq] Hz, %d[usbd_adc3_out_data.sample_res] bits/sample, EP ISO OUT: %d[usbd_adc3_out_data.ep_iso]">
              <item property="Playback"  value="%E[usbd_adc3_spkr_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc3_spkr_data.mute]"/>
              <item cond="usbd_adc3_out_data.ch_num==1" property="Volume"       value="%d[usbd_adc3_spkr_data.vol_cur[0]]/%d[usbd_adc3_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc3_out_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc3_spkr_data.vol_cur[0]]/%d[usbd_adc3_spkr_data.vol_max[0]]"/>
              <item cond="usbd_adc3_out_data.ch_num==2" property="Volume Right" value="%d[usbd_adc3_spkr_data.vol_cur[1]]/%d[usbd_adc3_spkr_data.vol_max[1]]"/>
            </item>
            <item cond="(usbd_adc3_mic_en==1)"  property="Microphone" value="%E[usbd_adc3_in_data.ch_num], %d[usbd_adc3_in_data.data_freq] Hz, %d[usbd_adc3_in_data.sample_res] bits/sample, EP ISO IN: %d[usbd_adc0_in_data.ep_iso]">
              <item property="Recording" value="%E[usbd_adc3_mic_data.active]"/>
              <item property="Mute"      value="%E[usbd_adc3_mic_data.mute]"/>
              <item cond="usbd_adc3_in_data.ch_num==1" property="Volume"       value="%d[usbd_adc3_mic_data.vol_cur[0]]/%d[usbd_adc3_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc3_in_data.ch_num==2" property="Volume Left"  value="%d[usbd_adc3_mic_data.vol_cur[0]]/%d[usbd_adc3_mic_data.vol_max[0]]"/>
              <item cond="usbd_adc3_in_data.ch_num==2" property="Volume Right" value="%d[usbd_adc3_mic_data.vol_cur[1]]/%d[usbd_adc3_mic_data.vol_max[1]]"/>
            </item>
          </item>

          <item cond="(usbd3_cdc0_en)" property="Communication Device Class 0" value="Subclass: %E[usbd_cdc[0].acm], EP INT IN: %d[usbd_cdc[0].ep_int_in], EP BULK IN: %d[usbd_cdc[0].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[0].ep_bulk_out]"/>
          <item cond="(usbd3_cdc1_en)" property="Communication Device Class 1" value="Subclass: %E[usbd_cdc[1].acm], EP INT IN: %d[usbd_cdc[1].ep_int_in], EP BULK IN: %d[usbd_cdc[1].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[1].ep_bulk_out]"/>
          <item cond="(usbd3_cdc2_en)" property="Communication Device Class 2" value="Subclass: %E[usbd_cdc[2].acm], EP INT IN: %d[usbd_cdc[2].ep_int_in], EP BULK IN: %d[usbd_cdc[2].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[2].ep_bulk_out]"/>
          <item cond="(usbd3_cdc3_en)" property="Communication Device Class 3" value="Subclass: %E[usbd_cdc[3].acm], EP INT IN: %d[usbd_cdc[3].ep_int_in], EP BULK IN: %d[usbd_cdc[3].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[3].ep_bulk_out]"/>
          <item cond="(usbd3_cdc4_en)" property="Communication Device Class 4" value="Subclass: %E[usbd_cdc[4].acm], EP INT IN: %d[usbd_cdc[4].ep_int_in], EP BULK IN: %d[usbd_cdc[4].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[4].ep_bulk_out]"/>
          <item cond="(usbd3_cdc5_en)" property="Communication Device Class 5" value="Subclass: %E[usbd_cdc[5].acm], EP INT IN: %d[usbd_cdc[5].ep_int_in], EP BULK IN: %d[usbd_cdc[5].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[5].ep_bulk_out]"/>
          <item cond="(usbd3_cdc6_en)" property="Communication Device Class 6" value="Subclass: %E[usbd_cdc[6].acm], EP INT IN: %d[usbd_cdc[6].ep_int_in], EP BULK IN: %d[usbd_cdc[6].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[6].ep_bulk_out]"/>
          <item cond="(usbd3_cdc7_en)" property="Communication Device Class 7" value="Subclass: %E[usbd_cdc[7].acm], EP INT IN: %d[usbd_cdc[7].ep_int_in], EP BULK IN: %d[usbd_cdc[7].ep_bulk_in], EP BULK OUT: %d[usbd_cdc[7].ep_bulk_out]"/>

          <item cond="(usbd3_hid0_en)" property="Human Interface Device 0" value="In reports %d[usbd_hid[0].in_report_num], Out reports %d[usbd_hid[0].out_report_num], EP INT IN: %d[usbd_hid[0].ep_int_in], EP INT OUT: %E[usbd_hid[0].ep_int_out]"/>
          <item cond="(usbd3_hid1_en)" property="Human Interface Device 1" value="In reports %d[usbd_hid[1].in_report_num], Out reports %d[usbd_hid[1].out_report_num], EP INT IN: %d[usbd_hid[1].ep_int_in], EP INT OUT: %E[usbd_hid[1].ep_int_out]"/>
          <item cond="(usbd3_hid2_en)" property="Human Interface Device 2" value="In reports %d[usbd_hid[2].in_report_num], Out reports %d[usbd_hid[2].out_report_num], EP INT IN: %d[usbd_hid[2].ep_int_in], EP INT OUT: %E[usbd_hid[2].ep_int_out]"/>
          <item cond="(usbd3_hid3_en)" property="Human Interface Device 3" value="In reports %d[usbd_hid[3].in_report_num], Out reports %d[usbd_hid[3].out_report_num], EP INT IN: %d[usbd_hid[3].ep_int_in], EP INT OUT: %E[usbd_hid[3].ep_int_out]"/>

          <item cond="(usbd3_msc0_en)" property="Mass Storage Device 0" value="EP BULK IN: %d[usbd_msc[0].ep_bulk_in], EP BULK OUT: %E[usbd_msc[0].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[0].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun0_media_size] B"/>
              <item cond="usbd_msc_data[0].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[0].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[0].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun1_media_size] B"/>
              <item cond="usbd_msc_data[0].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[0].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[0].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun2_media_size] B"/>
              <item cond="usbd_msc_data[0].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[0].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[0].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[0].lun3_media_size] B"/>
              <item cond="usbd_msc_data[0].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[0].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[0].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[0].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[0].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[0].lun3_media_size_xB] GB"/>
            </item>
          </item>
          <item cond="(usbd3_msc1_en)" property="Mass Storage Device 1" value="EP BULK IN: %d[usbd_msc[1].ep_bulk_in], EP BULK OUT: %E[usbd_msc[1].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[1].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun0_media_size] B"/>
              <item cond="usbd_msc_data[1].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[1].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[1].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun1_media_size] B"/>
              <item cond="usbd_msc_data[1].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[1].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[1].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun2_media_size] B"/>
              <item cond="usbd_msc_data[1].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[1].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[1].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[1].lun3_media_size] B"/>
              <item cond="usbd_msc_data[1].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[1].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[1].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[1].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[1].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[1].lun3_media_size_xB] GB"/>
            </item>
          </item>
          <item cond="(usbd3_msc2_en)" property="Mass Storage Device 2" value="EP BULK IN: %d[usbd_msc[2].ep_bulk_in], EP BULK OUT: %E[usbd_msc[2].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[2].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun0_media_size] B"/>
              <item cond="usbd_msc_data[2].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[2].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[2].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun1_media_size] B"/>
              <item cond="usbd_msc_data[2].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[2].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[2].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun2_media_size] B"/>
              <item cond="usbd_msc_data[2].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[2].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[2].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[2].lun3_media_size] B"/>
              <item cond="usbd_msc_data[2].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[2].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[2].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[2].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[2].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[2].lun3_media_size_xB] GB"/>
            </item>
          </item>
          <item cond="(usbd3_msc3_en)" property="Mass Storage Device 3" value="EP BULK IN: %d[usbd_msc[3].ep_bulk_in], EP BULK OUT: %E[usbd_msc[3].ep_bulk_out]">
            <item property="LUN0">
              <item cond="usbd_msc_data[3].lun0_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun0_media_size] B"/>
              <item cond="usbd_msc_data[3].lun0_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun0_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun0_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun0_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun0_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun0_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[3].max_lun&gt;0)" property="LUN1">
              <item cond="usbd_msc_data[3].lun1_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun1_media_size] B"/>
              <item cond="usbd_msc_data[3].lun1_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun1_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun1_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun1_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun1_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun1_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[3].max_lun&gt;1)" property="LUN2">
              <item cond="usbd_msc_data[3].lun2_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun2_media_size] B"/>
              <item cond="usbd_msc_data[3].lun2_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun2_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun2_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun2_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun2_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun2_media_size_xB] GB"/>
            </item>
            <item cond="(usbd_msc[3].max_lun&gt;2)" property="LUN3">
              <item cond="usbd_msc_data[3].lun3_media_size_x == 0" property="Media Size" value="%d[usbd_msc_data[3].lun3_media_size] B"/>
              <item cond="usbd_msc_data[3].lun3_media_size_x == 1" property="Media Size" value="%T[usbd_msc_data[3].lun3_media_size_xB] kB"/>
              <item cond="usbd_msc_data[3].lun3_media_size_x == 2" property="Media Size" value="%T[usbd_msc_data[3].lun3_media_size_xB] MB"/>
              <item cond="usbd_msc_data[3].lun3_media_size_x == 3" property="Media Size" value="%T[usbd_msc_data[3].lun3_media_size_xB] GB"/>
            </item>
          </item>
        </item>
        <!-- USB Device 3 display end -->

        <!-- USB Host Component display ************************************************************************************** -->
        <!-- USB Host 0: if it exists display it -->
        <item cond="usbh0_en" property="Host 0">
          <item                                     property="Controller Interface" value="%E[usbh0_hci_type.type]"/>
          <item                                     property="Pipes"                value="In use %d[usbh0_pipe_used_num] of %d[usbh0_pipe_num]"/>
          <item cond="(usbh0_transfer_exists == 1)" property="Transfers"            value="Active %d[usbh0_transfer_used_num] of %d[usbh0_pipe_num]"/>
          <list name="usbh0_disp_i" start="0" limit="usbh_dev._count">
            <item cond="(usbh_dev[usbh0_disp_i].ctrl == 0) &amp;&amp; (usbh_dev[usbh0_disp_i].dev_addr != 0)" property="Device %d[usbh0_disp_i]">
              <item cond="(usbh_dev[usbh0_disp_i].ctrl == 0) &amp;&amp; (usbh_dev[usbh0_disp_i].dev_addr != 0)" property="Vendor ID"                      value="%x[usbh_dev[usbh0_disp_i].vid]"/>
              <item cond="(usbh_dev[usbh0_disp_i].ctrl == 0) &amp;&amp; (usbh_dev[usbh0_disp_i].dev_addr != 0)" property="Product ID"                     value="%x[usbh_dev[usbh0_disp_i].pid]"/>
              <item cond="(usbh_dev[usbh0_disp_i].ctrl == 0) &amp;&amp; (usbh_dev[usbh0_disp_i].dev_addr != 0)" property="Configuration Status"           value="%E[usbh_dev[usbh0_disp_i].state]"/>
              <item cond="(usbh_dev[usbh0_disp_i].ctrl == 0) &amp;&amp; (usbh_dev[usbh0_disp_i].dev_addr != 0)" property="Assigned Address"               value="%d[usbh_dev[usbh0_disp_i].dev_addr]"/>
              <item cond="(usbh_dev[usbh0_disp_i].ctrl == 0) &amp;&amp; (usbh_dev[usbh0_disp_i].dev_addr != 0)" property="Enumerated Speed"               value="%E[usbh_dev[usbh0_disp_i].dev_speed]"/>
              <item cond="(usbh_dev[usbh0_disp_i].ctrl == 0) &amp;&amp; (usbh_dev[usbh0_disp_i].dev_addr != 0)" property="Endpoint 0 Maximum Packet Size" value="%d[usbh_dev[usbh0_disp_i].max_packet_size]"/>
              <item cond="(usbh_dev[usbh0_disp_i].ctrl == 0) &amp;&amp; (usbh_dev[usbh0_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh0_disp_i].class_custom != 0)" property="Class" value="Custom Class"/>
              <item cond="(usbh_dev[usbh0_disp_i].ctrl == 0) &amp;&amp; (usbh_dev[usbh0_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh0_disp_i].class_custom == 0) &amp;&amp; (usbh_dev[usbh0_disp_i].class_driver==2)" property="Class" value="Communication Device Class">
              </item>
              <item cond="(usbh_dev[usbh0_disp_i].ctrl == 0) &amp;&amp; (usbh_dev[usbh0_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh0_disp_i].class_custom == 0) &amp;&amp; (usbh_dev[usbh0_disp_i].class_driver==3)" property="Class" value="Human Interface Device">
              </item>
              <item cond="(usbh_dev[usbh0_disp_i].ctrl == 0) &amp;&amp; (usbh_dev[usbh0_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh0_disp_i].class_custom == 0) &amp;&amp; (usbh_dev[usbh0_disp_i].class_driver==8)" property="Class" value="Mass Storage">
                <item cond="usbh_msc[usbh0_disp_i].media_size_x == 0" property="Media Size" value="%d[usbh_msc[usbh0_disp_i].media_size] B"/>
                <item cond="usbh_msc[usbh0_disp_i].media_size_x == 1" property="Media Size" value="%T[usbh_msc[usbh0_disp_i].media_size_xB] kB"/>
                <item cond="usbh_msc[usbh0_disp_i].media_size_x == 2" property="Media Size" value="%T[usbh_msc[usbh0_disp_i].media_size_xB] MB"/>
                <item cond="usbh_msc[usbh0_disp_i].media_size_x == 3" property="Media Size" value="%T[usbh_msc[usbh0_disp_i].media_size_xB] GB"/>
              </item>
            </item>
          </list>
        </item>

        <!-- USB Host 1: if it exists display it -->
        <item cond="usbh1_en" property="Host 1">
          <item                                     property="Controller Interface" value="%E[usbh1_hci_type.type]"/>
          <item                                     property="Pipes"                value="In use %d[usbh1_pipe_used_num] of %d[usbh1_pipe_num]"/>
          <item cond="(usbh1_transfer_exists == 1)" property="Transfers"            value="Active %d[usbh1_transfer_used_num] of %d[usbh1_pipe_num]"/>
          <list name="usbh1_disp_i" start="0" limit="usbh_dev._count">
            <item cond="(usbh_dev[usbh1_disp_i].ctrl == 1) &amp;&amp; (usbh_dev[usbh1_disp_i].dev_addr != 0)" property="Device %d[usbh1_disp_i]">
              <item cond="(usbh_dev[usbh1_disp_i].ctrl == 1) &amp;&amp; (usbh_dev[usbh1_disp_i].dev_addr != 0)" property="Vendor ID"                      value="%x[usbh_dev[usbh1_disp_i].vid]"/>
              <item cond="(usbh_dev[usbh1_disp_i].ctrl == 1) &amp;&amp; (usbh_dev[usbh1_disp_i].dev_addr != 0)" property="Product ID"                     value="%x[usbh_dev[usbh1_disp_i].pid]"/>
              <item cond="(usbh_dev[usbh1_disp_i].ctrl == 1) &amp;&amp; (usbh_dev[usbh1_disp_i].dev_addr != 0)" property="Configuration Status"           value="%E[usbh_dev[usbh1_disp_i].state]"/>
              <item cond="(usbh_dev[usbh1_disp_i].ctrl == 1) &amp;&amp; (usbh_dev[usbh1_disp_i].dev_addr != 0)" property="Assigned Address"               value="%d[usbh_dev[usbh1_disp_i].dev_addr]"/>
              <item cond="(usbh_dev[usbh1_disp_i].ctrl == 1) &amp;&amp; (usbh_dev[usbh1_disp_i].dev_addr != 0)" property="Enumerated Speed"               value="%E[usbh_dev[usbh1_disp_i].dev_speed]"/>
              <item cond="(usbh_dev[usbh1_disp_i].ctrl == 1) &amp;&amp; (usbh_dev[usbh1_disp_i].dev_addr != 0)" property="Endpoint 0 Maximum Packet Size" value="%d[usbh_dev[usbh1_disp_i].max_packet_size]"/>
              <item cond="(usbh_dev[usbh1_disp_i].ctrl == 1) &amp;&amp; (usbh_dev[usbh1_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh1_disp_i].class_custom != 0)" property="Class" value="Custom Class"/>
              <item cond="(usbh_dev[usbh1_disp_i].ctrl == 1) &amp;&amp; (usbh_dev[usbh1_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh1_disp_i].class_custom == 0) &amp;&amp; (usbh_dev[usbh1_disp_i].class_driver==2)" property="Class" value="Communication Device Class">
              </item>
              <item cond="(usbh_dev[usbh1_disp_i].ctrl == 1) &amp;&amp; (usbh_dev[usbh1_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh1_disp_i].class_custom == 0) &amp;&amp; (usbh_dev[usbh1_disp_i].class_driver==3)" property="Class" value="Human Interface Device">
              </item>
              <item cond="(usbh_dev[usbh1_disp_i].ctrl == 1) &amp;&amp; (usbh_dev[usbh1_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh1_disp_i].class_custom == 0) &amp;&amp; (usbh_dev[usbh1_disp_i].class_driver==8)" property="Class" value="Mass Storage">
                <item cond="usbh_msc[usbh1_disp_i].media_size_x == 0" property="Media Size" value="%d[usbh_msc[usbh1_disp_i].media_size] B"/>
                <item cond="usbh_msc[usbh1_disp_i].media_size_x == 1" property="Media Size" value="%T[usbh_msc[usbh1_disp_i].media_size_xB] kB"/>
                <item cond="usbh_msc[usbh1_disp_i].media_size_x == 2" property="Media Size" value="%T[usbh_msc[usbh1_disp_i].media_size_xB] MB"/>
                <item cond="usbh_msc[usbh1_disp_i].media_size_x == 3" property="Media Size" value="%T[usbh_msc[usbh1_disp_i].media_size_xB] GB"/>
              </item>
            </item>
          </list>
        </item>

        <!-- USB Host 2: if it exists display it -->
        <item cond="usbh2_en" property="Host 2">
          <item                                     property="Controller Interface" value="%E[usbh2_hci_type.type]"/>
          <item                                     property="Pipes"                value="In use %d[usbh2_pipe_used_num] of %d[usbh2_pipe_num]"/>
          <item cond="(usbh2_transfer_exists == 1)" property="Transfers"            value="Active %d[usbh2_transfer_used_num] of %d[usbh2_pipe_num]"/>
          <list name="usbh2_disp_i" start="0" limit="usbh_dev._count">
            <item cond="(usbh_dev[usbh2_disp_i].ctrl == 2) &amp;&amp; (usbh_dev[usbh2_disp_i].dev_addr != 0)" property="Device %d[usbh2_disp_i]">
              <item cond="(usbh_dev[usbh2_disp_i].ctrl == 2) &amp;&amp; (usbh_dev[usbh2_disp_i].dev_addr != 0)" property="Vendor ID"                      value="%x[usbh_dev[usbh2_disp_i].vid]"/>
              <item cond="(usbh_dev[usbh2_disp_i].ctrl == 2) &amp;&amp; (usbh_dev[usbh2_disp_i].dev_addr != 0)" property="Product ID"                     value="%x[usbh_dev[usbh2_disp_i].pid]"/>
              <item cond="(usbh_dev[usbh2_disp_i].ctrl == 2) &amp;&amp; (usbh_dev[usbh2_disp_i].dev_addr != 0)" property="Configuration Status"           value="%E[usbh_dev[usbh2_disp_i].state]"/>
              <item cond="(usbh_dev[usbh2_disp_i].ctrl == 2) &amp;&amp; (usbh_dev[usbh2_disp_i].dev_addr != 0)" property="Assigned Address"               value="%d[usbh_dev[usbh2_disp_i].dev_addr]"/>
              <item cond="(usbh_dev[usbh2_disp_i].ctrl == 2) &amp;&amp; (usbh_dev[usbh2_disp_i].dev_addr != 0)" property="Enumerated Speed"               value="%E[usbh_dev[usbh2_disp_i].dev_speed]"/>
              <item cond="(usbh_dev[usbh2_disp_i].ctrl == 2) &amp;&amp; (usbh_dev[usbh2_disp_i].dev_addr != 0)" property="Endpoint 0 Maximum Packet Size" value="%d[usbh_dev[usbh2_disp_i].max_packet_size]"/>
              <item cond="(usbh_dev[usbh2_disp_i].ctrl == 2) &amp;&amp; (usbh_dev[usbh2_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh2_disp_i].class_custom != 0)" property="Class" value="Custom Class"/>
              <item cond="(usbh_dev[usbh2_disp_i].ctrl == 2) &amp;&amp; (usbh_dev[usbh2_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh2_disp_i].class_custom == 0) &amp;&amp; (usbh_dev[usbh2_disp_i].class_driver==2)" property="Class" value="Communication Device Class">
              </item>
              <item cond="(usbh_dev[usbh2_disp_i].ctrl == 2) &amp;&amp; (usbh_dev[usbh2_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh2_disp_i].class_custom == 0) &amp;&amp; (usbh_dev[usbh2_disp_i].class_driver==3)" property="Class" value="Human Interface Device">
              </item>
              <item cond="(usbh_dev[usbh2_disp_i].ctrl == 2) &amp;&amp; (usbh_dev[usbh2_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh2_disp_i].class_custom == 0) &amp;&amp; (usbh_dev[usbh2_disp_i].class_driver==8)" property="Class" value="Mass Storage">
                <item cond="usbh_msc[usbh2_disp_i].media_size_x == 0" property="Media Size" value="%d[usbh_msc[usbh2_disp_i].media_size] B"/>
                <item cond="usbh_msc[usbh2_disp_i].media_size_x == 1" property="Media Size" value="%T[usbh_msc[usbh2_disp_i].media_size_xB] kB"/>
                <item cond="usbh_msc[usbh2_disp_i].media_size_x == 2" property="Media Size" value="%T[usbh_msc[usbh2_disp_i].media_size_xB] MB"/>
                <item cond="usbh_msc[usbh2_disp_i].media_size_x == 3" property="Media Size" value="%T[usbh_msc[usbh2_disp_i].media_size_xB] GB"/>
              </item>
            </item>
          </list>
        </item>

        <!-- USB Host 3: if it exists display it -->
        <item cond="usbh3_en" property="Host 3">
          <item                                     property="Controller Interface" value="%E[usbh3_hci_type.type]"/>
          <item                                     property="Pipes"                value="In use %d[usbh3_pipe_used_num] of %d[usbh3_pipe_num]"/>
          <item cond="(usbh3_transfer_exists == 1)" property="Transfers"            value="Active %d[usbh3_transfer_used_num] of %d[usbh3_pipe_num]"/>
          <list name="usbh3_disp_i" start="0" limit="usbh_dev._count">
            <item cond="(usbh_dev[usbh3_disp_i].ctrl == 3) &amp;&amp; (usbh_dev[usbh3_disp_i].dev_addr != 0)" property="Device %d[usbh3_disp_i]">
              <item cond="(usbh_dev[usbh3_disp_i].ctrl == 3) &amp;&amp; (usbh_dev[usbh3_disp_i].dev_addr != 0)" property="Vendor ID"                      value="%x[usbh_dev[usbh3_disp_i].vid]"/>
              <item cond="(usbh_dev[usbh3_disp_i].ctrl == 3) &amp;&amp; (usbh_dev[usbh3_disp_i].dev_addr != 0)" property="Product ID"                     value="%x[usbh_dev[usbh3_disp_i].pid]"/>
              <item cond="(usbh_dev[usbh3_disp_i].ctrl == 3) &amp;&amp; (usbh_dev[usbh3_disp_i].dev_addr != 0)" property="Configuration Status"           value="%E[usbh_dev[usbh3_disp_i].state]"/>
              <item cond="(usbh_dev[usbh3_disp_i].ctrl == 3) &amp;&amp; (usbh_dev[usbh3_disp_i].dev_addr != 0)" property="Assigned Address"               value="%d[usbh_dev[usbh3_disp_i].dev_addr]"/>
              <item cond="(usbh_dev[usbh3_disp_i].ctrl == 3) &amp;&amp; (usbh_dev[usbh3_disp_i].dev_addr != 0)" property="Enumerated Speed"               value="%E[usbh_dev[usbh3_disp_i].dev_speed]"/>
              <item cond="(usbh_dev[usbh3_disp_i].ctrl == 3) &amp;&amp; (usbh_dev[usbh3_disp_i].dev_addr != 0)" property="Endpoint 0 Maximum Packet Size" value="%d[usbh_dev[usbh3_disp_i].max_packet_size]"/>
              <item cond="(usbh_dev[usbh3_disp_i].ctrl == 3) &amp;&amp; (usbh_dev[usbh3_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh3_disp_i].class_custom != 0)" property="Class" value="Custom Class"/>
              <item cond="(usbh_dev[usbh3_disp_i].ctrl == 3) &amp;&amp; (usbh_dev[usbh3_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh3_disp_i].class_custom == 0) &amp;&amp; (usbh_dev[usbh3_disp_i].class_driver==2)" property="Class" value="Communication Device Class">
              </item>
              <item cond="(usbh_dev[usbh3_disp_i].ctrl == 3) &amp;&amp; (usbh_dev[usbh3_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh3_disp_i].class_custom == 0) &amp;&amp; (usbh_dev[usbh3_disp_i].class_driver==3)" property="Class" value="Human Interface Device">
              </item>
              <item cond="(usbh_dev[usbh3_disp_i].ctrl == 3) &amp;&amp; (usbh_dev[usbh3_disp_i].dev_addr != 0) &amp;&amp; (usbh_dev[usbh3_disp_i].class_custom == 0) &amp;&amp; (usbh_dev[usbh3_disp_i].class_driver==8)" property="Class" value="Mass Storage">
                <item cond="usbh_msc[usbh3_disp_i].media_size_x == 0" property="Media Size" value="%d[usbh_msc[usbh3_disp_i].media_size] B"/>
                <item cond="usbh_msc[usbh3_disp_i].media_size_x == 1" property="Media Size" value="%T[usbh_msc[usbh3_disp_i].media_size_xB] kB"/>
                <item cond="usbh_msc[usbh3_disp_i].media_size_x == 2" property="Media Size" value="%T[usbh_msc[usbh3_disp_i].media_size_xB] MB"/>
                <item cond="usbh_msc[usbh3_disp_i].media_size_x == 3" property="Media Size" value="%T[usbh_msc[usbh3_disp_i].media_size_xB] GB"/>
              </item>
            </item>
          </list>
        </item>

      </out>
    </object>
  </objects>

  <events>
    <!-- USB groups -->
    <group name="USB Device">
      <component name="Core"         brief="USBD_Core"   no="0xA0" prefix="EvrUSBD_Core_"   info="USB Device - Core"/>
      <component name="Driver"       brief="USBD_Driver" no="0xA1" prefix="EvrUSBD_Driver_" info="USB Device - Driver"/>
      <component name="Custom Class" brief="USBD_CC"     no="0xA2" prefix="EvrUSBD_CC_"     info="USB Device - Custom Class"/>
      <component name="ADC"          brief="USBD_ADC"    no="0xA3" prefix="EvrUSBD_ADC_"    info="USB Device - Audio Device Class"/>
      <component name="CDC"          brief="USBD_CDC"    no="0xA4" prefix="EvrUSBD_CDC_"    info="USB Device - Communication Device Class"/>
      <component name="HID"          brief="USBD_HID"    no="0xA5" prefix="EvrUSBD_HID_"    info="USB Device - Human Interface Device"/>
      <component name="MSC"          brief="USBD_MSC"    no="0xA6" prefix="EvrUSBD_MSC_"    info="USB Device - Mass Storage Class"/>
    </group>
    <group name="USB Host">
      <component name="Core"         brief="USBH_Core"   no="0xB0" prefix="EvrUSBH_Core_"   info="USB Host - Core"/>
      <component name="Driver"       brief="USBH_Driver" no="0xB1" prefix="EvrUSBH_Driver_" info="USB Host - Driver"/>
      <component name="Custom Class" brief="USBH_CC"     no="0xB2" prefix="EvrUSBH_CC_"     info="USB Host - Custom Class"/>
      <component name="CDC"          brief="USBH_CDC"    no="0xB3" prefix="EvrUSBH_CDC_"    info="USB Host - Communication Device Class"/>
      <component name="HID"          brief="USBH_HID"    no="0xB4" prefix="EvrUSBH_HID_"    info="USB Host - Human Interface Device"/>
      <component name="MSC"          brief="USBH_MSC"    no="0xB5" prefix="EvrUSBH_MSC_"    info="USB Host - Mass Storage Class"/>
    </group>

    <!-- USB Device events -->
    <!-- USB Device core events -->
    <event id="0xA000 + 0x00" level="API"    val1="4BY"                       property="Initialize"                               value="device=%d[val1.B0]"                                          info= "Event on USBD_Initialize start (API)"/>
    <event id="0xA000 + 0x01" level="Error"  val1="4BY" val2="4BY"            property="InitializeFailed"                         value="device=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_Initialize failed (Error)"/>
    <event id="0xA000 + 0x02" level="API"    val1="4BY"                       property="Uninitialize"                             value="device=%d[val1.B0]"                                          info= "Event on USBD_Uninitialize start (API)"/>
    <event id="0xA000 + 0x03" level="Error"  val1="4BY" val2="4BY"            property="UninitializeFailed"                       value="device=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_Uninitialize failed (Error)"/>
    <event id="0xA000 + 0x04" level="API"    val1="4BY"                       property="Connect"                                  value="device=%d[val1.B0]"                                          info= "Event on USBD_Connect start (API)"/>
    <event id="0xA000 + 0x05" level="Error"  val1="4BY" val2="4BY"            property="ConnectFailed"                            value="device=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_Connect failed (Error)"/>
    <event id="0xA000 + 0x06" level="API"    val1="4BY"                       property="Disconnect"                               value="device=%d[val1.B0]"                                          info= "Event on USBD_Disconnect start (API)"/>
    <event id="0xA000 + 0x07" level="Error"  val1="4BY" val2="4BY"            property="DisconnectFailed"                         value="device=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_Disconnect failed (Error)"/>
    <event id="0xA000 + 0x08" level="API"    val1="4BY" val2="4BY"            property="Configured"                               value="device=%d[val1.B0], configured=%E[val2.B0, usb_bool_enum:true_false]" info= "Event on USBD_Configured finished (API)"/>
    <event id="0xA000 + 0x09" level="API"    val1="4BY"                       property="GetState"                                 value="device=%d[val1.B0], state.VBUS = %E[val2 &amp; 1, usb_bool_enum:on_off], state.speed = %E[(val2 &gt;&gt; 1) &amp; 3, usbDriver_speed_enum:speed], state.active = %E[(val2 &gt;&gt; 3) &amp; 1, usb_bool_enum:true_false]"  info= "Event on USBD_GetState finished (API)"/>
    <event id="0xA000 + 0x0A" level="API"    val1="4BY"                       property="SetSerialNumber"                          value="device=%d[val1.B0]"                                          info= "Event on USBD_SetSerialNumber start (API)"/>
    <event id="0xA000 + 0x0B" level="Error"  val1="4BY" val2="4BY"            property="SetSerialNumberFailed"                    value="device=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_SetSerialNumber failed (Error)"/>
    <event id="0xA000 + 0x0C" level="API"    val1="4BY"                       property="EndpointRead"                             value="device=%d[val1.B0], ep_addr=%x[val1.B1], len=%d[val2]"                            info= "Event on USBD_EndpointRead start (API)"/>
    <event id="0xA000 + 0x0D" level="Error"  val1="4BY" val2="4BY"            property="EndpointReadFailed"                       value="device=%d[val1.B0], ep_addr=%x[val1.B1], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_EndpointRead failed (Error)"/>
    <event id="0xA000 + 0x0E" level="API"    val1="4BY"                       property="EndpointReadGetResult"                    value="device=%d[val1.B0], ep_addr=%x[val1.B1], result=%d[val2]"                         info= "Event on USBD_EndpointReadGetResult finished (API)"/>
    <event id="0xA000 + 0x0F" level="API"    val1="4BY"                       property="EndpointWrite"                            value="device=%d[val1.B0], ep_addr=%x[val1.B1], len=%d[val3]"                            info= "Event on USBD_EndpointWrite start (API)"/>
    <event id="0xA000 + 0x10" level="Error"  val1="4BY" val2="4BY"            property="EndpointWriteFailed"                      value="device=%d[val1.B0], ep_addr=%x[val1.B1], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_EndpointWrite failed (Error)"/>
    <event id="0xA000 + 0x11" level="API"    val1="4BY"                       property="EndpointWriteGetResult"                   value="device=%d[val1.B0], ep_addr=%x[val1.B1], result=%d[val2]"                         info= "Event on USBD_EndpointWriteGetResult finished (API)"/>
    <event id="0xA000 + 0x12" level="API"    val1="4BY"                       property="EndpointStall"                            value="device=%d[val1.B0], ep_addr=%x[val1.B1], stall=%d[val1.B2]"                                          info= "Event on USBD_EndpointStall start (API)"/>
    <event id="0xA000 + 0x13" level="Error"  val1="4BY" val2="4BY"            property="EndpointStallFailed"                      value="device=%d[val1.B0], ep_addr=%x[val1.B1], stall=%d[val1.B2], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_EndpointStall failed (Error)"/>
    <event id="0xA000 + 0x14" level="API"    val1="4BY"                       property="EndpointAbort"                            value="device=%d[val1.B0], ep_addr=%x[val1.B1]"                                          info= "Event on USBD_EndpointAbort start (API)"/>
    <event id="0xA000 + 0x15" level="Error"  val1="4BY" val2="4BY"            property="EndpointAbortFailed"                      value="device=%d[val1.B0], ep_addr=%x[val1.B1], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_EndpointAbort failed (Error)"/>
    <event id="0xA000 + 0x16" level="Op"     val1="4BY"                       property="ConfigureEp0"                             value="device=%d[val1.B0]"                                                               info= "Event on internal operation configuration of Endpoint 0 start (Operation)"/>
    <event id="0xA000 + 0x17" level="Error"  val1="4BY" val2="4BY"            property="ConfigureEp0Failed"                       value="device=%d[val1.B0], ep_addr=%x[val1.B1], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation configuration of Endpoint 0 failed (Error)"/>
    <event id="0xA000 + 0x18" level="Detail" val1="4BY" val2="4BY" val3="4BY" property="ReadSetupPacket"                          value="device=%d[val1.B0], setup_packet=[%x[val2.B0],%x[val2.B1],%x[val2.B2],%x[val2.B3],%x[val3.B0],%x[val3.B1],%x[val3.B2],%x[val3.B3]]" info= "Event on internal operation read of setup packet finished (Detail)"/>
    <event id="0xA000 + 0x19" level="Error"  val1="4BY" val2="4BY"            property="ReadSetupPacketFailed"                    value="device=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]"                                                                           info= "Event on internal operation read of setup packet failed (Error)"/>
    <event id="0xA000 + 0x1A" level="Error"  val1="4BY"                       property="ReqGetStatusFailed"                       value="device=%d[val1.B0]" info= "Event on internal operation Control Endpoint request Get Status failed (Error)"/>
    <event id="0xA000 + 0x1B" level="Error"  val1="4BY"                       property="ReqSetClrFeatureFailed"                   value="device=%d[val1.B0]" info= "Event on internal operation Control Endpoint request Set/Clear Feature failed (Error)"/>
    <event id="0xA000 + 0x1C" level="Error"  val1="4BY"                       property="ReqSetAddressFailed"                      value="device=%d[val1.B0]" info= "Event on internal operation Control Endpoint request Set Address failed (Error)"/>
    <event id="0xA000 + 0x1D" level="Error"  val1="4BY"                       property="ReqGetDescriptorFailed"                   value="device=%d[val1.B0]" info= "Event on internal operation Control Endpoint request Get Descriptor failed (Error)"/>
    <event id="0xA000 + 0x1E" level="Error"  val1="4BY"                       property="ReqGetMSDescriptorFailed"                 value="device=%d[val1.B0]" info= "Event on internal operation Control Endpoint request Get Microsoft Descriptor failed (Error)"/>
    <event id="0xA000 + 0x1F" level="Error"  val1="4BY"                       property="ReqGetConfigurationFailed"                value="device=%d[val1.B0]" info= "Event on internal operation Control Endpoint request Get Configuration failed (Error)"/>
    <event id="0xA000 + 0x20" level="Error"  val1="4BY"                       property="ReqSetConfigurationFailed"                value="device=%d[val1.B0]" info= "Event on internal operation Control Endpoint request Set Configuration failed (Error)"/>
    <event id="0xA000 + 0x21" level="Error"  val1="4BY"                       property="ReqGetInterfaceFailed"                    value="device=%d[val1.B0]" info= "Event on internal operation Control Endpoint request Get Interface failed (Error)"/>
    <event id="0xA000 + 0x22" level="Error"  val1="4BY"                       property="ReqSetInterfaceFailed"                    value="device=%d[val1.B0]" info= "Event on internal operation Control Endpoint request Set Interface failed (Error)"/>
    <event id="0xA000 + 0x23" level="API"    val1="4BY"                       property="OnInitialize"                             value="n=%d[val1.B0]"                                              info= "Event on USBD_Devicen_Iinitialize user callback function start (API)"/>
    <event id="0xA000 + 0x24" level="API"    val1="4BY"                       property="OnUninitialize"                           value="n=%d[val1.B0]"                                              info= "Event on USBD_Devicen_Uninitialize user callback function start (API)"/>
    <event id="0xA000 + 0x25" level="API"    val1="4BY" val2="4BY"            property="OnVbusChanged"                            value="n=%d[val1.B0], level=%E[val2.B0, usb_bool_enum:true_false]" info= "Event on USBD_Devicen_VbusChanged user callback function start (API)"/>
    <event id="0xA000 + 0x26" level="API"    val1="4BY"                       property="OnReset"                                  value="n=%d[val1.B0]"                                              info= "Event on USBD_Devicen_Reset user callback function start (API)"/>
    <event id="0xA000 + 0x27" level="API"    val1="4BY"                       property="OnHighSpeedActivated"                     value="n=%d[val1.B0]"                                              info= "Event on USBD_Devicen_HighSpeedActivated user callback function start (API)"/>
    <event id="0xA000 + 0x28" level="API"    val1="4BY"                       property="OnSuspended"                              value="n=%d[val1.B0]"                                              info= "Event on USBD_Devicen_Suspended user callback function start (API)"/>
    <event id="0xA000 + 0x29" level="API"    val1="4BY"                       property="OnResumed"                                value="n=%d[val1.B0]"                                              info= "Event on USBD_Devicen_Resumed user callback function start (API)"/>
    <event id="0xA000 + 0x2A" level="API"    val1="4BY"                       property="OnConfigurationChanged"                   value="n=%d[val1.B0], configuration=%d[val2]"                      info= "Event on USBD_Devicen_ConfigurationChanged user callback function start (API)"/>
    <event id="0xA000 + 0x2B" level="API"    val1="4BY"                       property="OnEnableRemoteWakeup"                     value="n=%d[val1.B0]"                                              info= "Event on USBD_Devicen_EnableRemoteWakeup user callback function start (API)"/>
    <event id="0xA000 + 0x2C" level="API"    val1="4BY"                       property="OnDisableRemoteWakeup"                    value="n=%d[val1.B0]"                                              info= "Event on USBD_Devicen_DisableRemoteWakeup user callback function start (API)"/>
    <event id="0xA000 + 0x2D" level="API"    val1="4BY" val2="4BY"            property="OnSetupPacketReceived"                    value="n=%d[val1.B0], result=%E[val2.B0, usbdRequestStatus:value]"                                                                                  info= "Event on USBD_Devicen_Endpoint0_SetupPacketReceived user callback function finished (API)"/>
    <event id="0xA000 + 0x2E" level="Detail" val1="4BY" val2="4BY" val3="4BY" property="OnSetupPacketReceivedDetail"              value="n=%d[val1.B0], setup_packet=[%x[val2.B0],%x[val2.B1],%x[val2.B2],%x[val2.B3],%x[val3.B0],%x[val3.B1],%x[val3.B2],%x[val3.B3]], len=%d[val4]" info= "Event on USBD_Devicen_Endpoint0_SetupPacketReceived user callback function finished (Detail)"/>
    <event id="0xA000 + 0x2F" level="API"    val1="4BY"                       property="OnSetupPacketProcessed"                   value="n=%d[val1.B0]"                                                                                                                               info= "Event on USBD_Devicen_Endpoint0_SetupPacketProcessed user callback function finished (API)"/>
    <event id="0xA000 + 0x30" level="Detail" val1="4BY" val2="4BY" val3="4BY" property="OnSetupPacketProcessedDetail"             value="n=%d[val1.B0], setup_packet=[%x[val2.B0],%x[val2.B1],%x[val2.B2],%x[val2.B3],%x[val3.B0],%x[val3.B1],%x[val3.B2],%x[val3.B3]]"               info= "Event on USBD_Devicen_Endpoint0_SetupPacketProcessed user callback function finished (Detail)"/>
    <event id="0xA000 + 0x31" level="API"    val1="4BY"                       property="OnOutDataReceived"                        value="n=%d[val1.B0], len=%d[val2], result=%E[val1.B1, usbdRequestStatus:value]"                                                                    info= "Event on USBD_Devicen_Endpoint0_OutDataReceived user callback function finished (API)"/>
    <event id="0xA000 + 0x32" level="API"    val1="4BY"                       property="OnInDataSent"                             value="n=%d[val1.B0], len=%d[val2], result=%E[val1.B1, usbdRequestStatus:value]"                                                                    info= "Event on USBD_Devicen_Endpoint0_InDataSent user callback function finished (API)"/>

    <!-- USB Device Driver events -->
    <event id="0xA100 + 0x00" level="API"    val1="4BY"                       property="Initialize"                               value="device=%d[val1.B0]"                                          info= "Event on ARM_USBD_Initialize finished successfully (API)"/>
    <event id="0xA100 + 0x01" level="Error"  val1="4BY" val2="4BY"            property="InitializeFailed"                         value="device=%d[val1.B0], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBD_Initialize failed (Error)"/>
    <event id="0xA100 + 0x02" level="API"    val1="4BY"                       property="Uninitialize"                             value="device=%d[val1.B0]"                                          info= "Event on ARM_USBD_Uninitialize finished successfully (API)"/>
    <event id="0xA100 + 0x03" level="Error"  val1="4BY" val2="4BY"            property="UninitializeFailed"                       value="device=%d[val1.B0], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBD_Uninitialize failed (Error)"/>
    <event id="0xA100 + 0x04" level="API"    val1="4BY"                       property="PowerControl"                             value="device=%d[val1.B0], state=%E[val1.B1, usbDriver_PowCtrl_enum:value]"                                          info= "Event on ARM_USBD_PowerControl finished successfully (API)"/>
    <event id="0xA100 + 0x05" level="Error"  val1="4BY" val2="4BY"            property="PowerControlFailed"                       value="device=%d[val1.B0], state=%E[val1.B1, usbDriver_PowCtrl_enum:value], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBD_PowerControl failed (Error)"/>
    <event id="0xA100 + 0x06" level="API"    val1="4BY"                       property="DeviceConnect"                            value="device=%d[val1.B0]"                                          info= "Event on ARM_USBD_DeviceConnect finished successfully (API)"/>
    <event id="0xA100 + 0x07" level="Error"  val1="4BY" val2="4BY"            property="DeviceConnectFailed"                      value="device=%d[val1.B0], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBD_DeviceConnect failed (Error)"/>
    <event id="0xA100 + 0x08" level="API"    val1="4BY"                       property="DeviceDisconnect"                         value="device=%d[val1.B0]"                                          info= "Event on ARM_USBD_DeviceDisconnect finished successfully (API)"/>
    <event id="0xA100 + 0x09" level="Error"  val1="4BY" val2="4BY"            property="DeviceDisconnectFailed"                   value="device=%d[val1.B0], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBD_DeviceDisconnect failed (Error)"/>
    <event id="0xA100 + 0x0A" level="API"    val1="4BY"                       property="DeviceGetState"                           value="device=%d[val1.B0], state.VBUS = %E[val2 &amp; 1, usb_bool_enum:on_off], state.speed = %E[(val2 &gt;&gt; 1) &amp; 3, usbDriver_speed_enum:speed], state.active = %E[(val2 &gt;&gt; 3) &amp; 1, usb_bool_enum:true_false]" info= "Event on ARM_USBD_DeviceGetState finished (API)"/>
    <event id="0xA100 + 0x0B" level="API"    val1="4BY"                       property="DeviceRemoteWakeup"                       value="device=%d[val1.B0]"                                          info= "Event on ARM_USBD_DeviceRemoteWakeup finished successfully (API)"/>
    <event id="0xA100 + 0x0C" level="Error"  val1="4BY" val2="4BY"            property="DeviceRemoteWakeupFailed"                 value="device=%d[val1.B0], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBD_DeviceRemoteWakeup failed (Error)"/>
    <event id="0xA100 + 0x0D" level="API"    val1="4BY"                       property="DeviceSetAddress"                         value="device=%d[val1.B0], dev_addr=%x[val1.B1]"                                          info= "Event on ARM_USBD_DeviceSetAddress finished successfully (API)"/>
    <event id="0xA100 + 0x0E" level="Error"  val1="4BY" val2="4BY"            property="DeviceSetAddressFailed"                   value="device=%d[val1.B0], dev_addr=%x[val1.B1], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBD_DeviceSetAddress failed (Error)"/>
    <event id="0xA100 + 0x0F" level="API"    val1="4BY" val2="4BY" val3="4BY" property="ReadSetupPacket"                          value="device=%d[val1.B0], setup_packet=[%x[val2.B0],%x[val2.B1],%x[val2.B2],%x[val2.B3],%x[val3.B0],%x[val3.B1],%x[val3.B2],%x[val3.B3]]" info= "Event on ARM_USBD_ReadSetupPacket finished successfully (API)"/>
    <event id="0xA100 + 0x10" level="Error"  val1="4BY" val2="4BY"            property="ReadSetupPacketFailed"                    value="device=%d[val1.B0], error=%E[val2.B0, usbDriver_enum:value]"                                                                        info= "Event on ARM_USBD_ReadSetupPacket failed (Error)"/>
    <event id="0xA100 + 0x11" level="API"    val1="4BY"                       property="EndpointConfigure"                        value="device=%d[val1.B0], ep_addr=%x[val1.B1], ep_type=%E[val1.B2, usbEpType_enum:value], ep_max_packet_size=%d[val2]"                                          info= "Event on ARM_USBD_EndpointConfigure finished successfully (API)"/>
    <event id="0xA100 + 0x12" level="Error"  val1="4BY"                       property="EndpointConfigureFailed"                  value="device=%d[val1.B0], ep_addr=%x[val1.B1], ep_type=%E[val1.B2, usbEpType_enum:value], ep_max_packet_size=%d[val2], error=%E[val1.B3, usbDriver_enum:value]" info= "Event on ARM_USBD_EndpointConfigure failed (Error)"/>
    <event id="0xA100 + 0x13" level="API"    val1="4BY"                       property="EndpointUnconfigure"                      value="device=%d[val1.B0], ep_addr=%x[val1.B1]"                                          info= "Event on ARM_USBD_EndpointUnconfigure finished successfully (API)"/>
    <event id="0xA100 + 0x14" level="Error"  val1="4BY" val2="4BY"            property="EndpointUnconfigureFailed"                value="device=%d[val1.B0], ep_addr=%x[val1.B1], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBD_EndpointUnconfigure failed (Error)"/>
    <event id="0xA100 + 0x15" level="API"    val1="4BY" val2="4BY"            property="EndpointStall"                            value="device=%d[val1.B0], ep_addr=%x[val1.B1], stall=%d[val1.B2]"                                          info= "Event on ARM_USBD_EndpointStall finished successfully (API)"/>
    <event id="0xA100 + 0x16" level="Error"  val1="4BY" val2="4BY"            property="EndpointStallFailed"                      value="device=%d[val1.B0], ep_addr=%x[val1.B1], stall=%d[val1.B2], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBD_EndpointStall failed (Error)"/>
    <event id="0xA100 + 0x17" level="API"    val1="4BY"                       property="EndpointTransfer"                         value="device=%d[val1.B0], ep_addr=%x[val1.B1], data=%x[val2], num=%d[val3]"             info= "Event on ARM_USBD_EndpointTransfer finished successfully (API)"/>
    <event id="0xA100 + 0x18" level="Error"  val1="4BY" val2="4BY"            property="EndpointTransferFailed"                   value="device=%d[val1.B0], ep_addr=%x[val1.B1], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBD_EndpointTransfer failed (Error)"/>
    <event id="0xA100 + 0x19" level="API"    val1="4BY"                       property="EndpointTransferGetResult"                value="device=%d[val1.B0], ep_addr=%x[val1.B1], num=%d[val2]"                            info= "Event on ARM_USBD_EndpointTransferGetResult finished (API)"/>
    <event id="0xA100 + 0x1A" level="API"    val1="4BY"                       property="EndpointTransferAbort"                    value="device=%d[val1.B0], ep_addr=%x[val1.B1]"                                          info= "Event on ARM_USBD_EndpointTransferAbort finished successfully (API)"/>
    <event id="0xA100 + 0x1B" level="Error"  val1="4BY" val2="4BY"            property="EndpointTransferAbortFailed"              value="device=%d[val1.B0], ep_addr=%x[val1.B1], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBD_EndpointTransferAbort failed (Error)"/>
    <event id="0xA100 + 0x1C" level="API"    val1="4BY"                       property="GetFrameNumber"                           value="device=%d[val1.B0], frame_number=%d[val2]"                                        info= "Event on ARM_USBD_GetFrameNumber finished (API)"/>
    <event id="0xA100 + 0x1D" level="API"    val1="4BY" val2="4BY"            property="OnSignalDeviceEvent"                      value="device=%d[val1.B0], event=%E[val2.B0, usbdDriver_SigDevEvt_enum:value]"                     info= "Event on ARM_USBD_SignalDeviceEvent callback start (API)"/>
    <event id="0xA100 + 0x1E" level="API"    val1="4BY" val2="4BY"            property="OnSignalEndpointEvent"                    value="device=%d[val1.B0], ep_addr=%x[val1.B1], event=%E[val2.B0, usbdDriver_SigEpEvt_enum:value]" info= "Event on ARM_USBD_SignalEndpointEvent callback start (API)"/>

    <!-- USB Device Custom Class events -->
    <event id="0xA200 + 0x00" level="API"    val1="4BY"                       property="CC_OnInitialize"                          value="n=%d[val1.B0]" info= "Event on USBD_CustomClassn_Initialize user callback function start (API)"/>
    <event id="0xA200 + 0x01" level="API"    val1="4BY"                       property="CC_OnUninitialize"                        value="n=%d[val1.B0]" info= "Event on USBD_CustomClassn_Uninitialize user callback function start (API)"/>
    <event id="0xA200 + 0x02" level="API"    val1="4BY"                       property="CC_OnReset"                               value="n=%d[val1.B0]" info= "Event on USBD_CustomClassn_Reset user callback function start (API)"/>
    <event id="0xA200 + 0x03" level="API"    val1="4BY" val2="4BY"            property="CC_OnEndpointStart"                       value="n=%d[val1.B0], ep_addr=%x[val2.B0]" info= "Event on USBD_CustomClassn_EndpointStart user callback function start (API)"/>
    <event id="0xA200 + 0x04" level="API"    val1="4BY" val2="4BY"            property="CC_OnEndpointStop"                        value="n=%d[val1.B0], ep_addr=%x[val2.B0]" info= "Event on USBD_CustomClassn_EndpointStop user callback function start (API)"/>
    <event id="0xA200 + 0x05" level="API"    val1="4BY" val2="4BY"            property="CC_OnEndpoint0SetupPacketReceived"        value="n=%d[val1.B0], result=%E[val2.B0, usbdRequestStatus:value]"                                                                                  info= "Event on USBD_CustomClassn_Endpoint0_SetupPacketReceived user callback function finished (API)"/>
    <event id="0xA200 + 0x06" level="Detail" val1="4BY" val2="4BY" val3="4BY" property="CC_OnEndpoint0SetupPacketReceivedDetail"  value="n=%d[val1.B0], setup_packet=[%x[val2.B0],%x[val2.B1],%x[val2.B2],%x[val2.B3],%x[val3.B0],%x[val3.B1],%x[val3.B2],%x[val3.B3]], len=%d[val4]" info= "Event on USBD_CustomClassn_Endpoint0_SetupPacketReceived user callback function start (Detail)"/>
    <event id="0xA200 + 0x07" level="API"    val1="4BY"                       property="CC_OnEndpoint0SetupPacketProcessed"       value="n=%d[val1.B0]"                                                                                                                               info= "Event on USBD_CustomClassn_Endpoint0_SetupPacketProcessed user callback function finished (API)"/>
    <event id="0xA200 + 0x08" level="Detail" val1="4BY" val2="4BY" val3="4BY" property="CC_OnEndpoint0SetupPacketProcessedDetail" value="n=%d[val1.B0], setup_packet=[%x[val2.B0],%x[val2.B1],%x[val2.B2],%x[val2.B3],%x[val3.B0],%x[val3.B1],%x[val3.B2],%x[val3.B3]]"               info= "Event on USBD_CustomClassn_Endpoint0_SetupPacketProcessed user callback function start (Detail)"/>
    <event id="0xA200 + 0x09" level="API"    val1="4BY"                       property="CC_OnEndpoint0OutDataReceived"            value="n=%d[val1.B0], len=%d[val2], result=%E[val1.B1, usbdRequestStatus:value]" info= "Event on USBD_CustomClassn_Endpoint0_OutDataReceived user callback function finished (API)"/>
    <event id="0xA200 + 0x0A" level="API"    val1="4BY"                       property="CC_OnEndpoint0InDataSent"                 value="n=%d[val1.B0], len=%d[val2], result=%E[val1.B1, usbdRequestStatus:value]" info= "Event on USBD_CustomClassn_Endpoint0_InDataSent user callback function finished (API)"/>
    <event id="0xA200 + 0x0B" level="API"    val1="4BY"                       property="CC_OnEndpointmEvent"                      value="n=%d[val1.B0], ep_num=%d[val1.B1], event=%E[val2, usbdDriver_SigEpEvt_enum:value]" info= "Event on USBD_CustomClassn_Endpoint%d[val1.B1]_Event user callback function start (API)"/>

    <!-- USB Device ADC events -->
    <event id="0xA300 + 0x00" level="Op"     val1="4BY"                       property="Initialize"                               value="instance=%d[val1.B0]"                                          info= "Event on internal library operation ADC initialize start (Operation)"/>
    <event id="0xA300 + 0x01" level="Error"  val1="4BY" val2="4BY"            property="InitializeFailed"                         value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal library operation ADC initialize failed (Error)"/>
    <event id="0xA300 + 0x02" level="Op"     val1="4BY"                       property="Uninitialize"                             value="instance=%d[val1.B0]"                                          info= "Event on internal library operation ADC uninitialize start (Operation)"/>
    <event id="0xA300 + 0x03" level="Error"  val1="4BY" val2="4BY"            property="UninitializeFailed"                       value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal library operation ADC uninitialize failed (Error)"/>
    <event id="0xA300 + 0x04" level="Op"     val1="4BY"                       property="Reset"                                    value="instance=%d[val1.B0]"                                          info= "Event on internal library operation ADC reset start (Operation)"/>
    <event id="0xA300 + 0x05" level="Error"  val1="4BY" val2="4BY"            property="ResetFailed"                              value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal library operation ADC reset failed (Error)"/>
    <event id="0xA300 + 0x06" level="API"    val1="4BY"                       property="OnInitialize"                             value="n=%d[val1.B0]" info= "Event on USBD_ADCn_Initialize user callback function start (API)"/>
    <event id="0xA300 + 0x07" level="API"    val1="4BY"                       property="OnUninitialize"                           value="n=%d[val1.B0]" info= "Event on USBD_ADCn_Uninitialize user callback function start (API)"/>
    <event id="0xA300 + 0x08" level="API"    val1="4BY"                       property="OnPlayStart"                              value="n=%d[val1.B0]" info= "Event on USBD_ADCn_PlayStart user callback function start (API)"/>
    <event id="0xA300 + 0x09" level="API"    val1="4BY"                       property="OnPlayStop"                               value="n=%d[val1.B0]" info= "Event on USBD_ADCn_PlayStop user callback function start (API)"/>
    <event id="0xA300 + 0x0A" level="API"    val1="4BY"                       property="OnSetSpeakerMute"                         value="n=%d[val1.B0], ch=%d[val1.B1], on=%E[val2 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_ADCn_SetSpeakerMute user callback function start (API)"/>
    <event id="0xA300 + 0x0B" level="API"    val1="4BY"                       property="OnSetSpeakerVolume"                       value="n=%d[val1.B0], ch=%d[val1.B1], vol=%d[val2]"                                  info= "Event on USBD_ADCn_SetSpeakerVolume user callback function start (API)"/>
    <event id="0xA300 + 0x0C" level="API"    val1="4BY"                       property="OnRecordStart"                            value="n=%d[val1.B0]" info= "Event on USBD_ADCn_RecordStart user callback function start (API)"/>
    <event id="0xA300 + 0x0D" level="API"    val1="4BY"                       property="OnRecordStop"                             value="n=%d[val1.B0]" info= "Event on USBD_ADCn_RecordStop user callback function start (API)"/>
    <event id="0xA300 + 0x0E" level="API"    val1="4BY"                       property="OnSetMicrophoneMute"                      value="n=%d[val1.B0], ch=%d[val1.B1], on=%E[val2 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_ADCn_SetMicrophoneMute user callback function start (API)"/>
    <event id="0xA300 + 0x0F" level="API"    val1="4BY"                       property="OnSetMicrophoneVolume"                    value="n=%d[val1.B0], ch=%d[val1.B1], vol=%d[val2]"                                  info= "Event on USBD_ADCn_SetMicrophoneVolume user callback function start (API)"/>
    <event id="0xA300 + 0x10" level="API"    val1="4BY"                       property="OnReceivedSamples"                        value="n=%d[val1.B0]" info= "Event on USBD_ADCn_ReceivedSamples user callback function start (API)"/>
    <event id="0xA300 + 0x11" level="API"    val1="4BY"                       property="SetSpeakerVolumeRange"                    value="instance=%d[val1.B0], ch=%d[val1.B1], min=%d[val2 &amp; 0xFFFF], max=%d[(val2 &gt;&gt; 16) &amp; 0xFFFF], res=%d[val3 &amp; 0xFFFF], cur=%d[(val3  &gt;&gt; 16) &amp; 0xFFFF]"                                          info= "Event on USBD_ADC_SetSpeakerVolumeRange finished successfully (API)"/>
    <event id="0xA300 + 0x12" level="Error"  val1="4BY" val4="4BY"            property="SetSpeakerVolumeRangeFailed"              value="instance=%d[val1.B0], ch=%d[val1.B1], min=%d[val2 &amp; 0xFFFF], max=%d[(val2 &gt;&gt; 16) &amp; 0xFFFF], res=%d[val3 &amp; 0xFFFF], cur=%d[(val3  &gt;&gt; 16) &amp; 0xFFFF], error=%E[val4.B0, usbStatus_enum:value]" info= "Event on USBD_ADC_SetSpeakerVolumeRange failed (Error)"/>
    <event id="0xA300 + 0x13" level="API"    val1="4BY"                       property="SetMicrophoneVolumeRange"                 value="instance=%d[val1.B0], ch=%d[val1.B1], min=%d[val2 &amp; 0xFFFF], max=%d[(val2 &gt;&gt; 16) &amp; 0xFFFF], res=%d[val3 &amp; 0xFFFF], cur=%d[(val3  &gt;&gt; 16) &amp; 0xFFFF]"                                          info= "Event on USBD_ADC_SetMicrophoneVolumeRange finished successfully (API)"/>
    <event id="0xA300 + 0x14" level="Error"  val1="4BY" val4="4BY"            property="SetMicrophoneVolumeRangeFailed"           value="instance=%d[val1.B0], ch=%d[val1.B1], min=%d[val2 &amp; 0xFFFF], max=%d[(val2 &gt;&gt; 16) &amp; 0xFFFF], res=%d[val3 &amp; 0xFFFF], cur=%d[(val3  &gt;&gt; 16) &amp; 0xFFFF], error=%E[val4.B0, usbStatus_enum:value]" info= "Event on USBD_ADC_SetMicrophoneVolumeRange failed (Error)"/>
    <event id="0xA300 + 0x15" level="API"    val1="4BY"                       property="ReceivedSamplesAvailable"                 value="instance=%d[val1.B0], result=%d[val2]" info= "Event on USBD_ADC_ReceivedSamplesAvailable finished (API)"/>
    <event id="0xA300 + 0x16" level="API"    val1="4BY"                       property="WrittenSamplesPending"                    value="instance=%d[val1.B0], result=%d[val2]" info= "Event on USBD_ADC_WrittenSamplesPending finished (API)"/>
    <event id="0xA300 + 0x17" level="API"    val1="4BY"                       property="ReadSamples"                              value="instance=%d[val1.B0], result=%d[val2]"                         info= "Event on USBD_ADC_ReadSamples finished successfully (API)"/>
    <event id="0xA300 + 0x18" level="Error"  val1="4BY" val2="4BY"            property="ReadSamplesFailed"                        value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_ADC_ReadSamples failed (Error)"/>
    <event id="0xA300 + 0x19" level="API"    val1="4BY"                       property="WriteSamples"                             value="instance=%d[val1.B0], result=%d[val2]"                         info= "Event on USBD_ADC_WriteSamples finished successfully (API)"/>
    <event id="0xA300 + 0x1A" level="Error"  val1="4BY" val2="4BY"            property="WriteSamplesFailed"                       value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_ADC_WriteSamples failed (Error)"/>

    <!-- USB Device CDC events -->
    <event id="0xA400 + 0x00" level="Op"     val1="4BY"                       property="Initialize"                               value="instance=%d[val1.B0]"                                          info= "Event on internal library operation CDC initialize start (Operation)"/>
    <event id="0xA400 + 0x01" level="Error"  val1="4BY" val2="4BY"            property="InitializeFailed"                         value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal library operation CDC initialize failed (Error)"/>
    <event id="0xA400 + 0x02" level="Op"     val1="4BY"                       property="Uninitialize"                             value="instance=%d[val1.B0]"                                          info= "Event on internal library operation CDC uninitialize start (Operation)"/>
    <event id="0xA400 + 0x03" level="Error"  val1="4BY" val2="4BY"            property="UninitializeFailed"                       value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal library operation CDC uninitialize failed (Error)"/>
    <event id="0xA400 + 0x04" level="Op"     val1="4BY"                       property="Reset"                                    value="instance=%d[val1.B0]"                                          info= "Event on internal library operation CDC reset start (Operation)"/>
    <event id="0xA400 + 0x05" level="Error"  val1="4BY" val2="4BY"            property="ResetFailed"                              value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal library operation CDC reset failed (Error)"/>
    <event id="0xA400 + 0x06" level="API"    val1="4BY"                       property="ACM_OnInitialize"                         value="n=%d[val1.B0]" info= "Event on USBD_CDCn_ACM_Initialize user callback function start (API)"/>
    <event id="0xA400 + 0x07" level="API"    val1="4BY"                       property="ACM_OnUninitialize"                       value="n=%d[val1.B0]" info= "Event on USBD_CDCn_ACM_Uninitialize user callback function start (API)"/>
    <event id="0xA400 + 0x08" level="API"    val1="4BY"                       property="ACM_OnReset"                              value="n=%d[val1.B0]" info= "Event on USBD_CDCn_ACM_Reset user callback function start (API)"/>
    <event id="0xA400 + 0x51" level="API"    val1="4BY"                       property="ACM_OnSendEncapsulatedCommand"            value="n=%d[val1.B0], buf=%d[val2], len=%d[val1.DB1], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]"                   info= "Event on USBD_CDCn_ACM_SendEncapsulatedCommand user callback function finished (API)"/>
    <event id="0xA400 + 0x52" level="API"    val1="4BY"                       property="ACM_OnGetEncapsulatedResponse"            value="n=%d[val1.B0], max_len=%d[val3], buf=%d[val2], len=%d[val1.DB1], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_ACM_GetEncapsulatedResponse user callback function finished (API)"/>
    <event id="0xA400 + 0x09" level="API"    val1="4BY"                       property="ACM_OnSetLineCoding"                      value="n=%d[val1.B0], rate=%d[val2], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]"  info= "Event on USBD_CDCn_ACM_SetLineCoding user callback function finished (API)"/>
    <event id="0xA400 + 0x0A" level="API"    val1="4BY"                       property="ACM_OnGetLineCoding"                      value="n=%d[val1.B0], rate=%d[val2], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]"  info= "Event on USBD_CDCn_ACM_GetLineCoding user callback function finished (API)"/>
    <event id="0xA400 + 0x0B" level="API"    val1="4BY"                       property="ACM_OnSetControlLineState"                value="n=%d[val1.B0], dtr=%d[val1.B1], rts=%d[val1.B2], result=%E[val2 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_ACM_SetControlLineState user callback function finished (API)"/>
    <event id="0xA400 + 0x0C" level="API"    val1="4BY"                       property="ACM_ReadData"                             value="instance=%d[val1.B0], len=%d[val2], result=%d[val3]"                         info= "Event on USBD_CDC_ACM_ReadData finished successfully (API)"/>
    <event id="0xA400 + 0x0D" level="Error"  val1="4BY" val3="4BY"            property="ACM_ReadDataFailed"                       value="instance=%d[val1.B0], len=%d[val2], error=%E[val3.B0, usbStatus_enum:value]" info= "Event on USBD_CDC_ACM_ReadData failed (Error)"/>
    <event id="0xA400 + 0x0E" level="API"    val1="4BY"                       property="ACM_WriteData"                            value="instance=%d[val1.B0], len=%d[val2], result=%d[val3]"                         info= "Event on USBD_CDC_ACM_WriteData finished successfully (API)"/>
    <event id="0xA400 + 0x0F" level="Error"  val1="4BY" val3="4BY"            property="ACM_WriteDataFailed"                      value="instance=%d[val1.B0], len=%d[val2], error=%E[val3.B0, usbStatus_enum:value]" info= "Event on USBD_CDC_ACM_WriteData failed (Error)"/>
    <event id="0xA400 + 0x10" level="API"    val1="4BY"                       property="ACM_GetChar"                              value="instance=%d[val1.B0], result=%d[val2]" info= "Event on USBD_CDC_ACM_GetChar finished (API)"/>
    <event id="0xA400 + 0x11" level="API"    val1="4BY"                       property="ACM_PutChar"                              value="instance=%d[val1.B0], result=%d[val2]" info= "Event on USBD_CDC_ACM_PutChar finished (API)"/>
    <event id="0xA400 + 0x12" level="API"    val1="4BY"                       property="ACM_DataAvailable"                        value="instance=%d[val1.B0], result=%d[val2]"                      info= "Event on USBD_CDC_ACM_DataAvailable finished successfully (API)"/>
    <event id="0xA400 + 0x13" level="Error"  val1="4BY" val2="4BY"            property="ACM_DataAvailableFailed"                  value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_CDC_ACM_DataAvailable failed (Error)"/>
    <event id="0xA400 + 0x14" level="API"    val1="4BY"                       property="ACM_Notify_SerialState"                   value="instance=%d[val1.B0], state=%x[val2]"                                          info= "Event on USBD_CDC_ACM_Notify_SerialState finished successfully (API)"/>
    <event id="0xA400 + 0x15" level="Error"  val1="4BY"                       property="ACM_Notify_SerialStateFailed"             value="instance=%d[val1.B0], state=%x[val2], error=%E[val1.B3, usbStatus_enum:value]" info= "Event on USBD_CDC_ACM_Notify_SerialState failed (Error)"/>
    <event id="0xA400 + 0x16" level="API"    val1="4BY"                       property="NCM_OnInitialize"                         value="n=%d[val1.B0]" info= "Event on USBD_CDCn_NCM_Initialize user callback function start (API)"/>
    <event id="0xA400 + 0x17" level="API"    val1="4BY"                       property="NCM_OnUninitialize"                       value="n=%d[val1.B0]" info= "Event on USBD_CDCn_NCM_Uninitialize user callback function start (API)"/>
    <event id="0xA400 + 0x18" level="API"    val1="4BY"                       property="NCM_OnReset"                              value="n=%d[val1.B0]" info= "Event on USBD_CDCn_NCM_Reset user callback function start (API)"/>
    <event id="0xA400 + 0x19" level="API"    val1="4BY"                       property="NCM_OnStart"                              value="n=%d[val1.B0]" info= "Event on USBD_CDCn_NCM_Start user callback function start (API)"/>
    <event id="0xA400 + 0x1A" level="API"    val1="4BY"                       property="NCM_OnStop"                               value="n=%d[val1.B0]" info= "Event on USBD_CDCn_NCM_Stop user callback function start (API)"/>
    <event id="0xA400 + 0x1B" level="API"    val1="4BY"                       property="NCM_OnSetEthMulticastFilters"             value="n=%d[val1.B0], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_SetEthMulticastFilters user callback function finished (API)"/>
    <event id="0xA400 + 0x1C" level="API"    val1="4BY"                       property="NCM_OnSetEthPowerMgmtPatFilter"           value="n=%d[val1.B0], filter_number=%d[val2], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_SetEthernetPowerManagementPatternFilter user callback function finished (API)"/>
    <event id="0xA400 + 0x1D" level="API"    val1="4BY"                       property="NCM_OnGetEthPowerMgmtPatFilter"           value="n=%d[val1.B0], filter_number=%d[val2], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_GetEthernetPowerManagementPatternFilter user callback function finished (API)"/>
    <event id="0xA400 + 0x1E" level="API"    val1="4BY"                       property="NCM_OnSetEthernetPacketFilter"            value="n=%d[val1.B0], packet_filter_bitmap=%d[val2], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_SetEthernetPacketFilter user callback function finished (API)"/>
    <event id="0xA400 + 0x1F" level="API"    val1="4BY"                       property="NCM_OnGetEthernetStatistic"               value="n=%d[val1.B0], feature_selector=%d[val2], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_GetEthernetStatistic user callback function finished (API)"/>
    <event id="0xA400 + 0x20" level="API"    val1="4BY"                       property="NCM_OnGetNtbParameters"                   value="n=%d[val1.B0], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_GetNtbParameters user callback function finished (API)"/>
    <event id="0xA400 + 0x21" level="API"    val1="4BY"                       property="NCM_OnGetNetAddress"                      value="n=%d[val1.B0], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_GetNetAddress user callback function finished (API)"/>
    <event id="0xA400 + 0x22" level="API"    val1="4BY"                       property="NCM_OnSetNetAddress"                      value="n=%d[val1.B0], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_SetNetAddress user callback function finished (API)"/>
    <event id="0xA400 + 0x23" level="API"    val1="4BY"                       property="NCM_OnGetNtbFormat"                       value="n=%d[val1.B0], ntb_format=%d[val2], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_GetNtbFormat user callback function finished (API)"/>
    <event id="0xA400 + 0x24" level="API"    val1="4BY"                       property="NCM_OnSetNtbFormat"                       value="n=%d[val1.B0], ntb_format=%d[val2], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_SetNtbFormat user callback function finished (API)"/>
    <event id="0xA400 + 0x25" level="API"    val1="4BY"                       property="NCM_OnGetNtbInputSize"                    value="n=%d[val1.B0], ntb_input_size=%d[val2], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_GetNtbInputSize user callback function finished (API)"/>
    <event id="0xA400 + 0x26" level="API"    val1="4BY"                       property="NCM_OnSetNtbInputSize"                    value="n=%d[val1.B0], ntb_input_size=%d[val2], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_SetNtbInputSize user callback function finished (API)"/>
    <event id="0xA400 + 0x27" level="API"    val1="4BY"                       property="NCM_OnGetMaxDatagramSize"                 value="n=%d[val1.B0], max_datagram_size=%d[val2], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_GetMaxDatagramSize user callback function finished (API)"/>
    <event id="0xA400 + 0x28" level="API"    val1="4BY"                       property="NCM_OnSetMaxDatagramSize"                 value="n=%d[val1.B0], max_datagram_size=%d[val2], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_SetMaxDatagramSize user callback function finished (API)"/>
    <event id="0xA400 + 0x29" level="API"    val1="4BY"                       property="NCM_OnGetCrcMode"                         value="n=%d[val1.B0], crc_mode=%d[val2], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_GetCrcMode user callback function finished (API)"/>
    <event id="0xA400 + 0x2A" level="API"    val1="4BY"                       property="NCM_OnSetCrcMode"                         value="n=%d[val1.B0], crc_mode=%d[val2], result=%E[val1.B1 &amp; 1, usb_bool_enum:true_false]" info= "Event on USBD_CDCn_NCM_SetCrcMode user callback function finished (API)"/>
    <event id="0xA400 + 0x2B" level="API"    val1="4BY"                       property="NCM_OnNTB_IN_Sent"                        value="n=%d[val1.B0]" info= "Event on USBD_CDCn_NCM_NTB_IN_Sent user callback function finished (API)"/>
    <event id="0xA400 + 0x2C" level="API"    val1="4BY"                       property="NCM_OnNTB_OUT_Received"                   value="n=%d[val1.B0]" info= "Event on USBD_CDCn_NCM_NTB_OUT_Received user callback function finished (API)"/>
    <event id="0xA400 + 0x2D" level="API"    val1="4BY"                       property="NCM_NTB_IN_Initialize"                    value="instance=%d[val1.B0]"                                          info= "Event on USBD_CDC_NCM_NTB_IN_Initialize finished successfully (API)"/>
    <event id="0xA400 + 0x2E" level="Error"  val1="4BY" val2="4BY"            property="NCM_NTB_IN_InitializeFailed"              value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_CDC_NCM_NTB_IN_Initialize failed (Error)"/>
    <event id="0xA400 + 0x2F" level="API"    val1="4BY"                       property="NCM_NTB_IN_CreateNDP"                     value="instance=%d[val1.B0], num_datagrams=%d[val1.B1]"                                          info= "Event on USBD_CDC_NCM_NTB_IN_CreateNDP finished successfully (API)"/>
    <event id="0xA400 + 0x30" level="Error"  val1="4BY" val2="4BY"            property="NCM_NTB_IN_CreateNDPFailed"               value="instance=%d[val1.B0], num_datagrams=%d[val1.B1], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_CDC_NCM_NTB_IN_CreateNDP failed (Error)"/>
    <event id="0xA400 + 0x31" level="API"    val1="4BY"                       property="NCM_NTB_IN_WriteDatagram"                 value="instance=%d[val1.B0], len=%d[val2]"                                          info= "Event on USBD_CDC_NCM_IN_WriteDatagram finished successfully (API)"/>
    <event id="0xA400 + 0x32" level="Error"  val1="4BY"                       property="NCM_NTB_IN_WriteDatagramFailed"           value="instance=%d[val1.B0], len=%d[val2], error=%E[val1.B3, usbStatus_enum:value]" info= "Event on USBD_CDC_NCM_IN_WriteDatagram failed (Error)"/>
    <event id="0xA400 + 0x33" level="API"    val1="4BY"                       property="NCM_NTB_IN_Send"                          value="instance=%d[val1.B0]"                                          info= "Event on USBD_CDC_NCM_IN_Send finished successfully (API)"/>
    <event id="0xA400 + 0x34" level="Error"  val1="4BY" val2="4BY"            property="NCM_NTB_IN_SendFailed"                    value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_CDC_NCM_IN_Send failed (Error)"/>
    <event id="0xA400 + 0x35" level="API"    val1="4BY"                       property="NCM_NTB_IN_IsSent"                        value="instance=%d[val1.B0], result=%E[val2 &amp; 1, usb_bool_enum:true_false]"    info= "Event on USBD_CDC_NCM_IN_IsSent finished (API)"/>
    <event id="0xA400 + 0x36" level="Error"  val1="4BY" val2="4BY"            property="NCM_NTB_IN_IsSentFailed"                  value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]"              info= "Event on USBD_CDC_NCM_IN_IsSent failed (Error)"/>
    <event id="0xA400 + 0x37" level="API"    val1="4BY"                       property="NCM_NTB_OUT_IsReceived"                   value="instance=%d[val1.B0], result=%E[val2 &amp; 1, usb_bool_enum:true_false]"    info= "Event on USBD_CDC_NCM_IN_IsReceived finished successfully (API)"/>
    <event id="0xA400 + 0x38" level="Error"  val1="4BY" val2="4BY"            property="NCM_NTB_OUT_IsReceivedFailed"             value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]"              info= "Event on USBD_CDC_NCM_IN_IsReceived failed (Error)"/>
    <event id="0xA400 + 0x39" level="API"    val1="4BY"                       property="NCM_NTB_OUT_Release"                      value="instance=%d[val1.B0]"                                          info= "Event on USBD_CDC_NCM_IN_Release finished successfully (API)"/>
    <event id="0xA400 + 0x3A" level="Error"  val1="4BY" val2="4BY"            property="NCM_NTB_OUT_ReleaseFailed"                value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_CDC_NCM_IN_Release failed (Error)"/>
    <event id="0xA400 + 0x3B" level="API"    val1="4BY"                       property="NCM_NTB_OUT_ProcessNDP"                   value="instance=%d[val1.B0]"                                          info= "Event on USBD_CDC_NCM_IN_ProcessNDP finished successfully (API)"/>
    <event id="0xA400 + 0x3C" level="Error"  val1="4BY" val2="4BY"            property="NCM_NTB_OUT_ProcessNDPFailed"             value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBD_CDC_NCM_IN_ProcessNDP failed (Error)"/>
    <event id="0xA400 + 0x3D" level="API"    val1="4BY"                       property="NCM_NTB_OUT_GetDatagramSize"              value="instance=%d[val1.B0], result=%d[val2]"                   info= "Event on USBD_CDC_NCM_OUT_GetDatagramSize finished (API)"/>
    <event id="0xA400 + 0x3E" level="API"    val1="4BY"                       property="NCM_NTB_OUT_ReadDatagram"                 value="instance=%d[val1.B0], max_len=%d[val2], result=%d[val3]"                         info= "Event on USBD_CDC_NCM_OUT_ReadDatagram finished successfully (API)"/>
    <event id="0xA400 + 0x3F" level="Error"  val1="4BY"                       property="NCM_NTB_OUT_ReadDatagramFailed"           value="instance=%d[val1.B0], max_len=%d[val2], error=%E[val1.B3, usbStatus_enum:value]" info= "Event on USBD_CDC_NCM_OUT_ReadDatagram failed (Error)"/>
    <event id="0xA400 + 0x40" level="API"    val1="4BY"                       property="NCM_NTB_IN_RawSend"                       value="instance=%d[val1.B0], len=%d[val2]"                                          info= "Event on USBD_CDC_NCM_IN_RawSend finished successfully (API)"/>
    <event id="0xA400 + 0x41" level="Error"  val1="4BY"                       property="NCM_NTB_IN_RawSendFailed"                 value="instance=%d[val1.B0], len=%d[val2], error=%E[val1.B3, usbStatus_enum:value]" info= "Event on USBD_CDC_NCM_IN_RawSend failed (Error)"/>
    <event id="0xA400 + 0x42" level="API"    val1="4BY"                       property="NCM_NTB_OUT_RawGetSize"                   value="instance=%d[val1.B0], result=%d[val2]" info= "Event on USBD_CDC_NCM_IN_RawGetSize finished (API)"/>
    <event id="0xA400 + 0x43" level="API"    val1="4BY"                       property="NCM_NTB_OUT_RawReceive"                   value="instance=%d[val1.B0], max_len=%d[val2]"                                          info= "Event on USBD_CDC_NCM_IN_RawReceive finished successfully (API)"/>
    <event id="0xA400 + 0x44" level="Error"  val1="4BY"                       property="NCM_NTB_OUT_RawReceiveFailed"             value="instance=%d[val1.B0], max_len=%d[val2], error=%E[val1.B3, usbStatus_enum:value]" info= "Event on USBD_CDC_NCM_IN_RawReceive failed (Error)"/>
    <event id="0xA400 + 0x45" level="API"    val1="4BY"                       property="NCM_Notify_NetworkConnection"             value="instance=%d[val1.B0], status=%d[val2]"                                          info= "Event on USBD_CDC_NCM_Notify_NetworkConnection finished successfully (API)"/>
    <event id="0xA400 + 0x46" level="Error"  val1="4BY"                       property="NCM_Notify_NetworkConnectionFailed"       value="instance=%d[val1.B0], status=%d[val2], error=%E[val1.B3, usbStatus_enum:value]" info= "Event on USBD_CDC_NCM_Notify_NetworkConnection failed (Error)"/>
    <event id="0xA400 + 0x47" level="API"    val1="4BY"                       property="NCM_Notify_ConnectionSpeedChange"         value="instance=%d[val1.B0], us_bitrate=%d[val2], ds_bitrate=%d[val3]"                                          info= "Event on USBD_CDC_NCM_Notify_ConnectionSpeedChange finished successfully (API)"/>
    <event id="0xA400 + 0x48" level="Error"  val1="4BY" val4="4BY"            property="NCM_Notify_ConnectionSpeedChangeFailed"   value="instance=%d[val1.B0], us_bitrate=%d[val2], ds_bitrate=%d[val3], error=%E[val4.B0, usbStatus_enum:value]" info= "Event on USBD_CDC_NCM_Notify_ConnectionSpeedChange failed (Error)"/>
    <event id="0xA400 + 0x49" level="API"    val1="4BY"                       property="ACM_Notify_ResponseAvailable"             value="instance=%d[val1.B0]"                                          info= "Event on USBD_CDC_ACM_Notify_ResponseAvailable finished successfully (API)"/>
    <event id="0xA400 + 0x50" level="Error"  val1="4BY"                       property="ACM_Notify_ResponseAvailableFailed"       value="instance=%d[val1.B0], error=%E[val1.B3, usbStatus_enum:value]" info= "Event on USBD_CDC_ACM_Notify_ResponseAvailable failed (Error)"/>

    <!-- USB Device HID events -->
    <event id="0xA500 + 0x00" level="Op"     val1="4BY"                       property="Initialize"                               value="instance=%d[val1.B0]"                                          info= "Event on internal library operation HID initialize start (Operation)"/>
    <event id="0xA500 + 0x01" level="Error"  val1="4BY" val2="4BY"            property="InitializeFailed"                         value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal library operation HID initialize failed (Error)"/>
    <event id="0xA500 + 0x02" level="Op"     val1="4BY"                       property="Uninitialize"                             value="instance=%d[val1.B0]"                                          info= "Event on internal library operation HID uninitialize start (Operation)"/>
    <event id="0xA500 + 0x03" level="Error"  val1="4BY" val2="4BY"            property="UninitializeFailed"                       value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal library operation HID uninitialize failed (Error)"/>
    <event id="0xA500 + 0x04" level="Op"     val1="4BY"                       property="Reset"                                    value="instance=%d[val1.B0]"                                          info= "Event on internal library operation HID reset start (Operation)"/>
    <event id="0xA500 + 0x05" level="Error"  val1="4BY" val2="4BY"            property="ResetFailed"                              value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal library operation HID reset failed (Error)"/>
    <event id="0xA500 + 0x06" level="Op"     val1="4BY"                       property="GetReport"                                value="instance=%d[val1.B0]" info= "Event on internal library operation Get Report start (Operation)"/>
    <event id="0xA500 + 0x07" level="Error"  val1="4BY"                       property="GetReportFailed"                          value="instance=%d[val1.B0]" info= "Event on internal library operation Get Report failed (Error)"/>
    <event id="0xA500 + 0x08" level="Op"     val1="4BY"                       property="SetReport"                                value="instance=%d[val1.B0]" info= "Event on internal library operation Set Report start (Operation)"/>
    <event id="0xA500 + 0x09" level="Error"  val1="4BY"                       property="SetReportFailed"                          value="instance=%d[val1.B0]" info= "Event on internal library operation Set Report failed (Error)"/>
    <event id="0xA500 + 0x0A" level="Op"     val1="4BY"                       property="GetIdle"                                  value="instance=%d[val1.B0], rid=%d[val1.B1], idle=%d[val1.B2]" info= "Event on internal library operation Get Idle start (Operation)"/>
    <event id="0xA500 + 0x0B" level="Error"  val1="4BY"                       property="GetIdleFailed"                            value="instance=%d[val1.B0]"                                    info= "Event on internal library operation Get Idle failed (Error)"/>
    <event id="0xA500 + 0x0C" level="Op"     val1="4BY"                       property="SetIdle"                                  value="instance=%d[val1.B0], rid=%d[val1.B1], idle=%d[val1.B2]" info= "Event on internal library operation Set Idle start (Operation)"/>
    <event id="0xA500 + 0x0D" level="Error"  val1="4BY"                       property="SetIdleFailed"                            value="instance=%d[val1.B0]"                                    info= "Event on internal library operation Set Idle failed (Error)"/>
    <event id="0xA500 + 0x0E" level="Op"     val1="4BY" val2="4BY"            property="GetProtocol"                              value="instance=%d[val1.B0], protocol=%d[val2.B0]" info= "Event on internal library operation Get Protocol start (Operation)"/>
    <event id="0xA500 + 0x0F" level="Error"  val1="4BY"                       property="GetProtocolFailed"                        value="instance=%d[val1.B0]"                       info= "Event on internal library operation Get Protocol failed (Error)"/>
    <event id="0xA500 + 0x10" level="Op"     val1="4BY" val2="4BY"            property="SetProtocol"                              value="instance=%d[val1.B0], protocol=%d[val2.B0]" info= "Event on internal library operation Set Protocol start (Operation)"/>
    <event id="0xA500 + 0x11" level="Error"  val1="4BY"                       property="SetProtocolFailed"                        value="instance=%d[val1.B0]"                       info= "Event on internal library operation Set Protocol failed (Error)"/>
    <event id="0xA500 + 0x12" level="API"    val1="4BY"                       property="OnInitialize"                             value="n=%d[val1.B0]" info= "Event on USBD_HIDn_Initialize user callback function start (API)"/>
    <event id="0xA500 + 0x13" level="API"    val1="4BY"                       property="OnUninitialize"                           value="n=%d[val1.B0]" info= "Event on USBD_HIDn_Uninitialize user callback function start (API)"/>
    <event id="0xA500 + 0x14" level="API"    val1="4BY"                       property="OnGetReport"                              value="n=%d[val1.B0], rtype=%E[val1.B1, usbdHID_rtype_enum:value], req=%E[val1.B2, usbdHID_req_enum:value], rid=%d[val1.B3], len=%d[val2]" info= "Event on USBD_HIDn_GetReport user callback function finished successfully (API)"/>
    <event id="0xA500 + 0x15" level="Error"  val1="4BY"                       property="OnGetReportFailed"                        value="n=%d[val1.B0], rtype=%E[val1.B1, usbdHID_rtype_enum:value], req=%E[val1.B2, usbdHID_req_enum:value], rid=%d[val1.B3]"               info= "Event on USBD_HIDn_GetReport user callback function failed (Error)"/>
    <event id="0xA500 + 0x16" level="API"    val1="4BY"                       property="OnSetReport"                              value="n=%d[val1.B0], rtype=%E[val1.B1, usbdHID_rtype_enum:value], req=%E[val1.B2, usbdHID_req_enum:value], rid=%d[val1.B3], len=%d[val2]" info= "Event on USBD_HIDn_SetReport user callback function finished successfully (API)"/>
    <event id="0xA500 + 0x17" level="Error"  val1="4BY"                       property="OnSetReportFailed"                        value="n=%d[val1.B0], rtype=%E[val1.B1, usbdHID_rtype_enum:value], req=%E[val1.B2, usbdHID_req_enum:value], rid=%d[val1.B3], len=%d[val2]" info= "Event on USBD_HIDn_SetReport user callback function failed (Error)"/>
    <event id="0xA500 + 0x18" level="API"    val1="4BY" val2="4BY"            property="OnGetProtocol"                            value="n=%d[val1.B0], protocol=%d[val2.B0]" info= "Event on USBD_HIDn_GetProtocol user callback function finished successfully (API)"/>
    <event id="0xA500 + 0x19" level="Error"  val1="4BY"                       property="OnGetProtocolFailed"                      value="n=%d[val1.B0]"                       info= "Event on USBD_HIDn_GetProtocol user callback function failed (Error)"/>
    <event id="0xA500 + 0x1A" level="API"    val1="4BY" val2="4BY"            property="OnSetProtocol"                            value="n=%d[val1.B0], protocol=%d[val2.B0]" info= "Event on USBD_HIDn_SetProtocol user callback function finished successfully (API)"/>
    <event id="0xA500 + 0x1B" level="Error"  val1="4BY" val2="4BY"            property="OnSetProtocolFailed"                      value="n=%d[val1.B0], protocol=%d[val2.B0]" info= "Event on USBD_HIDn_SetProtocol user callback function failed (Error)"/>
    <event id="0xA500 + 0x1C" level="API"    val1="4BY"                       property="GetReportTrigger"                         value="instance=%d[val1.B0], rid=%d[val2], buf=%x[val3], len=%d[val4]" info= "Event on USBD_HID_GetReportTrigger start (API)"/>
    <event id="0xA500 + 0x1D" level="Error"  val1="4BY" val2="4BY"            property="GetReportTriggerFailed"                   value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]"  info= "Event on USBD_HID_GetReportTrigger failed (Error)"/>

    <!-- USB Device MSC events -->
    <event id="0xA600 + 0x00" level="Op"     val1="4BY"                       property="Initialize"                               value="instance=%d[val1.B0]"                                          info= "Event on library MSC initialize start (Operation)"/>
    <event id="0xA600 + 0x01" level="Error"  val1="4BY" val2="4BY"            property="InitializeFailed"                         value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on library MSC initialize failed (Error)"/>
    <event id="0xA600 + 0x02" level="Op"     val1="4BY"                       property="Uninitialize"                             value="instance=%d[val1.B0]"                                          info= "Event on library MSC uninitialize start (Operation)"/>
    <event id="0xA600 + 0x03" level="Error"  val1="4BY" val2="4BY"            property="UninitializeFailed"                       value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on library MSC uninitialize failed (Error)"/>
    <event id="0xA600 + 0x04" level="Op"     val1="4BY"                       property="Reset"                                    value="instance=%d[val1.B0]"                                          info= "Event on library MSC reset start (Operation)"/>
    <event id="0xA600 + 0x05" level="Error"  val1="4BY" val2="4BY"            property="ResetFailed"                              value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on library MSC reset failed (Error)"/>
    <event id="0xA600 + 0x06" level="Op"     val1="4BY"                       property="BOMSReset"                                value="instance=%d[val1.B0]" info= "Event on internal library operation Bulk Only Mass Storage Reset finished successfully (Operation)"/>
    <event id="0xA600 + 0x07" level="Error"  val1="4BY"                       property="BOMSResetFailed"                          value="instance=%d[val1.B0]" info= "Event on internal library operation Bulk Only Mass Storage Reset failed (Error)"/>
    <event id="0xA600 + 0x08" level="Op"     val1="4BY"                       property="GetMaxLUN"                                value="instance=%d[val1.B0], lun=%d[val1.B1]" info= "Event on internal library operation Get Max LUN finished successfully (Operation)"/>
    <event id="0xA600 + 0x09" level="Error"  val1="4BY"                       property="GetMaxLUNFailed"                          value="instance=%d[val1.B0]" info= "Event on internal library operation Get Max LUN failed (Error)"/>
    <event id="0xA600 + 0x0A" level="Op"     val1="4BY" val2="4BY"            property="TestUnitReady"                            value="instance=%d[val1.B0], lun=%d[val1.B1], status=%E[val2.B0, usbdMSC_status_enum:value]" info= "Event on internal library operation SCSI Test Unit Ready finished (Operation)"/>
    <event id="0xA600 + 0x0B" level="Op"     val1="4BY" val2="4BY"            property="RequestSense"                             value="instance=%d[val1.B0], lun=%d[val1.B1], status=%E[val2.B0, usbdMSC_status_enum:value]" info= "Event on internal library operation SCSI Request Sense finished (Operation)"/>
    <event id="0xA600 + 0x0C" level="Op"     val1="4BY" val2="4BY"            property="Inquiry"                                  value="instance=%d[val1.B0], lun=%d[val1.B1], status=%E[val2.B0, usbdMSC_status_enum:value]" info= "Event on internal library operation SCSI Inquiry finished (Operation)"/>
    <event id="0xA600 + 0x0D" level="Op"     val1="4BY" val2="4BY"            property="StartStopUnit"                            value="instance=%d[val1.B0], lun=%d[val1.B1], status=%E[val2.B0, usbdMSC_status_enum:value]" info= "Event on internal library operation SCSI Start/Stop Unit finished (Operation)"/>
    <event id="0xA600 + 0x0E" level="Op"     val1="4BY" val2="4BY"            property="MediaRemoval"                             value="instance=%d[val1.B0], lun=%d[val1.B1], status=%E[val2.B0, usbdMSC_status_enum:value]" info= "Event on internal library operation SCSI Media Removal finished (Operation)"/>
    <event id="0xA600 + 0x0F" level="Op"     val1="4BY" val2="4BY"            property="ModeSense"                                value="instance=%d[val1.B0], lun=%d[val1.B1], status=%E[val2.B0, usbdMSC_status_enum:value]" info= "Event on internal library operation SCSI Mode Sense 6/10 finished (Operation)"/>
    <event id="0xA600 + 0x10" level="Op"     val1="4BY" val2="4BY"            property="ReadFormatCapacities"                     value="instance=%d[val1.B0], lun=%d[val1.B1], status=%E[val2.B0, usbdMSC_status_enum:value]" info= "Event on internal library operation SCSI Read Format Capacities finished (Operation)"/>
    <event id="0xA600 + 0x11" level="Op"     val1="4BY" val2="4BY"            property="ReadCapacity"                             value="instance=%d[val1.B0], lun=%d[val1.B1], status=%E[val2.B0, usbdMSC_status_enum:value]" info= "Event on internal library operation SCSI Read Capacity finished (Operation)"/>
    <event id="0xA600 + 0x12" level="Op"     val1="4BY"                       property="Read"                                     value="instance=%d[val1.B0], lun=%d[val1.B1], lba=%d[val2], cnt=%d[val3]"                    info= "Event on internal library operation SCSI Read 10/12 start (Operation)"/>
    <event id="0xA600 + 0x13" level="Detail" val1="4BY" val2="4BY"            property="ReadDone"                                 value="instance=%d[val1.B0], lun=%d[val1.B1], status=%E[val2.B0, usbdMSC_status_enum:value]" info= "Event on internal library operation SCSI Read 10/12 finished (Detail)"/>
    <event id="0xA600 + 0x14" level="Op"     val1="4BY"                       property="Write"                                    value="instance=%d[val1.B0], lun=%d[val1.B1], lba=%d[val2], cnt=%d[val3]"                    info= "Event on internal library operation SCSI Write 10/12 start (Operation)"/>
    <event id="0xA600 + 0x15" level="Detail" val1="4BY" val2="4BY"            property="WriteDone"                                value="instance=%d[val1.B0], lun=%d[val1.B1], status=%E[val2.B0, usbdMSC_status_enum:value]" info= "Event on internal library operation SCSI Write 10/12 finished (Detail)"/>
    <event id="0xA600 + 0x16" level="Op"     val1="4BY"                       property="Verify"                                   value="instance=%d[val1.B0], lun=%d[val1.B1], lba=%d[val2], cnt=%d[val3]"                    info= "Event on internal library operation SCSI Verify 10 start (Operation)"/>
    <event id="0xA600 + 0x17" level="Detail" val1="4BY" val2="4BY"            property="VerifyDone"                               value="instance=%d[val1.B0], lun=%d[val1.B1], status=%E[val2.B0, usbdMSC_status_enum:value]" info= "Event on internal library operation SCSI Verify 10 finished (Detail)"/>
    <event id="0xA600 + 0x18" level="Op"     val1="4BY" val2="4BY"            property="SyncCache"                                value="instance=%d[val1.B0], lun=%d[val1.B1], status=%E[val2.B0, usbdMSC_status_enum:value]" info= "Event on internal library operation SCSI Synchronize Cache 10/16 finished (Operation)"/>
    <event id="0xA600 + 0x19" level="Op"     val1="4BY"                       property="UnsupportedCommand"                       value="instance=%d[val1.B0], op_code=%d[val2]"                           info= "Event on internal library operation SCSI unsupported command processing (Operation)"/>
    <event id="0xA600 + 0x1A" level="API"    val1="4BY"                       property="OnInitialize"                             value="n=%d[val1.B0]"                                                        info= "Event on USBD_MSCn_Initialize user callback function start (API)"/>
    <event id="0xA600 + 0x1B" level="API"    val1="4BY"                       property="OnUninitialize"                           value="n=%d[val1.B0]"                                                        info= "Event on USBD_MSCn_Uninitialize user callback function start (API)"/>
    <event id="0xA600 + 0x1C" level="API"    val1="4BY"                       property="OnGetCacheInfo"                           value="n=%d[val1.B0], size=%d[val2]"                                         info= "Event on USBD_MSCn_GetCacheInfo user callback function finished (API)"/>
    <event id="0xA600 + 0x1D" level="Error"  val1="4BY"                       property="OnGetCacheInfoFailed"                     value="n=%d[val1.B0]"                                                        info= "Event on USBD_MSCn_GetCacheInfo user callback function failed (Error)"/>
    <event id="0xA600 + 0x1E" level="API"    val1="4BY"                       property="OnGetMediaCapacity"                       value="n=%d[val1.B0], lun=%d[val1.B1], block_count=%d[val2], block_size=%d[val3]"             info= "Event on USBD_MSCn_GetMediaCapacity user callback function finished (API)"/>
    <event id="0xA600 + 0x1F" level="Error"  val1="4BY"                       property="OnGetMediaCapacityFailed"                 value="n=%d[val1.B0], lun=%d[val1.B1]"                                                        info= "Event on USBD_MSCn_GetMediaCapacity user callback function failed (Error)"/>
    <event id="0xA600 + 0x20" level="API"    val1="4BY"                       property="OnRead"                                   value="n=%d[val1.B0], lun=%d[val1.B1], lba=%d[val2], cnt=%d[val3], buf=%x[val4]"              info= "Event on USBD_MSCn_Read user callback function finished (API)"/>
    <event id="0xA600 + 0x21" level="Error"  val1="4BY"                       property="OnReadFailed"                             value="n=%d[val1.B0], lun=%d[val1.B1], lba=%d[val2]"                                          info= "Event on USBD_MSCn_Read user callback function failed (Error)"/>
    <event id="0xA600 + 0x22" level="API"    val1="4BY"                       property="OnWrite"                                  value="n=%d[val1.B0], lun=%d[val1.B1], lba=%d[val2], cnt=%d[val3], buf=%x[val4]"              info= "Event on USBD_MSCn_Write user callback function finished (API)"/>
    <event id="0xA600 + 0x23" level="Error"  val1="4BY"                       property="OnWriteFailed"                            value="n=%d[val1.B0], lun=%d[val1.B1], lba=%d[val2]"                                          info= "Event on USBD_MSCn_Write user callback function failed (Error)"/>
    <event id="0xA600 + 0x24" level="Detail" val1="4BY"                       property="OnCheckMedia"                             value="n=%d[val1.B0], lun=%d[val1.B1], wp=%d[(val2 &gt;&gt; 1) &amp; 1], mp=%d[val2 &amp; 1]" info= "Event on USBD_MSCn_CheckMedia user callback function finished (API)"/>

    <!-- USB Host events -->
    <!-- USB Host core events -->
    <event id="0xB000 + 0x00" level="API"    val1="4BY"                       property="Initialize"                               value="ctrl=%d[val1.B0]"                                          info= "Event on USBH_Initialize start (API)"/>
    <event id="0xB000 + 0x01" level="Error"  val1="4BY" val2="4BY"            property="InitializeFailed"                         value="ctrl=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_Initialize failed (Error)"/>
    <event id="0xB000 + 0x02" level="API"    val1="4BY"                       property="Uninitialize"                             value="ctrl=%d[val1.B0]"                                          info= "Event on USBH_Uninitialize start (API)"/>
    <event id="0xB000 + 0x03" level="Error"  val1="4BY" val2="4BY"            property="UninitializeFailed"                       value="ctrl=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_Uninitialize failed (Error)"/>
    <event id="0xB000 + 0x04" level="API"    val1="4BY"                       property="PortSuspend"                              value="ctrl=%d[val1.B0], port=%d[val1.B1]"                                          info= "Event on USBH_Port_Suspend start (API)"/>
    <event id="0xB000 + 0x05" level="Error"  val1="4BY" val2="4BY"            property="PortSuspendFailed"                        value="ctrl=%d[val1.B0], port=%d[val1.B1], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_Port_Suspend failed (Error)"/>
    <event id="0xB000 + 0x06" level="API"    val1="4BY"                       property="PortResume"                               value="ctrl=%d[val1.B0], port=%d[val1.B1]"                                          info= "Event on USBH_Port_Resume start (API)"/>
    <event id="0xB000 + 0x07" level="Error"  val1="4BY" val2="4BY"            property="PortResumeFailed"                         value="ctrl=%d[val1.B0], port=%d[val1.B1], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_Port_Resume failed (Error)"/>
    <event id="0xB000 + 0x08" level="API"    val1="4BY" val2="4BY"            property="DeviceGetController"                      value="device=%d[val1.B0], ctrl=%d[val2.B0]" info= "Event on USBH_Device_GetController finished (API)"/>
    <event id="0xB000 + 0x09" level="API"    val1="4BY" val2="4BY"            property="DeviceGetPort"                            value="device=%d[val1.B0], port=%d[val2.B0]" info= "Event on USBH_Device_GetPort finished (API)"/>
    <event id="0xB000 + 0x0A" level="API"    val1="4BY" val2="4BY"            property="DeviceGetStatus"                          value="device=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]"   info= "Event on USBH_Device_GetStatus finished (API)"/>
    <event id="0xB000 + 0x0B" level="API"    val1="4BY" val2="4BY"            property="DeviceGetSpeed"                           value="device=%d[val1.B0], speed=%E[val2.B0, usbDriver_speed_enum:speed]" info= "Event on USBH_Device_GetSpeed finished (API)"/>
    <event id="0xB000 + 0x0C" level="API"    val1="4BY" val2="4BY"            property="DeviceGetAddress"                         value="device=%d[val1.B0], address=%d[val2.B0]" info= "Event on USBH_Device_GetAddress finished (API)"/>
    <event id="0xB000 + 0x0D" level="API"    val1="4BY"                       property="DeviceGetVID"                             value="device=%d[val1.B0], vid=%x[val2]" info= "Event on USBH_Device_GetVID finished (API)"/>
    <event id="0xB000 + 0x0E" level="API"    val1="4BY"                       property="DeviceGetPID"                             value="device=%d[val1.B0], pid=%x[val2]" info= "Event on USBH_Device_GetPID finished (API)"/>
    <event id="0xB000 + 0x0F" level="API"    val1="4BY" val2="4BY"            property="OnNotify"                                 value="ctrl=%d[val1.B0], port=%d[val1.B1], device=%d[val1.B2], notify=%E[val2.B0, usbhNotify_enum:value]" info= "Event on USBH_Notify user callback function start (API)"/>
    <event id="0xB000 + 0x10" level="API"    val1="4BY" val2="4BY" val3="4BY" property="PipeCreate"                               value="device=%d[val1.B0], ep_addr=%x[val1.B1], ep_type=%d[val1.B2], ep_max_packet_size=%d[val2.DB0], ep_interval=%d[val2.B2], pipe_handle=%x[val3]" info= "Event on USBH_PipeCreate start (API)"/>
    <event id="0xB000 + 0x11" level="Error"  val1="4BY" val2="4BY" val3="4BY" property="PipeCreateFailed"                         value="device=%d[val1.B0], ep_addr=%x[val1.B1], ep_type=%d[val1.B2], ep_max_packet_size=%d[val2.DB0], ep_interval=%d[val2.B2]"                       info= "Event on USBH_PipeCreate failed (Error)"/>
    <event id="0xB000 + 0x12" level="API"               val2="4BY"            property="PipeUpdate"                               value="pipe_handle=%x[val1]"                                                        info= "Event on USBH_PipeUpdate start (API)"/>
    <event id="0xB000 + 0x13" level="Error"             val2="4BY"            property="PipeUpdateFailed"                         value="pipe_handle=%x[val1], error=%E[val2.B0, usbStatus_enum:value]"               info= "Event on USBH_PipeUpdate failed (Error)"/>
    <event id="0xB000 + 0x14" level="API"                                     property="PipeDelete"                               value="pipe_handle=%x[val1]"                                                        info= "Event on USBH_PipeDelete start (API)"/>
    <event id="0xB000 + 0x15" level="Error"             val2="4BY"            property="PipeDeleteFailed"                         value="pipe_handle=%x[val1], error=%E[val2.B0, usbStatus_enum:value]"               info= "Event on USBH_PipeDelete failed (Error)"/>
    <event id="0xB000 + 0x16" level="API"                                     property="PipeReset"                                value="pipe_handle=%x[val1]"                                                        info= "Event on USBH_PipeReset start (API)"/>
    <event id="0xB000 + 0x17" level="Error"             val2="4BY"            property="PipeResetFailed"                          value="pipe_handle=%x[val1], error=%E[val2.B0, usbStatus_enum:value]"               info= "Event on USBH_PipeReset failed (Error)"/>
    <event id="0xB000 + 0x18" level="API"                                     property="PipeReceive"                              value="pipe_handle=%x[val1], len=%d[val2]"                                          info= "Event on USBH_PipeReceive start (API)"/>
    <event id="0xB000 + 0x19" level="Error"                        val3="4BY" property="PipeReceiveFailed"                        value="pipe_handle=%x[val1], len=%d[val2], error=%E[val3.B0, usbStatus_enum:value]" info= "Event on USBH_PipeReceive failed (Error)"/>
    <event id="0xB000 + 0x1A" level="API"                                     property="PipeReceiveGetResult"                     value="pipe_handle=%x[val1], num=%d[val2]"                                          info= "Event on USBH_PipeReceiveGetResult finished (API)"/>
    <event id="0xB000 + 0x1B" level="API"                                     property="PipeSend"                                 value="pipe_handle=%x[val1], len=%d[val2]"                                          info= "Event on USBH_PipeSend start (API)"/>
    <event id="0xB000 + 0x1C" level="Error"                        val3="4BY" property="PipeSendFailed"                           value="pipe_handle=%x[val1], len=%d[val2], error=%E[val3.B0, usbStatus_enum:value]" info= "Event on USBH_PipeSend failed (Error)"/>
    <event id="0xB000 + 0x1D" level="API"                                     property="PipeSendGetResult"                        value="pipe_handle=%x[val1], num=%d[val2]"                                          info= "Event on USBH_PipeSendGetResult finished (API)"/>
    <event id="0xB000 + 0x1E" level="API"                                     property="PipeAbort"                                value="pipe_handle=%x[val1]"                                                        info= "Event on USBH_PipeAbort start (API)"/>
    <event id="0xB000 + 0x1F" level="Error"             val2="4BY"            property="PipeAbortFailed"                          value="pipe_handle=%x[val1], error=%E[val2.B0, usbStatus_enum:value]"               info= "Event on USBH_PipeAbort failed (Error)"/>
    <event id="0xB000 + 0x2A" level="API"    val1="4BY" val2="4BY" val3="4BY" property="ControlTransfer"                          value="device=%d[val1.B0], setup_packet=[%x[val2.B0],%x[val2.B1],%x[val2.B2],%x[val2.B3],%x[val3.B0],%x[val3.B1],%x[val3.B2],%x[val3.B3]], len=%d[val4]"                            info= "Event on USBH_ControlTransfer start (API)"/>
    <event id="0xB000 + 0x2B" level="Error"  val1="4BY" val2="4BY" val3="4BY" val4="4BY" property="ControlTransferFailed"         value="device=%d[val1.B0], setup_packet=[%x[val2.B0],%x[val2.B1],%x[val2.B2],%x[val2.B3],%x[val3.B0],%x[val3.B1],%x[val3.B2],%x[val3.B3]], error=%E[val4.B0, usbStatus_enum:value]" info= "Event on USBH_ControlTransfer failed (Error)"/>
    <event id="0xB000 + 0x2C" level="API"    val1="4BY" val2="4BY"            property="RequestGetStatus"                         value="device=%d[val1.B0], recipient=%d[val1.B1], index=%d[val1.B2], status=%d[val2.DB0]"                     info= "Event on USBH_DeviceRequest_GetStatus start (API)"/>
    <event id="0xB000 + 0x2D" level="Error"  val1="4BY" val2="4BY"            property="RequestGetStatusFailed"                   value="device=%d[val1.B0], recipient=%d[val1.B1], index=%d[val1.B2], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_DeviceRequest_GetStatus failed (Error)"/>
    <event id="0xB000 + 0x2E" level="API"    val1="4BY"                       property="RequestClearFeature"                      value="device=%d[val1.B0], recipient=%d[val1.B1], index=%d[val1.B2], feature=%d[val1.B3]"                                          info= "Event on USBH_DeviceRequest_ClearFeature start (API)"/>
    <event id="0xB000 + 0x2F" level="Error"  val1="4BY" val2="4BY"            property="RequestClearFeatureFailed"                value="device=%d[val1.B0], recipient=%d[val1.B1], index=%d[val1.B2], feature=%d[val1.B3], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_DeviceRequest_ClearFeature failed (Error)"/>
    <event id="0xB000 + 0x30" level="API"    val1="4BY"                       property="RequestSetFeature"                        value="device=%d[val1.B0], recipient=%d[val1.B1], index=%d[val1.B2], feature=%d[val1.B3]"                                          info= "Event on USBH_DeviceRequest_SetFeature start (API)"/>
    <event id="0xB000 + 0x31" level="Error"  val1="4BY" val2="4BY"            property="RequestSetFeatureFailed"                  value="device=%d[val1.B0], recipient=%d[val1.B1], index=%d[val1.B2], feature=%d[val1.B3], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_DeviceRequest_SetFeature failed (Error)"/>
    <event id="0xB000 + 0x32" level="API"    val1="4BY"                       property="RequestSetAddress"                        value="device=%d[val1.B0], address=%x[val1.B1]"                                          info= "Event on USBH_DeviceRequest_SetAddress start (API)"/>
    <event id="0xB000 + 0x33" level="Error"  val1="4BY"                       property="RequestSetAddressFailed"                  value="device=%d[val1.B0], address=%x[val1.B1], error=%E[val1.B1, usbStatus_enum:value]" info= "Event on USBH_DeviceRequest_SetAddress failed (Error)"/>
    <event id="0xB000 + 0x34" level="API"    val1="4BY" val2="4BY"            property="RequestGetDescriptor"                     value="device=%d[val1.B0], recipient=%d[val1.B1], desc_type=%d[val1.B2], desc_index=%d[val1.B3], lang_id=%d[val2.DB1], desc_len=%d[val2.DB0]"                                          info= "Event on USBH_DeviceRequest_GetDescriptor start (API)"/>
    <event id="0xB000 + 0x35" level="Error"  val1="4BY" val2="4BY" val3="4BY" property="RequestGetDescriptorFailed"               value="device=%d[val1.B0], recipient=%d[val1.B1], desc_type=%d[val1.B2], desc_index=%d[val1.B3], lang_id=%d[val2.DB1], desc_len=%d[val2.DB0], error=%E[val3.B0, usbStatus_enum:value]" info= "Event on USBH_DeviceRequest_GetDescriptor failed (Error)"/>
    <event id="0xB000 + 0x36" level="API"    val1="4BY" val2="4BY"            property="RequestSetDescriptor"                     value="device=%d[val1.B0], recipient=%d[val1.B1], desc_type=%d[val1.B2], desc_index=%d[val1.B3], lang_id=%d[val2.DB1], desc_len=%d[val2.DB0]"                                          info= "Event on USBH_DeviceRequest_SetDescriptor start (API)"/>
    <event id="0xB000 + 0x37" level="Error"  val1="4BY" val2="4BY" val3="4BY" property="RequestSetDescriptorFailed"               value="device=%d[val1.B0], recipient=%d[val1.B1], desc_type=%d[val1.B2], desc_index=%d[val1.B3], lang_id=%d[val2.DB1], desc_len=%d[val2.DB0], error=%E[val3.B0, usbStatus_enum:value]" info= "Event on USBH_DeviceRequest_SetDescriptor failed (Error)"/>
    <event id="0xB000 + 0x38" level="API"    val1="4BY"                       property="RequestGetConfiguration"                  value="device=%d[val1.B0], config=%d[val2]"                                          info= "Event on USBH_DeviceRequest_GetConfiguration start (API)"/>
    <event id="0xB000 + 0x39" level="Error"  val1="4BY"                       property="RequestGetConfigurationFailed"            value="device=%d[val1.B0], error=%E[val2, usbStatus_enum:value]"                     info= "Event on USBH_DeviceRequest_GetConfiguration failed (Error)"/>
    <event id="0xB000 + 0x3A" level="API"    val1="4BY"                       property="RequestSetConfiguration"                  value="device=%d[val1.B0], config=%d[val1.B1]"                                       info= "Event on USBH_DeviceRequest_SetConfiguration start (API)"/>
    <event id="0xB000 + 0x3B" level="Error"  val1="4BY"                       property="RequestSetConfigurationFailed"            value="device=%d[val1.B0], config=%d[val1.B1], error=%E[val2, usbStatus_enum:value]" info= "Event on USBH_DeviceRequest_SetConfiguration failed (Error)"/>
    <event id="0xB000 + 0x3C" level="API"    val1="4BY"                       property="RequestGetInterface"                      value="device=%d[val1.B0], index=%d[val1.B1], alt=%d[val2]"                          info= "Event on USBH_DeviceRequest_GetInterface start (API)"/>
    <event id="0xB000 + 0x3D" level="Error"  val1="4BY"                       property="RequestGetInterfaceFailed"                value="device=%d[val1.B0], index=%d[val1.B1], error=%E[val2, usbStatus_enum:value]"  info= "Event on USBH_DeviceRequest_GetInterface failed (Error)"/>
    <event id="0xB000 + 0x3E" level="API"    val1="4BY"                       property="RequestSetInterface"                      value="device=%d[val1.B0], index=%d[val1.B1], alt=%d[val1.B2]"                                       info= "Event on USBH_DeviceRequest_SetInterface start (API)"/>
    <event id="0xB000 + 0x3F" level="Error"  val1="4BY"                       property="RequestSetInterfaceFailed"                value="device=%d[val1.B0], index=%d[val1.B1], alt=%d[val1.B2], error=%E[val2, usbStatus_enum:value]" info= "Event on USBH_DeviceRequest_SetInterface failed (Error)"/>
    <event id="0xB000 + 0x40" level="API"    val1="4BY" val2="4BY"            property="RequestSynchFrame"                        value="device=%d[val1.B0], index=%d[val1.B1], frame_num=%d[val2.DB0]"               info= "Event on USBH_DeviceRequest_SynchFrame start (API)"/>
    <event id="0xB000 + 0x41" level="Error"  val1="4BY"                       property="RequestSynchFrameFailed"                  value="device=%d[val1.B0], index=%d[val1.B1], error=%E[val2, usbStatus_enum:value]" info= "Event on USBH_DeviceRequest_SynchFrame failed (Error)"/>
    <event id="0xB000 + 0x42" level="Error"  val1="4BY" val2="4BY"            property="MemInitFailed"                            value="ctrl=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation memory initialization failed (Error)"/>
    <event id="0xB000 + 0x43" level="Detail" val1="4BY"                       property="MemInit"                                  value="ctrl=%d[val1.B0]"                                          info= "Event on internal operation memory initialization finished successfully (Operation)"/>
    <event id="0xB000 + 0x44" level="Error"  val1="4BY" val2="4BY"            property="MemUninitFailed"                          value="ctrl=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation memory uninitialization failed (Error)"/>
    <event id="0xB000 + 0x45" level="Detail" val1="4BY"                       property="MemUninit"                                value="ctrl=%d[val1.B0]"                                          info= "Event on internal operation memory uninitialization finished successfully (Operation)"/>
    <event id="0xB000 + 0x46" level="Error"  val1="4BY"                       property="MemAllocFailed"                           value="ctrl=%d[val1.B0], size=%d[val3], error=%E[val1.B1, usbStatus_enum:value]" info= "Event on internal operation memory allocation failed (Error)"/>
    <event id="0xB000 + 0x47" level="Detail" val1="4BY"                       property="MemAlloc"                                 value="ctrl=%d[val1.B0], ptr=%x[val2], size=%d[val3]"                            info= "Event on internal operation memory allocation finished successfully (Operation)"/>
    <event id="0xB000 + 0x48" level="Error"  val1="4BY"                       property="MemFreeFailed"                            value="ctrl=%d[val1.B0], ptr=%x[val2], error=%E[val1.B1, usbStatus_enum:value]"  info= "Event on internal operation memory free failed (Error)"/>
    <event id="0xB000 + 0x49" level="Detail" val1="4BY"                       property="MemFree"                                  value="ctrl=%d[val1.B0], ptr=%x[val2]"                                           info= "Event on internal operation memory free finished successfully (Operation)"/>
    <event id="0xB000 + 0x4A" level="Detail" val1="4BY"                       property="Engine"                                   value="ctrl=%d[val1.B0], port=%d[val1.B1], event=%d[val2], port_state=%d[val1.B2]" info= "Event on internal operation engine start (Detail)"/>
    <event id="0xB000 + 0x4B" level="Error"  val1="4BY"                       property="EngineFailed"                             value="ctrl=%d[val1.B0], port=%d[val1.B1], event=%d[val2]"                         info= "Event on internal operation engine failed (Error)"/>
    <event id="0xB000 + 0x4C" level="Detail" val1="4BY"                       property="EngineDone"                               value="ctrl=%d[val1.B0], port=%d[val1.B1], event=%d[val2], port_state=%d[val1.B2]" info= "Event on internal operation engine finished successfully (Detail)"/>
    <event id="0xB000 + 0x4D" level="Error"  val1="4BY" val2="4BY"            property="DeviceGetStringDescriptorFailed"          value="device=%d[val1.B0], index=%d[val1.B3], lang_id=%d[val2.B2], desc_len=%d[val2.DB0], error=%E[val2.B3, usbStatus_enum:value]" info= "Event on USBH_Device_GetStringDescriptor failed (Error)"/>
    <event id="0xB000 + 0x4E" level="API"    val1="4BY" val2="4BY"            property="DeviceGetStringDescriptor"                value="device=%d[val1.B0], index=%d[val1.B3], lang_id=%d[val2.B2], desc_len=%d[val2.DB0]"                                          info= "Event on USBH_Device_GetStringDescriptor start (API)"/>

    <!-- USB Host Driver events -->
    <event id="0xB100 + 0x00" level="API"    val1="4BY"                       property="Initialize"                               value="ctrl=%d[val1.B0]"                                          info= "Event on ARM_USBH_Initialize finished successfully (API)"/>
    <event id="0xB100 + 0x01" level="Error"  val1="4BY" val2="4BY"            property="InitializeFailed"                         value="ctrl=%d[val1.B0], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBH_Initialize failed (Error)"/>
    <event id="0xB100 + 0x02" level="API"    val1="4BY"                       property="Uninitialize"                             value="ctrl=%d[val1.B0]"                                          info= "Event on ARM_USBH_Uninitialize finished successfully (API)"/>
    <event id="0xB100 + 0x03" level="Error"  val1="4BY" val2="4BY"            property="UninitializeFailed"                       value="ctrl=%d[val1.B0], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBH_Uninitialize failed (Error)"/>
    <event id="0xB100 + 0x04" level="API"    val1="4BY"                       property="PowerControl"                             value="ctrl=%d[val1.B0], state=%E[val1.B1, usbDriver_PowCtrl_enum:value]"                                          info= "Event on ARM_USBH_PowerControl finished successfully (API)"/>
    <event id="0xB100 + 0x05" level="Error"  val1="4BY" val2="4BY"            property="PowerControlFailed"                       value="ctrl=%d[val1.B0], state=%E[val1.B1, usbDriver_PowCtrl_enum:value], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBH_PowerControl failed (Error)"/>
    <event id="0xB100 + 0x06" level="API"    val1="4BY"                       property="PortVbusOnOff"                            value="ctrl=%d[val1.B0], port=%d[val1.B1], vbus=%d[val1.B2]"                                          info= "Event on ARM_USBH_PortVbusOnOff finished successfully (API)"/>
    <event id="0xB100 + 0x07" level="Error"  val1="4BY" val2="4BY"            property="PortVbusOnOffFailed"                      value="ctrl=%d[val1.B0], port=%d[val1.B1], vbus=%d[val1.B2], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBH_PortVbusOnOff failed (Error)"/>
    <event id="0xB100 + 0x08" level="API"    val1="4BY"                       property="PortReset"                                value="ctrl=%d[val1.B0], port=%d[val1.B1]"                                          info= "Event on ARM_USBH_PortReset finished successfully (API)"/>
    <event id="0xB100 + 0x09" level="Error"  val1="4BY" val2="4BY"            property="PortResetFailed"                          value="ctrl=%d[val1.B0], port=%d[val1.B1], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBH_PortReset failed (Error)"/>
    <event id="0xB100 + 0x0A" level="API"    val1="4BY"                       property="PortSuspend"                              value="ctrl=%d[val1.B0], port=%d[val1.B1]"                                          info= "Event on ARM_USBH_Suspend finished successfully (API)"/>
    <event id="0xB100 + 0x0B" level="Error"  val1="4BY" val2="4BY"            property="PortSuspendFailed"                        value="ctrl=%d[val1.B0], port=%d[val1.B1], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBH_Suspend failed (Error)"/>
    <event id="0xB100 + 0x0C" level="API"    val1="4BY"                       property="PortResume"                               value="ctrl=%d[val1.B0], port=%d[val1.B1]"                                          info= "Event on ARM_USBH_Resume finished successfully (API)"/>
    <event id="0xB100 + 0x0D" level="Error"  val1="4BY" val2="4BY"            property="PortResumeFailed"                         value="ctrl=%d[val1.B0], port=%d[val1.B1], error=%E[val2.B0, usbDriver_enum:value]" info= "Event on ARM_USBH_Resume failed (Error)"/>
    <event id="0xB100 + 0x0E" level="API"    val1="4BY"                       property="PortGetState"                             value="ctrl=%d[val1.B0], state.connected = %E[val2 &amp; 1, usb_bool_enum:on_off], state.overcurrent = %E[(val2 &gt;&gt; 1) &amp; 1, usb_bool_enum:on_off], state.speed = %E[(val2 &gt;&gt; 2) &amp; 3, usbDriver_speed_enum:speed]" info= "Event on ARM_USBH_PortGetState finished (API)"/>
    <event id="0xB100 + 0x0F" level="API"    val1="4BY" val2="4BY" val3="4BY" property="PipeCreate"                               value="ctrl=%d[val1.B0], dev_addr=%x[val1.B1], dev_speed = %E[val1.B2, usbDriver_speed_enum:speed], hub_addr=%x[val1.B3], hub_port=%d[val2.B0], ep_addr=%x[val2.B1], ep_type=%d[val2.B2], ep_max_packet_size=%d[val3.DB0], ep_interval=%d[val3.B2], pipe_hndl=%x[val4]" info= "Event on ARM_USBH_PipeCreate finished successfully (API)"/>
    <event id="0xB100 + 0x10" level="Error"  val1="4BY" val2="4BY" val3="4BY" property="PipeCreateFailed"                         value="ctrl=%d[val1.B0], dev_addr=%x[val1.B1], dev_speed = %E[val1.B2, usbDriver_speed_enum:speed], hub_addr=%x[val1.B3], hub_port=%d[val2.B0], ep_addr=%x[val2.B1], ep_type=%d[val2.B2], ep_max_packet_size=%d[val3.DB0], ep_interval=%d[val3.B2]"                     info= "Event on ARM_USBH_PipeCreate failed (Error)"/>
    <event id="0xB100 + 0x11" level="API"    val1="4BY" val2="4BY"            property="PipeModify"                               value="ctrl=%d[val1.B0], pipe_hndl=%x[val3], dev_addr=%x[val1.B1], dev_speed = %E[val1.B2, usbDriver_speed_enum:speed], hub_addr=%x[val1.B3], hub_port=%d[val2.B2], ep_max_packet_size=%d[val2.DB0]"                                          info= "Event on ARM_USBH_PipeModify finished successfully (API)"/>
    <event id="0xB100 + 0x12" level="Error"  val1="4BY" val2="4BY" val4="4BY" property="PipeModifyFailed"                         value="ctrl=%d[val1.B0], pipe_hndl=%x[val3], dev_addr=%x[val1.B1], dev_speed = %E[val1.B2, usbDriver_speed_enum:speed], hub_addr=%x[val1.B3], hub_port=%d[val2.B2], ep_max_packet_size=%d[val2.DB0], error=%E[val4.B0, usbDriver_enum:value]" info= "Event on ARM_USBH_PipeModify failed (Error)"/>
    <event id="0xB100 + 0x13" level="API"    val1="4BY"                       property="PipeDelete"                               value="ctrl=%d[val1.B0], pipe_hndl=%x[val2]"                                          info= "Event on ARM_USBH_PipeDelete finished successfully (API)"/>
    <event id="0xB100 + 0x14" level="Error"  val1="4BY"                       property="PipeDeleteFailed"                         value="ctrl=%d[val1.B0], pipe_hndl=%x[val2], error=%E[val1.B1, usbDriver_enum:value]" info= "Event on ARM_USBH_PipeDelete failed (Error)"/>
    <event id="0xB100 + 0x15" level="API"    val1="4BY"                       property="PipeReset"                                value="ctrl=%d[val1.B0], pipe_hndl=%x[val2]"                                          info= "Event on ARM_USBH_PipeReset finished successfully (API)"/>
    <event id="0xB100 + 0x16" level="Error"  val1="4BY"                       property="PipeResetFailed"                          value="ctrl=%d[val1.B0], pipe_hndl=%x[val2], error=%E[val1.B1, usbDriver_enum:value]" info= "Event on ARM_USBH_PipeReset failed (Error)"/>
    <event id="0xB100 + 0x17" level="API"    val1="4BY"                       property="PipeTransfer"                             value="ctrl=%d[val1.B0], pipe_hndl=%x[val2], packet=%x[val1.B1], num=%d[val3]"                                          info= "Event on ARM_USBH_PipeTransfer finished successfully (API)"/>
    <event id="0xB100 + 0x18" level="Error"  val1="4BY"            val4="4BY" property="PipeTransferFailed"                       value="ctrl=%d[val1.B0], pipe_hndl=%x[val2], packet=%x[val1.B1], num=%d[val3], error=%E[val4.B0, usbDriver_enum:value]" info= "Event on ARM_USBH_PipeTransfer failed (Error)"/>
    <event id="0xB100 + 0x19" level="API"    val1="4BY"                       property="PipeTransferGetResult"                    value="ctrl=%d[val1.B0], pipe_hndl=%x[val2], num=%d[val3]"                            info= "Event on ARM_USBH_PipeTransferGetResult finished (API)"/>
    <event id="0xB100 + 0x1A" level="API"    val1="4BY"                       property="PipeTransferAbort"                        value="ctrl=%d[val1.B0], pipe_hndl=%x[val2]"                                          info= "Event on ARM_USBH_PipeTransferAbort finished successfully (API)"/>
    <event id="0xB100 + 0x1B" level="Error"  val1="4BY"                       property="PipeTransferAbortFailed"                  value="ctrl=%d[val1.B0], pipe_hndl=%x[val2], error=%E[val1.B1, usbDriver_enum:value]" info= "Event on ARM_USBH_PipeTransferAbort failed (Error)"/>
    <event id="0xB100 + 0x1C" level="API"    val1="4BY"                       property="GetFrameNumber"                           value="ctrl=%d[val1.B0], frame_number=%d[val2]" info= "Event on ARM_USBD_GetFrameNumber finished (API)"/>
    <event id="0xB100 + 0x1D" level="API"    val1="4BY"                       property="OnSignalPortEvent"                        value="ctrl=%d[val1.B0], port=%d[val1.B1], event=%E[val2, usbhDriver_SigPortEvt_enum:value]"   info= "Event on ARM_USBH_SignalPortEvent callback start (API)"/>
    <event id="0xB100 + 0x1E" level="API"    val1="4BY"                       property="OnSignalPipeEvent"                        value="ctrl=%d[val1.B0], pipe_hndl=%x[val2], event=%E[val1.B1, usbhDriver_SigPipeEvt_enum:value]" info= "Event on ARM_USBH_SignalPipeEvent callback start (API)"/>

    <!-- USB Host Custom Class events -->
    <event id="0xB200 + 0x00" level="API"    val1="4BY" val2="4BY"            property="GetDevice"                                value="instance=%d[val1.B0], device=%d[val2.B0]"                       info= "Event on USBH_CustomClass_GetDevice finished (API)"/>
    <event id="0xB200 + 0x01" level="API"    val1="4BY" val2="4BY"            property="GetStatus"                                value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_CustomClass_GetStatus finished (API)"/>
    <event id="0xB200 + 0x02" level="API"    val1="4BY" val2="4BY"            property="OnConfigure"                              value="device=%d[val1.B0], class=%x[val1.B1], sub_class=%x[val1.B2], vid=%x[val2.DB1], pid=%x[val2.DB0], instance=%d[val1.B3]" info= "Event on USBH_CustomClass_Configure user callback function finished (API)"/>
    <event id="0xB200 + 0x03" level="API"    val1="4BY" val2="4BY"            property="OnUnconfigure"                            value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_CustomClass_Unconfigure user callback function finished (API)"/>
    <event id="0xB200 + 0x04" level="API"    val1="4BY" val2="4BY"            property="OnInitialize"                             value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_CustomClass_Initialize user callback function finished (API)"/>
    <event id="0xB200 + 0x05" level="API"    val1="4BY" val2="4BY"            property="OnUninitialize"                           value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_CustomClass_Uninitialize user callback function finished (API)"/>

    <!-- USB Host CDC Class events -->
    <event id="0xB300 + 0x00" level="Op"     val1="4BY"                       property="ACM_Configure"                            value="instance=%d[val1.B0]"                                           info= "Event on internal operation CDC ACM device configure start (Operation)"/>
    <event id="0xB300 + 0x01" level="Error"  val1="4BY"                       property="ACM_ConfigureFailed"                      value="error=%E[val1.B0, usbStatus_enum:value]"                        info= "Event on internal operation CDC ACM device configure failed (Error)"/>
    <event id="0xB300 + 0x02" level="Op"     val1="4BY"                       property="ACM_Unconfigure"                          value="instance=%d[val1.B0]"                                           info= "Event on internal operation CDC ACM device unconfigure start (Operation)"/>
    <event id="0xB300 + 0x03" level="Error"  val1="4BY" val2="4BY"            property="ACM_UnconfigureFailed"                    value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]"  info= "Event on internal operation CDC ACM device unconfigure failed (Error)"/>
    <event id="0xB300 + 0x04" level="Op"     val1="4BY"                       property="ACM_Initialize"                           value="instance=%d[val1.B0]"                                           info= "Event on internal operation CDC ACM device initialization start (Operation)"/>
    <event id="0xB300 + 0x05" level="Error"  val1="4BY" val2="4BY"            property="ACM_InitializeFailed"                     value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]"  info= "Event on internal operation CDC ACM device initialization failed (Error)"/>
    <event id="0xB300 + 0x06" level="API"    val1="4BY"                       property="ACM_OnInitialize"                         value="instance=%d[val1.B0]"                                           info= "Event on USBH_CDC_ACM_Initialize user callback function start (API)"/>
    <event id="0xB300 + 0x07" level="Op"     val1="4BY"                       property="ACM_Uninitialize"                         value="instance=%d[val1.B0]"                                           info= "Event on internal operation CDC ACM device uninitialization start (Operation)"/>
    <event id="0xB300 + 0x08" level="Error"  val1="4BY" val2="4BY"            property="ACM_UninitializeFailed"                   value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]"  info= "Event on internal operation CDC ACM device uninitialization failed (Error)"/>
    <event id="0xB300 + 0x09" level="API"    val1="4BY"                       property="ACM_OnUninitialize"                       value="instance=%d[val1.B0]"                                           info= "Event on USBH_CDC_ACM_Uninitialize user callback function start (API)"/>
    <event id="0xB300 + 0x0A" level="API"    val1="4BY" val2="4BY"            property="ACM_GetDevice"                            value="instance=%d[val1.B0], device=%d[val2.B0]"                       info= "Event on USBH_CDC_ACM_GetDevice finished (API)"/>
    <event id="0xB300 + 0x0B" level="API"    val1="4BY" val2="4BY"            property="ACM_GetStatus"                            value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_CDC_ACM_GetStatus finished (API)"/>
    <event id="0xB300 + 0x0C" level="API"    val1="4BY"                       property="ACM_Send"                                 value="instance=%d[val1.B0], num=%d[val2]"                                            info= "Event on USBH_CDC_ACM_Send start (API)"/>
    <event id="0xB300 + 0x0D" level="Error"  val1="4BY"                       property="ACM_SendFailed"                           value="instance=%d[val1.B0], num=%d[val2], status=%E[val1.B1, usbStatus_enum:value]"  info= "Event on USBH_CDC_ACM_Send failed (Error)"/>
    <event id="0xB300 + 0x0E" level="Detail" val1="4BY"                       property="ACM_SendDone"                             value="instance=%d[val1.B0], num=%d[val2]"                                            info= "Event on USBH_CDC_ACM_Send finished successfully (Detail)"/>
    <event id="0xB300 + 0x0F" level="API"    val1="4BY"                       property="ACM_GetTxCount"                           value="instance=%d[val1.B0], num=%d[val2]"                                            info= "Event on USBH_CDC_ACM_GetTxCount start (API)"/>
    <event id="0xB300 + 0x10" level="API"    val1="4BY"                       property="ACM_Receive"                              value="instance=%d[val1.B0], num=%d[val2]"                                            info= "Event on USBH_CDC_ACM_Receive start (API)"/>
    <event id="0xB300 + 0x11" level="Error"  val1="4BY"                       property="ACM_ReceiveFailed"                        value="instance=%d[val1.B0], num=%d[val2], status=%E[val1.B1, usbStatus_enum:value]"  info= "Event on USBH_CDC_ACM_Receive failed (Error)"/>
    <event id="0xB300 + 0x12" level="Detail" val1="4BY"                       property="ACM_ReceiveDone"                          value="instance=%d[val1.B0], num=%d[val2]"                                            info= "Event on USBH_CDC_ACM_Receive finished successfully (Detail)"/>
    <event id="0xB300 + 0x13" level="API"    val1="4BY"                       property="ACM_GetRxCount"                           value="instance=%d[val1.B0], num=%d[val2]"                                            info= "Event on USBH_CDC_ACM_GetRxCount start (API)"/>
    <event id="0xB300 + 0x14" level="API"    val1="4BY"                       property="ACM_SetLineCoding"                        value="instance=%d[val1.B0], rate=%d[val2]"                                           info= "Event on USBH_CDC_ACM_SetLineCoding start (API)"/>
    <event id="0xB300 + 0x15" level="Error"  val1="4BY"                       property="ACM_SetLineCodingFailed"                  value="instance=%d[val1.B0], rate=%d[val2], status=%E[val1.B1, usbStatus_enum:value]" info= "Event on USBH_CDC_ACM_SetLineCoding failed (Error)"/>
    <event id="0xB300 + 0x16" level="Error"  val1="4BY"                       property="ACM_GetLineCodingFailed"                  value="instance=%d[val1.B0], rate=%d[val2], status=%E[val1.B1, usbStatus_enum:value]" info= "Event on USBH_CDC_ACM_GetLineCoding failed (Error)"/>
    <event id="0xB300 + 0x17" level="API"    val1="4BY"                       property="ACM_GetLineCoding"                        value="instance=%d[val1.B0], rate=%d[val2]"                                           info= "Event on USBH_CDC_ACM_GetLineCoding start (API)"/>
    <event id="0xB300 + 0x18" level="API"    val1="4BY" val2="4BY"            property="ACM_SetControlLineState"                  value="instance=%d[val1.B0], dtr=%d[val2.B0], rts=%d[val2.B1]"                                           info= "Event on USBH_CDC_ACM_SetControlLineState start (API)"/>
    <event id="0xB300 + 0x19" level="Error"  val1="4BY" val2="4BY"            property="ACM_SetControlLineStateFailed"            value="instance=%d[val1.B0], dtr=%d[val2.B0], rts=%d[val2.B1], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_CDC_ACM_SetControlLineState failed (Error)"/>
    <event id="0xB300 + 0x1A" level="API"    val1="4BY" val2="4BY"            property="ACM_OnNotify"                             value="instance=%d[val1.B0], status=%x[val2.DB0]" info= "Event on USBH_CDC_ACM_Notify user callback function start (API)"/>
    <event id="0xB300 + 0x1B" level="API"    val1="4BY" val2="4BY"            property="ACM_SendBreak"                            value="instance=%d[val1.B0], duration=%d[val2.DB0]"                                           info= "Event on USBH_CDC_ACM_SendBreak start (API)"/>
    <event id="0xB300 + 0x1C" level="Error"  val1="4BY" val2="4BY"            property="ACM_SendBreakFailed"                      value="instance=%d[val1.B0], duration=%d[val2.DB0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_CDC_ACM_SendBreak failed (Error)"/>
    <event id="0xB300 + 0x1D" level="API"    val1="4BY"                       property="ACM_AbortSend"                            value="instance=%d[val1.B0]"                                           info= "Event on USBH_CDC_ACM_AbortSend start (API)"/>
    <event id="0xB300 + 0x1E" level="Error"  val1="4BY"                       property="ACM_AbortSendFailed"                      value="instance=%d[val1.B0], status=%E[val1.B1, usbStatus_enum:value]" info= "Event on USBH_CDC_ACM_AbortSend failed (Error)"/>
    <event id="0xB300 + 0x1F" level="Detail" val1="4BY"                       property="ACM_AbortSendDone"                        value="instance=%d[val1.B0]"                                           info= "Event on USBH_CDC_ACM_AbortSend finished successfully (Detail)"/>
    <event id="0xB300 + 0x20" level="API"    val1="4BY"                       property="ACM_AbortReceive"                         value="instance=%d[val1.B0]"                                           info= "Event on USBH_CDC_ACM_AbortReceive start (API)"/>
    <event id="0xB300 + 0x21" level="Error"  val1="4BY"                       property="ACM_AbortReceiveFailed"                   value="instance=%d[val1.B0], status=%E[val1.B1, usbStatus_enum:value]" info= "Event on USBH_CDC_ACM_AbortReceive failed (Error)"/>
    <event id="0xB300 + 0x22" level="Detail" val1="4BY"                       property="ACM_AbortReceiveDone"                     value="instance=%d[val1.B0]"                                           info= "Event on USBH_CDC_ACM_AbortReceive finished successfully (Detail)"/>

    <!-- USB Host HID Class events -->
    <event id="0xB400 + 0x00" level="Op"     val1="4BY"                       property="Configure"                                value="instance=%d[val1.B0]"                                           info= "Event on internal operation HID device configure start (Operation)"/>
    <event id="0xB400 + 0x01" level="Error"  val1="4BY" val2="4BY"            property="ConfigureFailed"                          value="error=%E[val2.B0, usbStatus_enum:value]"                        info= "Event on internal operation HID device configure failed (Error)"/>
    <event id="0xB400 + 0x02" level="Op"     val1="4BY"                       property="Unconfigure"                              value="instance=%d[val1.B0]"                                           info= "Event on internal operation HID device unconfigure start (Operation)"/>
    <event id="0xB400 + 0x03" level="Error"  val1="4BY" val2="4BY"            property="UnconfigureFailed"                        value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]"  info= "Event on internal operation HID device unconfigure failed (Error)"/>
    <event id="0xB400 + 0x04" level="Op"     val1="4BY"                       property="Initialize"                               value="instance=%d[val1.B0]"                                           info= "Event on internal operation HID device initialization start (Operation)"/>
    <event id="0xB400 + 0x05" level="Error"  val1="4BY" val2="4BY"            property="InitializeFailed"                         value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]"  info= "Event on internal operation HID device initialization failed (Error)"/>
    <event id="0xB400 + 0x06" level="API"    val1="4BY"                       property="OnInitialize"                             value="instance=%d[val1.B0]"                                           info= "Event on USBH_HID_Initialize user callback function start (API)"/>
    <event id="0xB400 + 0x07" level="Op"     val1="4BY"                       property="Uninitialize"                             value="instance=%d[val1.B0]"                                           info= "Event on internal operation HID device uninitialization start (Operation)"/>
    <event id="0xB400 + 0x08" level="Error"  val1="4BY" val2="4BY"            property="UninitializeFailed"                       value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]"  info= "Event on internal operation HID device uninitialization failed (Error)"/>
    <event id="0xB400 + 0x09" level="API"    val1="4BY"                       property="OnUninitialize"                           value="instance=%d[val1.B0]"                                           info= "Event on USBH_HID_Uninitialize user callback function start (API)"/>
    <event id="0xB400 + 0x0A" level="API"    val1="4BY" val2="4BY"            property="GetDevice"                                value="instance=%d[val1.B0], device=%d[val2.B0]"                       info= "Event on USBH_HID_GetDevice finished (API)"/>
    <event id="0xB400 + 0x0B" level="API"    val1="4BY" val2="4BY"            property="GetStatus"                                value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_HID_GetStatus finished (API)"/>
    <event id="0xB400 + 0x0C" level="API"    val1="4BY"                       property="Read"                                     value="instance=%d[val1.B0], len=%d[val2]"                                           info= "Event on USBH_HID_Read start (API)"/>
    <event id="0xB400 + 0x0D" level="Error"  val1="4BY"                       property="ReadFailed"                               value="instance=%d[val1.B0], len=%d[val2], status=%E[val1.B1, usbStatus_enum:value]" info= "Event on USBH_HID_Read failed (Error)"/>
    <event id="0xB400 + 0x0E" level="Detail" val1="4BY"                       property="ReadDone"                                 value="instance=%d[val1.B0], len=%d[val2], result=%d[val3]"                          info= "Event on USBH_HID_Read finished successfully (Detail)"/>
    <event id="0xB400 + 0x0F" level="API"    val1="4BY"                       property="Write"                                    value="instance=%d[val1.B0], len=%d[val2]"                                           info= "Event on USBH_HID_Write start (API)"/>
    <event id="0xB400 + 0x10" level="Error"  val1="4BY"                       property="WriteFailed"                              value="instance=%d[val1.B0], len=%d[val2], status=%E[val1.B1, usbStatus_enum:value]" info= "Event on USBH_HID_Write failed (Error)"/>
    <event id="0xB400 + 0x11" level="Detail" val1="4BY"                       property="WriteDone"                                value="instance=%d[val1.B0], len=%d[val2], result=%d[val3]"                          info= "Event on USBH_HID_Write finished successfully (Detail)"/>
    <event id="0xB400 + 0x12" level="API"    val1="4BY"                       property="GetKeyboardKey"                           value="instance=%d[val1.B0]"                                        info= "Event on USBH_HID_GetKeyboardKey start (API)"/>
    <event id="0xB400 + 0x13" level="Detail" val1="4BY"                       property="GetKeyboardKeyDone"                       value="instance=%d[val1.B0], ch=%x[val2]"                           info= "Event on USBH_HID_GetKeyboardKey finished successfully (Detail)"/>
    <event id="0xB400 + 0x14" level="API"    val1="4BY"                       property="GetMouseState"                            value="instance=%d[val1.B0]"                                                                    info= "Event on USBH_HID_GetMouseState start (API)"/>
    <event id="0xB400 + 0x15" level="Error"  val1="4BY" val4="4BY"            property="GetMouseStateFailed"                      value="instance=%d[val1.B0], status=%E[val4.B0, usbStatus_enum:value]"                          info= "Event on USBH_HID_GetMouseState failed (Error)"/>
    <event id="0xB400 + 0x16" level="Detail" val1="4BY" val3="4BY"            property="GetMouseStateDone"                        value="instance=%d[val1.B0], state.button=%d[val2], state.x=%d[val3.DB1], state.y=%d[val3.DB0]" info= "Event on USBH_HID_GetMouseState finished successfully (Detail)"/>
    <event id="0xB400 + 0x17" level="API"    val1="4BY"                       property="OnParseReportDescriptor"                  value="instance=%d[val1.B0]"                                           info= "Event on USBH_HID_ParseReportDescriptor user callback function start (API)"/>
    <event id="0xB400 + 0x18" level="API"    val1="4BY"                       property="OnDataReceived"                           value="instance=%d[val1.B0]"                                           info= "Event on USBH_HID_DataReceived user callback function start (API)"/>
    <event id="0xB400 + 0x19" level="Op"     val1="4BY"                       property="GetReport"                                value="instance=%d[val1.B0]"                                           info= "Event on internal operation Get Report start (Operation)"/>
    <event id="0xB400 + 0x1A" level="Error"  val1="4BY" val2="4BY"            property="GetReportFailed"                          value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation Get Report failed (Error)"/>
    <event id="0xB400 + 0x1B" level="Op"     val1="4BY"                       property="SetReport"                                value="instance=%d[val1.B0]"                                           info= "Event on internal operation Set Report start (Operation)"/>
    <event id="0xB400 + 0x1C" level="Error"  val1="4BY" val2="4BY"            property="SetReportFailed"                          value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation Set Report failed (Error)"/>
    <event id="0xB400 + 0x1D" level="Op"     val1="4BY"                       property="GetIdle"                                  value="instance=%d[val1.B0]"                                           info= "Event on internal operation Get Idle start (Operation)"/>
    <event id="0xB400 + 0x1E" level="Error"  val1="4BY" val2="4BY"            property="GetIdleFailed"                            value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation Get Idle failed (Error)"/>
    <event id="0xB400 + 0x1F" level="Op"     val1="4BY"                       property="SetIdle"                                  value="instance=%d[val1.B0]"                                           info= "Event on internal operation Set Idle start (Operation)"/>
    <event id="0xB400 + 0x20" level="Error"  val1="4BY" val2="4BY"            property="SetIdleFailed"                            value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation Set Idle failed (Error)"/>
    <event id="0xB400 + 0x21" level="Op"     val1="4BY"                       property="GetProtocol"                              value="instance=%d[val1.B0]"                                           info= "Event on internal operation Get Protocol start (Operation)"/>
    <event id="0xB400 + 0x22" level="Error"  val1="4BY" val2="4BY"            property="GetProtocolFailed"                        value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation Get Protocol failed (Error)"/>
    <event id="0xB400 + 0x23" level="Op"     val1="4BY"                       property="SetProtocol"                              value="instance=%d[val1.B0]"                                           info= "Event on internal operation Set Protocol start (Operation)"/>
    <event id="0xB400 + 0x24" level="Error"  val1="4BY" val2="4BY"            property="SetProtocolFailed"                        value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation Set Protocol failed (Error)"/>
    <event id="0xB400 + 0x25" level="Op"     val1="4BY"                       property="ReportOut"                                value="instance=%d[val1.B0]"                                           info= "Event on internal operation Report Out start (Operation)"/>
    <event id="0xB400 + 0x26" level="Error"  val1="4BY" val2="4BY"            property="ReportOutFailed"                          value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation Report Out failed (Error)"/>

    <!-- USB Host MSC Class events -->
    <event id="0xB500 + 0x00" level="Op"     val1="4BY"                       property="Configure"                                value="instance=%d[val1.B0]"                                           info= "Event on internal operation MSC device configure start (Operation)"/>
    <event id="0xB500 + 0x01" level="Error"  val1="4BY" val2="4BY"            property="ConfigureFailed"                          value="error=%E[val2.B0, usbStatus_enum:value]"                        info= "Event on internal operation MSC device configure failed (Error)"/>
    <event id="0xB500 + 0x02" level="Op"     val1="4BY"                       property="Unconfigure"                              value="instance=%d[val1.B0]"                                           info= "Event on internal operation MSC device unconfigure start (Operation)"/>
    <event id="0xB500 + 0x03" level="Error"  val1="4BY" val2="4BY"            property="UnconfigureFailed"                        value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]"  info= "Event on internal operation MSC device unconfigure failed (Error)"/>
    <event id="0xB500 + 0x04" level="Op"     val1="4BY"                       property="Initialize"                               value="instance=%d[val1.B0]"                                           info= "Event on internal operation MSC device initialization start (Operation)"/>
    <event id="0xB500 + 0x05" level="Error"  val1="4BY" val2="4BY"            property="InitializeFailed"                         value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]"  info= "Event on internal operation MSC device initialization failed (Error)"/>
    <event id="0xB500 + 0x06" level="API"    val1="4BY"                       property="OnInitialize"                             value="instance=%d[val1.B0]"                                           info= "Event on USBH_MSC_Initialize user callback function start (API)"/>
    <event id="0xB500 + 0x07" level="Op"     val1="4BY"                       property="Uninitialize"                             value="instance=%d[val1.B0]"                                           info= "Event on internal operation MSC device uninitialization start (Operation)"/>
    <event id="0xB500 + 0x08" level="Error"  val1="4BY" val2="4BY"            property="UninitializeFailed"                       value="instance=%d[val1.B0], error=%E[val2.B0, usbStatus_enum:value]"  info= "Event on internal operation MSC device uninitialization failed (Error)"/>
    <event id="0xB500 + 0x09" level="API"    val1="4BY"                       property="OnUninitialize"                           value="instance=%d[val1.B0]"                                           info= "Event on USBH_MSC_Uninitialize user callback function start (API)"/>
    <event id="0xB500 + 0x0A" level="API"    val1="4BY" val2="4BY"            property="GetDevice"                                value="instance=%d[val1.B0], device=%d[val2.B0]"                       info= "Event on USBH_MSC_GetDevice finished (API)"/>
    <event id="0xB500 + 0x0B" level="API"    val1="4BY" val2="4BY"            property="GetStatus"                                value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_MSC_GetStatus finished (API)"/>
    <event id="0xB500 + 0x0C" level="API"    val1="4BY"                       property="Read"                                     value="instance=%d[val1.B0], lba=%d[val2], cnt=%d[val3]"                                           info= "Event on USBH_MSC_Read start (API)"/>
    <event id="0xB500 + 0x0D" level="Error"  val1="4BY" val4="4BY"            property="ReadFailed"                               value="instance=%d[val1.B0], lba=%d[val2], cnt=%d[val3], status=%E[val4.B0, usbStatus_enum:value]" info= "Event on USBH_MSC_Read failed (Error)"/>
    <event id="0xB500 + 0x0E" level="Detail" val1="4BY"                       property="ReadDone"                                 value="instance=%d[val1.B0], lba=%d[val2], cnt=%d[val3]"                                           info= "Event on USBH_MSC_Read finished successfully (Detail)"/>
    <event id="0xB500 + 0x0F" level="API"    val1="4BY"                       property="Write"                                    value="instance=%d[val1.B0], lba=%d[val2], cnt=%d[val3]"                                           info= "Event on USBH_MSC_Write start (API)"/>
    <event id="0xB500 + 0x10" level="Error"  val1="4BY" val4="4BY"            property="WriteFailed"                              value="instance=%d[val1.B0], lba=%d[val2], cnt=%d[val3], status=%E[val4.B0, usbStatus_enum:value]" info= "Event on USBH_MSC_Write failed (Error)"/>
    <event id="0xB500 + 0x11" level="Detail" val1="4BY"                       property="WriteDone"                                value="instance=%d[val1.B0], lba=%d[val2], cnt=%d[val3]"                                           info= "Event on USBH_MSC_Write finished successfully (Detail)"/>
    <event id="0xB500 + 0x12" level="API"    val1="4BY"                       property="ReadCapacity"                             value="instance=%d[val1.B0]"                                           info= "Event on USBH_MSC_ReadCapacity start (API)"/>
    <event id="0xB500 + 0x13" level="Error"  val1="4BY" val2="4BY"            property="ReadCapacityFailed"                       value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on USBH_MSC_ReadCapacity failed (Error)"/>
    <event id="0xB500 + 0x14" level="Detail" val1="4BY"                       property="ReadCapacityDone"                         value="instance=%d[val1.B0]"                                           info= "Event on USBH_MSC_ReadCapacity finished successfully (Detail)"/>
    <event id="0xB500 + 0x15" level="Op"     val1="4BY"                       property="BomReset"                                 value="instance=%d[val1.B0]"                                           info= "Event on internal operation Bulk-Only Mass Storage Reset start (Operation)"/>
    <event id="0xB500 + 0x16" level="Error"  val1="4BY" val2="4BY"            property="BomResetFailed"                           value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation Bulk-Only Mass Storage Reset failed (Error)"/>
    <event id="0xB500 + 0x17" level="Op"     val1="4BY"                       property="GetMaxLun"                                value="instance=%d[val1.B0]"                                           info= "Event on internal operation Get Max LUN start (Operation)"/>
    <event id="0xB500 + 0x18" level="Error"  val1="4BY" val2="4BY"            property="GetMaxLunFailed"                          value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation Get Max LUN failed (Error)"/>
    <event id="0xB500 + 0x19" level="Op"     val1="4BY"                       property="ScsiTestUnitReady"                        value="instance=%d[val1.B0]"                                           info= "Event on internal operation SCSI Test Unit Ready start (Operation)"/>
    <event id="0xB500 + 0x1A" level="Error"  val1="4BY" val2="4BY"            property="ScsiTestUnitReadyFailed"                  value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation SCSI Test Unit Ready failed (Error)"/>
    <event id="0xB500 + 0x1B" level="Op"     val1="4BY"                       property="ScsiRequestSense"                         value="instance=%d[val1.B0]"                                           info= "Event on internal operation SCSI Request Sense start (Operation)"/>
    <event id="0xB500 + 0x1C" level="Error"  val1="4BY" val2="4BY"            property="ScsiRequestSenseFailed"                   value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation SCSI Request Sense failed (Error)"/>
    <event id="0xB500 + 0x1D" level="Op"     val1="4BY"                       property="ScsiInquiry"                              value="instance=%d[val1.B0]"                                           info= "Event on internal operation SCSI Inquiry start (Operation)"/>
    <event id="0xB500 + 0x1E" level="Error"  val1="4BY" val2="4BY"            property="ScsiInquiryFailed"                        value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation SCSI Inquiry failed (Error)"/>
    <event id="0xB500 + 0x1F" level="Op"     val1="4BY"                       property="ScsiReadFormatCapacities"                 value="instance=%d[val1.B0]"                                           info= "Event on internal operation SCSI Read Format Capacities start (Operation)"/>
    <event id="0xB500 + 0x20" level="Error"  val1="4BY" val2="4BY"            property="ScsiReadFormatCapacitiesFailed"           value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation SCSI Read Format Capacities failed (Error)"/>
    <event id="0xB500 + 0x21" level="Op"     val1="4BY"                       property="ScsiReadCapacity"                         value="instance=%d[val1.B0]"                                           info= "Event on internal operation SCSI Read Capacity start (Operation)"/>
    <event id="0xB500 + 0x22" level="Error"  val1="4BY" val2="4BY"            property="ScsiReadCapacityFailed"                   value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation SCSI Read Capacity failed (Error)"/>
    <event id="0xB500 + 0x23" level="Op"     val1="4BY"                       property="ScsiRead10"                               value="instance=%d[val1.B0], block_addr=%d[val2], block_num=%d[val3]"                                           info= "Event on internal operation SCSI Read10 start (Operation)"/>
    <event id="0xB500 + 0x24" level="Error"  val1="4BY" val2="4BY"            property="ScsiRead10Failed"                         value="instance=%d[val1.B0], block_addr=%d[val2], block_num=%d[val3], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation SCSI Read10 failed (Error)"/>
    <event id="0xB500 + 0x25" level="Op"     val1="4BY"                       property="ScsiWrite10"                              value="instance=%d[val1.B0], block_addr=%d[val2], block_num=%d[val3]"                                           info= "Event on internal operation SCSI Write10 start (Operation)"/>
    <event id="0xB500 + 0x26" level="Error"  val1="4BY" val2="4BY"            property="ScsiWrite10Failed"                        value="instance=%d[val1.B0], block_addr=%d[val2], block_num=%d[val3], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation SCSI Write10 failed (Error)"/>
    <event id="0xB500 + 0x27" level="Op"     val1="4BY"                       property="Recover"                                  value="instance=%d[val1.B0]"                                           info= "Event on internal operation recover start (Operation)"/>
    <event id="0xB500 + 0x28" level="Error"  val1="4BY" val2="4BY"            property="RecoverFailed"                            value="instance=%d[val1.B0], status=%E[val2.B0, usbStatus_enum:value]" info= "Event on internal operation recover failed (Error)"/>
  </events>
</component_viewer>
