summaryrefslogtreecommitdiff
path: root/components/drivers/usb/usbdevice/core
diff options
context:
space:
mode:
authorheyuanjie87 <[email protected]>2013-01-24 20:59:43 +0800
committerheyuanjie87 <[email protected]>2013-01-24 20:59:43 +0800
commit34d531578ec9912de0521cf1c5ce18934f5eccd2 (patch)
tree6cc9aec39747eca663bdacd8ba3403526d537f90 /components/drivers/usb/usbdevice/core
parentb91271d490fb9d1f909e8096a507f05d142f88ac (diff)
class driver can custom string description
Diffstat (limited to 'components/drivers/usb/usbdevice/core')
-rw-r--r--components/drivers/usb/usbdevice/core/core.c28
-rw-r--r--components/drivers/usb/usbdevice/core/usbdevice.c19
2 files changed, 32 insertions, 15 deletions
diff --git a/components/drivers/usb/usbdevice/core/core.c b/components/drivers/usb/usbdevice/core/core.c
index 9f1738ed33..c79820642a 100644
--- a/components/drivers/usb/usbdevice/core/core.c
+++ b/components/drivers/usb/usbdevice/core/core.c
@@ -612,13 +612,10 @@ rt_err_t _sof_notify(udevice_t device)
*
* @return an usb device object on success, RT_NULL on fail.
*/
-udevice_t rt_usbd_device_create(const char** ustring)
+udevice_t rt_usbd_device_create(void)
{
udevice_t udevice;
- /* parameter check */
- RT_ASSERT(ustring != RT_NULL);
-
RT_DEBUG_LOG(RT_DEBUG_USB, ("rt_usbd_device_create\n"));
/* allocate memory for the object */
@@ -630,9 +627,6 @@ udevice_t rt_usbd_device_create(const char** ustring)
}
rt_memset(udevice, 0, sizeof(struct udevice));
- /* set string descriptor array to the device object */
- udevice->str = ustring;
-
/* to initialize configuration list */
rt_list_init(&udevice->cfg_list);
@@ -643,6 +637,26 @@ udevice_t rt_usbd_device_create(const char** ustring)
}
/**
+ * This function will set usb device string description.
+ *
+ * @param device the usb device object.
+ * @param ustring pointer to string pointer array.
+ *
+ * @return RT_EOK.
+ */
+rt_err_t rt_usbd_device_set_string(udevice_t device, const char** ustring)
+{
+ /* parameter check */
+ RT_ASSERT(device != RT_NULL);
+ RT_ASSERT(ustring != RT_NULL);
+
+ /* set string descriptor array to the device object */
+ device->str = ustring;
+
+ return RT_EOK;
+}
+
+/**
* This function will set an usb controller driver to a device.
*
* @param device the usb device object.
diff --git a/components/drivers/usb/usbdevice/core/usbdevice.c b/components/drivers/usb/usbdevice/core/usbdevice.c
index 01ee065a2b..e4f5097045 100644
--- a/components/drivers/usb/usbdevice/core/usbdevice.c
+++ b/components/drivers/usb/usbdevice/core/usbdevice.c
@@ -18,15 +18,17 @@
#ifdef RT_USING_USB_DEVICE
-const static char* ustring[] =
+#ifdef RT_USB_DEVICE_COMPOSITE
+const static char* ustring[] =
{
"Language",
"RT-Thread Team.",
- "RT-Thread Device",
+ "RTT Composite Device",
"1.1.0",
"Configuration",
"Interface",
};
+#endif
#ifdef RT_USB_DEVICE_COMPOSITE
static struct udevice_descriptor compsit_desc =
@@ -44,7 +46,7 @@ static struct udevice_descriptor compsit_desc =
USB_STRING_MANU_INDEX, //iManufacturer;
USB_STRING_PRODUCT_INDEX, //iProduct;
USB_STRING_SERIAL_INDEX, //iSerialNumber;
- USB_DYNAMIC, //bNumConfigurations;
+ USB_DYNAMIC, //bNumConfigurations;
};
#endif
@@ -53,7 +55,7 @@ rt_err_t rt_usb_device_init(const char* udc_name)
rt_device_t udc;
udevice_t udevice;
uconfig_t cfg;
- uclass_t cls;
+ uclass_t cls;
RT_ASSERT(udc_name != RT_NULL);
@@ -68,8 +70,8 @@ rt_err_t rt_usb_device_init(const char* udc_name)
rt_usbd_core_init();
/* create a device object */
- udevice = rt_usbd_device_create(ustring);
-
+ udevice = rt_usbd_device_create();
+
/* set usb controller driver to the device */
rt_usbd_device_set_controller(udevice, (udcd_t)udc);
@@ -78,7 +80,7 @@ rt_err_t rt_usb_device_init(const char* udc_name)
#ifdef RT_USB_DEVICE_MSTORAGE
/* create a mass storage class object */
- cls = rt_usbd_class_mstorage_create(udevice);
+ cls = rt_usbd_class_mstorage_create(udevice);
/* add the class to the configuration */
rt_usbd_config_add_class(cfg, cls);
@@ -101,13 +103,14 @@ rt_err_t rt_usb_device_init(const char* udc_name)
/* set device descriptor to the device */
#ifdef RT_USB_DEVICE_COMPOSITE
rt_usbd_device_set_descriptor(udevice, &compsit_desc);
+ rt_usbd_device_set_string(udevice, ustring);
#else
rt_usbd_device_set_descriptor(udevice, cls->dev_desc);
#endif
/* add the configuration to the device */
rt_usbd_device_add_config(udevice, cfg);
-
+
/* set default configuration to 1 */
rt_usbd_set_config(udevice, 1);