Explorar o código

update: update host demo macros without value

Signed-off-by: sakumisu <1203593632@qq.com>
sakumisu hai 3 semanas
pai
achega
3a1f3c3ba4

+ 6 - 6
Kconfig

@@ -438,19 +438,19 @@ if CHERRYUSB
 
         menu "Select USB host template, please select class driver first"
             config TEST_USBH_SERIAL
-                int
+                bool
                 prompt "demo for test serial"
-                default 0
+                default n
                 depends on CHERRYUSB_HOST_CDC_ACM || CHERRYUSB_HOST_FTDI || CHERRYUSB_HOST_CH34X || CHERRYUSB_HOST_CP210X || CHERRYUSB_HOST_PL2303
             config TEST_USBH_HID
-                int
+                bool
                 prompt "demo for test hid"
-                default 0
+                default n
                 depends on CHERRYUSB_HOST_HID
             config TEST_USBH_MSC
-                int
+                bool
                 prompt "demo for test msc"
-                default 0
+                default n
                 depends on CHERRYUSB_HOST_MSC
         endmenu
     endif

+ 7 - 7
Kconfig.rtt

@@ -465,19 +465,19 @@ if RT_USING_CHERRYUSB
 
         menu "Select USB host template, please select class driver first"
             config CONFIG_TEST_USBH_SERIAL
-                int
-                prompt "demo for test serial, cannot enable this demo, we have used serial framework instead"
-                default 0
+                bool
+                prompt "demo for test serial, cannot enable this demo, we have used rt-device framework instead"
+                default n
                 depends on RT_CHERRYUSB_HOST_CDC_ACM || RT_CHERRYUSB_HOST_FTDI || RT_CHERRYUSB_HOST_CH34X || RT_CHERRYUSB_HOST_CP210X || RT_CHERRYUSB_HOST_PL2303
             config CONFIG_TEST_USBH_HID
-                int
+                bool
                 prompt "demo for test hid"
-                default 0
+                default n
                 depends on RT_CHERRYUSB_HOST_HID
             config CONFIG_TEST_USBH_MSC
-                int
+                bool
                 prompt "demo for test msc, cannot enable this demo, we have used dfs instead"
-                default 0
+                default n
                 depends on RT_CHERRYUSB_HOST_MSC
         endmenu
     endif

+ 8 - 8
Kconfig.rttpkg

@@ -464,19 +464,19 @@ if PKG_USING_CHERRYUSB
 
         menu "Select USB host template, please select class driver first"
             config CONFIG_TEST_USBH_SERIAL
-                int
-                prompt "demo for test serial, cannot enable this demo, we have used serial framework instead"
-                default 0
+                bool
+                prompt "demo for test serial, cannot enable this demo, we have used rt-device framework instead"
+                default n
                 depends on PKG_CHERRYUSB_HOST_CDC_ACM || PKG_CHERRYUSB_HOST_FTDI || PKG_CHERRYUSB_HOST_CH34X || PKG_CHERRYUSB_HOST_CP210X || PKG_CHERRYUSB_HOST_PL2303
             config CONFIG_TEST_USBH_HID
-                int
+                bool
                 prompt "demo for test hid"
-                default 0
+                default n
                 depends on PKG_CHERRYUSB_HOST_HID
             config CONFIG_TEST_USBH_MSC
-                int
+                bool
                 prompt "demo for test msc, cannot enable this demo, we have used dfs instead"
-                default 0
+                default n
                 depends on PKG_CHERRYUSB_HOST_MSC
         endmenu
     endif
@@ -493,7 +493,7 @@ if PKG_USING_CHERRYUSB
 
         config PKG_USING_CHERRYUSB_LATEST_VERSION
             bool "latest"
-        config PKG_USING_CHERRYUSB_V010502
+        config PKG_USING_CHERRYUSB_V010503
             bool "v1.5.3"
         config PKG_USING_CHERRYUSB_V010502
             bool "v1.5.2"

+ 24 - 53
demo/usb_host.c

@@ -7,39 +7,10 @@
 #include "usbh_serial.h"
 #include "usbh_hid.h"
 #include "usbh_msc.h"
-#include "usbh_video.h"
-#include "usbh_audio.h"
 
-#ifndef CONFIG_TEST_USBH_SERIAL
-#define CONFIG_TEST_USBH_SERIAL 1
-#endif
-#ifndef TEST_USBH_CDC_SPEED
-#define TEST_USBH_CDC_SPEED 0
-#endif
-#ifndef CONFIG_TEST_USBH_HID
-#define CONFIG_TEST_USBH_HID 0
-#endif
-#ifndef CONFIG_TEST_USBH_MSC
-#define CONFIG_TEST_USBH_MSC 1
-#endif
-#ifndef TEST_USBH_MSC_FATFS
-#define TEST_USBH_MSC_FATFS 0
-#endif
-#ifndef TEST_USBH_MSC_FATFS_SPEED
-#define TEST_USBH_MSC_FATFS_SPEED 0
-#endif
-#ifndef CONFIG_TEST_USBH_AUDIO
-#define CONFIG_TEST_USBH_AUDIO 0
-#endif
-#ifndef CONFIG_TEST_USBH_VIDEO
-#define CONFIG_TEST_USBH_VIDEO 0
-#endif
-
-#if defined(TEST_USBH_CDC_ECM) || defined(TEST_USBH_CDC_RNDIS) || defined(TEST_USBH_ASIX) || defined(TEST_USBH_RTL8152)
-#error we have move those class implements into platform/none/usbh_lwip.c, and you should call tcpip_init(NULL, NULL) in your app
-#endif
+// net class demos use socket api
 
-#if CONFIG_TEST_USBH_SERIAL
+#ifdef CONFIG_TEST_USBH_SERIAL
 #define SERIAL_TEST_LEN (1 * 1024)
 
 #if SERIAL_TEST_LEN >= CONFIG_USBHOST_SERIAL_RX_SIZE
@@ -53,7 +24,7 @@ volatile bool serial_is_opened = false;
 USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t serial_tx_buffer[64];
 uint8_t serial_rx_data[SERIAL_TEST_LEN];
 
-#if TEST_USBH_CDC_SPEED
+#ifdef CONFIG_TEST_USBH_CDC_SPEED
 #define TEST_LEN   (16 * 1024)
 #define TEST_COUNT (10240)
 
@@ -64,6 +35,7 @@ static void usbh_serial_thread(CONFIG_USB_OSAL_THREAD_SET_ARGV)
 {
     int ret;
     struct usbh_serial *serial;
+    bool serial_test_success = false;
 
     serial = usbh_serial_open("/dev/ttyACM0", USBH_SERIAL_O_RDWR | USBH_SERIAL_O_NONBLOCK);
     if (serial == NULL) {
@@ -90,7 +62,7 @@ static void usbh_serial_thread(CONFIG_USB_OSAL_THREAD_SET_ARGV)
     }
 
     /* test with only one buffer, if you have more cdc acm class, modify by yourself */
-#if TEST_USBH_CDC_SPEED
+#ifdef CONFIG_TEST_USBH_CDC_SPEED
     const uint32_t test_len[] = { 512, 1 * 1024, 2 * 1024, 4 * 1024, 8 * 1024, 16 * 1024 };
 
     memset(serial_speed_buffer, 0xAA, TEST_LEN);
@@ -109,14 +81,14 @@ static void usbh_serial_thread(CONFIG_USB_OSAL_THREAD_SET_ARGV)
         uint32_t time_ms = xTaskGetTickCount() - start_time;
         USB_LOG_RAW("per packet len:%d, out speed:%f MB/S\r\n", (unsigned int)test_len[j], (test_len[j] * TEST_COUNT / 1024 / 1024) * 1000 / ((float)time_ms));
     }
-    goto delete_with_close;
+    usbh_serial_close(serial);
+    goto delete;
 #endif
     memset(serial_tx_buffer, 0xA5, sizeof(serial_tx_buffer));
     USB_LOG_RAW("start serial loopback test, len: %d\r\n", SERIAL_TEST_LEN);
 
     serial_tx_bytes = 0;
     while (1) {
-        /* for common, we use timeout with 0xffffffff, this is just a test */
         ret = usbh_serial_write(serial, serial_tx_buffer, sizeof(serial_tx_buffer));
         if (ret < 0) {
             USB_LOG_RAW("serial write error, ret:%d\r\n", ret);
@@ -149,7 +121,7 @@ static void usbh_serial_thread(CONFIG_USB_OSAL_THREAD_SET_ARGV)
                         goto delete_with_close;
                     }
                 }
-                USB_LOG_RAW("serial loopback test success\r\n");
+                serial_test_success = true;
                 break;
             }
         }
@@ -165,6 +137,11 @@ static void usbh_serial_thread(CONFIG_USB_OSAL_THREAD_SET_ARGV)
 
     // clang-format off
 delete_with_close:
+    if (serial_test_success) {
+        USB_LOG_RAW("serial loopback test success\r\n");
+    } else {
+        USB_LOG_RAW("serial loopback test failed\r\n");
+    }
     usbh_serial_close(serial);
 delete:
     usb_osal_thread_delete(NULL);
@@ -172,7 +149,7 @@ delete:
 }
 #endif
 
-#if CONFIG_TEST_USBH_HID
+#ifdef CONFIG_TEST_USBH_HID
 USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t hid_buffer[128];
 
 void usbh_hid_callback(void *arg, int nbytes)
@@ -213,12 +190,12 @@ delete:
 }
 #endif
 
-#if CONFIG_TEST_USBH_MSC
+#ifdef CONFIG_TEST_USBH_MSC
 
-#if TEST_USBH_MSC_FATFS
+#ifdef CONFIG_TEST_USBH_MSC_FATFS
 #include "ff.h"
 
-#if TEST_USBH_MSC_FATFS_SPEED
+#ifdef CONFIG_TEST_USBH_MSC_FATFS_SPEED
 #define WRITE_SIZE_MB (128UL)
 #define WRITE_SIZE    (1024UL * 1024UL * WRITE_SIZE_MB)
 #define BUF_SIZE      (1024UL * 128UL)
@@ -279,7 +256,7 @@ int usb_msc_fatfs_test()
         goto unmount;
     }
 
-#if TEST_USBH_MSC_FATFS_SPEED
+#ifdef CONFIG_TEST_USBH_MSC_FATFS_SPEED
     for (uint32_t i = 0; i < BUF_SIZE; i++) {
         read_write_buffer[i] = i % 256;
     }
@@ -351,8 +328,10 @@ static void usbh_msc_thread(CONFIG_USB_OSAL_THREAD_SET_ARGV)
     int ret;
     struct usbh_msc *msc_class = (struct usbh_msc *)CONFIG_USB_OSAL_THREAD_GET_ARGV;
 
+    (void)msc_class;
+
     /* test with only one buffer, if you have more msc class, modify by yourself */
-#if TEST_USBH_MSC_FATFS == 0
+#ifndef TEST_USBH_MSC_FATFS
     ret = usbh_msc_scsi_init(msc_class);
     if (ret < 0) {
         USB_LOG_RAW("scsi_init error,ret:%d\r\n", ret);
@@ -382,7 +361,7 @@ delete:
 }
 #endif
 
-#if CONFIG_TEST_USBH_SERIAL
+#ifdef CONFIG_TEST_USBH_SERIAL
 void usbh_serial_run(struct usbh_serial *serial)
 {
     if (serial_is_opened) {
@@ -398,7 +377,7 @@ void usbh_serial_stop(struct usbh_serial *serial)
 }
 #endif
 
-#if CONFIG_TEST_USBH_HID
+#ifdef CONFIG_TEST_USBH_HID
 void usbh_hid_run(struct usbh_hid *hid_class)
 {
     usb_osal_thread_create("usbh_hid", 2048, CONFIG_USBHOST_PSC_PRIO + 1, usbh_hid_thread, hid_class);
@@ -409,7 +388,7 @@ void usbh_hid_stop(struct usbh_hid *hid_class)
 }
 #endif
 
-#if CONFIG_TEST_USBH_MSC
+#ifdef CONFIG_TEST_USBH_MSC
 void usbh_msc_run(struct usbh_msc *msc_class)
 {
     usb_osal_thread_create("usbh_msc", 2048, CONFIG_USBHOST_PSC_PRIO + 1, usbh_msc_thread, msc_class);
@@ -420,14 +399,6 @@ void usbh_msc_stop(struct usbh_msc *msc_class)
 }
 #endif
 
-#if CONFIG_TEST_USBH_AUDIO
-#error "commercial charge"
-#endif
-
-#if CONFIG_TEST_USBH_VIDEO
-#error "commercial charge"
-#endif
-
 #if 0
 #include "usbh_aoa.h"
 

BIN=BIN
docs/source/demo/img/usbh_serial.png


+ 102 - 4
docs/source/demo/usbh_serial.rst

@@ -1,8 +1,11 @@
 usbh_serial
 ===============
 
-Serial 框架当前支持 cdc acm, ftdi, cp210x, ch34x, pl2303,gsm 驱动。当前支持两种使用方式,
-一种是使用源生 CherryUSB usbhost serial API 进行操作,另一种是基于平台封装的 API 操作,比如 rt-thread device API。,nuttx posix API。
+Serial 框架当前支持 cdc acm, ftdi, cp210x, ch34x, pl2303,gsm 驱动。
+
+.. figure:: img/usbh_serial.png
+
+当前支持两种使用方式,一种是使用源生 CherryUSB usbhost serial API 进行操作,另一种是基于平台封装的 API 操作,比如 rt-thread device API,nuttx posix API。
 
 下面演示的是使用 CherryUSB usbhost serial API 进行串口回环测试,并且使用阻塞发送,异步读取的方式:
 
@@ -36,7 +39,6 @@ Serial 框架当前支持 cdc acm, ftdi, cp210x, ch34x, pl2303,gsm 驱动。
 
     serial_tx_bytes = 0;
     while (1) {
-        /* for common, we use timeout with 0xffffffff, this is just a test */
         ret = usbh_serial_write(serial, serial_tx_buffer, sizeof(serial_tx_buffer));
         if (ret < 0) {
             USB_LOG_RAW("serial write error, ret:%d\r\n", ret);
@@ -93,4 +95,100 @@ Serial 框架当前支持 cdc acm, ftdi, cp210x, ch34x, pl2303,gsm 驱动。
 
 - 纯 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
+

+ 4 - 0
tests/espressif/host/main/main.c

@@ -14,6 +14,10 @@
 #include "esp_log.h"
 #include "usbd_core.h"
 #include "usbh_core.h"
+
+#define CONFIG_TEST_USBH_SERIAL
+#define CONFIG_TEST_USBH_HID
+
 #include "demo/usb_host.c"
 
 void app_main(void)

+ 1 - 0
tests/espressif/host/sdkconfig.defaults

@@ -15,5 +15,6 @@ CONFIG_CHERRYUSB_HOST_CH34X=y
 CONFIG_CHERRYUSB_HOST_CP210X=y
 CONFIG_CHERRYUSB_HOST_FTDI=y
 CONFIG_CHERRYUSB_HOST_PL2303=y
+CONFIG_CHERRYUSB_HOST_GSM=y
 CONFIG_CHERRYUSB_HOST_VIDEO=y
 CONFIG_CHERRYUSB_HOST_AUDIO=y

+ 0 - 1
tests/hpmicro/CMakeLists.txt

@@ -38,7 +38,6 @@ sdk_compile_options("-O2")
 sdk_inc(inc)
 sdk_app_src(inc/arch/sys_arch.c)
 sdk_app_src(src/main.c)
-sdk_app_src(../../demo/usb_host.c)
 
 sdk_inc(src/iperf)
 sdk_app_src(src/iperf/iperf.c src/iperf/iperf_cli.c src/iperf/utils_getopt.c src/ping.c)

+ 6 - 0
tests/hpmicro/src/main.c

@@ -24,6 +24,12 @@
 #include "usbh_uac_stream.h"
 #endif
 
+#define CONFIG_TEST_USBH_SERIAL
+#define CONFIG_TEST_USBH_HID
+#define CONFIG_TEST_USBH_MSC
+
+#include "demo/usb_host.c"
+
 SDK_DECLARE_EXT_ISR_M(BOARD_CONSOLE_UART_IRQ, shell_uart_isr)
 
 #define task_start_PRIORITY (configMAX_PRIORITIES - 2U)