summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2022-03-04 22:23:56 +0700
committerhathach <[email protected]>2022-03-04 22:23:56 +0700
commit271f905521edfdcfc5649bbe6906f3d3c6d4b10f (patch)
tree72b07185b8e58887ab9f199f7cc0387097e03620
parent15ced09bb2c19663670e2f3a268155b5ecc6e72d (diff)
add tuh_descriptor_string_manufacturer/produce/serial_get
-rw-r--r--src/host/usbh.c47
-rw-r--r--src/host/usbh.h16
2 files changed, 33 insertions, 30 deletions
diff --git a/src/host/usbh.c b/src/host/usbh.c
index ec607a1b6..241231c1e 100644
--- a/src/host/usbh.c
+++ b/src/host/usbh.c
@@ -86,10 +86,11 @@ typedef struct {
};
//------------- device descriptor -------------//
+ uint8_t ep0_size;
+
uint16_t vid;
uint16_t pid;
- uint8_t ep0_size;
uint8_t i_manufacturer;
uint8_t i_product;
uint8_t i_serial;
@@ -248,7 +249,6 @@ bool tuh_vid_pid_get(uint8_t dev_addr, uint16_t* vid, uint16_t* pid)
*vid = *pid = 0;
TU_VERIFY(tuh_mounted(dev_addr));
-
usbh_device_t const* dev = get_device(dev_addr);
*vid = dev->vid;
@@ -308,7 +308,7 @@ bool tuh_descriptor_configuration_get(uint8_t daddr, uint8_t index, void* buffer
}
bool tuh_descriptor_string_get(uint8_t daddr, uint16_t language_id, uint8_t index,
- void* buf, uint16_t len, tuh_control_complete_cb_t complete_cb)
+ void* buffer, uint16_t len, tuh_control_complete_cb_t complete_cb)
{
tusb_control_request_t const request =
{
@@ -324,29 +324,32 @@ bool tuh_descriptor_string_get(uint8_t daddr, uint16_t language_id, uint8_t inde
.wLength = tu_htole16(len)
};
- TU_ASSERT( tuh_control_xfer(daddr, &request, buf, complete_cb) );
+ TU_ASSERT( tuh_control_xfer(daddr, &request, buffer, complete_cb) );
return true;
}
-uint8_t tuh_i_manufacturer_get(uint8_t dev_addr) {
- TU_VERIFY(tuh_mounted(dev_addr));
- usbh_device_t const* dev = get_device(dev_addr);
-
- return dev->i_manufacturer;
+// Get manufacturer string descriptor
+bool tuh_descriptor_string_manufacturer_get(uint8_t daddr, uint16_t language_id, void* buffer, uint16_t len, tuh_control_complete_cb_t complete_cb)
+{
+ TU_VERIFY(tuh_mounted(daddr));
+ usbh_device_t const* dev = get_device(daddr);
+ return tuh_descriptor_string_get(daddr, language_id, dev->i_manufacturer, buffer, len, complete_cb);
}
-uint8_t tuh_i_serial_get(uint8_t dev_addr) {
- TU_VERIFY(tuh_mounted(dev_addr));
- usbh_device_t const* dev = get_device(dev_addr);
-
- return dev->i_serial;
+// Get product string descriptor
+bool tuh_descriptor_string_product_get(uint8_t daddr, uint16_t language_id, void* buffer, uint16_t len, tuh_control_complete_cb_t complete_cb)
+{
+ TU_VERIFY(tuh_mounted(daddr));
+ usbh_device_t const* dev = get_device(daddr);
+ return tuh_descriptor_string_get(daddr, language_id, dev->i_product, buffer, len, complete_cb);
}
-uint8_t tuh_i_product_get(uint8_t dev_addr) {
- TU_VERIFY(tuh_mounted(dev_addr));
- usbh_device_t const* dev = get_device(dev_addr);
-
- return dev->i_product;
+// 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)
+{
+ TU_VERIFY(tuh_mounted(daddr));
+ usbh_device_t const* dev = get_device(daddr);
+ return tuh_descriptor_string_get(daddr, language_id, dev->i_serial, buffer, len, complete_cb);
}
bool tuh_configuration_set(uint8_t daddr, uint8_t config_num, tuh_control_complete_cb_t complete_cb)
@@ -957,9 +960,9 @@ static bool enum_get_device_desc_complete(uint8_t dev_addr, tusb_control_request
dev->vid = desc_device->idVendor;
dev->pid = desc_device->idProduct;
- dev->i_manufacturer = desc_device->iManufacturer;
- dev->i_product = desc_device->iProduct;
- dev->i_serial = desc_device->iSerialNumber;
+// dev->i_manufacturer = desc_device->iManufacturer;
+// dev->i_product = desc_device->iProduct;
+// dev->i_serial = desc_device->iSerialNumber;
// if (tuh_attach_cb) tuh_attach_cb((tusb_desc_device_t*) _usbh_ctrl_buf);
diff --git a/src/host/usbh.h b/src/host/usbh.h
index a10d6df0e..1aef603a0 100644
--- a/src/host/usbh.h
+++ b/src/host/usbh.h
@@ -101,17 +101,17 @@ bool tuh_descriptor_device_get(uint8_t daddr, void* buffer, uint16_t len, tuh_co
bool tuh_descriptor_configuration_get(uint8_t daddr, uint8_t index, void* buffer, uint16_t len, tuh_control_complete_cb_t complete_cb);
// Get string descriptor
-// Reads the string descriptor at the string index into the buffer. This is the
-// full response so the first entry is the length and the constant 0x03 for
-// string descriptor type.
bool tuh_descriptor_string_get(uint8_t daddr, uint16_t language_id, uint8_t index,
- void* buf, uint16_t len, tuh_control_complete_cb_t complete_cb);
+ void* buffer, uint16_t len, tuh_control_complete_cb_t complete_cb);
+// Get manufacturer string descriptor
+bool tuh_descriptor_string_manufacturer_get(uint8_t daddr, uint16_t language_id, void* buffer, uint16_t len, tuh_control_complete_cb_t complete_cb);
-// Gets the string indices for common device descriptor data.
-uint8_t tuh_i_manufacturer_get(uint8_t daddr);
-uint8_t tuh_i_serial_get(uint8_t daddr);
-uint8_t tuh_i_product_get(uint8_t daddr);
+// Get product string descriptor
+bool tuh_descriptor_string_product_get(uint8_t daddr, uint16_t language_id, void* buffer, uint16_t len, tuh_control_complete_cb_t complete_cb);
+
+// 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);
//--------------------------------------------------------------------+
// APPLICATION CALLBACK