summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhathach <[email protected]>2020-04-16 11:13:54 +0700
committerhathach <[email protected]>2020-04-16 11:13:54 +0700
commit2eed58d0962849014ab3166d4a3f0d3677d32c01 (patch)
tree11950a260c8bfc543f33cdaa592870afceb43473 /src
parent86ff5651ad94b6134aca0805b48d255da4786eef (diff)
per review
Diffstat (limited to 'src')
-rw-r--r--src/class/net/net_device.c16
-rw-r--r--src/device/usbd.c4
2 files changed, 13 insertions, 7 deletions
diff --git a/src/class/net/net_device.c b/src/class/net/net_device.c
index 8cb2e2e0b..0f2ccbd44 100644
--- a/src/class/net/net_device.c
+++ b/src/class/net/net_device.c
@@ -255,20 +255,26 @@ bool netd_control_request(uint8_t rhport, tusb_control_request_t const * request
switch ( request->bRequest )
{
case TUSB_REQ_GET_INTERFACE:
+ {
+ uint8_t const req_itfnum = (uint8_t) request->wIndex;
+ TU_VERIFY(_netd_itf.itf_num+1 == req_itfnum);
+
tud_control_xfer(rhport, request, &_netd_itf.itf_data_alt, 1);
+ }
break;
case TUSB_REQ_SET_INTERFACE:
{
uint8_t const req_itfnum = (uint8_t) request->wIndex;
+ uint8_t const req_alt = (uint8_t) request->wValue;
- // Request to enable/disable network activities on ACM-ECM only
- TU_ASSERT(_netd_itf.ecm_mode);
+ // Only valid for Data Interface with Alternate is either 0 or 1
+ TU_VERIFY(_netd_itf.itf_num+1 == req_itfnum && req_alt < 2);
- // Only valid for Data Interface
- TU_ASSERT(_netd_itf.itf_num+1 == req_itfnum);
+ // ACM-ECM only: qequest to enable/disable network activities
+ TU_VERIFY(_netd_itf.ecm_mode);
- _netd_itf.itf_data_alt = (uint8_t) request->wValue;
+ _netd_itf.itf_data_alt = req_alt;
if ( _netd_itf.itf_data_alt )
{
diff --git a/src/device/usbd.c b/src/device/usbd.c
index cf16b28c8..29845ff36 100644
--- a/src/device/usbd.c
+++ b/src/device/usbd.c
@@ -575,8 +575,8 @@ static bool process_control_request(uint8_t rhport, tusb_control_request_t const
// notable requests are: GET HID REPORT DESCRIPTOR, SET_INTERFACE, GET_INTERFACE
if ( !invoke_class_control(rhport, drvid, p_request) )
{
- // For STD GET_INTERFACE even if class driver doesn't support alternate setting
- // It is still mandatory to response with value of zero
+ // For GET_INTERFACE, it is mandatory to respond even if the class
+ // driver doesn't use alternate settings.
TU_VERIFY( TUSB_REQ_TYPE_STANDARD == p_request->bmRequestType_bit.type &&
TUSB_REQ_GET_INTERFACE == p_request->bRequest);