Merge branch 'master' of github.com:RT-Thread/rt-thread
This commit is contained in:
commit
2a3f223b4e
|
@ -166,7 +166,7 @@ struct udev_msg
|
||||||
};
|
};
|
||||||
typedef struct udev_msg* udev_msg_t;
|
typedef struct udev_msg* udev_msg_t;
|
||||||
|
|
||||||
udevice_t rt_usbd_device_create(const char** str);
|
udevice_t rt_usbd_device_create(void);
|
||||||
uconfig_t rt_usbd_config_create(void);
|
uconfig_t rt_usbd_config_create(void);
|
||||||
uclass_t rt_usbd_class_create(udevice_t device, udev_desc_t dev_desc,
|
uclass_t rt_usbd_class_create(udevice_t device, udev_desc_t dev_desc,
|
||||||
uclass_ops_t ops);
|
uclass_ops_t ops);
|
||||||
|
@ -180,6 +180,7 @@ rt_err_t rt_usbd_post_event(struct udev_msg* msg, rt_size_t size);
|
||||||
rt_err_t rt_usbd_free_device(udevice_t device);
|
rt_err_t rt_usbd_free_device(udevice_t device);
|
||||||
rt_err_t rt_usbd_device_set_controller(udevice_t device, udcd_t dcd);
|
rt_err_t rt_usbd_device_set_controller(udevice_t device, udcd_t dcd);
|
||||||
rt_err_t rt_usbd_device_set_descriptor(udevice_t device, udev_desc_t dev_desc);
|
rt_err_t rt_usbd_device_set_descriptor(udevice_t device, udev_desc_t dev_desc);
|
||||||
|
rt_err_t rt_usbd_device_set_string(udevice_t device, const char** ustring);
|
||||||
rt_err_t rt_usbd_device_add_config(udevice_t device, uconfig_t cfg);
|
rt_err_t rt_usbd_device_add_config(udevice_t device, uconfig_t cfg);
|
||||||
rt_err_t rt_usbd_config_add_class(uconfig_t cfg, uclass_t cls);
|
rt_err_t rt_usbd_config_add_class(uconfig_t cfg, uclass_t cls);
|
||||||
rt_err_t rt_usbd_class_add_interface(uclass_t cls, uintf_t intf);
|
rt_err_t rt_usbd_class_add_interface(uclass_t cls, uintf_t intf);
|
||||||
|
|
|
@ -132,6 +132,16 @@ const static struct ucdc_data_descriptor _data_desc =
|
||||||
0x00,
|
0x00,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const static char* _ustring[] =
|
||||||
|
{
|
||||||
|
"Language",
|
||||||
|
"RT-Thread Team.",
|
||||||
|
"RTT Virtual Serial",
|
||||||
|
"1.1.0",
|
||||||
|
"Configuration",
|
||||||
|
"Interface",
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function will handle cdc bulk in endpoint request.
|
* This function will handle cdc bulk in endpoint request.
|
||||||
*
|
*
|
||||||
|
@ -189,7 +199,7 @@ static rt_err_t _ep_out_handler(udevice_t device, uclass_t cls, rt_size_t size)
|
||||||
rt_hw_serial_isr(&vcom_serial);
|
rt_hw_serial_isr(&vcom_serial);
|
||||||
|
|
||||||
dcd_ep_read(device->dcd, eps->ep_out, eps->ep_out->buffer,
|
dcd_ep_read(device->dcd, eps->ep_out, eps->ep_out->buffer,
|
||||||
eps->ep_out->ep_desc->wMaxPacketSize);
|
eps->ep_out->ep_desc->wMaxPacketSize);
|
||||||
|
|
||||||
return RT_EOK;
|
return RT_EOK;
|
||||||
}
|
}
|
||||||
|
@ -331,7 +341,7 @@ static rt_err_t _class_run(udevice_t device, uclass_t cls)
|
||||||
eps->ep_out->buffer=rx_pool;
|
eps->ep_out->buffer=rx_pool;
|
||||||
|
|
||||||
dcd_ep_read(device->dcd, eps->ep_out, eps->ep_out->buffer,
|
dcd_ep_read(device->dcd, eps->ep_out, eps->ep_out->buffer,
|
||||||
eps->ep_out->ep_desc->wMaxPacketSize);
|
eps->ep_out->ep_desc->wMaxPacketSize);
|
||||||
|
|
||||||
return RT_EOK;
|
return RT_EOK;
|
||||||
}
|
}
|
||||||
|
@ -438,6 +448,8 @@ uclass_t rt_usbd_class_cdc_create(udevice_t device)
|
||||||
/* parameter check */
|
/* parameter check */
|
||||||
RT_ASSERT(device != RT_NULL);
|
RT_ASSERT(device != RT_NULL);
|
||||||
|
|
||||||
|
/* set usb device string description */
|
||||||
|
rt_usbd_device_set_string(device, _ustring);
|
||||||
/* create a cdc class */
|
/* create a cdc class */
|
||||||
cdc = rt_usbd_class_create(device, &dev_desc, &ops);
|
cdc = rt_usbd_class_create(device, &dev_desc, &ops);
|
||||||
/* create a cdc class endpoints collection */
|
/* create a cdc class endpoints collection */
|
||||||
|
@ -454,7 +466,7 @@ uclass_t rt_usbd_class_cdc_create(udevice_t device)
|
||||||
|
|
||||||
/* config desc in alternate setting */
|
/* config desc in alternate setting */
|
||||||
rt_usbd_altsetting_config_descriptor(comm_setting, &_comm_desc,
|
rt_usbd_altsetting_config_descriptor(comm_setting, &_comm_desc,
|
||||||
(rt_off_t)&((ucdc_comm_desc_t)0)->intf_desc);
|
(rt_off_t)&((ucdc_comm_desc_t)0)->intf_desc);
|
||||||
rt_usbd_altsetting_config_descriptor(data_setting, &_data_desc, 0);
|
rt_usbd_altsetting_config_descriptor(data_setting, &_data_desc, 0);
|
||||||
/* configure the cdc interface descriptor */
|
/* configure the cdc interface descriptor */
|
||||||
_cdc_descriptor_config(comm_setting->desc, intf_comm->intf_num, data_setting->desc, intf_data->intf_num);
|
_cdc_descriptor_config(comm_setting->desc, intf_comm->intf_num, data_setting->desc, intf_data->intf_num);
|
||||||
|
@ -498,13 +510,13 @@ uclass_t rt_usbd_class_cdc_create(udevice_t device)
|
||||||
* UART device in RT-Thread
|
* UART device in RT-Thread
|
||||||
*/
|
*/
|
||||||
static rt_err_t _vcom_configure(struct rt_serial_device *serial,
|
static rt_err_t _vcom_configure(struct rt_serial_device *serial,
|
||||||
struct serial_configure *cfg)
|
struct serial_configure *cfg)
|
||||||
{
|
{
|
||||||
return RT_EOK;
|
return RT_EOK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static rt_err_t _vcom_control(struct rt_serial_device *serial,
|
static rt_err_t _vcom_control(struct rt_serial_device *serial,
|
||||||
int cmd, void *arg)
|
int cmd, void *arg)
|
||||||
{
|
{
|
||||||
switch (cmd)
|
switch (cmd)
|
||||||
{
|
{
|
||||||
|
@ -583,8 +595,8 @@ void rt_usb_vcom_init(void)
|
||||||
|
|
||||||
/* register vcom device */
|
/* register vcom device */
|
||||||
rt_hw_serial_register(&vcom_serial, "vcom",
|
rt_hw_serial_register(&vcom_serial, "vcom",
|
||||||
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM,
|
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM,
|
||||||
RT_NULL);
|
RT_NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -79,6 +79,16 @@ const static struct umass_descriptor _mass_desc =
|
||||||
0x00, //bInterval;
|
0x00, //bInterval;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const static char* _ustring[] =
|
||||||
|
{
|
||||||
|
"Language",
|
||||||
|
"RT-Thread Team.",
|
||||||
|
"RTT Mass Storage",
|
||||||
|
"1.1.0",
|
||||||
|
"Configuration",
|
||||||
|
"Interface",
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function will allocate an usb device instance from system.
|
* This function will allocate an usb device instance from system.
|
||||||
*
|
*
|
||||||
|
@ -562,6 +572,8 @@ uclass_t rt_usbd_class_mstorage_create(udevice_t device)
|
||||||
/* parameter check */
|
/* parameter check */
|
||||||
RT_ASSERT(device != RT_NULL);
|
RT_ASSERT(device != RT_NULL);
|
||||||
|
|
||||||
|
/* set usb device string description */
|
||||||
|
rt_usbd_device_set_string(device, _ustring);
|
||||||
/* create a mass storage class */
|
/* create a mass storage class */
|
||||||
mstorage = rt_usbd_class_create(device, &dev_desc, &ops);
|
mstorage = rt_usbd_class_create(device, &dev_desc, &ops);
|
||||||
/* create a mass storage endpoints collection */
|
/* create a mass storage endpoints collection */
|
||||||
|
|
|
@ -612,13 +612,10 @@ rt_err_t _sof_notify(udevice_t device)
|
||||||
*
|
*
|
||||||
* @return an usb device object on success, RT_NULL on fail.
|
* @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;
|
udevice_t udevice;
|
||||||
|
|
||||||
/* parameter check */
|
|
||||||
RT_ASSERT(ustring != RT_NULL);
|
|
||||||
|
|
||||||
RT_DEBUG_LOG(RT_DEBUG_USB, ("rt_usbd_device_create\n"));
|
RT_DEBUG_LOG(RT_DEBUG_USB, ("rt_usbd_device_create\n"));
|
||||||
|
|
||||||
/* allocate memory for the object */
|
/* 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));
|
rt_memset(udevice, 0, sizeof(struct udevice));
|
||||||
|
|
||||||
/* set string descriptor array to the device object */
|
|
||||||
udevice->str = ustring;
|
|
||||||
|
|
||||||
/* to initialize configuration list */
|
/* to initialize configuration list */
|
||||||
rt_list_init(&udevice->cfg_list);
|
rt_list_init(&udevice->cfg_list);
|
||||||
|
|
||||||
|
@ -642,6 +636,26 @@ udevice_t rt_usbd_device_create(const char** ustring)
|
||||||
return udevice;
|
return udevice;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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.
|
* This function will set an usb controller driver to a device.
|
||||||
*
|
*
|
||||||
|
|
|
@ -18,15 +18,17 @@
|
||||||
|
|
||||||
#ifdef RT_USING_USB_DEVICE
|
#ifdef RT_USING_USB_DEVICE
|
||||||
|
|
||||||
|
#ifdef RT_USB_DEVICE_COMPOSITE
|
||||||
const static char* ustring[] =
|
const static char* ustring[] =
|
||||||
{
|
{
|
||||||
"Language",
|
"Language",
|
||||||
"RT-Thread Team.",
|
"RT-Thread Team.",
|
||||||
"RT-Thread Device",
|
"RTT Composite Device",
|
||||||
"1.1.0",
|
"1.1.0",
|
||||||
"Configuration",
|
"Configuration",
|
||||||
"Interface",
|
"Interface",
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RT_USB_DEVICE_COMPOSITE
|
#ifdef RT_USB_DEVICE_COMPOSITE
|
||||||
static struct udevice_descriptor compsit_desc =
|
static struct udevice_descriptor compsit_desc =
|
||||||
|
@ -68,7 +70,7 @@ rt_err_t rt_usb_device_init(const char* udc_name)
|
||||||
rt_usbd_core_init();
|
rt_usbd_core_init();
|
||||||
|
|
||||||
/* create a device object */
|
/* create a device object */
|
||||||
udevice = rt_usbd_device_create(ustring);
|
udevice = rt_usbd_device_create();
|
||||||
|
|
||||||
/* set usb controller driver to the device */
|
/* set usb controller driver to the device */
|
||||||
rt_usbd_device_set_controller(udevice, (udcd_t)udc);
|
rt_usbd_device_set_controller(udevice, (udcd_t)udc);
|
||||||
|
@ -101,6 +103,7 @@ rt_err_t rt_usb_device_init(const char* udc_name)
|
||||||
/* set device descriptor to the device */
|
/* set device descriptor to the device */
|
||||||
#ifdef RT_USB_DEVICE_COMPOSITE
|
#ifdef RT_USB_DEVICE_COMPOSITE
|
||||||
rt_usbd_device_set_descriptor(udevice, &compsit_desc);
|
rt_usbd_device_set_descriptor(udevice, &compsit_desc);
|
||||||
|
rt_usbd_device_set_string(udevice, ustring);
|
||||||
#else
|
#else
|
||||||
rt_usbd_device_set_descriptor(udevice, cls->dev_desc);
|
rt_usbd_device_set_descriptor(udevice, cls->dev_desc);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue