summaryrefslogtreecommitdiff
path: root/src/class/cdc/cdc_device.c
diff options
context:
space:
mode:
authorhathach <[email protected]>2020-05-28 13:48:02 +0700
committerhathach <[email protected]>2020-05-28 13:48:02 +0700
commit10cd3f24bf0af9b7a1f357505ebbb5ef2132e34b (patch)
tree36c1c14d5d53651ab32bdc0b08e15278da92ed57 /src/class/cdc/cdc_device.c
parentc1db36a15c1e38adc142ec74fd5f3b0320053cc9 (diff)
initial transfer failed in open() shouldn't cause the driver open to fail.
Diffstat (limited to 'src/class/cdc/cdc_device.c')
-rw-r--r--src/class/cdc/cdc_device.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/class/cdc/cdc_device.c b/src/class/cdc/cdc_device.c
index a24f348f4..a8a58980a 100644
--- a/src/class/cdc/cdc_device.c
+++ b/src/class/cdc/cdc_device.c
@@ -231,8 +231,6 @@ uint16_t cdcd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint1
// Note: 0xFF can be used with RNDIS
TU_VERIFY(tu_within(CDC_COMM_PROTOCOL_NONE, itf_desc->bInterfaceProtocol, CDC_COMM_PROTOCOL_ATCOMMAND_CDMA), 0);
- uint16_t len = 0;
-
// Find available interface
cdcd_interface_t * p_cdc = NULL;
uint8_t cdc_id;
@@ -249,13 +247,13 @@ uint16_t cdcd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint1
//------------- Control Interface -------------//
p_cdc->itf_num = itf_desc->bInterfaceNumber;
+ uint16_t len = sizeof(tusb_desc_interface_t);
uint8_t const * p_desc = tu_desc_next( itf_desc );
- len = sizeof(tusb_desc_interface_t);
// Communication Functional Descriptors
while ( TUSB_DESC_CS_INTERFACE == tu_desc_type(p_desc) && len <= max_len )
{
- len += tu_desc_len(p_desc);
+ len += tu_desc_len(p_desc);
p_desc = tu_desc_next(p_desc);
}
@@ -266,7 +264,7 @@ uint16_t cdcd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint1
p_cdc->ep_notif = ((tusb_desc_endpoint_t const *) p_desc)->bEndpointAddress;
- len += tu_desc_len(p_desc);
+ len += tu_desc_len(p_desc);
p_desc = tu_desc_next(p_desc);
}
@@ -275,12 +273,13 @@ uint16_t cdcd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint1
(TUSB_CLASS_CDC_DATA == ((tusb_desc_interface_t const *) p_desc)->bInterfaceClass) )
{
// next to endpoint descriptor
+ len += tu_desc_len(p_desc);
p_desc = tu_desc_next(p_desc);
// Open endpoint pair
TU_ASSERT( usbd_open_edpt_pair(rhport, p_desc, 2, TUSB_XFER_BULK, &p_cdc->ep_out, &p_cdc->ep_in), 0 );
- len += sizeof(tusb_desc_interface_t) + 2*sizeof(tusb_desc_endpoint_t);
+ len += 2*sizeof(tusb_desc_endpoint_t);
}
// Prepare for incoming data