summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-07-05 13:37:57 +0700
committerhathach <[email protected]>2013-07-05 13:37:57 +0700
commit7345a4515db401d411fdb5d5db0665e1bc071f12 (patch)
treec1849af88e7261644b84ce66f55108d228a8fe30
parent374aea7a11b6b9986318707f5951b9c69ad00239 (diff)
fix bug with rndis overshadow the normal cdc callback
-rw-r--r--tests/lpc18xx_43xx/test/host/cdc/test_cdc_rndis_host.c17
-rw-r--r--tinyusb/class/cdc_host.c4
-rw-r--r--tinyusb/class/cdc_rndis_host.c5
3 files changed, 19 insertions, 7 deletions
diff --git a/tests/lpc18xx_43xx/test/host/cdc/test_cdc_rndis_host.c b/tests/lpc18xx_43xx/test/host/cdc/test_cdc_rndis_host.c
index 5805227dd..be676652a 100644
--- a/tests/lpc18xx_43xx/test/host/cdc/test_cdc_rndis_host.c
+++ b/tests/lpc18xx_43xx/test/host/cdc/test_cdc_rndis_host.c
@@ -104,16 +104,23 @@ rndis_msg_initialize_t msg_init =
.max_xfer_size = 0x4000 // TODO mimic windows
};
-//void test_rndis_send_initalize_failed(void)
-//{
-//
-//}
+void test_rndis_send_initalize_failed(void)
+{
+ usbh_control_xfer_subtask_ExpectWithArrayAndReturn(
+ dev_addr, 0x21, SEND_ENCAPSULATED_COMMAND, 0, p_comm_interface->bInterfaceNumber,
+ sizeof(rndis_msg_initialize_t), (uint8_t*)&msg_init, sizeof(rndis_msg_initialize_t), TUSB_ERROR_OSAL_TIMEOUT);
+
+ tusbh_cdc_mounted_cb_Expect(dev_addr);
+
+ //------------- Code Under Test -------------//
+ TEST_ASSERT_EQUAL( TUSB_ERROR_NONE, cdch_open_subtask(dev_addr, p_comm_interface, &length) );
+}
void test_rndis_send_initalize_ok(void)
{
usbh_control_xfer_subtask_ExpectWithArrayAndReturn(
dev_addr, 0x21, SEND_ENCAPSULATED_COMMAND, 0, p_comm_interface->bInterfaceNumber,
- sizeof(rndis_msg_initialize_t), (uint8_t*)&msg_init, sizeof(rndis_msg_initialize_t), TUSB_ERROR_OSAL_TIMEOUT);
+ sizeof(rndis_msg_initialize_t), (uint8_t*)&msg_init, sizeof(rndis_msg_initialize_t), TUSB_ERROR_NONE);
tusbh_cdc_rndis_mounted_cb_Expect(dev_addr);
diff --git a/tinyusb/class/cdc_host.c b/tinyusb/class/cdc_host.c
index 0e97c5d9a..2b81b9ab6 100644
--- a/tinyusb/class/cdc_host.c
+++ b/tinyusb/class/cdc_host.c
@@ -204,8 +204,8 @@ tusb_error_t cdch_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con
{
OSAL_SUBTASK_INVOKED_AND_WAIT( rndish_open_subtask(dev_addr, p_cdc), error );
}
- else
-// if ( TUSB_ERROR_NONE != error ) // device is not an rndis
+
+ if ( !(0xff == p_cdc->interface_protocol && TUSB_ERROR_NONE == error) ) // device is not an rndis
#endif
// FIXME mounted class flag is not set yet
diff --git a/tinyusb/class/cdc_rndis_host.c b/tinyusb/class/cdc_rndis_host.c
index 024329b4b..585cf7d42 100644
--- a/tinyusb/class/cdc_rndis_host.c
+++ b/tinyusb/class/cdc_rndis_host.c
@@ -116,6 +116,11 @@ tusb_error_t rndish_open_subtask(uint8_t dev_addr, cdch_data_t *p_cdc)
error
);
+ if ( TUSB_ERROR_NONE != error)
+ {
+ SUBTASK_EXIT(error);
+ }
+
if ( tusbh_cdc_rndis_mounted_cb )
{
tusbh_cdc_rndis_mounted_cb(dev_addr);