From 97cce2fa58fef84b58808f1861767a4c05dea8e7 Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 14 Mar 2014 00:06:43 +0700 Subject: [PATCH] clean up compiler warning transfer of control bypasses initialization --- demos/device/device_os_none/device_os_none.uvopt | 8 ++++---- tinyusb/class/cdc_host.c | 8 ++++++-- tinyusb/class/msc_host.c | 4 +++- tinyusb/host/hub.c | 16 +++++++++------- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/demos/device/device_os_none/device_os_none.uvopt b/demos/device/device_os_none/device_os_none.uvopt index ee540d5e..b186de56 100644 --- a/demos/device/device_os_none/device_os_none.uvopt +++ b/demos/device/device_os_none/device_os_none.uvopt @@ -932,7 +932,7 @@ 0 3 0 - 72 + 73 78 0 ..\src\main.c @@ -1386,10 +1386,10 @@ 1 0 0 - 5 + 0 0 - 229 - 232 + 230 + 248 0 ..\..\..\tinyusb\device\usbd.c usbd.c diff --git a/tinyusb/class/cdc_host.c b/tinyusb/class/cdc_host.c index 7bfa3037..771c9a7a 100644 --- a/tinyusb/class/cdc_host.c +++ b/tinyusb/class/cdc_host.c @@ -156,6 +156,7 @@ void cdch_init(void) tusb_error_t cdch_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t const *p_interface_desc, uint16_t *p_length) { OSAL_SUBTASK_BEGIN + // TODO change following assert to subtask_assert if ( CDC_COMM_SUBCLASS_ABSTRACT_CONTROL_MODEL != p_interface_desc->bInterfaceSubClass) return TUSB_ERROR_CDC_UNSUPPORTED_SUBCLASS; @@ -165,8 +166,11 @@ tusb_error_t cdch_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con return TUSB_ERROR_CDC_UNSUPPORTED_PROTOCOL; } - uint8_t const * p_desc = descriptor_next ( (uint8_t const *) p_interface_desc ); - cdch_data_t * p_cdc = &cdch_data[dev_addr-1]; // non-static variable cannot be used after OS service call + uint8_t const * p_desc; + cdch_data_t * p_cdc; + + p_desc = descriptor_next ( (uint8_t const *) p_interface_desc ); + p_cdc = &cdch_data[dev_addr-1]; // non-static variable cannot be used after OS service call p_cdc->interface_number = p_interface_desc->bInterfaceNumber; p_cdc->interface_protocol = p_interface_desc->bInterfaceProtocol; // TODO 0xff is consider as rndis candidate, other is virtual Com diff --git a/tinyusb/class/msc_host.c b/tinyusb/class/msc_host.c index e81bed25..c21bc4ca 100644 --- a/tinyusb/class/msc_host.c +++ b/tinyusb/class/msc_host.c @@ -306,7 +306,9 @@ tusb_error_t msch_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con } //------------- Open Data Pipe -------------// - tusb_descriptor_endpoint_t const *p_endpoint = (tusb_descriptor_endpoint_t const *) descriptor_next( (uint8_t const*) p_interface_desc ); + tusb_descriptor_endpoint_t const *p_endpoint; + p_endpoint = (tusb_descriptor_endpoint_t const *) descriptor_next( (uint8_t const*) p_interface_desc ); + for(uint32_t i=0; i<2; i++) { SUBTASK_ASSERT(TUSB_DESC_TYPE_ENDPOINT == p_endpoint->bDescriptorType); diff --git a/tinyusb/host/hub.c b/tinyusb/host/hub.c index 72dd184a..05164701 100644 --- a/tinyusb/host/hub.c +++ b/tinyusb/host/hub.c @@ -95,10 +95,10 @@ tusb_error_t hub_port_clear_feature_subtask(uint8_t hub_addr, uint8_t hub_port, SUBTASK_ASSERT_STATUS( error ); //------------- Check if feature is cleared -------------// - { // suppres compiler warning transfer of control bypasses initialization - hub_port_status_response_t * p_port_status = (hub_port_status_response_t *) hub_enum_buffer; + hub_port_status_response_t * p_port_status; + p_port_status = (hub_port_status_response_t *) hub_enum_buffer; + SUBTASK_ASSERT( !BIT_TEST_(p_port_status->status_change.value, feature-16) ); - } OSAL_SUBTASK_END } @@ -129,11 +129,11 @@ tusb_error_t hub_port_reset_subtask(uint8_t hub_addr, uint8_t hub_port) ); SUBTASK_ASSERT_STATUS( error ); - { // suppres compiler warning transfer of control bypasses initialization - hub_port_status_response_t * p_port_status = (hub_port_status_response_t *) hub_enum_buffer; + hub_port_status_response_t * p_port_status; + p_port_status = (hub_port_status_response_t *) hub_enum_buffer; + SUBTASK_ASSERT ( p_port_status->status_change.reset && p_port_status->status_current.connect_status && p_port_status->status_current.port_power && p_port_status->status_current.port_enable); - } OSAL_SUBTASK_END } @@ -165,7 +165,9 @@ tusb_error_t hub_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t cons if ( p_interface_desc->bInterfaceProtocol > 1 ) return TUSB_ERROR_HUB_FEATURE_NOT_SUPPORTED; //------------- Open Interrupt Status Pipe -------------// - tusb_descriptor_endpoint_t const *p_endpoint = (tusb_descriptor_endpoint_t const *) descriptor_next( (uint8_t const*) p_interface_desc ); + tusb_descriptor_endpoint_t const *p_endpoint; + p_endpoint = (tusb_descriptor_endpoint_t const *) descriptor_next( (uint8_t const*) p_interface_desc ); + SUBTASK_ASSERT(TUSB_DESC_TYPE_ENDPOINT == p_endpoint->bDescriptorType); SUBTASK_ASSERT(TUSB_XFER_INTERRUPT == p_endpoint->bmAttributes.xfer);