diff options
| author | Ha Thach <[email protected]> | 2023-11-24 16:28:08 +0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-11-24 16:28:08 +0700 |
| commit | f1898fef8c605843e1a783bf758949247caae90e (patch) | |
| tree | 3f2a922c7126df4b25e3347cc17c792a8689ad58 /src/class | |
| parent | f03f60eae2894993373b48e2104bf02116bef1fa (diff) | |
| parent | 6e5c7f43906bac8ab47642e56c153297b83f3679 (diff) | |
Merge pull request #2279 from antoniovazquezblanco/bth
Add historical EP compatibility to bth class
Diffstat (limited to 'src/class')
| -rwxr-xr-x | src/class/bth/bth_device.c | 4 | ||||
| -rwxr-xr-x | src/class/bth/bth_device.h | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/class/bth/bth_device.c b/src/class/bth/bth_device.c index c5c74d26a..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(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 921bd7a1a..e782c532b 100755 --- a/src/class/bth/bth_device.h +++ b/src/class/bth/bth_device.h @@ -36,10 +36,17 @@ #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 +// 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 { uint16_t op_code; |
