summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhathach <[email protected]>2019-11-27 12:34:30 +0700
committerhathach <[email protected]>2019-11-27 12:34:30 +0700
commitfe1eadf177ec42914ce156704c6d2a6d85371945 (patch)
tree4851f5865b5fd06beb874f8f676a0b470be4e449 /src
parent8a1b6327ba22940e42424e7ff208a81a4eb93e53 (diff)
fix #229
Diffstat (limited to 'src')
-rw-r--r--src/class/cdc/cdc_device.c4
-rw-r--r--src/class/dfu/dfu_rt_device.c14
-rw-r--r--src/class/hid/hid_device.c52
-rw-r--r--src/class/midi/midi_device.c5
-rw-r--r--src/class/msc/msc_device.c3
5 files changed, 36 insertions, 42 deletions
diff --git a/src/class/cdc/cdc_device.c b/src/class/cdc/cdc_device.c
index 6da9157bd..b124b473a 100644
--- a/src/class/cdc/cdc_device.c
+++ b/src/class/cdc/cdc_device.c
@@ -311,8 +311,8 @@ bool cdcd_control_complete(uint8_t rhport, tusb_control_request_t const * reques
// return false to stall control endpoint (e.g unsupported request)
bool cdcd_control_request(uint8_t rhport, tusb_control_request_t const * request)
{
- //------------- Class Specific Request -------------//
- TU_ASSERT(request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS);
+ // Handle class request only
+ TU_VERIFY(request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS);
// TODO Support multiple interfaces
uint8_t const itf = 0;
diff --git a/src/class/dfu/dfu_rt_device.c b/src/class/dfu/dfu_rt_device.c
index 59adae7ef..ad1871dad 100644
--- a/src/class/dfu/dfu_rt_device.c
+++ b/src/class/dfu/dfu_rt_device.c
@@ -79,21 +79,17 @@ bool dfu_rtd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16
bool dfu_rtd_control_complete(uint8_t rhport, tusb_control_request_t const * request)
{
(void) rhport;
+ (void) request;
- //------------- Class Specific Request -------------//
- TU_VERIFY(request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS);
- TU_VERIFY(request->bmRequestType_bit.recipient == TUSB_REQ_RCPT_INTERFACE);
-
+ // nothing to do
return true;
}
bool dfu_rtd_control_request(uint8_t rhport, tusb_control_request_t const * request)
{
- (void) rhport;
-
- //------------- Class Specific Request -------------//
- TU_ASSERT(request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS);
- TU_ASSERT(request->bmRequestType_bit.recipient == TUSB_REQ_RCPT_INTERFACE);
+ // Handle class request only
+ TU_VERIFY(request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS);
+ TU_VERIFY(request->bmRequestType_bit.recipient == TUSB_REQ_RCPT_INTERFACE);
switch ( request->bRequest )
{
diff --git a/src/class/hid/hid_device.c b/src/class/hid/hid_device.c
index 1d35e63f0..8527fa5d6 100644
--- a/src/class/hid/hid_device.c
+++ b/src/class/hid/hid_device.c
@@ -191,89 +191,87 @@ bool hidd_open(uint8_t rhport, tusb_desc_interface_t const * desc_itf, uint16_t
// Handle class control request
// return false to stall control endpoint (e.g unsupported request)
-bool hidd_control_request(uint8_t rhport, tusb_control_request_t const * p_request)
+bool hidd_control_request(uint8_t rhport, tusb_control_request_t const * request)
{
- if (p_request->bmRequestType_bit.recipient != TUSB_REQ_RCPT_INTERFACE)
- {
- return false;
- }
- hidd_interface_t* p_hid = get_interface_by_itfnum( (uint8_t) p_request->wIndex );
+ TU_VERIFY(request->bmRequestType_bit.recipient == TUSB_REQ_RCPT_INTERFACE);
+
+ hidd_interface_t* p_hid = get_interface_by_itfnum( (uint8_t) request->wIndex );
TU_ASSERT(p_hid);
- if (p_request->bmRequestType_bit.type == TUSB_REQ_TYPE_STANDARD)
+ if (request->bmRequestType_bit.type == TUSB_REQ_TYPE_STANDARD)
{
//------------- STD Request -------------//
- uint8_t const desc_type = tu_u16_high(p_request->wValue);
- uint8_t const desc_index = tu_u16_low (p_request->wValue);
+ uint8_t const desc_type = tu_u16_high(request->wValue);
+ uint8_t const desc_index = tu_u16_low (request->wValue);
(void) desc_index;
- if (p_request->bRequest == TUSB_REQ_GET_DESCRIPTOR && desc_type == HID_DESC_TYPE_HID)
+ if (request->bRequest == TUSB_REQ_GET_DESCRIPTOR && desc_type == HID_DESC_TYPE_HID)
{
TU_VERIFY(p_hid->hid_descriptor != NULL);
- TU_VERIFY(tud_control_xfer(rhport, p_request, (void*) p_hid->hid_descriptor, p_hid->hid_descriptor->bLength));
+ TU_VERIFY(tud_control_xfer(rhport, request, (void*) p_hid->hid_descriptor, p_hid->hid_descriptor->bLength));
}
- else if (p_request->bRequest == TUSB_REQ_GET_DESCRIPTOR && desc_type == HID_DESC_TYPE_REPORT)
+ else if (request->bRequest == TUSB_REQ_GET_DESCRIPTOR && desc_type == HID_DESC_TYPE_REPORT)
{
uint8_t const * desc_report = tud_hid_descriptor_report_cb();
- tud_control_xfer(rhport, p_request, (void*) desc_report, p_hid->report_desc_len);
+ tud_control_xfer(rhport, request, (void*) desc_report, p_hid->report_desc_len);
}
else
{
return false; // stall unsupported request
}
}
- else if (p_request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS)
+ else if (request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS)
{
//------------- Class Specific Request -------------//
- switch( p_request->bRequest )
+ switch( request->bRequest )
{
case HID_REQ_CONTROL_GET_REPORT:
{
// wValue = Report Type | Report ID
- uint8_t const report_type = tu_u16_high(p_request->wValue);
- uint8_t const report_id = tu_u16_low(p_request->wValue);
+ uint8_t const report_type = tu_u16_high(request->wValue);
+ uint8_t const report_id = tu_u16_low(request->wValue);
- uint16_t xferlen = tud_hid_get_report_cb(report_id, (hid_report_type_t) report_type, p_hid->epin_buf, p_request->wLength);
+ uint16_t xferlen = tud_hid_get_report_cb(report_id, (hid_report_type_t) report_type, p_hid->epin_buf, request->wLength);
TU_ASSERT( xferlen > 0 );
- tud_control_xfer(rhport, p_request, p_hid->epin_buf, xferlen);
+ tud_control_xfer(rhport, request, p_hid->epin_buf, xferlen);
}
break;
case HID_REQ_CONTROL_SET_REPORT:
- TU_VERIFY(p_request->wLength <= sizeof(p_hid->epout_buf));
- tud_control_xfer(rhport, p_request, p_hid->epout_buf, p_request->wLength);
+ TU_VERIFY(request->wLength <= sizeof(p_hid->epout_buf));
+ tud_control_xfer(rhport, request, p_hid->epout_buf, request->wLength);
break;
case HID_REQ_CONTROL_SET_IDLE:
- p_hid->idle_rate = tu_u16_high(p_request->wValue);
+ p_hid->idle_rate = tu_u16_high(request->wValue);
if ( tud_hid_set_idle_cb )
{
// stall request if callback return false
if ( !tud_hid_set_idle_cb(p_hid->idle_rate) ) return false;
}
- tud_control_status(rhport, p_request);
+ tud_control_status(rhport, request);
break;
case HID_REQ_CONTROL_GET_IDLE:
// TODO idle rate of report
- tud_control_xfer(rhport, p_request, &p_hid->idle_rate, 1);
+ tud_control_xfer(rhport, request, &p_hid->idle_rate, 1);
break;
case HID_REQ_CONTROL_GET_PROTOCOL:
{
uint8_t protocol = (uint8_t)(1-p_hid->boot_mode); // 0 is Boot, 1 is Report protocol
- tud_control_xfer(rhport, p_request, &protocol, 1);
+ tud_control_xfer(rhport, request, &protocol, 1);
}
break;
case HID_REQ_CONTROL_SET_PROTOCOL:
- p_hid->boot_mode = 1 - p_request->wValue; // 0 is Boot, 1 is Report protocol
+ p_hid->boot_mode = 1 - request->wValue; // 0 is Boot, 1 is Report protocol
if (tud_hid_boot_mode_cb) tud_hid_boot_mode_cb(p_hid->boot_mode);
- tud_control_status(rhport, p_request);
+ tud_control_status(rhport, request);
break;
default: return false; // stall unsupported request
diff --git a/src/class/midi/midi_device.c b/src/class/midi/midi_device.c
index 11fe06e38..b278039bf 100644
--- a/src/class/midi/midi_device.c
+++ b/src/class/midi/midi_device.c
@@ -322,10 +322,9 @@ bool midid_control_complete(uint8_t rhport, tusb_control_request_t const * p_req
bool midid_control_request(uint8_t rhport, tusb_control_request_t const * p_request)
{
(void) rhport;
+ (void) p_request;
- //------------- Class Specific Request -------------//
- if (p_request->bmRequestType_bit.type != TUSB_REQ_TYPE_CLASS) return false;
-
+ // driver doesn't support any request yet
return false;
}
diff --git a/src/class/msc/msc_device.c b/src/class/msc/msc_device.c
index cec76b110..bf2b5bb8c 100644
--- a/src/class/msc/msc_device.c
+++ b/src/class/msc/msc_device.c
@@ -149,7 +149,8 @@ bool mscd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t
// return false to stall control endpoint (e.g unsupported request)
bool mscd_control_request(uint8_t rhport, tusb_control_request_t const * p_request)
{
- TU_ASSERT(p_request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS);
+ // Handle class request only
+ TU_VERIFY(p_request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS);
switch ( p_request->bRequest )
{