summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/device/usbd.c18
-rw-r--r--src/tusb_option.h2
2 files changed, 9 insertions, 11 deletions
diff --git a/src/device/usbd.c b/src/device/usbd.c
index 60819bd58..cb99b6091 100644
--- a/src/device/usbd.c
+++ b/src/device/usbd.c
@@ -82,7 +82,7 @@ typedef struct {
//--------------------------------------------------------------------+
// Class & Device Driver
//--------------------------------------------------------------------+
-CFG_TUSB_ATTR_USBRAM CFG_TUSB_MEM_ALIGN uint8_t usbd_enum_buffer[CFG_TUD_ENUM_BUFFER_SIZE];
+CFG_TUSB_ATTR_USBRAM CFG_TUSB_MEM_ALIGN uint8_t _usbd_ctrl_buf[CFG_TUD_CTRL_BUFSIZE];
static usbd_device_info_t _usbd_dev;
static usbd_class_driver_t const usbd_class_drivers[] =
@@ -321,7 +321,9 @@ static tusb_error_t proc_control_request_st(uint8_t rhport, tusb_control_request
if ( len )
{
- usbd_control_xfer_st(rhport, p_request->bmRequestType_bit.direction, (uint8_t*) buffer, len );
+ TU_ASSERT( len <= CFG_TUD_CTRL_BUFSIZE, TUSB_ERROR_NOT_ENOUGH_MEMORY);
+ memcpy(_usbd_ctrl_buf, buffer, len);
+ usbd_control_xfer_st(rhport, p_request->bmRequestType_bit.direction, (uint8_t*) _usbd_ctrl_buf, len );
}else
{
dcd_control_stall(rhport); // stall unsupported descriptor
@@ -329,8 +331,8 @@ static tusb_error_t proc_control_request_st(uint8_t rhport, tusb_control_request
}
else if (TUSB_REQ_GET_CONFIGURATION == p_request->bRequest )
{
- memcpy(usbd_enum_buffer, &_usbd_dev.config_num, 1);
- usbd_control_xfer_st(rhport, p_request->bmRequestType_bit.direction, (uint8_t*) usbd_enum_buffer, 1);
+ memcpy(_usbd_ctrl_buf, &_usbd_dev.config_num, 1);
+ usbd_control_xfer_st(rhport, p_request->bmRequestType_bit.direction, (uint8_t*) _usbd_ctrl_buf, 1);
}
else if ( TUSB_REQ_SET_ADDRESS == p_request->bRequest )
{
@@ -469,7 +471,7 @@ static uint16_t get_descriptor(uint8_t rhport, tusb_control_request_t const * co
extern tusb_desc_device_t const _desc_auto_device;
extern uint8_t const * const _desc_auto_config;
- descs.device = (uint8_t const*) &_desc_auto_device;
+ descs.device = (uint8_t const*) &_desc_auto_device;
descs.config = _desc_auto_config;
#endif
@@ -508,11 +510,7 @@ static uint16_t get_descriptor(uint8_t rhport, tusb_control_request_t const * co
// up to Host's length
len = min16_of(p_request->wLength, len );
- TU_ASSERT( len <= CFG_TUD_ENUM_BUFFER_SIZE, 0);
-
- // FIXME copy data to enum buffer
- memcpy(usbd_enum_buffer, desc_data, len);
- (*pp_buffer) = usbd_enum_buffer;
+ (*pp_buffer) = desc_data;
return len;
}
diff --git a/src/tusb_option.h b/src/tusb_option.h
index de4720620..6d3292171 100644
--- a/src/tusb_option.h
+++ b/src/tusb_option.h
@@ -156,7 +156,7 @@
#endif
#ifndef CFG_TUD_ENUM_BUFFER_SIZE
- #define CFG_TUD_ENUM_BUFFER_SIZE 256
+ #define CFG_TUD_CTRL_BUFSIZE 256
#endif
#ifndef CFG_TUD_DESC_AUTO