Browse Source

Merge pull request #1871 from uestczyh222/master

[Components][USB]增加健壮性
Bernard Xiong 6 years ago
parent
commit
65fc7421e0

+ 4 - 3
components/drivers/usb/usbdevice/class/hid.c

@@ -1,7 +1,9 @@
 /*
  * File      : hid.c
- * COPYRIGHT (C) 2008 - 2016, RT-Thread Development Team
+ * COPYRIGHT (C) 2008 - 2018, RT-Thread Development Team
  *
+ * SPDX-License-Identifier: Apache-2.0
+ * 
  * Change Logs:
  * Date           Author       Notes
  * 2017-03-13     Urey         the first version
@@ -294,9 +296,8 @@ const static struct uhid_comm_descriptor _hid_comm_desc =
         USB_HID_PROTOCOL_MOUSE,     /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
 #endif
         0x00,
-#endif
     },
-
+#endif
     /* Interface Descriptor */
     {
         USB_DESC_LENGTH_INTERFACE,

+ 15 - 16
components/drivers/usb/usbdevice/core/usbdevice.c

@@ -1,21 +1,8 @@
 /*
- * File      : usbdevice.c
- * This file is part of RT-Thread RTOS
- * COPYRIGHT (C) 2012, RT-Thread Development Team
+ * File      : hid.c
+ * COPYRIGHT (C) 2008 - 2018, RT-Thread Development Team
  *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ * SPDX-License-Identifier: Apache-2.0
  * 
  * Change Logs:
  * Date           Author       Notes
@@ -96,6 +83,13 @@ INIT_BOARD_EXPORT(rt_usbd_class_list_init);
 
 rt_err_t rt_usbd_class_register(udclass_t udclass)
 {
+#ifndef RT_USB_DEVICE_COMPOSITE
+    if(!rt_list_isempty(&class_list))
+    {
+        rt_kprintf("[D/USBD] If you want to use usb composite device please define RT_USB_DEVICE_COMPOSITE\n");
+        return RT_ERROR;
+    }
+#endif
     rt_list_insert_before(&class_list,&udclass->list);
     return RT_EOK;
 }
@@ -109,6 +103,11 @@ rt_err_t rt_usb_device_init(void)
     rt_list_t *i;
     udclass_t udclass;
 
+    if(rt_list_isempty(&class_list))
+    {
+        rt_kprintf("[D/USBD] No class register on usb device\n");
+        return RT_ERROR;
+    }
     /* create and startup usb device thread */
     rt_usbd_core_init();