This is an automated email from the ASF dual-hosted git repository.

jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git

commit 48929b227467d3ec67214f4b442d3ce4f9e68352
Author: Jerzy Kasenberg <[email protected]>
AuthorDate: Thu Aug 18 15:16:18 2022 +0200

    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.
---
 .../tinyusb/std_descriptors/include/tusb_config.h  | 43 +++++++++++++++++++++-
 .../tinyusb/std_descriptors/src/std_descriptors.c  | 20 ++++++++++
 2 files changed, 62 insertions(+), 1 deletion(-)

diff --git a/hw/usb/tinyusb/std_descriptors/include/tusb_config.h 
b/hw/usb/tinyusb/std_descriptors/include/tusb_config.h
index 42cc716dd..0f2e62d90 100755
--- a/hw/usb/tinyusb/std_descriptors/include/tusb_config.h
+++ b/hw/usb/tinyusb/std_descriptors/include/tusb_config.h
@@ -106,6 +106,41 @@ extern "C" {
 #define USBD_CDC_CONSOLE_DATA_EP_SIZE   USBD_CDC_DATA_EP_SIZE
 #endif
 
+/*
+ * If CDC_HCI does not have specific values for endpoint configuration,
+ * use values for unspecified CDC
+ */
+#if defined(MYNEWT_VAL_USBD_CDC_HCI_NOTIFY_EP)
+#define USBD_CDC_HCI_NOTIFY_EP      MYNEWT_VAL(USBD_CDC_HCI_NOTIFY_EP)
+#else
+#define USBD_CDC_HCI_NOTIFY_EP      USBD_BTH_EVENT_EP
+#endif
+
+#if defined(MYNEWT_VAL_USBD_CDC_HCI_NOTIFY_EP_SIZE)
+#define USBD_CDC_HCI_NOTIFY_EP_SIZE MYNEWT_VAL(USBD_CDC_HCI_NOTIFY_EP_SIZE)
+#else
+#define USBD_CDC_HCI_NOTIFY_EP_SIZE USBD_CDC_NOTIFY_EP_SIZE
+#endif
+
+#if defined(MYNEWT_VAL_USBD_CDC_HCI_DATA_OUT_EP)
+#define USBD_CDC_HCI_DATA_OUT_EP    MYNEWT_VAL(USBD_CDC_HCI_DATA_OUT_EP)
+#else
+#define USBD_CDC_HCI_DATA_OUT_EP    USBD_BTH_DATA_OUT_EP
+#endif
+
+#if defined(MYNEWT_VAL_USBD_CDC_HCI_DATA_IN_EP)
+#define USBD_CDC_HCI_DATA_IN_EP     MYNEWT_VAL(USBD_CDC_HCI_DATA_IN_EP)
+#else
+#define USBD_CDC_HCI_DATA_IN_EP     USBD_BTH_DATA_IN_EP
+#endif
+
+#if defined(MYNEWT_VAL_USBD_CDC_HCI_DATA_EP_SIZE)
+#define USBD_CDC_HCI_DATA_EP_SIZE   MYNEWT_VAL(USBD_CDC_HCI_DATA_EP_SIZE)
+#else
+#define USBD_CDC_HCI_DATA_EP_SIZE   USBD_CDC_DATA_EP_SIZE
+#endif
+
+
 #if MYNEWT_VAL(USBD_CDC)
 #define CFG_CDC                  MYNEWT_VAL(USBD_CDC)
 #else
@@ -118,7 +153,13 @@ extern "C" {
 #define CFG_CDC_CONSOLE          0
 #endif
 
-#define CFG_TUD_CDC              ((CFG_CDC) + (CFG_CDC_CONSOLE))
+#if MYNEWT_VAL(USBD_CDC_HCI)
+#define CFG_CDC_HCI              MYNEWT_VAL(USBD_CDC_HCI)
+#else
+#define CFG_CDC_HCI              0
+#endif
+
+#define CFG_TUD_CDC              ((CFG_CDC) + (CFG_CDC_CONSOLE) + 
(CFG_CDC_HCI))
 
 #if MYNEWT_VAL(USBD_HID)
 #define CFG_TUD_HID              MYNEWT_VAL(USBD_HID)
diff --git a/hw/usb/tinyusb/std_descriptors/src/std_descriptors.c 
b/hw/usb/tinyusb/std_descriptors/src/std_descriptors.c
index 515777bfc..f3d95e839 100755
--- a/hw/usb/tinyusb/std_descriptors/src/std_descriptors.c
+++ b/hw/usb/tinyusb/std_descriptors/src/std_descriptors.c
@@ -53,6 +53,11 @@ enum usb_desc_ix {
 #else
 #define CDC_CONSOLE_IF_STR_IX   0
 #endif
+#if defined MYNEWT_VAL_USBD_CDC_HCI_DESCRIPTOR_STRING
+    CDC_HCI_IF_STR_IX,
+#else
+#define CDC_HCI_IF_STR_IX   0
+#endif
 #if defined MYNEWT_VAL_USBD_MSC_DESCRIPTOR_STRING
     MSC_IF_STR_IX,
 #else
@@ -272,6 +277,11 @@ enum {
     ITF_NUM_CDC_CONSOLE_DATA,
 #endif
 
+#if CFG_CDC_HCI
+    ITF_NUM_CDC_HCI,
+    ITF_NUM_CDC_HCI_DATA,
+#endif
+
 #if CFG_TUD_MSC
     ITF_NUM_MSC,
 #endif
@@ -290,6 +300,7 @@ enum {
 #define CONFIG_TOTAL_LEN    (TUD_CONFIG_DESC_LEN + \
                              CFG_CDC * TUD_CDC_DESC_LEN + \
                              CFG_CDC_CONSOLE * TUD_CDC_DESC_LEN + \
+                             CFG_CDC_HCI * TUD_CDC_DESC_LEN + \
                              CFG_TUD_MSC * TUD_MSC_DESC_LEN + \
                              CFG_TUD_HID * TUD_HID_DESC_LEN + \
                              CFG_TUD_BTH * TUD_BTH_DESC_LEN + \
@@ -313,6 +324,12 @@ const uint8_t desc_configuration[] = {
                        (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 512 : 
USBD_CDC_CONSOLE_DATA_EP_SIZE),
 #endif
 
+#if CFG_CDC_HCI
+    TUD_CDC_DESCRIPTOR(ITF_NUM_CDC_HCI, CDC_HCI_IF_STR_IX, 
USBD_CDC_HCI_NOTIFY_EP, USBD_CDC_HCI_NOTIFY_EP_SIZE,
+                       USBD_CDC_HCI_DATA_OUT_EP, USBD_CDC_HCI_DATA_IN_EP,
+                       (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 512 : 
USBD_CDC_HCI_DATA_EP_SIZE),
+#endif
+
 #if CFG_CDC
     TUD_CDC_DESCRIPTOR(ITF_NUM_CDC, CDC_IF_STR_IX, USBD_CDC_NOTIFY_EP, 
USBD_CDC_NOTIFY_EP_SIZE,
                        USBD_CDC_DATA_OUT_EP, USBD_CDC_DATA_IN_EP,
@@ -358,6 +375,9 @@ const char *string_desc_arr[] = {
 #if defined MYNEWT_VAL_USBD_CDC_CONSOLE_DESCRIPTOR_STRING
     MYNEWT_VAL(USBD_CDC_CONSOLE_DESCRIPTOR_STRING),
 #endif
+#if defined MYNEWT_VAL_USBD_CDC_HCI_DESCRIPTOR_STRING
+    MYNEWT_VAL(USBD_CDC_HCI_DESCRIPTOR_STRING),
+#endif
 #if defined MYNEWT_VAL_USBD_MSC_DESCRIPTOR_STRING
     MYNEWT_VAL(USBD_MSC_DESCRIPTOR_STRING),
 #endif

Reply via email to