From c28b79b7d79df6f2f5037a00a844293052b096cd Mon Sep 17 00:00:00 2001 From: BreederBai Date: Thu, 28 Apr 2022 20:30:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A1=AC=E4=BB=B6=E9=A9=B1=E5=8A=A8=EF=BC=88VC?= =?UTF-8?q?OM=EF=BC=89=EF=BC=9A=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96USB?= =?UTF-8?q?=E8=99=9A=E6=8B=9F=E4=B8=B2=E5=8F=A3=E8=BF=9E=E6=8E=A5=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E7=9A=84=E6=8E=A5=E5=8F=A3=20(#5881)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 硬件驱动(VCOM):增加获取USB虚拟串口连接状态的接口 --- components/drivers/include/drivers/usb_device.h | 2 ++ components/drivers/usb/usbdevice/class/cdc_vcom.c | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/components/drivers/include/drivers/usb_device.h b/components/drivers/include/drivers/usb_device.h index 3ce051dfaa..af978e870c 100644 --- a/components/drivers/include/drivers/usb_device.h +++ b/components/drivers/include/drivers/usb_device.h @@ -62,6 +62,8 @@ extern "C" { } \ }while(0) +#define RT_USBD_CLASS_CTRL_CONNECTED (RT_DEVICE_CTRL_BASE(USBDevice) + 0) + struct ufunction; struct udevice; struct uendpoint; diff --git a/components/drivers/usb/usbdevice/class/cdc_vcom.c b/components/drivers/usb/usbdevice/class/cdc_vcom.c index 125fb7a200..df5e03f54c 100644 --- a/components/drivers/usb/usbdevice/class/cdc_vcom.c +++ b/components/drivers/usb/usbdevice/class/cdc_vcom.c @@ -670,6 +670,12 @@ static rt_err_t _vcom_configure(struct rt_serial_device *serial, static rt_err_t _vcom_control(struct rt_serial_device *serial, int cmd, void *arg) { + struct ufunction *func; + struct vcom *data; + + func = (struct ufunction*)serial->parent.user_data; + data = (struct vcom*)func->user_data; + switch (cmd) { case RT_DEVICE_CTRL_CLR_INT: @@ -678,6 +684,9 @@ static rt_err_t _vcom_control(struct rt_serial_device *serial, case RT_DEVICE_CTRL_SET_INT: /* enable rx irq */ break; + case RT_USBD_CLASS_CTRL_CONNECTED: + (*(rt_bool_t*)arg) = data->connected; + break; } return RT_EOK; -- GitLab