summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRbb666 <[email protected]>2024-05-11 16:47:15 +0800
committerRbb666 <[email protected]>2024-05-11 16:51:21 +0800
commit4cecb759c9cc5854a12380814bc49a8efddcea3c (patch)
tree789458ca3b95bdeeb7c7b429173fc74d147c8120
parente827829850eef83e41801f185dcef6daecfa5901 (diff)
[osal]add usb host script.
-rw-r--r--lib/rt-thread/SConscript46
-rw-r--r--lib/rt-thread/tusb_config.h71
-rw-r--r--lib/rt-thread/tusb_rt_thread_port.c5
3 files changed, 105 insertions, 17 deletions
diff --git a/lib/rt-thread/SConscript b/lib/rt-thread/SConscript
index 205e12958..482f6d7b2 100644
--- a/lib/rt-thread/SConscript
+++ b/lib/rt-thread/SConscript
@@ -5,32 +5,44 @@ cwd = GetCurrentDir()
src = Split("""
../../src/tusb.c
../../src/common/tusb_fifo.c
-../../src/device/usbd.c
-../../src/device/usbd_control.c
./tusb_rt_thread_port.c
""")
path = [cwd, cwd + "/../../src"]
-# BSP
-if GetDepend(["SOC_FAMILY_STM32"]):
- src += ["../../src/portable/synopsys/dwc2/dcd_dwc2.c",
- "../../src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c"]
+LOCAL_CFLAGS = ''
-if GetDepend(["SOC_NRF52840"]):
- src += ["../../src/portable/nordic/nrf5x/dcd_nrf5x.c"]
+# for device stack
+if GetDepend(["PKG_TINYUSB_DEVICE_ENABLE"]):
+ src += ["../../src/device/usbd.c",
+ "../../src/device/usbd_control.c"]
+ # BSP
+ if GetDepend(["SOC_FAMILY_STM32"]):
+ src += ["../../src/portable/synopsys/dwc2/dcd_dwc2.c",
+ "../../src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c"]
-if GetDepend(["SOC_FAMILY_RENESAS"]):
- src += ["../../src/portable/renesas/rusb2/dcd_rusb2.c",
- "../../src/portable/renesas/rusb2/rusb2_common.c"]
+ if GetDepend(["SOC_NRF52840"]):
+ src += ["../../src/portable/nordic/nrf5x/dcd_nrf5x.c"]
-# Device class
-if GetDepend(["PKG_TINYUSB_DEVICE_CDC"]):
- src += ["../../src/class/cdc/cdc_device.c"]
+ if GetDepend(["SOC_FAMILY_RENESAS"]):
+ src += ["../../src/portable/renesas/rusb2/dcd_rusb2.c",
+ "../../src/portable/renesas/rusb2/rusb2_common.c"]
-if GetDepend(["PKG_TINYUSB_DEVICE_MSC"]):
- src += ["../../src/class/msc/msc_device.c", "port/msc_device_port.c"]
+ # Device class
+ if GetDepend(["PKG_TINYUSB_DEVICE_UVC"]):
+ src += ["../../src/class/video/video_device.c"]
+ if GetDepend(["PKG_TINYUSB_DEVICE_CDC"]):
+ src += ["../../src/class/cdc/cdc_device.c"]
+ if GetDepend(["PKG_TINYUSB_DEVICE_MSC"]):
+ src += ["../../src/class/msc/msc_device.c", "port/msc_device_port.c"]
+
+# for host stack
+if GetDepend(["PKG_TINYUSB_HOST_ENABLE"]):
+ src += ["../../src/host/usbh.c", "../../src/host/hub.c"]
+
+ if GetDepend(["SOC_FAMILY_RENESAS"]):
+ src += ["../../src/portable/renesas/rusb2/hcd_rusb2.c",
+ "../../src/portable/renesas/rusb2/rusb2_common.c"]
-LOCAL_CFLAGS = ''
if rtconfig.PLATFORM == 'gcc' or rtconfig.PLATFORM == 'armclang': # GCC or Keil AC6
LOCAL_CFLAGS += ' -std=c99'
diff --git a/lib/rt-thread/tusb_config.h b/lib/rt-thread/tusb_config.h
index 8b145f3f7..b3c3bf43f 100644
--- a/lib/rt-thread/tusb_config.h
+++ b/lib/rt-thread/tusb_config.h
@@ -113,6 +113,11 @@ extern "C" {
//--------------------------------------------------------------------
// DEVICE CONFIGURATION
//--------------------------------------------------------------------
+#if defined(PKG_TINYUSB_DEVICE_ENABLE)
+ #define CFG_TUD_ENABLED (1)
+#else
+ #define CFG_TUD_ENABLED (0)
+#endif
#ifndef CFG_TUD_ENDPOINT0_SIZE
#define CFG_TUD_ENDPOINT0_SIZE PKG_TINYUSB_EDPT0_SIZE
@@ -138,6 +143,72 @@ extern "C" {
#define PKG_TINYUSB_DEVICE_HID_STRING ""
#endif
+//--------------------------------------------------------------------
+// HOST CONFIGURATION
+//--------------------------------------------------------------------
+#if defined(PKG_TINYUSB_HOST_ENABLE)
+ #define CFG_TUH_ENABLED (1)
+#else
+ #define CFG_TUH_ENABLED (0)
+#endif
+
+#if (PKG_TINYUSB_HOST_PORT == 0)
+#undef CFG_TUSB_RHPORT0_MODE
+#define CFG_TUSB_RHPORT0_MODE (OPT_MODE_HOST | PKG_TINYUSB_HOST_PORT_SPEED)
+#endif
+
+#if (PKG_TINYUSB_HOST_PORT == 1)
+#undef CFG_TUSB_RHPORT1_MODE
+#define CFG_TUSB_RHPORT1_MODE (OPT_MODE_HOST | PKG_TINYUSB_HOST_PORT_SPEED)
+#endif
+
+#define BOARD_TUH_RHPORT PKG_TINYUSB_HOST_PORT // FULL SPEED
+#define BOARD_TUH_MAX_SPEED PKG_TINYUSB_HOST_PORT_SPEED
+// Default is max speed that hardware controller could support with on-chip PHY
+#define CFG_TUH_MAX_SPEED BOARD_TUH_MAX_SPEED
+
+//------------------------- Board Specific --------------------------
+
+// RHPort number used for host can be defined by board.mk, default to port 0
+#ifndef BOARD_TUH_RHPORT
+#define BOARD_TUH_RHPORT 0
+#endif
+
+// RHPort max operational speed can defined by board.mk
+#ifndef BOARD_TUH_MAX_SPEED
+#define BOARD_TUH_MAX_SPEED OPT_MODE_DEFAULT_SPEED
+#endif
+
+// Size of buffer to hold descriptors and other data used for enumeration
+#define CFG_TUH_ENUMERATION_BUFSIZE 256
+
+#define CFG_TUH_HUB 2 // number of supported hubs
+#define CFG_TUH_CDC 0 // CDC ACM
+#define CFG_TUH_CDC_FTDI 0 // FTDI Serial. FTDI is not part of CDC class, only to re-use CDC driver API
+#define CFG_TUH_CDC_CP210X 0 // CP210x Serial. CP210X is not part of CDC class, only to re-use CDC driver API
+#define CFG_TUH_CDC_CH34X 0 // CH340 or CH341 Serial. CH34X is not part of CDC class, only to re-use CDC driver API
+#define CFG_TUH_HID 0 // typical keyboard + mouse device can have 3-4 HID interfaces
+#define CFG_TUH_MSC 0
+//#define CFG_TUH_VENDOR 3
+
+// max device support (excluding hub device): 1 hub typically has 4 ports
+#define CFG_TUH_DEVICE_MAX (3*CFG_TUH_HUB + 1)
+
+//------------- HID -------------//
+#define CFG_TUH_HID_EPIN_BUFSIZE 64
+#define CFG_TUH_HID_EPOUT_BUFSIZE 64
+
+//------------- CDC -------------//
+
+// Set Line Control state on enumeration/mounted:
+// DTR ( bit 0), RTS (bit 1)
+#define CFG_TUH_CDC_LINE_CONTROL_ON_ENUM 0x03
+
+// Set Line Coding on enumeration/mounted, value for cdc_line_coding_t
+// bit rate = 115200, 1 stop bit, no parity, 8 bit data width
+#define CFG_TUH_CDC_LINE_CODING_ON_ENUM { 115200, CDC_LINE_CODING_STOP_BITS_1, CDC_LINE_CODING_PARITY_NONE, 8 }
+
+
#ifdef __cplusplus
}
diff --git a/lib/rt-thread/tusb_rt_thread_port.c b/lib/rt-thread/tusb_rt_thread_port.c
index d33e3ac60..7e04d2453 100644
--- a/lib/rt-thread/tusb_rt_thread_port.c
+++ b/lib/rt-thread/tusb_rt_thread_port.c
@@ -44,7 +44,12 @@ static void tusb_thread_entry(void *parameter)
(void) parameter;
while (1)
{
+#if CFG_TUH_ENABLED
+ tuh_task();
+#endif
+#if CFG_TUD_ENABLED
tud_task();
+#endif
}
}