Skip to content

Commit 48929b2

Browse files
committed
tinyusb: Add descriptor for CDC/HCI
This adds USB configuration descriptor handling for HCI transport over USB/CDC interface. Code for transport will be added to nimble.
1 parent e82d060 commit 48929b2

File tree

2 files changed

+62
-1
lines changed

2 files changed

+62
-1
lines changed

hw/usb/tinyusb/std_descriptors/include/tusb_config.h

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,41 @@ extern "C" {
106106
#define USBD_CDC_CONSOLE_DATA_EP_SIZE USBD_CDC_DATA_EP_SIZE
107107
#endif
108108

109+
/*
110+
* If CDC_HCI does not have specific values for endpoint configuration,
111+
* use values for unspecified CDC
112+
*/
113+
#if defined(MYNEWT_VAL_USBD_CDC_HCI_NOTIFY_EP)
114+
#define USBD_CDC_HCI_NOTIFY_EP MYNEWT_VAL(USBD_CDC_HCI_NOTIFY_EP)
115+
#else
116+
#define USBD_CDC_HCI_NOTIFY_EP USBD_BTH_EVENT_EP
117+
#endif
118+
119+
#if defined(MYNEWT_VAL_USBD_CDC_HCI_NOTIFY_EP_SIZE)
120+
#define USBD_CDC_HCI_NOTIFY_EP_SIZE MYNEWT_VAL(USBD_CDC_HCI_NOTIFY_EP_SIZE)
121+
#else
122+
#define USBD_CDC_HCI_NOTIFY_EP_SIZE USBD_CDC_NOTIFY_EP_SIZE
123+
#endif
124+
125+
#if defined(MYNEWT_VAL_USBD_CDC_HCI_DATA_OUT_EP)
126+
#define USBD_CDC_HCI_DATA_OUT_EP MYNEWT_VAL(USBD_CDC_HCI_DATA_OUT_EP)
127+
#else
128+
#define USBD_CDC_HCI_DATA_OUT_EP USBD_BTH_DATA_OUT_EP
129+
#endif
130+
131+
#if defined(MYNEWT_VAL_USBD_CDC_HCI_DATA_IN_EP)
132+
#define USBD_CDC_HCI_DATA_IN_EP MYNEWT_VAL(USBD_CDC_HCI_DATA_IN_EP)
133+
#else
134+
#define USBD_CDC_HCI_DATA_IN_EP USBD_BTH_DATA_IN_EP
135+
#endif
136+
137+
#if defined(MYNEWT_VAL_USBD_CDC_HCI_DATA_EP_SIZE)
138+
#define USBD_CDC_HCI_DATA_EP_SIZE MYNEWT_VAL(USBD_CDC_HCI_DATA_EP_SIZE)
139+
#else
140+
#define USBD_CDC_HCI_DATA_EP_SIZE USBD_CDC_DATA_EP_SIZE
141+
#endif
142+
143+
109144
#if MYNEWT_VAL(USBD_CDC)
110145
#define CFG_CDC MYNEWT_VAL(USBD_CDC)
111146
#else
@@ -118,7 +153,13 @@ extern "C" {
118153
#define CFG_CDC_CONSOLE 0
119154
#endif
120155

121-
#define CFG_TUD_CDC ((CFG_CDC) + (CFG_CDC_CONSOLE))
156+
#if MYNEWT_VAL(USBD_CDC_HCI)
157+
#define CFG_CDC_HCI MYNEWT_VAL(USBD_CDC_HCI)
158+
#else
159+
#define CFG_CDC_HCI 0
160+
#endif
161+
162+
#define CFG_TUD_CDC ((CFG_CDC) + (CFG_CDC_CONSOLE) + (CFG_CDC_HCI))
122163

123164
#if MYNEWT_VAL(USBD_HID)
124165
#define CFG_TUD_HID MYNEWT_VAL(USBD_HID)

hw/usb/tinyusb/std_descriptors/src/std_descriptors.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ enum usb_desc_ix {
5353
#else
5454
#define CDC_CONSOLE_IF_STR_IX 0
5555
#endif
56+
#if defined MYNEWT_VAL_USBD_CDC_HCI_DESCRIPTOR_STRING
57+
CDC_HCI_IF_STR_IX,
58+
#else
59+
#define CDC_HCI_IF_STR_IX 0
60+
#endif
5661
#if defined MYNEWT_VAL_USBD_MSC_DESCRIPTOR_STRING
5762
MSC_IF_STR_IX,
5863
#else
@@ -272,6 +277,11 @@ enum {
272277
ITF_NUM_CDC_CONSOLE_DATA,
273278
#endif
274279

280+
#if CFG_CDC_HCI
281+
ITF_NUM_CDC_HCI,
282+
ITF_NUM_CDC_HCI_DATA,
283+
#endif
284+
275285
#if CFG_TUD_MSC
276286
ITF_NUM_MSC,
277287
#endif
@@ -290,6 +300,7 @@ enum {
290300
#define CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + \
291301
CFG_CDC * TUD_CDC_DESC_LEN + \
292302
CFG_CDC_CONSOLE * TUD_CDC_DESC_LEN + \
303+
CFG_CDC_HCI * TUD_CDC_DESC_LEN + \
293304
CFG_TUD_MSC * TUD_MSC_DESC_LEN + \
294305
CFG_TUD_HID * TUD_HID_DESC_LEN + \
295306
CFG_TUD_BTH * TUD_BTH_DESC_LEN + \
@@ -313,6 +324,12 @@ const uint8_t desc_configuration[] = {
313324
(CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 512 : USBD_CDC_CONSOLE_DATA_EP_SIZE),
314325
#endif
315326

327+
#if CFG_CDC_HCI
328+
TUD_CDC_DESCRIPTOR(ITF_NUM_CDC_HCI, CDC_HCI_IF_STR_IX, USBD_CDC_HCI_NOTIFY_EP, USBD_CDC_HCI_NOTIFY_EP_SIZE,
329+
USBD_CDC_HCI_DATA_OUT_EP, USBD_CDC_HCI_DATA_IN_EP,
330+
(CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 512 : USBD_CDC_HCI_DATA_EP_SIZE),
331+
#endif
332+
316333
#if CFG_CDC
317334
TUD_CDC_DESCRIPTOR(ITF_NUM_CDC, CDC_IF_STR_IX, USBD_CDC_NOTIFY_EP, USBD_CDC_NOTIFY_EP_SIZE,
318335
USBD_CDC_DATA_OUT_EP, USBD_CDC_DATA_IN_EP,
@@ -358,6 +375,9 @@ const char *string_desc_arr[] = {
358375
#if defined MYNEWT_VAL_USBD_CDC_CONSOLE_DESCRIPTOR_STRING
359376
MYNEWT_VAL(USBD_CDC_CONSOLE_DESCRIPTOR_STRING),
360377
#endif
378+
#if defined MYNEWT_VAL_USBD_CDC_HCI_DESCRIPTOR_STRING
379+
MYNEWT_VAL(USBD_CDC_HCI_DESCRIPTOR_STRING),
380+
#endif
361381
#if defined MYNEWT_VAL_USBD_MSC_DESCRIPTOR_STRING
362382
MYNEWT_VAL(USBD_MSC_DESCRIPTOR_STRING),
363383
#endif

0 commit comments

Comments
 (0)