mirror of
https://github.com/hathach/tinyusb.git
synced 2025-03-23 13:20:54 +00:00
migrate bth device to new control xfer cb
This commit is contained in:
parent
61ad7bef71
commit
9f853685ae
@ -186,45 +186,45 @@ uint16_t btd_open(uint8_t rhport, tusb_desc_interface_t const *itf_desc, uint16_
|
|||||||
return drv_len;
|
return drv_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool btd_control_complete(uint8_t rhport, tusb_control_request_t const *request)
|
bool btd_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_request_t const *request)
|
||||||
{
|
{
|
||||||
(void)rhport;
|
(void)rhport;
|
||||||
|
|
||||||
// Handle class request only
|
if ( stage == CONTROL_STAGE_SETUP )
|
||||||
TU_VERIFY(request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS);
|
{
|
||||||
|
if (request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS &&
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
else if (request->bmRequestType_bit.recipient == TUSB_REQ_RCPT_INTERFACE)
|
||||||
|
{
|
||||||
|
if (request->bRequest == TUSB_REQ_SET_INTERFACE && _btd_itf.itf_num + 1 == request->wIndex)
|
||||||
|
{
|
||||||
|
// TODO: Set interface it would involve changing size of endpoint size
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// HCI command packet for Primary Controller function in a composite device
|
||||||
|
TU_VERIFY(request->bRequest == 0 && request->wValue == 0 && request->wIndex == _btd_itf.itf_num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else return false;
|
||||||
|
|
||||||
if (tud_bt_hci_cmd_cb) tud_bt_hci_cmd_cb(&_btd_itf.hci_cmd, request->wLength);
|
return tud_control_xfer(rhport, request, &_btd_itf.hci_cmd, request->wLength);
|
||||||
|
}
|
||||||
|
else if ( stage == CONTROL_STAGE_DATA )
|
||||||
|
{
|
||||||
|
// Handle class request only
|
||||||
|
TU_VERIFY(request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS);
|
||||||
|
|
||||||
|
if (tud_bt_hci_cmd_cb) tud_bt_hci_cmd_cb(&_btd_itf.hci_cmd, request->wLength);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool btd_control_request(uint8_t rhport, tusb_control_request_t const *request)
|
|
||||||
{
|
|
||||||
(void)rhport;
|
|
||||||
|
|
||||||
if (request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS &&
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
else if (request->bmRequestType_bit.recipient == TUSB_REQ_RCPT_INTERFACE)
|
|
||||||
{
|
|
||||||
if (request->bRequest == TUSB_REQ_SET_INTERFACE && _btd_itf.itf_num + 1 == request->wIndex)
|
|
||||||
{
|
|
||||||
// TODO: Set interface it would involve changing size of endpoint size
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// HCI command packet for Primary Controller function in a composite device
|
|
||||||
TU_VERIFY(request->bRequest == 0 && request->wValue == 0 && request->wIndex == _btd_itf.itf_num);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else return false;
|
|
||||||
|
|
||||||
return tud_control_xfer(rhport, request, &_btd_itf.hci_cmd, request->wLength);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool btd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes)
|
bool btd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes)
|
||||||
{
|
{
|
||||||
(void)result;
|
(void)result;
|
||||||
|
@ -96,12 +96,11 @@ bool tud_bt_acl_data_send(void *acl_data, uint16_t data_len);
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Internal Class Driver API
|
// Internal Class Driver API
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
void btd_init (void);
|
void btd_init (void);
|
||||||
void btd_reset (uint8_t rhport);
|
void btd_reset (uint8_t rhport);
|
||||||
uint16_t btd_open (uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t max_len);
|
uint16_t btd_open (uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t max_len);
|
||||||
bool btd_control_request (uint8_t rhport, tusb_control_request_t const * request);
|
bool btd_control_xfer_cb (uint8_t rhport, uint8_t stage, tusb_control_request_t const *request);
|
||||||
bool btd_control_complete (uint8_t rhport, tusb_control_request_t const * request);
|
bool btd_xfer_cb (uint8_t rhport, uint8_t edpt_addr, xfer_result_t result, uint32_t xferred_bytes);
|
||||||
bool btd_xfer_cb (uint8_t rhport, uint8_t edpt_addr, xfer_result_t result, uint32_t xferred_bytes);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -207,8 +207,7 @@ static usbd_class_driver_t const _usbd_driver[] =
|
|||||||
.init = btd_init,
|
.init = btd_init,
|
||||||
.reset = btd_reset,
|
.reset = btd_reset,
|
||||||
.open = btd_open,
|
.open = btd_open,
|
||||||
.control_xfer_cb = btd_control_request,
|
.control_xfer_cb = btd_control_xfer_cb,
|
||||||
.control_complete = btd_control_complete,
|
|
||||||
.xfer_cb = btd_xfer_cb,
|
.xfer_cb = btd_xfer_cb,
|
||||||
.sof = NULL
|
.sof = NULL
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user