diff --git a/Kconfig.rttpkg b/Kconfig.rttpkg index b1d10afa..0ef16a5c 100644 --- a/Kconfig.rttpkg +++ b/Kconfig.rttpkg @@ -314,6 +314,7 @@ if PKG_USING_CHERRYUSB config PKG_CHERRYUSB_HOST_CDC_ACM bool prompt "Enable usb cdc acm driver" + select CONFIG_USBHOST_SERIAL default n config PKG_CHERRYUSB_HOST_HID @@ -464,7 +465,7 @@ if PKG_USING_CHERRYUSB menu "Select USB host template, please select class driver first" config CONFIG_TEST_USBH_SERIAL int - prompt "demo for test usb serial, cannot enable this demo, we have used serial framework instead" + prompt "demo for test serial, cannot enable this demo, we have used serial framework instead" default 0 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 diff --git a/SConscript b/SConscript index 9cccc961..6b6c09f3 100644 --- a/SConscript +++ b/SConscript @@ -16,7 +16,6 @@ path += [cwd + '/class/adb'] path += [cwd + '/class/dfu'] path += [cwd + '/class/serial'] path += [cwd + '/class/vendor/net'] -path += [cwd + '/class/vendor/serial'] path += [cwd + '/class/vendor/wifi'] src = [] @@ -269,7 +268,7 @@ if GetDepend(['PKG_CHERRYUSB_HOST']): LIBS = ['libxhci_a32_softfp_neon.a'] if GetDepend(['PKG_CHERRYUSB_HOST_CDC_ACM']): - src += Glob('class/cdc/usbh_cdc_acm.c') + src += Glob('class/serial/usbh_cdc_acm.c') if GetDepend(['PKG_CHERRYUSB_HOST_HID']): src += Glob('class/hid/usbh_hid.c') if GetDepend(['PKG_CHERRYUSB_HOST_MSC']): @@ -291,13 +290,13 @@ if GetDepend(['PKG_CHERRYUSB_HOST']): if GetDepend(['PKG_CHERRYUSB_HOST_RTL8152']): src += Glob('class/vendor/net/usbh_rtl8152.c') if GetDepend(['PKG_CHERRYUSB_HOST_FTDI']): - src += Glob('class/vendor/serial/usbh_ftdi.c') + src += Glob('class/serial/usbh_ftdi.c') if GetDepend(['PKG_CHERRYUSB_HOST_CH34X']): - src += Glob('class/vendor/serial/usbh_ch34x.c') + src += Glob('class/serial/usbh_ch34x.c') if GetDepend(['PKG_CHERRYUSB_HOST_CP210X']): - src += Glob('class/vendor/serial/usbh_cp210x.c') + src += Glob('class/serial/usbh_cp210x.c') if GetDepend(['PKG_CHERRYUSB_HOST_PL2303']): - src += Glob('class/vendor/serial/usbh_pl2303.c') + src += Glob('class/serial/usbh_pl2303.c') if GetDepend(['CONFIG_TEST_USBH_HID']): src += Glob('demo/usb_host.c') diff --git a/class/serial/usbh_serial.c b/class/serial/usbh_serial.c index 3d02c2a8..53824809 100644 --- a/class/serial/usbh_serial.c +++ b/class/serial/usbh_serial.c @@ -389,7 +389,7 @@ static int usbh_serial_tiocmset(struct usbh_serial *serial, uint32_t set, uint32 line_state &= ~USBH_SERIAL_TIOCM_RTS; } - dtr = (line_state & USBH_SERIAL_TIOCM_RTS) ? true : false; + dtr = (line_state & USBH_SERIAL_TIOCM_DTR) ? true : false; rts = (line_state & USBH_SERIAL_TIOCM_RTS) ? true : false; if (serial && serial->driver && serial->driver->set_line_state) { @@ -643,6 +643,12 @@ int usbh_serial(int argc, char **argv) return 0; } + if (serial) { + if (!serial->hport || !serial->hport->connected) { + serial = NULL; + } + } + if (!serial) { serial = usbh_serial_open(argv[1], USBH_SERIAL_O_RDWR | USBH_SERIAL_O_NONBLOCK); if (!serial) { diff --git a/platform/rtthread/usbh_rtserial.c b/platform/rtthread/usbh_rtserial.c index f1e25503..ab16f325 100644 --- a/platform/rtthread/usbh_rtserial.c +++ b/platform/rtthread/usbh_rtserial.c @@ -176,8 +176,14 @@ rt_err_t usbh_serial_register(struct usbh_serial *serial) device->user_data = serial; serial->user_data = device; + /* skip /dev/ to avoid BAD file */ + const char *dev_name = serial->hport->config.intf[serial->intf].devname; + if (strncmp(dev_name, "/dev/", 5) == 0) { + dev_name += 5; + } + /* register a character device */ - ret = rt_device_register(device, serial->hport->config.intf[serial->intf].devname, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_REMOVABLE); + ret = rt_device_register(device, dev_name, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_REMOVABLE); #ifdef RT_USING_POSIX_DEVIO /* set fops */