summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhathach <[email protected]>2023-11-24 16:08:06 +0700
committerhathach <[email protected]>2023-11-24 16:08:48 +0700
commit6e5c7f43906bac8ab47642e56c153297b83f3679 (patch)
tree3f2a922c7126df4b25e3347cc17c792a8689ad58 /src
parent5e54bd37b694542e3f719b9c3f151b8e7e26e86a (diff)
rename to CFG_TUD_BTH_HISTORICAL_COMPATIBLE, move CFG_TUD_BTH_ISO_ALT_COUNT to tusb_option.h and mandatory for BTH driver
Diffstat (limited to 'src')
-rwxr-xr-xsrc/class/bth/bth_device.c4
-rwxr-xr-xsrc/class/bth/bth_device.h12
-rw-r--r--src/device/usbd.h4
-rw-r--r--src/tusb_option.h13
4 files changed, 18 insertions, 15 deletions
diff --git a/src/class/bth/bth_device.c b/src/class/bth/bth_device.c
index be36e8c11..f145e2ead 100755
--- a/src/class/bth/bth_device.c
+++ b/src/class/bth/bth_device.c
@@ -204,7 +204,9 @@ bool btd_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_request_t c
request->bmRequestType_bit.recipient == TUSB_REQ_RCPT_DEVICE)
{
// HCI command packet addressing for single function Primary Controllers
- TU_VERIFY((CFG_TUD_BTH_HISTORICAL_COMPAT && request->bRequest == 0xe0) || (request->bRequest == 0 && request->wValue == 0 && request->wIndex == 0));
+ // also compatible with historical mode if enabled
+ TU_VERIFY((request->bRequest == 0 && request->wValue == 0 && request->wIndex == 0) ||
+ (CFG_TUD_BTH_HISTORICAL_COMPATIBLE && request->bRequest == 0xe0));
}
else if (request->bmRequestType_bit.recipient == TUSB_REQ_RCPT_INTERFACE)
{
diff --git a/src/class/bth/bth_device.h b/src/class/bth/bth_device.h
index c23e74bfb..e782c532b 100755
--- a/src/class/bth/bth_device.h
+++ b/src/class/bth/bth_device.h
@@ -36,15 +36,15 @@
#ifndef CFG_TUD_BTH_EVENT_EPSIZE
#define CFG_TUD_BTH_EVENT_EPSIZE 16
#endif
+
#ifndef CFG_TUD_BTH_DATA_EPSIZE
#define CFG_TUD_BTH_DATA_EPSIZE 64
#endif
-#ifndef CFG_TUD_BTH_HISTORICAL_COMPAT
-#define CFG_TUD_BTH_HISTORICAL_COMPAT 0
-#endif
-#ifndef CFG_TUD_BTH_ISO_ALT_COUNT
-// See Bluetooth Core v5.3, Vol. 4, Part B, Section 2.1
-#error You must tell the driver the number of ISO endpoints to use
+
+// Allow BTH class to work in historically compatibility mode where the bRequest is always 0xe0.
+// See Bluetooth Core v5.3, Vol. 4, Part B, Section 2.2
+#ifndef CFG_TUD_BTH_HISTORICAL_COMPATIBLE
+#define CFG_TUD_BTH_HISTORICAL_COMPATIBLE 0
#endif
typedef struct TU_ATTR_PACKED
diff --git a/src/device/usbd.h b/src/device/usbd.h
index 93a2033c4..e14e3d6de 100644
--- a/src/device/usbd.h
+++ b/src/device/usbd.h
@@ -771,10 +771,6 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb
#define TUD_BT_PROTOCOL_PRIMARY_CONTROLLER 0x01
#define TUD_BT_PROTOCOL_AMP_CONTROLLER 0x02
-#ifndef CFG_TUD_BTH_ISO_ALT_COUNT
-#define CFG_TUD_BTH_ISO_ALT_COUNT 0
-#endif
-
// Length of template descriptor: 38 bytes + number of ISO alternatives * 23
#define TUD_BTH_DESC_LEN (8 + 9 + 7 + 7 + 7 + (CFG_TUD_BTH_ISO_ALT_COUNT) * (9 + 7 + 7))
diff --git a/src/tusb_option.h b/src/tusb_option.h
index b8509a069..7920fbf35 100644
--- a/src/tusb_option.h
+++ b/src/tusb_option.h
@@ -342,6 +342,15 @@
#define CFG_TUD_INTERFACE_MAX 16
#endif
+//------------- Device Class Driver -------------//
+#ifndef CFG_TUD_BTH
+ #define CFG_TUD_BTH 0
+#endif
+
+#if CFG_TUD_BTH && !defined(CFG_TUD_BTH_ISO_ALT_COUNT)
+#error CFG_TUD_BTH_ISO_ALT_COUNT must be defined to tell Bluetooth driver the number of ISO endpoints to use
+#endif
+
#ifndef CFG_TUD_CDC
#define CFG_TUD_CDC 0
#endif
@@ -382,10 +391,6 @@
#define CFG_TUD_DFU 0
#endif
-#ifndef CFG_TUD_BTH
- #define CFG_TUD_BTH 0
-#endif
-
#ifndef CFG_TUD_ECM_RNDIS
#ifdef CFG_TUD_NET
#warning "CFG_TUD_NET is renamed to CFG_TUD_ECM_RNDIS"