summaryrefslogtreecommitdiff
path: root/src/host
diff options
context:
space:
mode:
authorhathach <[email protected]>2022-03-09 11:03:29 +0700
committerhathach <[email protected]>2022-03-09 11:03:29 +0700
commitdb9d97c9473f29ad59a87d641e6d41a27a00f332 (patch)
treefcbb5ba3c4cce6ee9dac1272bcb1ae31b931e880 /src/host
parent8bf18430b8d91104aa926ac3095a9e5dd94ef503 (diff)
add tuh_descriptor_hid_report_get()
Diffstat (limited to 'src/host')
-rw-r--r--src/host/usbh.c22
-rw-r--r--src/host/usbh.h3
2 files changed, 25 insertions, 0 deletions
diff --git a/src/host/usbh.c b/src/host/usbh.c
index 192979ce6..b047179c5 100644
--- a/src/host/usbh.c
+++ b/src/host/usbh.c
@@ -299,6 +299,7 @@ bool tuh_descriptor_get(uint8_t daddr, uint8_t type, uint8_t index, void* buffer
bool tuh_descriptor_device_get(uint8_t daddr, void* buffer, uint16_t len, tuh_control_complete_cb_t complete_cb)
{
+ len = tu_min16(len, sizeof(tusb_desc_device_t));
return tuh_descriptor_get(daddr, TUSB_DESC_DEVICE, 0, buffer, len, complete_cb);
}
@@ -361,6 +362,27 @@ bool tuh_descriptor_string_serial_get(uint8_t daddr, uint16_t language_id, void*
return tuh_descriptor_string_get(daddr, language_id, dev->i_serial, buffer, len, complete_cb);
}
+// Get HID report descriptor
+bool tuh_descriptor_hid_report_get(uint8_t daddr, uint8_t itf_num, uint8_t desc_type, void* buffer, uint16_t len, tuh_control_complete_cb_t complete_cb)
+{
+ TU_LOG2("HID Get Report Descriptor\r\n");
+ tusb_control_request_t const request =
+ {
+ .bmRequestType_bit =
+ {
+ .recipient = TUSB_REQ_RCPT_INTERFACE,
+ .type = TUSB_REQ_TYPE_STANDARD,
+ .direction = TUSB_DIR_IN
+ },
+ .bRequest = TUSB_REQ_GET_DESCRIPTOR,
+ .wValue = tu_htole16(TU_U16(desc_type, 0)),
+ .wIndex = itf_num,
+ .wLength = len
+ };
+
+ return tuh_control_xfer(daddr, &request, buffer, complete_cb);
+}
+
bool tuh_configuration_set(uint8_t daddr, uint8_t config_num, tuh_control_complete_cb_t complete_cb)
{
TU_LOG2("Set Configuration = %d\r\n", config_num);
diff --git a/src/host/usbh.h b/src/host/usbh.h
index 9465d1d1b..6fea2fac5 100644
--- a/src/host/usbh.h
+++ b/src/host/usbh.h
@@ -112,6 +112,9 @@ bool tuh_descriptor_string_product_get(uint8_t daddr, uint16_t language_id, void
// Get serial string descriptor
bool tuh_descriptor_string_serial_get(uint8_t daddr, uint16_t language_id, void* buffer, uint16_t len, tuh_control_complete_cb_t complete_cb);
+// Get HID report descriptor
+bool tuh_descriptor_hid_report_get(uint8_t daddr, uint8_t itf_num, uint8_t desc_type, void* buffer, uint16_t len, tuh_control_complete_cb_t complete_cb);
+
//--------------------------------------------------------------------+
// APPLICATION CALLBACK
//--------------------------------------------------------------------+