summaryrefslogtreecommitdiff
path: root/docs/source
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2022-10-02 14:57:47 +0800
committersakumisu <[email protected]>2022-10-02 15:10:57 +0800
commit97a921583fdd11a779648107ec415040876730cb (patch)
treefa327a835d29e854b9232bf3b399ffce1ea21e24 /docs/source
parent7485710fffa285bf11d2d60486d6b2e3ab8fdd78 (diff)
add structure svg
Diffstat (limited to 'docs/source')
-rw-r--r--docs/source/index.rst8
-rw-r--r--docs/source/usbdev.svg21
-rw-r--r--docs/source/usbhost.svg9
3 files changed, 38 insertions, 0 deletions
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 208416e0..43d12ce3 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -16,6 +16,14 @@ CherryUSB 是一个小而美的、可移植性高的、用于嵌入式系统的
- 主从收发接口的使用等价于 uart tx/rx dma 的使用,长度也没有限制
- 能够达到 USB 硬件理论带宽
+从机协议栈整体执行流程:
+
+.. figure:: usbdev.svg
+
+主机协议栈整体执行流程:
+
+.. figure:: usbhost.svg
+
其他相关链接:
- **从机协议栈视频教程** https://www.bilibili.com/video/BV1Ef4y1t73d
diff --git a/docs/source/usbdev.svg b/docs/source/usbdev.svg
new file mode 100644
index 00000000..d9fa9549
--- /dev/null
+++ b/docs/source/usbdev.svg
@@ -0,0 +1,21 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="2517px" height="1494px" viewBox="-0.5 -0.5 2517 1494" content="&lt;mxfile&gt;&lt;diagram id=&quot;pV-jT4rfoVRAg6tzdvVZ&quot; name=&quot;第 1 页&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs><clipPath id="mx-clip-1320-97-283-30-0"><rect x="1320" y="97" width="283" height="30"/></clipPath><clipPath id="mx-clip-1320-127-283-30-0"><rect x="1320" y="127" width="283" height="30"/></clipPath><clipPath id="mx-clip-1320-157-283-30-0"><rect x="1320" y="157" width="283" height="30"/></clipPath><clipPath id="mx-clip-1320-187-283-30-0"><rect x="1320" y="187" width="283" height="30"/></clipPath><clipPath id="mx-clip-1320-217-283-30-0"><rect x="1320" y="217" width="283" height="30"/></clipPath><clipPath id="mx-clip-1320-247-283-30-0"><rect x="1320" y="247" width="283" height="30"/></clipPath><clipPath id="mx-clip-1320-277-283-30-0"><rect x="1320" y="277" width="283" height="30"/></clipPath><clipPath id="mx-clip-1711-102-283-30-0"><rect x="1711" y="102" width="283" height="30"/></clipPath><clipPath id="mx-clip-1711-132-283-30-0"><rect x="1711" y="132" width="283" height="30"/></clipPath><clipPath id="mx-clip-1711-162-283-30-0"><rect x="1711" y="162" width="283" height="30"/></clipPath><clipPath id="mx-clip-1711-192-283-30-0"><rect x="1711" y="192" width="283" height="30"/></clipPath><clipPath id="mx-clip-1711-222-283-30-0"><rect x="1711" y="222" width="283" height="30"/></clipPath><clipPath id="mx-clip-1711-252-283-30-0"><rect x="1711" y="252" width="283" height="30"/></clipPath><clipPath id="mx-clip-1711-282-283-30-0"><rect x="1711" y="282" width="283" height="30"/></clipPath></defs><g><rect x="452" y="0" width="344" height="72" rx="10.8" ry="10.8" fill="#a0a3f2" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 342px; height: 1px; padding-top: 36px; margin-left: 453px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbd_desc_register</font><br /></div></div></div></div></foreignObject><text x="624" y="40" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbd_desc_register
+</text></switch></g><path d="M 624 72 L 624.45 127.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 624.49 132.88 L 620.93 125.91 L 624.45 127.63 L 627.93 125.85 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 624.5 207 L 624.77 257.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 624.79 262.88 L 621.26 255.9 L 624.77 257.63 L 628.26 255.86 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 796 148.97 L 964.68 127.79" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 969.89 127.14 L 963.38 131.48 L 964.68 127.79 L 962.51 124.54 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="453" y="134" width="343" height="73" rx="10.95" ry="10.95" fill="#a0a3f2" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 341px; height: 1px; padding-top: 171px; margin-left: 454px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbd_add_interface</font><br /></div></div></div></div></div></div></foreignObject><text x="625" y="174" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbd_add_interface
+</text></switch></g><path d="M 626.5 502 L 626.05 565.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 626.01 570.88 L 622.56 563.86 L 626.05 565.63 L 629.56 563.91 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="477" y="410" width="299" height="92" rx="13.8" ry="13.8" fill="#a0a3f2" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 297px; height: 1px; padding-top: 456px; margin-left: 478px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbd_initialize</font><br /></div></div></div></div></div></div></foreignObject><text x="627" y="460" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbd_initialize
+</text></switch></g><path d="M 796 302.5 L 854.92 347.15" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 859.11 350.32 L 851.42 348.89 L 854.92 347.15 L 855.64 343.31 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 625 341 L 626.36 403.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 626.48 408.88 L 622.82 401.96 L 626.36 403.63 L 629.82 401.81 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="454" y="264" width="342" height="77" rx="11.55" ry="11.55" fill="#a0a3f2" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 340px; height: 1px; padding-top: 303px; margin-left: 455px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbd_add_endpoint</font><br /></div></div></div></div></div></div></foreignObject><text x="625" y="306" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbd_add_endpoint
+</text></switch></g><path d="M 1607 61 L 1706.34 101.4" fill="none" stroke="#ffffff" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1711.2 103.38 L 1703.4 103.98 L 1706.34 101.4 L 1706.04 97.5 Z" fill="#ffffff" stroke="#ffffff" stroke-miterlimit="10" pointer-events="all"/><path d="M 1316 97 L 1316 61 L 1607 61 L 1607 97" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1316 97 L 1316 307 L 1607 307 L 1607 97" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1316 97 L 1607 97" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="32px"><text x="1461" y="93.5">List</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1320-97-283-30-0)" font-size="24px"><text x="1321.5" y="122.5">class_interface_handler</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1320-127-283-30-0)" font-size="24px"><text x="1321.5" y="152.5">class_endpoint_handler</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1320-157-283-30-0)" font-size="24px"><text x="1321.5" y="182.5">vendor_handler</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1320-187-283-30-0)" font-size="24px"><text x="1321.5" y="212.5">notify_handler</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1320-217-283-30-0)" font-size="24px"><text x="1321.5" y="242.5">hid_report_descriptor</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1320-247-283-30-0)" font-size="24px"><text x="1321.5" y="272.5">hid_report_descriptor_len</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1320-277-283-30-0)" font-size="24px"><text x="1321.5" y="302.5">intf_num</text></g><path d="M 1191 64 L 1313.91 95.51" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1318.99 96.81 L 1311.34 98.46 L 1313.91 95.51 L 1313.08 91.68 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 971 125 L 971 64 L 1191 64 L 1191 125" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 971 125 L 971 190 L 1191 190 L 1191 125" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 971 125 L 1191 125" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="32px"><text x="1080.5" y="109">usbd_intf_head</text></g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 103px; margin-left: 854px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: nowrap;"><font style="font-size: 32px" color="#ff5d17">append into list</font></div></div></div></foreignObject><text x="854" y="107" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">append into list</text></switch></g><rect x="858" y="322" width="204" height="90" rx="13.5" ry="13.5" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 202px; height: 1px; padding-top: 367px; margin-left: 859px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px ; font-size: 32px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px"><span>in_ep_cb[8]</span></font><br /></div><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px"><span><br /></span></font></div><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px"><span>out_ep_cb[8]</span><br /></font></div></div></div></div></div></div></foreignObject><text x="960" y="371" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">in_ep_cb[8]...</text></switch></g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 265px; margin-left: 922px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: nowrap;"><font style="font-size: 32px" color="#ff5d17">fill ep callback</font></div></div></div></foreignObject><text x="922" y="269" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">fill ep callback</text></switch></g><path d="M 775 618 L 833.63 616.65" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 838.88 616.53 L 831.96 620.19 L 833.63 616.65 L 831.8 613.19 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="477" y="572" width="298" height="92" rx="13.8" ry="13.8" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 296px; height: 1px; padding-top: 618px; margin-left: 478px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usb_dc_init</font><br /></div></div></div></div></div></div></foreignObject><text x="626" y="622" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usb_dc_init
+</text></switch></g><path d="M 983.5 662 L 845.66 733.08" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 840.99 735.49 L 845.61 729.17 L 845.66 733.08 L 848.82 735.39 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 983.5 662 L 1119.39 734.99" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1124.02 737.47 L 1116.19 737.24 L 1119.39 734.99 L 1119.5 731.08 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 983.5 662 L 1415.88 738.53" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1421.05 739.45 L 1413.55 741.67 L 1415.88 738.53 L 1414.77 734.78 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 983.5 662 L 548.28 733.96" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 543.1 734.82 L 549.44 730.22 L 548.28 733.96 L 550.58 737.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="840" y="571" width="287" height="91" rx="13.65" ry="13.65" fill="#ff99ff" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 285px; height: 1px; padding-top: 617px; margin-left: 841px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">USBD_IRQHandler</font><br /></div></div></div></div></div></div></foreignObject><text x="983" y="620" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">USBD_IRQHandler
+</text></switch></g><path d="M 840 816 L 818.12 884.93" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 816.53 889.93 L 815.32 882.2 L 818.12 884.93 L 821.99 884.32 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="704" y="736" width="272" height="80" rx="12" ry="12" fill="#ffcccc" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 270px; height: 1px; padding-top: 776px; margin-left: 705px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">SETUP complete intstatus</font></div></div></div></div></div></div></foreignObject><text x="840" y="780" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">SETUP complete intstatus</text></switch></g><path d="M 1125 818 L 1464.28 892.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1469.41 893.76 L 1461.82 895.67 L 1464.28 892.63 L 1463.32 888.84 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="1007" y="738" width="236" height="80" rx="12" ry="12" fill="#ffcccc" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 234px; height: 1px; padding-top: 778px; margin-left: 1008px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><span style="color: rgb(0 , 0 , 0) ; font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace"><font style="font-size: 32px">IN complete intstatus</font></span><br /></div></div></div></div></div></div></foreignObject><text x="1125" y="782" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">IN complete intstatus
+</text></switch></g><path d="M 1391 819 L 2017.61 892.7" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 2022.83 893.31 L 2015.47 895.97 L 2017.61 892.7 L 2016.28 889.02 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="1273" y="739" width="236" height="80" rx="12" ry="12" fill="#ffcccc" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 234px; height: 1px; padding-top: 779px; margin-left: 1274px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><span style="color: rgb(0 , 0 , 0) ; font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace"><font style="font-size: 32px">OUT complete intstatus</font></span><br /></div></div></div></div></div></div></foreignObject><text x="1391" y="783" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">OUT complete intstatus
+</text></switch></g><path d="M 224 969 L 221.72 1034.64" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 221.54 1039.88 L 218.28 1032.77 L 221.72 1034.64 L 225.28 1033.01 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="0" y="889" width="448" height="80" rx="12" ry="12" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 446px; height: 1px; padding-top: 929px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbd_event_reset_handler</font><br /></div></div></div></div></div></div></foreignObject><text x="224" y="933" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbd_event_reset_handler
+</text></switch></g><path d="M 518 816 L 230.18 887.47" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 225.09 888.73 L 231.04 883.65 L 230.18 887.47 L 232.72 890.44 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="372" y="736" width="292" height="80" rx="12" ry="12" fill="#ffcccc" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 290px; height: 1px; padding-top: 776px; margin-left: 373px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">RESET complete intstatus</font></div></div></div></div></div></div></foreignObject><text x="518" y="780" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">RESET complete intstatus</text></switch></g><path d="M 803.5 971 L 795.44 1046.67" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 794.88 1051.89 L 792.14 1044.56 L 795.44 1046.67 L 799.1 1045.3 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="474" y="891" width="659" height="80" rx="12" ry="12" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 657px; height: 1px; padding-top: 931px; margin-left: 475px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbd_event_ep0_setup_complete_handler</font><br /></div></div></div></div></div></div></foreignObject><text x="804" y="935" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbd_event_ep0_setup_complete_handler
+</text></switch></g><path d="M 1470.5 974 L 1875.03 1124.78" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1879.95 1126.61 L 1872.17 1127.44 L 1875.03 1124.78 L 1874.62 1120.89 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="1159" y="894" width="623" height="80" rx="12" ry="12" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 621px; height: 1px; padding-top: 934px; margin-left: 1160px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbd_event_ep_in_complete_handler</font><br /></div></div></div></div></div></div></foreignObject><text x="1471" y="938" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbd_event_ep_in_complete_handler
+</text></switch></g><path d="M 2124.5 972 L 2316.06 1127.98" fill="none" stroke="#ffffff" stroke-miterlimit="10" pointer-events="none"/><path d="M 2320.13 1131.29 L 2312.49 1129.59 L 2316.06 1127.98 L 2316.91 1124.16 Z" fill="#ffffff" stroke="#ffffff" stroke-miterlimit="10" pointer-events="none"/><rect x="1798" y="892" width="653" height="80" rx="12" ry="12" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 651px; height: 1px; padding-top: 932px; margin-left: 1799px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbd_event_ep_out_complete_handler</font><br /></div></div></div></div></div></div></foreignObject><text x="2125" y="936" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbd_event_ep_out_complete_handler
+</text></switch></g><path d="M 407 1081 L 699.25 820.24" fill="none" stroke="#ffff33" stroke-miterlimit="10" pointer-events="none"/><path d="M 703.17 816.74 L 700.27 824.02 L 699.25 820.24 L 695.61 818.79 Z" fill="#ffff33" stroke="#ffff33" stroke-miterlimit="10" pointer-events="none"/><rect x="36" y="1041" width="371" height="80" rx="12" ry="12" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 369px; height: 1px; padding-top: 1081px; margin-left: 37px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px ; font-size: 32px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px"><span>enable ep0</span></font></div><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px"><span><br /></span></font></div><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px"><span>start reading setup</span></font></div></div></div></div></div></div></foreignObject><text x="222" y="1085" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">enable ep0...</text></switch></g><path d="M 790.5 1133 L 337.27 1214.87" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 332.1 1215.8 L 338.37 1211.11 L 337.27 1214.87 L 339.61 1218 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 790.5 1133 L 870.94 1211.55" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 874.7 1215.22 L 867.25 1212.83 L 870.94 1211.55 L 872.14 1207.82 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 790.5 1133 L 1411.69 1216.16" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1416.89 1216.85 L 1409.49 1219.39 L 1411.69 1216.16 L 1410.42 1212.45 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="517" y="1053" width="547" height="80" rx="12" ry="12" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 545px; height: 1px; padding-top: 1093px; margin-left: 518px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbd_setup_request_handler</font><br /></div></div></div></div></div></div></foreignObject><text x="790" y="1097" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbd_setup_request_handler
+</text></switch></g><rect x="59" y="1216" width="544" height="80" rx="12" ry="12" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 542px; height: 1px; padding-top: 1256px; margin-left: 60px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbd_standard_request_handler</font><br /></div></div></div></div></div></div></foreignObject><text x="331" y="1260" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbd_standard_request_handler
+</text></switch></g><path d="M 875.5 1296 L 547.18 1376.48" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 542.09 1377.73 L 548.05 1372.67 L 547.18 1376.48 L 549.72 1379.47 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 875.5 1296 L 1265.27 1378.68" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1270.41 1379.77 L 1262.83 1381.74 L 1265.27 1378.68 L 1264.28 1374.89 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="621" y="1216" width="509" height="80" rx="12" ry="12" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 507px; height: 1px; padding-top: 1256px; margin-left: 622px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbd_class_request_handler</font><br /></div></div></div></div></div></div></foreignObject><text x="876" y="1260" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbd_class_request_handler
+</text></switch></g><rect x="1149" y="1217" width="538" height="80" rx="12" ry="12" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 536px; height: 1px; padding-top: 1257px; margin-left: 1150px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbd_vendor_request_handler</font><br /></div></div></div></div></div></div></foreignObject><text x="1418" y="1261" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbd_vendor_request_handler
+</text></switch></g><rect x="208" y="1378" width="666" height="115" rx="17.25" ry="17.25" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 664px; height: 1px; padding-top: 1436px; margin-left: 209px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbd_class_interface_request_handler</font><br /></div></div></div></div></div></div></foreignObject><text x="541" y="1439" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbd_class_interface_request_handler
+</text></switch></g><rect x="938" y="1380" width="667" height="109" rx="16.35" ry="16.35" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 665px; height: 1px; padding-top: 1435px; margin-left: 939px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbd_class_endpoint_request_handler</font><br /></div></div></div></div></div></div></foreignObject><text x="1271" y="1438" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbd_class_endpoint_request_handler
+</text></switch></g><path d="M 1881 1240 L 1882.06 1370.99" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1882.11 1376.24 L 1878.55 1369.27 L 1882.06 1370.99 L 1885.55 1369.21 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1881 1127 L 2039 1183.5 L 1881 1240 L 1723 1183.5 Z" fill="#ff6666" stroke="#6f0000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 314px; height: 1px; padding-top: 1184px; margin-left: 1724px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 32px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">if ep != 0x80</div></div></div></foreignObject><text x="1881" y="1193" fill="#ffffff" font-family="Helvetica" font-size="32px" text-anchor="middle">if ep != 0x80</text></switch></g><path d="M 2321 1244 L 2322.9 1370.13" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 2322.98 1375.38 L 2319.38 1368.44 L 2322.9 1370.13 L 2326.38 1368.33 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 2321 1132 L 2479 1188 L 2321 1244 L 2163 1188 Z" fill="#ff6666" stroke="#6f0000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 314px; height: 1px; padding-top: 1188px; margin-left: 2164px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 32px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">if ep != 0x00</div></div></div></foreignObject><text x="2321" y="1198" fill="#ffffff" font-family="Helvetica" font-size="32px" text-anchor="middle">if ep != 0x00</text></switch></g><rect x="1719" y="1378" width="394" height="92" rx="13.8" ry="13.8" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 392px; height: 1px; padding-top: 1424px; margin-left: 1720px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><span style="color: rgb(0 , 0 , 0) ; font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace"><font style="font-size: 32px">in_ep_cb[ep &amp; 0x7f]</font></span><br /></div></div></div></div></div></div></foreignObject><text x="1916" y="1428" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">in_ep_cb[ep &amp; 0x7f]
+</text></switch></g><rect x="2130" y="1376.5" width="386" height="95" rx="14.25" ry="14.25" fill="#a0a3f2" stroke="#0087d6" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 384px; height: 1px; padding-top: 1424px; margin-left: 2131px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><span style="color: rgb(0 , 0 , 0) ; font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace"><font style="font-size: 32px">out_ep_cb[ep &amp; 0x7f]</font></span><br /></div></div></div></div></div></div></foreignObject><text x="2323" y="1428" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">out_ep_cb[ep &amp; 0x7f]
+</text></switch></g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 167px; margin-left: 1077px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: nowrap;"><font style="font-size: 32px">NULL</font></div></div></div></foreignObject><text x="1077" y="171" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">NULL</text></switch></g><path d="M 1707 102 L 1707 66 L 1998 66 L 1998 102" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1707 102 L 1707 312 L 1998 312 L 1998 102" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1707 102 L 1998 102" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="32px"><text x="1852" y="98.5">List</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1711-102-283-30-0)" font-size="24px"><text x="1712.5" y="127.5">class_interface_handler</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1711-132-283-30-0)" font-size="24px"><text x="1712.5" y="157.5">class_endpoint_handler</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1711-162-283-30-0)" font-size="24px"><text x="1712.5" y="187.5">vendor_handler</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1711-192-283-30-0)" font-size="24px"><text x="1712.5" y="217.5">notify_handler</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1711-222-283-30-0)" font-size="24px"><text x="1712.5" y="247.5">hid_report_descriptor</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1711-252-283-30-0)" font-size="24px"><text x="1712.5" y="277.5">hid_report_descriptor_len</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1711-282-283-30-0)" font-size="24px"><text x="1712.5" y="307.5">intf_num</text></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg> \ No newline at end of file
diff --git a/docs/source/usbhost.svg b/docs/source/usbhost.svg
new file mode 100644
index 00000000..b7d537b5
--- /dev/null
+++ b/docs/source/usbhost.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1391px" height="1471px" viewBox="-0.5 -0.5 1391 1471" content="&lt;mxfile&gt;&lt;diagram id=&quot;pV-jT4rfoVRAg6tzdvVZ&quot; name=&quot;第 1 页&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><rect x="180" y="0" width="270" height="60" rx="9" ry="9" fill="#a0a3f2" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 30px; margin-left: 181px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><font color="#000000" style="font-size: 24px">usbh_initialize</font></div></div></div></div></foreignObject><text x="315" y="34" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbh_initialize</text></switch></g><path d="M 315 60 L 315 103.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 315 108.88 L 311.5 101.88 L 315 103.63 L 318.5 101.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="180" y="110" width="270" height="60" rx="9" ry="9" fill="#a0a3f2" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 140px; margin-left: 181px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><font color="#000000" style="font-size: 24px">usbh_hub_initialize</font></div></div></div></div></div></foreignObject><text x="315" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbh_hub_initialize</text></switch></g><rect x="0" y="230" width="290" height="60" rx="9" ry="9" fill="#a0a3f2" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 288px; height: 1px; padding-top: 260px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><font color="#000000" style="font-size: 24px">usbh_roothub_register</font></div></div></div></div></div></div></foreignObject><text x="145" y="264" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbh_roothub_register</text></switch></g><path d="M 515 290 L 293.42 426.66" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 288.95 429.41 L 293.07 422.76 L 293.42 426.66 L 296.75 428.72 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 515 290 L 714.74 426.41" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 719.08 429.37 L 711.32 428.31 L 714.74 426.41 L 715.27 422.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="360" y="230" width="310" height="60" rx="9" ry="9" fill="#a0a3f2" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 260px; margin-left: 361px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><font color="#000000" style="font-size: 24px">create usbh_hub_thread</font></div></div></div></div></div></div></foreignObject><text x="515" y="264" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">create usbh_hub_thread</text></switch></g><rect x="170" y="430" width="236" height="80" rx="12" ry="12" fill="#a0a3f2" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 234px; height: 1px; padding-top: 470px; margin-left: 171px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><font color="#000000" style="font-size: 24px">usb_hc_init</font></div></div></div></div></div></div></foreignObject><text x="288" y="474" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usb_hc_init</text></switch></g><rect x="880" y="270" width="370" height="80" rx="12" ry="12" fill="#ffcce6" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 368px; height: 1px; padding-top: 310px; margin-left: 881px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 24px">usbh_roothub_thread_wakeup</font><br /></div></div></div></div></div></div></foreignObject><text x="1065" y="314" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbh_roothub_thread_wakeup
+</text></switch></g><rect x="880" y="550" width="360" height="80" rx="12" ry="12" fill="#ffcce6" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 358px; height: 1px; padding-top: 590px; margin-left: 881px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 24px">hub_int_complete_callback</font><br /></div></div></div></div></div></div></foreignObject><text x="1060" y="594" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">hub_int_complete_callback
+</text></switch></g><rect x="940" y="490" width="140" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 505px; margin-left: 1010px;"><div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 36px" color="#4dff8e">wakeup</font></div></div></div></foreignObject><text x="1010" y="509" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">wakeup</text></switch></g><rect x="940" y="400" width="140" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 415px; margin-left: 1010px;"><div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 36px" color="#4dff8e">wakeup</font></div></div></div></foreignObject><text x="1010" y="419" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">wakeup</text></switch></g><path d="M 720 770 L 720 903.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 720 908.88 L 716.5 901.88 L 720 903.63 L 723.5 901.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="585" y="670" width="270" height="100" rx="15" ry="15" fill="#a0a3f2" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 720px; margin-left: 586px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbh_enumerate</font><br /></div></div></div></div></div></div></foreignObject><text x="720" y="724" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbh_enumerate
+</text></switch></g><rect x="480" y="580" width="230" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 600px; margin-left: 595px;"><div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 24px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 32px" color="#ff5d17">search all ports</font></div></div></div></foreignObject><text x="595" y="607" fill="#000000" font-family="Helvetica" font-size="24px" text-anchor="middle">search all ports</text></switch></g><path d="M 315 170 L 151 227.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 146.05 229.63 L 151.49 224 L 151 227.88 L 153.82 230.6 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 315 170 L 508.9 228.17" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 513.93 229.68 L 506.22 231.02 L 508.9 228.17 L 508.23 224.31 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1060 550 L 876.21 508.89" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 871.09 507.74 L 878.69 505.86 L 876.21 508.89 L 877.16 512.69 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1052.05 351.2 L 875.84 427.47" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 871.03 429.56 L 876.06 423.56 L 875.84 427.47 L 878.84 429.99 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 720 507.5 L 720 663.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 720 668.88 L 716.5 661.88 L 720 663.63 L 723.5 661.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="570" y="430" width="300" height="77.5" rx="11.63" ry="11.63" fill="#ff66ff" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 469px; margin-left: 571px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px">usbh_hub_events</font><br /></div></div></div></div></div></div></foreignObject><text x="720" y="472" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbh_hub_events
+</text></switch></g><path d="M 855 1180 L 1003.64 1184.79" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1008.88 1184.96 L 1001.77 1188.24 L 1003.64 1184.79 L 1002 1181.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 720 1230 L 720 1363.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 720 1368.88 L 716.5 1361.88 L 720 1363.63 L 723.5 1361.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="585" y="1130" width="270" height="100" rx="15" ry="15" fill="#ffff99" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1180px; margin-left: 586px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace"><span style="font-size: 32px">CLASS_CONNECT</span></font><br /></div></div></div></div></div></div></foreignObject><text x="720" y="1184" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">CLASS_CONNECT
+</text></switch></g><rect x="320" y="830" width="390" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 850px; margin-left: 515px;"><div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 24px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 32px" color="#ff5d17">search all interface drivers</font></div></div></div></foreignObject><text x="515" y="857" fill="#000000" font-family="Helvetica" font-size="24px" text-anchor="middle">search all interface drivers</text></switch></g><path d="M 720 1010 L 720 1123.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 720 1128.88 L 716.5 1121.88 L 720 1123.63 L 723.5 1121.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="500" y="910" width="440" height="100" rx="15" ry="15" fill="#a0a3f2" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 438px; height: 1px; padding-top: 960px; margin-left: 501px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace"><span style="font-size: 32px">usbh_find_class_driver</span></font><br /></div></div></div></div></div></div></foreignObject><text x="720" y="964" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbh_find_class_driver
+</text></switch></g><path d="M 1200 1120 L 1200 1016.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1200 1011.12 L 1203.5 1018.12 L 1200 1016.37 L 1196.5 1018.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1105 1152.5 L 1190.54 1123.24 Q 1200 1120 1209.46 1123.24 L 1380.54 1181.76 Q 1390 1185 1380.54 1188.24 L 1209.46 1246.76 Q 1200 1250 1190.54 1246.76 L 1019.46 1188.24 Q 1010 1185 1019.46 1181.76 Z" fill="#ff6666" stroke="#0087d6" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 1185px; margin-left: 1011px;"><div data-drawio-colors="color: #FF5D17; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 32px; font-family: Helvetica; color: rgb(255, 93, 23); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font color="#0d0d0d" style="font-size: 32px">if hub class?</font></div></div></div></foreignObject><text x="1200" y="1195" fill="#FF5D17" font-family="Helvetica" font-size="32px" text-anchor="middle">if hub class?</text></switch></g><path d="M 1200 890 L 1063.02 635.61" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1060.53 630.98 L 1066.93 635.49 L 1063.02 635.61 L 1060.77 638.81 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1020" y="890" width="360" height="120" rx="18" ry="18" fill="#a0a3f2" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 358px; height: 1px; padding-top: 950px; margin-left: 1021px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px ; font-size: 32px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px"><span>usbh_int_urb_fill</span></font><br /></div><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px"><span><br /></span></font></div><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px"><span><br /></span></font></div><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace" style="font-size: 32px"><span>usbh_submit_urb</span><br /></font></div></div></div></div></div></div></foreignObject><text x="1200" y="954" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">usbh_int_urb_fill...</text></switch></g><rect x="585" y="1370" width="270" height="100" rx="15" ry="15" fill="#a0a3f2" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1420px; margin-left: 586px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="line-height: 19px"><div style="line-height: 19px"><div style="line-height: 19px"><font color="#000000" face="consolas, courier new, monospace"><span style="font-size: 32px">Class Register</span></font><br /></div></div></div></div></div></div></foreignObject><text x="720" y="1424" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Class Register
+</text></switch></g><path d="M 1065.83 167 L 1065.27 263.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1065.24 268.88 L 1061.78 261.86 L 1065.27 263.63 L 1068.78 261.9 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="921" y="107" width="290" height="60" rx="9" ry="9" fill="#a0a3f2" stroke="#0087d6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 288px; height: 1px; padding-top: 137px; margin-left: 922px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><div style="font-family: &quot;consolas&quot; , &quot;courier new&quot; , monospace ; line-height: 19px"><span style="color: rgb(0 , 0 , 0) ; font-size: 24px">USBH_IRQHandler</span><br /></div></div></div></div></div></div></foreignObject><text x="1066" y="141" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">USBH_IRQHandler
+</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg> \ No newline at end of file