Deploying to gh-pages from @ cherry-embedded/CherryUSB@7b6b09582a 🚀

This commit is contained in:
sakumisu
2025-12-15 05:49:48 +00:00
parent 3b16db5f44
commit eb0f021128
3 changed files with 202 additions and 6 deletions

View File

@@ -1,8 +1,11 @@
usbh_serial
===============
Serial 框架当前支持 cdc acm, ftdi, cp210x, ch34x, pl2303gsm 驱动。当前支持两种使用方式,
一种是使用源生 CherryUSB usbhost serial API 进行操作,另一种是基于平台封装的 API 操作,比如 rt-thread device API。nuttx posix API。
Serial 框架当前支持 cdc acm, ftdi, cp210x, ch34x, pl2303gsm 驱动。
.. figure:: usbh_serial.png
当前支持两种使用方式,一种是使用源生 CherryUSB usbhost serial API 进行操作,另一种是基于平台封装的 API 操作,比如 rt-thread device APInuttx posix API。
下面演示的是使用 CherryUSB usbhost serial API 进行串口回环测试,并且使用阻塞发送,异步读取的方式:
@@ -93,4 +96,100 @@ Serial 框架当前支持 cdc acm, ftdi, cp210x, ch34x, pl2303gsm 驱动。
- 纯 USB 设备 + 未启动波特率,这种情况下可以使用 `usbh_serial_cdc_write_async` 和 `usbh_serial_cdc_read_async` 进行异步收发数据。阻塞则可以用 `usbh_serial_write` ,不可以使用 `usbh_serial_read`。
- 纯 USB 设备 + 启动波特率,同 1但是速率打折扣因为多了一层 ringbuf。此时也不可以使用 `usbh_serial_cdc_write_async` 和 `usbh_serial_cdc_read_async`。 **如果是 GSM 设备请使用第一种场景**。
- 纯 USB 设备 + 启动波特率,同 1但是速率打折扣因为多了一层 ringbuf。此时也不可以使用 `usbh_serial_cdc_write_async` 和 `usbh_serial_cdc_read_async`。 **如果是 GSM 设备请使用第一种场景**。
.. code-block:: C
[I/usbh_hub] New full-speed device on Bus 0, Hub 1, Port 1 connected
[I/usbh_core] New device found,idVendor:10c4,idProduct:ea60,bcdDevice:0100
[I/usbh_core] The device has 1 bNumConfigurations
[I/usbh_core] The device has 1 interfaces
[I/usbh_core] Enumeration success, start loading class driver
[I/usbh_core] Loading cp210x class driver on interface 0
[I/usbh_cp210x] chip partnum: 0x02
[I/usbh_cp210x] ulAmountInInQueue: 0, ulAmountInOutQueue: 0
[I/usbh_serial] Ep=81 Attr=02 Mps=64 Interval=00 Mult=00
[I/usbh_serial] Ep=01 Attr=02 Mps=64 Interval=00 Mult=00
[I/usbh_serial] Register Serial Class: /dev/ttyUSB0 (cp210x)
start serial loopback test, len: 1024
send over
receive over
serial loopback test success
[I/usbh_serial] Unregister Serial Class: /dev/ttyUSB0 (cp210x)
[I/usbh_core] Device on Bus 0, Hub 1, Port 1 disconnected
[I/usbh_hub] New high-speed device on Bus 0, Hub 1, Port 1 connected
[I/usbh_core] New device found,idVendor:0403,idProduct:6010,bcdDevice:0700
[I/usbh_core] The device has 1 bNumConfigurations
[I/usbh_core] The device has 2 interfaces
[I/usbh_core] Enumeration success, start loading class driver
[I/usbh_core] Loading ftdi class driver on interface 0
[I/usbh_ftdi] chip name: FT2232H
[I/usbh_serial] Ep=81 Attr=02 Mps=512 Interval=00 Mult=00
[I/usbh_serial] Ep=02 Attr=02 Mps=512 Interval=00 Mult=00
[I/usbh_serial] Register Serial Class: /dev/ttyUSB0 (ftdi)
[I/usbh_core] Loading ftdi class driver on interface 1
[I/usbh_ftdi] chip name: FT2232H
[I/usbh_serial] Ep=83 Attr=02 Mps=512 Interval=00 Mult=00
[I/usbh_serial] Ep=04 Attr=02 Mps=512 Interval=00 Mult=00
[I/usbh_serial] Register Serial Class: /dev/ttyUSB1 (ftdi)
start serial loopback test, len: 1024
send over
receive over
serial loopback test success
[I/usbh_serial] Unregister Serial Class: /dev/ttyUSB0 (ftdi)
[I/usbh_serial] Unregister Serial Class: /dev/ttyUSB1 (ftdi)
[I/usbh_core] Device on Bus 0, Hub 1, Port 1 disconnected
[I/usbh_hub] New full-speed device on Bus 0, Hub 1, Port 1 connected
[I/usbh_core] New device found,idVendor:067b,idProduct:2303,bcdDevice:0300
[I/usbh_core] The device has 1 bNumConfigurations
[I/usbh_core] The device has 1 interfaces
[I/usbh_core] Enumeration success, start loading class driver
[I/usbh_core] Loading pl2303 class driver on interface 0
[I/usbh_pl2303] Ep=81 Attr=03 Mps=10 Interval=01 Mult=00
[I/usbh_pl2303] chip type: PL2303HX
[I/usbh_serial] Ep=02 Attr=02 Mps=64 Interval=00 Mult=00
[I/usbh_serial] Ep=83 Attr=02 Mps=64 Interval=00 Mult=00
[I/usbh_serial] Register Serial Class: /dev/ttyUSB0 (pl2303)
start serial loopback test, len: 1024
send over
receive over
serial loopback test success
[I/usbh_serial] Unregister Serial Class: /dev/ttyUSB0 (pl2303)
[I/usbh_core] Device on Bus 0, Hub 1, Port 1 disconnected
[W/usbh_hub] Failed to enable port 1
[I/usbh_hub] New full-speed device on Bus 0, Hub 1, Port 1 connected
[I/usbh_core] New device found,idVendor:1a86,idProduct:7523,bcdDevice:0264
[I/usbh_core] The device has 1 bNumConfigurations
[I/usbh_core] The device has 1 interfaces
[I/usbh_core] Enumeration success, start loading class driver
[I/usbh_core] Loading ch34x class driver on interface 0
[I/usbh_ch43x] Ep=81 Attr=03 Mps=8 Interval=01 Mult=00
[I/usbh_ch43x] chip version: 0x31
[I/usbh_serial] Ep=82 Attr=02 Mps=32 Interval=00 Mult=00
[I/usbh_serial] Ep=02 Attr=02 Mps=32 Interval=00 Mult=00
[I/usbh_serial] Register Serial Class: /dev/ttyUSB0 (ch34x)
start serial loopback test, len: 1024
send over
receive over
serial loopback test success
[I/usbh_serial] Unregister Serial Class: /dev/ttyUSB0 (ch34x)
[I/usbh_core] Device on Bus 0, Hub 1, Port 1 disconnected
[I/usbh_hub] New full-speed device on Bus 0, Hub 1, Port 1 connected
[I/usbh_core] New device found,idVendor:42bf,idProduct:b210,bcdDevice:0217
[I/usbh_core] The device has 1 bNumConfigurations
[I/usbh_core] The device has 3 interfaces
[I/usbh_core] Enumeration success, start loading class driver
[E/usbh_core] Do not support Class:0xff, Subclass:0x01, Protocl:0x00 on interface 0
[I/usbh_core] Loading cdc_acm class driver on interface 1
[I/usbh_cdc_acm] Ep=85 Attr=03 Mps=64 Interval=00 Mult=00
[I/usbh_serial] Ep=04 Attr=02 Mps=64 Interval=00 Mult=00
[I/usbh_serial] Ep=83 Attr=02 Mps=64 Interval=00 Mult=00
[I/usbh_serial] Register Serial Class: /dev/ttyACM0 (cdc_acm)
[I/usbh_core] Loading cdc_data class driver on interface 2
start serial loopback test, len: 1024
send over
receive over
serial loopback test success
[I/usbh_serial] Unregister Serial Class: /dev/ttyACM0 (cdc_acm)
[I/usbh_core] Device on Bus 0, Hub 1, Port 1 disconnected

View File

@@ -159,8 +159,11 @@
<section id="usbh-serial">
<h1>usbh_serial<a class="headerlink" href="#usbh-serial" title="Link to this heading"></a></h1>
<p>Serial 框架当前支持 cdc acm, ftdi, cp210x, ch34x, pl2303gsm 驱动。当前支持两种使用方式,
一种是使用源生 CherryUSB usbhost serial API 进行操作,另一种是基于平台封装的 API 操作,比如 rt-thread device API。nuttx posix API。</p>
<p>Serial 框架当前支持 cdc acm, ftdi, cp210x, ch34x, pl2303gsm 驱动。</p>
<figure class="align-default">
<img alt="demo/usbh_serial.png" src="demo/usbh_serial.png" />
</figure>
<p>当前支持两种使用方式,一种是使用源生 CherryUSB usbhost serial API 进行操作,另一种是基于平台封装的 API 操作,比如 rt-thread device APInuttx posix API。</p>
<p>下面演示的是使用 CherryUSB usbhost serial API 进行串口回环测试,并且使用阻塞发送,异步读取的方式:</p>
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">usbh_serial</span><span class="w"> </span><span class="o">*</span><span class="n">serial</span><span class="p">;</span>
@@ -250,6 +253,100 @@
<li><p>纯 USB 设备 + 未启动波特率,这种情况下可以使用 <cite>usbh_serial_cdc_write_async</cite><cite>usbh_serial_cdc_read_async</cite> 进行异步收发数据。阻塞则可以用 <cite>usbh_serial_write</cite> ,不可以使用 <cite>usbh_serial_read</cite></p></li>
<li><p>纯 USB 设备 + 启动波特率,同 1但是速率打折扣因为多了一层 ringbuf。此时也不可以使用 <cite>usbh_serial_cdc_write_async</cite><cite>usbh_serial_cdc_read_async</cite><strong>如果是 GSM 设备请使用第一种场景</strong></p></li>
</ul>
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_hub</span><span class="p">]</span><span class="w"> </span><span class="n">New</span><span class="w"> </span><span class="n">full</span><span class="o">-</span><span class="n">speed</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">Bus</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">Hub</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">Port</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">connected</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">New</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">found</span><span class="p">,</span><span class="n">idVendor</span><span class="o">:</span><span class="mi">10</span><span class="n">c4</span><span class="p">,</span><span class="n">idProduct</span><span class="o">:</span><span class="n">ea60</span><span class="p">,</span><span class="n">bcdDevice</span><span class="o">:</span><span class="mo">0100</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">has</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">bNumConfigurations</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">has</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">interfaces</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Enumeration</span><span class="w"> </span><span class="n">success</span><span class="p">,</span><span class="w"> </span><span class="n">start</span><span class="w"> </span><span class="n">loading</span><span class="w"> </span><span class="n">class</span><span class="w"> </span><span class="n">driver</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Loading</span><span class="w"> </span><span class="n">cp210x</span><span class="w"> </span><span class="n">class</span><span class="w"> </span><span class="n">driver</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">interface</span><span class="w"> </span><span class="mi">0</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_cp210x</span><span class="p">]</span><span class="w"> </span><span class="n">chip</span><span class="w"> </span><span class="n">partnum</span><span class="o">:</span><span class="w"> </span><span class="mh">0x02</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_cp210x</span><span class="p">]</span><span class="w"> </span><span class="n">ulAmountInInQueue</span><span class="o">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">ulAmountInOutQueue</span><span class="o">:</span><span class="w"> </span><span class="mi">0</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mi">81</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">64</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">00</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mo">01</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">64</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">00</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Register</span><span class="w"> </span><span class="n">Serial</span><span class="w"> </span><span class="n">Class</span><span class="o">:</span><span class="w"> </span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">ttyUSB0</span><span class="w"> </span><span class="p">(</span><span class="n">cp210x</span><span class="p">)</span>
<span class="n">start</span><span class="w"> </span><span class="n">serial</span><span class="w"> </span><span class="n">loopback</span><span class="w"> </span><span class="n">test</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="o">:</span><span class="w"> </span><span class="mi">1024</span>
<span class="n">send</span><span class="w"> </span><span class="n">over</span>
<span class="n">receive</span><span class="w"> </span><span class="n">over</span>
<span class="n">serial</span><span class="w"> </span><span class="n">loopback</span><span class="w"> </span><span class="n">test</span><span class="w"> </span><span class="n">success</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Unregister</span><span class="w"> </span><span class="n">Serial</span><span class="w"> </span><span class="n">Class</span><span class="o">:</span><span class="w"> </span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">ttyUSB0</span><span class="w"> </span><span class="p">(</span><span class="n">cp210x</span><span class="p">)</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Device</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">Bus</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">Hub</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">Port</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">disconnected</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_hub</span><span class="p">]</span><span class="w"> </span><span class="n">New</span><span class="w"> </span><span class="n">high</span><span class="o">-</span><span class="n">speed</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">Bus</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">Hub</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">Port</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">connected</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">New</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">found</span><span class="p">,</span><span class="n">idVendor</span><span class="o">:</span><span class="mo">0403</span><span class="p">,</span><span class="n">idProduct</span><span class="o">:</span><span class="mi">6010</span><span class="p">,</span><span class="n">bcdDevice</span><span class="o">:</span><span class="mo">0700</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">has</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">bNumConfigurations</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">has</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="n">interfaces</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Enumeration</span><span class="w"> </span><span class="n">success</span><span class="p">,</span><span class="w"> </span><span class="n">start</span><span class="w"> </span><span class="n">loading</span><span class="w"> </span><span class="n">class</span><span class="w"> </span><span class="n">driver</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Loading</span><span class="w"> </span><span class="n">ftdi</span><span class="w"> </span><span class="n">class</span><span class="w"> </span><span class="n">driver</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">interface</span><span class="w"> </span><span class="mi">0</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_ftdi</span><span class="p">]</span><span class="w"> </span><span class="n">chip</span><span class="w"> </span><span class="n">name</span><span class="o">:</span><span class="w"> </span><span class="n">FT2232H</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mi">81</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">512</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">00</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">512</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">00</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Register</span><span class="w"> </span><span class="n">Serial</span><span class="w"> </span><span class="n">Class</span><span class="o">:</span><span class="w"> </span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">ttyUSB0</span><span class="w"> </span><span class="p">(</span><span class="n">ftdi</span><span class="p">)</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Loading</span><span class="w"> </span><span class="n">ftdi</span><span class="w"> </span><span class="n">class</span><span class="w"> </span><span class="n">driver</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">interface</span><span class="w"> </span><span class="mi">1</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_ftdi</span><span class="p">]</span><span class="w"> </span><span class="n">chip</span><span class="w"> </span><span class="n">name</span><span class="o">:</span><span class="w"> </span><span class="n">FT2232H</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mi">83</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">512</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">00</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mo">04</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">512</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">00</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Register</span><span class="w"> </span><span class="n">Serial</span><span class="w"> </span><span class="n">Class</span><span class="o">:</span><span class="w"> </span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">ttyUSB1</span><span class="w"> </span><span class="p">(</span><span class="n">ftdi</span><span class="p">)</span>
<span class="n">start</span><span class="w"> </span><span class="n">serial</span><span class="w"> </span><span class="n">loopback</span><span class="w"> </span><span class="n">test</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="o">:</span><span class="w"> </span><span class="mi">1024</span>
<span class="n">send</span><span class="w"> </span><span class="n">over</span>
<span class="n">receive</span><span class="w"> </span><span class="n">over</span>
<span class="n">serial</span><span class="w"> </span><span class="n">loopback</span><span class="w"> </span><span class="n">test</span><span class="w"> </span><span class="n">success</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Unregister</span><span class="w"> </span><span class="n">Serial</span><span class="w"> </span><span class="n">Class</span><span class="o">:</span><span class="w"> </span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">ttyUSB0</span><span class="w"> </span><span class="p">(</span><span class="n">ftdi</span><span class="p">)</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Unregister</span><span class="w"> </span><span class="n">Serial</span><span class="w"> </span><span class="n">Class</span><span class="o">:</span><span class="w"> </span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">ttyUSB1</span><span class="w"> </span><span class="p">(</span><span class="n">ftdi</span><span class="p">)</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Device</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">Bus</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">Hub</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">Port</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">disconnected</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_hub</span><span class="p">]</span><span class="w"> </span><span class="n">New</span><span class="w"> </span><span class="n">full</span><span class="o">-</span><span class="n">speed</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">Bus</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">Hub</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">Port</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">connected</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">New</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">found</span><span class="p">,</span><span class="n">idVendor</span><span class="o">:</span><span class="mo">067</span><span class="n">b</span><span class="p">,</span><span class="n">idProduct</span><span class="o">:</span><span class="mi">2303</span><span class="p">,</span><span class="n">bcdDevice</span><span class="o">:</span><span class="mo">0300</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">has</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">bNumConfigurations</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">has</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">interfaces</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Enumeration</span><span class="w"> </span><span class="n">success</span><span class="p">,</span><span class="w"> </span><span class="n">start</span><span class="w"> </span><span class="n">loading</span><span class="w"> </span><span class="n">class</span><span class="w"> </span><span class="n">driver</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Loading</span><span class="w"> </span><span class="n">pl2303</span><span class="w"> </span><span class="n">class</span><span class="w"> </span><span class="n">driver</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">interface</span><span class="w"> </span><span class="mi">0</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_pl2303</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mi">81</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">03</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">10</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">01</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_pl2303</span><span class="p">]</span><span class="w"> </span><span class="n">chip</span><span class="w"> </span><span class="n">type</span><span class="o">:</span><span class="w"> </span><span class="n">PL2303HX</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">64</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">00</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mi">83</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">64</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">00</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Register</span><span class="w"> </span><span class="n">Serial</span><span class="w"> </span><span class="n">Class</span><span class="o">:</span><span class="w"> </span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">ttyUSB0</span><span class="w"> </span><span class="p">(</span><span class="n">pl2303</span><span class="p">)</span>
<span class="n">start</span><span class="w"> </span><span class="n">serial</span><span class="w"> </span><span class="n">loopback</span><span class="w"> </span><span class="n">test</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="o">:</span><span class="w"> </span><span class="mi">1024</span>
<span class="n">send</span><span class="w"> </span><span class="n">over</span>
<span class="n">receive</span><span class="w"> </span><span class="n">over</span>
<span class="n">serial</span><span class="w"> </span><span class="n">loopback</span><span class="w"> </span><span class="n">test</span><span class="w"> </span><span class="n">success</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Unregister</span><span class="w"> </span><span class="n">Serial</span><span class="w"> </span><span class="n">Class</span><span class="o">:</span><span class="w"> </span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">ttyUSB0</span><span class="w"> </span><span class="p">(</span><span class="n">pl2303</span><span class="p">)</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Device</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">Bus</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">Hub</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">Port</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">disconnected</span>
<span class="p">[</span><span class="n">W</span><span class="o">/</span><span class="n">usbh_hub</span><span class="p">]</span><span class="w"> </span><span class="n">Failed</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">enable</span><span class="w"> </span><span class="n">port</span><span class="w"> </span><span class="mi">1</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_hub</span><span class="p">]</span><span class="w"> </span><span class="n">New</span><span class="w"> </span><span class="n">full</span><span class="o">-</span><span class="n">speed</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">Bus</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">Hub</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">Port</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">connected</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">New</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">found</span><span class="p">,</span><span class="n">idVendor</span><span class="o">:</span><span class="mi">1</span><span class="n">a86</span><span class="p">,</span><span class="n">idProduct</span><span class="o">:</span><span class="mi">7523</span><span class="p">,</span><span class="n">bcdDevice</span><span class="o">:</span><span class="mo">0264</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">has</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">bNumConfigurations</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">has</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">interfaces</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Enumeration</span><span class="w"> </span><span class="n">success</span><span class="p">,</span><span class="w"> </span><span class="n">start</span><span class="w"> </span><span class="n">loading</span><span class="w"> </span><span class="n">class</span><span class="w"> </span><span class="n">driver</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Loading</span><span class="w"> </span><span class="n">ch34x</span><span class="w"> </span><span class="n">class</span><span class="w"> </span><span class="n">driver</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">interface</span><span class="w"> </span><span class="mi">0</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_ch43x</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mi">81</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">03</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">8</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">01</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_ch43x</span><span class="p">]</span><span class="w"> </span><span class="n">chip</span><span class="w"> </span><span class="n">version</span><span class="o">:</span><span class="w"> </span><span class="mh">0x31</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mi">82</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">32</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">00</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">32</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">00</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Register</span><span class="w"> </span><span class="n">Serial</span><span class="w"> </span><span class="n">Class</span><span class="o">:</span><span class="w"> </span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">ttyUSB0</span><span class="w"> </span><span class="p">(</span><span class="n">ch34x</span><span class="p">)</span>
<span class="n">start</span><span class="w"> </span><span class="n">serial</span><span class="w"> </span><span class="n">loopback</span><span class="w"> </span><span class="n">test</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="o">:</span><span class="w"> </span><span class="mi">1024</span>
<span class="n">send</span><span class="w"> </span><span class="n">over</span>
<span class="n">receive</span><span class="w"> </span><span class="n">over</span>
<span class="n">serial</span><span class="w"> </span><span class="n">loopback</span><span class="w"> </span><span class="n">test</span><span class="w"> </span><span class="n">success</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Unregister</span><span class="w"> </span><span class="n">Serial</span><span class="w"> </span><span class="n">Class</span><span class="o">:</span><span class="w"> </span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">ttyUSB0</span><span class="w"> </span><span class="p">(</span><span class="n">ch34x</span><span class="p">)</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Device</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">Bus</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">Hub</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">Port</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">disconnected</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_hub</span><span class="p">]</span><span class="w"> </span><span class="n">New</span><span class="w"> </span><span class="n">full</span><span class="o">-</span><span class="n">speed</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">Bus</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">Hub</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">Port</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">connected</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">New</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">found</span><span class="p">,</span><span class="n">idVendor</span><span class="o">:</span><span class="mi">42</span><span class="n">bf</span><span class="p">,</span><span class="n">idProduct</span><span class="o">:</span><span class="n">b210</span><span class="p">,</span><span class="n">bcdDevice</span><span class="o">:</span><span class="mo">0217</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">has</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">bNumConfigurations</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">has</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="n">interfaces</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Enumeration</span><span class="w"> </span><span class="n">success</span><span class="p">,</span><span class="w"> </span><span class="n">start</span><span class="w"> </span><span class="n">loading</span><span class="w"> </span><span class="n">class</span><span class="w"> </span><span class="n">driver</span>
<span class="p">[</span><span class="n">E</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Do</span><span class="w"> </span><span class="n">not</span><span class="w"> </span><span class="n">support</span><span class="w"> </span><span class="n">Class</span><span class="o">:</span><span class="mh">0xff</span><span class="p">,</span><span class="w"> </span><span class="n">Subclass</span><span class="o">:</span><span class="mh">0x01</span><span class="p">,</span><span class="w"> </span><span class="n">Protocl</span><span class="o">:</span><span class="mh">0x00</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">interface</span><span class="w"> </span><span class="mi">0</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Loading</span><span class="w"> </span><span class="n">cdc_acm</span><span class="w"> </span><span class="n">class</span><span class="w"> </span><span class="n">driver</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">interface</span><span class="w"> </span><span class="mi">1</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_cdc_acm</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mi">85</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">03</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">64</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">00</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mo">04</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">64</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">00</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Ep</span><span class="o">=</span><span class="mi">83</span><span class="w"> </span><span class="n">Attr</span><span class="o">=</span><span class="mo">02</span><span class="w"> </span><span class="n">Mps</span><span class="o">=</span><span class="mi">64</span><span class="w"> </span><span class="n">Interval</span><span class="o">=</span><span class="mo">00</span><span class="w"> </span><span class="n">Mult</span><span class="o">=</span><span class="mo">00</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Register</span><span class="w"> </span><span class="n">Serial</span><span class="w"> </span><span class="n">Class</span><span class="o">:</span><span class="w"> </span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">ttyACM0</span><span class="w"> </span><span class="p">(</span><span class="n">cdc_acm</span><span class="p">)</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Loading</span><span class="w"> </span><span class="n">cdc_data</span><span class="w"> </span><span class="n">class</span><span class="w"> </span><span class="n">driver</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">interface</span><span class="w"> </span><span class="mi">2</span>
<span class="n">start</span><span class="w"> </span><span class="n">serial</span><span class="w"> </span><span class="n">loopback</span><span class="w"> </span><span class="n">test</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="o">:</span><span class="w"> </span><span class="mi">1024</span>
<span class="n">send</span><span class="w"> </span><span class="n">over</span>
<span class="n">receive</span><span class="w"> </span><span class="n">over</span>
<span class="n">serial</span><span class="w"> </span><span class="n">loopback</span><span class="w"> </span><span class="n">test</span><span class="w"> </span><span class="n">success</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_serial</span><span class="p">]</span><span class="w"> </span><span class="n">Unregister</span><span class="w"> </span><span class="n">Serial</span><span class="w"> </span><span class="n">Class</span><span class="o">:</span><span class="w"> </span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">ttyACM0</span><span class="w"> </span><span class="p">(</span><span class="n">cdc_acm</span><span class="p">)</span>
<span class="p">[</span><span class="n">I</span><span class="o">/</span><span class="n">usbh_core</span><span class="p">]</span><span class="w"> </span><span class="n">Device</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">Bus</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">Hub</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">Port</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">disconnected</span>
</pre></div>
</div>
</section>

File diff suppressed because one or more lines are too long