diff --git a/demos/host/src/keyboard_app.c b/demos/host/src/keyboard_app.c index 1a58daa05..0d543e589 100644 --- a/demos/host/src/keyboard_app.c +++ b/demos/host/src/keyboard_app.c @@ -97,7 +97,7 @@ void keyboard_app_init(void) } //------------- main task -------------// -OSAL_TASK_DECLARE( keyboard_app_task ) +OSAL_TASK_FUNCTION( keyboard_app_task ) { tusb_error_t error; tusb_keyboard_report_t kbd_report; @@ -106,12 +106,19 @@ OSAL_TASK_DECLARE( keyboard_app_task ) osal_queue_receive(q_kbd_report_hdl, &kbd_report, OSAL_TIMEOUT_WAIT_FOREVER, &error); + bool has_key = false; for(uint8_t i=0; i<6; i++) { if ( kbd_report.keycode[i] != 0 ) + { printf("%c", keycode_to_ascii(kbd_report.keycode[i])); + has_key = true; + } } + if (has_key) + printf("\n"); + memclr_(&kbd_report, sizeof(tusb_keyboard_report_t) ); OSAL_TASK_LOOP_END diff --git a/demos/host/src/keyboard_app.h b/demos/host/src/keyboard_app.h index 9fa574d2d..1f71e4006 100644 --- a/demos/host/src/keyboard_app.h +++ b/demos/host/src/keyboard_app.h @@ -63,7 +63,7 @@ void keyboard_app_init(void); -OSAL_TASK_DECLARE( keyboard_app_task ); +OSAL_TASK_FUNCTION( keyboard_app_task ); #ifdef __cplusplus } diff --git a/demos/host/src/mouse_app.c b/demos/host/src/mouse_app.c index 89dd7d6b5..81b5f2e6f 100644 --- a/demos/host/src/mouse_app.c +++ b/demos/host/src/mouse_app.c @@ -96,7 +96,7 @@ void mouse_app_init(void) } //------------- main task -------------// -OSAL_TASK_DECLARE( mouse_app_task ) +OSAL_TASK_FUNCTION( mouse_app_task ) { tusb_error_t error; tusb_mouse_report_t mouse_report; diff --git a/demos/host/src/mouse_app.h b/demos/host/src/mouse_app.h index 7c5972310..3830424da 100644 --- a/demos/host/src/mouse_app.h +++ b/demos/host/src/mouse_app.h @@ -62,7 +62,7 @@ #endif void mouse_app_init(void); -OSAL_TASK_DECLARE( mouse_app_task ); +OSAL_TASK_FUNCTION( mouse_app_task ); #ifdef __cplusplus } diff --git a/tinyusb/host/usbh.c b/tinyusb/host/usbh.c index 13f60f793..a5d48071f 100644 --- a/tinyusb/host/usbh.c +++ b/tinyusb/host/usbh.c @@ -87,7 +87,7 @@ static host_class_driver_t const usbh_class_drivers[TUSB_CLASS_MAX_CONSEC_NUMBER // INTERNAL OBJECT & FUNCTION DECLARATION //--------------------------------------------------------------------+ usbh_device_info_t usbh_devices[TUSB_CFG_HOST_DEVICE_MAX+1] TUSB_CFG_ATTR_USBRAM; // including zero-address -OSAL_TASK_DECLARE(usbh_enumeration_task); +OSAL_TASK_FUNCTION(usbh_enumeration_task); //------------- Enumeration Task Data -------------// OSAL_TASK_DEF(enum_task, usbh_enumeration_task, 128, OSAL_PRIO_HIGH); @@ -157,6 +157,10 @@ tusb_error_t usbh_control_xfer_subtask(uint8_t dev_addr, tusb_std_request_t cons // TODO make handler for this function general purpose SUBTASK_ASSERT_STATUS_WITH_HANDLER(error || usbh_devices[dev_addr].control.pipe_status == TUSB_INTERFACE_STATUS_ERROR, tusbh_device_mount_failed_cb(TUSB_ERROR_USBH_MOUNT_DEVICE_NOT_RESPOND, NULL) ); +// if ( TUSB_ERROR_NONE != error || usbh_devices[dev_addr].control.pipe_status == TUSB_INTERFACE_STATUS_ERROR) +// { +// tusbh_device_mount_failed_cb(TUSB_ERROR_USBH_MOUNT_DEVICE_NOT_RESPOND, NULL); +// } OSAL_SUBTASK_END } @@ -249,7 +253,7 @@ void usbh_device_unplugged_isr(uint8_t hostid) //--------------------------------------------------------------------+ // ENUMERATION TASK //--------------------------------------------------------------------+ -OSAL_TASK_DECLARE(usbh_enumeration_task) +OSAL_TASK_FUNCTION(usbh_enumeration_task) { tusb_error_t error; usbh_enumerate_t enum_entry; @@ -263,187 +267,194 @@ OSAL_TASK_DECLARE(usbh_enumeration_task) osal_queue_receive(enum_queue_hdl, &enum_entry, OSAL_TIMEOUT_WAIT_FOREVER, &error); - TASK_ASSERT( hcd_port_connect_status(enum_entry.core_id) ); // device may be unplugged - usbh_devices[0].core_id = enum_entry.core_id; // TODO refractor integrate to device_pool - usbh_devices[0].hub_addr = enum_entry.hub_addr; - usbh_devices[0].hub_port = enum_entry.hub_port; - usbh_devices[0].speed = enum_entry.speed; - - TASK_ASSERT_STATUS( usbh_pipe_control_open(0, 8) ); - usbh_devices[0].state = TUSB_DEVICE_STATE_ADDRESSED; - -#ifndef _TEST_ - // TODO finalize delay after reset, hack delay 100 ms, otherwise speed is detected as LOW in most cases - volatile uint32_t delay_us = 10000; - delay_us *= (SystemCoreClock / 1000000) / 3; - while(delay_us--); -#endif - - //------------- Get first 8 bytes of device descriptor to get Control Endpoint Size -------------// - OSAL_SUBTASK_INVOKED_AND_WAIT( - usbh_control_xfer_subtask( - 0, - &(tusb_std_request_t) - { - .bmRequestType = { .direction = TUSB_DIR_DEV_TO_HOST, .type = TUSB_REQUEST_TYPE_STANDARD, .recipient = TUSB_REQUEST_RECIPIENT_DEVICE }, - .bRequest = TUSB_REQUEST_GET_DESCRIPTOR, - .wValue = (TUSB_DESC_DEVICE << 8), - .wLength = 8 - }, - enum_data_buffer - ) - ); - - hcd_port_reset( usbh_devices[0].core_id ); // reset port after 8 byte descriptor - - //------------- Set new address -------------// - new_addr = get_new_address(); - TASK_ASSERT(new_addr <= TUSB_CFG_HOST_DEVICE_MAX); - - OSAL_SUBTASK_INVOKED_AND_WAIT( - usbh_control_xfer_subtask( - 0, - &(tusb_std_request_t) - { - .bmRequestType = { .direction = TUSB_DIR_HOST_TO_DEV, .type = TUSB_REQUEST_TYPE_STANDARD, .recipient = TUSB_REQUEST_RECIPIENT_DEVICE }, - .bRequest = TUSB_REQUEST_SET_ADDRESS, - .wValue = new_addr - }, - NULL - ) - ); - - //------------- update port info & close control pipe of addr0 -------------// - usbh_devices[new_addr].core_id = usbh_devices[0].core_id; - usbh_devices[new_addr].hub_addr = usbh_devices[0].hub_addr; - usbh_devices[new_addr].hub_port = usbh_devices[0].hub_port; - usbh_devices[new_addr].speed = usbh_devices[0].speed; - usbh_devices[new_addr].state = TUSB_DEVICE_STATE_ADDRESSED; - - usbh_pipe_control_close(0); - usbh_devices[0].state = TUSB_DEVICE_STATE_UNPLUG; - - // open control pipe for new address - TASK_ASSERT_STATUS ( usbh_pipe_control_open(new_addr, ((tusb_descriptor_device_t*) enum_data_buffer)->bMaxPacketSize0 ) ); - - //------------- Get full device descriptor -------------// - OSAL_SUBTASK_INVOKED_AND_WAIT( - usbh_control_xfer_subtask( - new_addr, - &(tusb_std_request_t) - { - .bmRequestType = { .direction = TUSB_DIR_DEV_TO_HOST, .type = TUSB_REQUEST_TYPE_STANDARD, .recipient = TUSB_REQUEST_RECIPIENT_DEVICE }, - .bRequest = TUSB_REQUEST_GET_DESCRIPTOR, - .wValue = (TUSB_DESC_DEVICE << 8), - .wLength = 18 - }, - enum_data_buffer - ) - ); - - // update device info - usbh_devices[new_addr].vendor_id = ((tusb_descriptor_device_t*) enum_data_buffer)->idVendor; - usbh_devices[new_addr].product_id = ((tusb_descriptor_device_t*) enum_data_buffer)->idProduct; - usbh_devices[new_addr].configure_count = ((tusb_descriptor_device_t*) enum_data_buffer)->bNumConfigurations; - - configure_selected = get_configure_number_for_device((tusb_descriptor_device_t*) enum_data_buffer); - TASK_ASSERT(configure_selected <= usbh_devices[new_addr].configure_count); - - //------------- Get 9 bytes of configuration descriptor -------------// - OSAL_SUBTASK_INVOKED_AND_WAIT( - usbh_control_xfer_subtask( - new_addr, - &(tusb_std_request_t) - { - .bmRequestType = { .direction = TUSB_DIR_DEV_TO_HOST, .type = TUSB_REQUEST_TYPE_STANDARD, .recipient = TUSB_REQUEST_RECIPIENT_DEVICE }, - .bRequest = TUSB_REQUEST_GET_DESCRIPTOR, - .wValue = (TUSB_DESC_CONFIGURATION << 8) | (configure_selected - 1), - .wLength = 9 - }, - enum_data_buffer - ) - ); - TASK_ASSERT_WITH_HANDLER( TUSB_CFG_HOST_ENUM_BUFFER_SIZE > ((tusb_descriptor_configuration_t*)enum_data_buffer)->wTotalLength, - tusbh_device_mount_failed_cb(TUSB_ERROR_USBH_MOUNT_CONFIG_DESC_TOO_LONG, NULL) ); - - //------------- Get full configuration descriptor -------------// - OSAL_SUBTASK_INVOKED_AND_WAIT( - usbh_control_xfer_subtask( - new_addr, - &(tusb_std_request_t) - { - .bmRequestType = { .direction = TUSB_DIR_DEV_TO_HOST, .type = TUSB_REQUEST_TYPE_STANDARD, .recipient = TUSB_REQUEST_RECIPIENT_DEVICE }, - .bRequest = TUSB_REQUEST_GET_DESCRIPTOR, - .wValue = (TUSB_DESC_CONFIGURATION << 8) | (configure_selected - 1), - .wLength = ((tusb_descriptor_configuration_t*) enum_data_buffer)->wTotalLength - }, - enum_data_buffer - ) - ); - - // update configuration info - usbh_devices[new_addr].interface_count = ((tusb_descriptor_configuration_t*) enum_data_buffer)->bNumInterfaces; - - //------------- Set Configure -------------// - OSAL_SUBTASK_INVOKED_AND_WAIT ( - usbh_control_xfer_subtask( - new_addr, - &(tusb_std_request_t) - { - .bmRequestType = { .direction = TUSB_DIR_HOST_TO_DEV, .type = TUSB_REQUEST_TYPE_STANDARD, .recipient = TUSB_REQUEST_RECIPIENT_DEVICE }, - .bRequest = TUSB_REQUEST_SET_CONFIGURATION, - .wValue = configure_selected - }, - NULL - ) - ); - - usbh_devices[new_addr].state = TUSB_DEVICE_STATE_CONFIGURED; - - //------------- parse configuration & install drivers -------------// - p_desc = enum_data_buffer + sizeof(tusb_descriptor_configuration_t); - - // parse each interfaces - while( p_desc < enum_data_buffer + ((tusb_descriptor_configuration_t*)enum_data_buffer)->wTotalLength ) + if( hcd_port_connect_status(enum_entry.core_id) ) // ensure device is still plugged { - // skip until we see interface descriptor - if ( TUSB_DESC_INTERFACE != p_desc[DESCRIPTOR_OFFSET_TYPE] ) - { - p_desc += p_desc[DESCRIPTOR_OFFSET_LENGTH]; // skip the descriptor, increase by the descriptor's length - }else - { - uint8_t class_code = ((tusb_descriptor_interface_t*) p_desc)->bInterfaceClass; - if (class_code == 0) - { - TASK_ASSERT( false ); // corrupted data, abort enumeration - } - // supported class TODO custom class - else if ( class_code < TUSB_CLASS_MAX_CONSEC_NUMBER && usbh_class_drivers[class_code].open_subtask) - { - uint16_t length=0; - OSAL_SUBTASK_INVOKED_AND_WAIT ( // parameters in task/sub_task must be static storage (static or global) - usbh_class_drivers[ ((tusb_descriptor_interface_t*) p_desc)->bInterfaceClass ].open_subtask( - new_addr, (tusb_descriptor_interface_t*) p_desc, &length) ); + usbh_devices[0].core_id = enum_entry.core_id; // TODO refractor integrate to device_pool + usbh_devices[0].hub_addr = enum_entry.hub_addr; + usbh_devices[0].hub_port = enum_entry.hub_port; + usbh_devices[0].speed = enum_entry.speed; - // TODO check class_open_subtask status - if (length == 0) // Interface open failed, for example a subclass is not supported - { - p_desc += p_desc[DESCRIPTOR_OFFSET_LENGTH]; // skip this interface, the rest will be skipped by the above loop - // TODO can optimize the length --> open_subtask return a OPEN FAILED status - }else - { - usbh_devices[new_addr].flag_supported_class |= BIT_(((tusb_descriptor_interface_t*) p_desc)->bInterfaceClass); - p_desc += length; - } - } else // unsupported class (not enable or yet implemented) + if( TUSB_ERROR_NONE == usbh_pipe_control_open(0, 8) ) + { + usbh_devices[0].state = TUSB_DEVICE_STATE_ADDRESSED; + + #ifndef _TEST_ + // TODO finalize delay after reset, hack delay 100 ms, otherwise speed is detected as LOW in most cases + volatile uint32_t delay_us = 10000; + delay_us *= (SystemCoreClock / 1000000) / 3; + while(delay_us--); + #endif + + //------------- Get first 8 bytes of device descriptor to get Control Endpoint Size -------------// + OSAL_SUBTASK_INVOKED_AND_WAIT( + usbh_control_xfer_subtask( + 0, + &(tusb_std_request_t) + { + .bmRequestType = { .direction = TUSB_DIR_DEV_TO_HOST, .type = TUSB_REQUEST_TYPE_STANDARD, .recipient = TUSB_REQUEST_RECIPIENT_DEVICE }, + .bRequest = TUSB_REQUEST_GET_DESCRIPTOR, + .wValue = (TUSB_DESC_DEVICE << 8), + .wLength = 8 + }, + enum_data_buffer + ) + ); + + hcd_port_reset( usbh_devices[0].core_id ); // reset port after 8 byte descriptor + + //------------- Set new address -------------// + new_addr = get_new_address(); + if (new_addr <= TUSB_CFG_HOST_DEVICE_MAX) // TODO notify application we reach max devices { - p_desc += p_desc[DESCRIPTOR_OFFSET_LENGTH]; // skip this interface, the rest will be skipped by the above loop + OSAL_SUBTASK_INVOKED_AND_WAIT( + usbh_control_xfer_subtask( + 0, + &(tusb_std_request_t) + { + .bmRequestType = { .direction = TUSB_DIR_HOST_TO_DEV, .type = TUSB_REQUEST_TYPE_STANDARD, .recipient = TUSB_REQUEST_RECIPIENT_DEVICE }, + .bRequest = TUSB_REQUEST_SET_ADDRESS, + .wValue = new_addr + }, + NULL + ) + ); + + //------------- update port info & close control pipe of addr0 -------------// + usbh_devices[new_addr].core_id = usbh_devices[0].core_id; + usbh_devices[new_addr].hub_addr = usbh_devices[0].hub_addr; + usbh_devices[new_addr].hub_port = usbh_devices[0].hub_port; + usbh_devices[new_addr].speed = usbh_devices[0].speed; + usbh_devices[new_addr].state = TUSB_DEVICE_STATE_ADDRESSED; + + usbh_pipe_control_close(0); + usbh_devices[0].state = TUSB_DEVICE_STATE_UNPLUG; + + // open control pipe for new address + if ( TUSB_ERROR_NONE == usbh_pipe_control_open(new_addr, ((tusb_descriptor_device_t*) enum_data_buffer)->bMaxPacketSize0 ) ) + { + //------------- Get full device descriptor -------------// + OSAL_SUBTASK_INVOKED_AND_WAIT( + usbh_control_xfer_subtask( + new_addr, + &(tusb_std_request_t) + { + .bmRequestType = { .direction = TUSB_DIR_DEV_TO_HOST, .type = TUSB_REQUEST_TYPE_STANDARD, .recipient = TUSB_REQUEST_RECIPIENT_DEVICE }, + .bRequest = TUSB_REQUEST_GET_DESCRIPTOR, + .wValue = (TUSB_DESC_DEVICE << 8), + .wLength = 18 + }, + enum_data_buffer + ) + ); + + // update device info TODO alignment issue + usbh_devices[new_addr].vendor_id = ((tusb_descriptor_device_t*) enum_data_buffer)->idVendor; + usbh_devices[new_addr].product_id = ((tusb_descriptor_device_t*) enum_data_buffer)->idProduct; + usbh_devices[new_addr].configure_count = ((tusb_descriptor_device_t*) enum_data_buffer)->bNumConfigurations; + + configure_selected = get_configure_number_for_device((tusb_descriptor_device_t*) enum_data_buffer); + if(configure_selected <= usbh_devices[new_addr].configure_count) // TODO notify application when invalid configuration + { + //------------- Get 9 bytes of configuration descriptor -------------// + OSAL_SUBTASK_INVOKED_AND_WAIT( + usbh_control_xfer_subtask( + new_addr, + &(tusb_std_request_t) + { + .bmRequestType = { .direction = TUSB_DIR_DEV_TO_HOST, .type = TUSB_REQUEST_TYPE_STANDARD, .recipient = TUSB_REQUEST_RECIPIENT_DEVICE }, + .bRequest = TUSB_REQUEST_GET_DESCRIPTOR, + .wValue = (TUSB_DESC_CONFIGURATION << 8) | (configure_selected - 1), + .wLength = 9 + }, + enum_data_buffer + ) + ); + + if ( TUSB_CFG_HOST_ENUM_BUFFER_SIZE <= ((tusb_descriptor_configuration_t*)enum_data_buffer)->wTotalLength ) + { + tusbh_device_mount_failed_cb(TUSB_ERROR_USBH_MOUNT_CONFIG_DESC_TOO_LONG, NULL); + }else + { + //------------- Get full configuration descriptor -------------// + OSAL_SUBTASK_INVOKED_AND_WAIT( + usbh_control_xfer_subtask( + new_addr, + &(tusb_std_request_t) + { + .bmRequestType = { .direction = TUSB_DIR_DEV_TO_HOST, .type = TUSB_REQUEST_TYPE_STANDARD, .recipient = TUSB_REQUEST_RECIPIENT_DEVICE }, + .bRequest = TUSB_REQUEST_GET_DESCRIPTOR, + .wValue = (TUSB_DESC_CONFIGURATION << 8) | (configure_selected - 1), + .wLength = ((tusb_descriptor_configuration_t*) enum_data_buffer)->wTotalLength + }, + enum_data_buffer + ) + ); + + // update configuration info + usbh_devices[new_addr].interface_count = ((tusb_descriptor_configuration_t*) enum_data_buffer)->bNumInterfaces; + + //------------- Set Configure -------------// + OSAL_SUBTASK_INVOKED_AND_WAIT ( + usbh_control_xfer_subtask( + new_addr, + &(tusb_std_request_t) + { + .bmRequestType = { .direction = TUSB_DIR_HOST_TO_DEV, .type = TUSB_REQUEST_TYPE_STANDARD, .recipient = TUSB_REQUEST_RECIPIENT_DEVICE }, + .bRequest = TUSB_REQUEST_SET_CONFIGURATION, + .wValue = configure_selected + }, + NULL + ) + ); + + usbh_devices[new_addr].state = TUSB_DEVICE_STATE_CONFIGURED; + + //------------- parse configuration & install drivers -------------// + p_desc = enum_data_buffer + sizeof(tusb_descriptor_configuration_t); + + // parse each interfaces + while( p_desc < enum_data_buffer + ((tusb_descriptor_configuration_t*)enum_data_buffer)->wTotalLength ) + { + // skip until we see interface descriptor + if ( TUSB_DESC_INTERFACE != p_desc[DESCRIPTOR_OFFSET_TYPE] ) + { + p_desc += p_desc[DESCRIPTOR_OFFSET_LENGTH]; // skip the descriptor, increase by the descriptor's length + }else + { + uint8_t class_code = ((tusb_descriptor_interface_t*) p_desc)->bInterfaceClass; + + // supported class TODO add custom class + if ( 0 < class_code && class_code < TUSB_CLASS_MAX_CONSEC_NUMBER && usbh_class_drivers[class_code].open_subtask) + { + uint16_t length=0; + OSAL_SUBTASK_INVOKED_AND_WAIT ( // parameters in task/sub_task must be static storage (static or global) + usbh_class_drivers[ ((tusb_descriptor_interface_t*) p_desc)->bInterfaceClass ].open_subtask( + new_addr, (tusb_descriptor_interface_t*) p_desc, &length) ); + + if (length == 0) // Interface open failed, for example a subclass is not supported + { + p_desc += p_desc[DESCRIPTOR_OFFSET_LENGTH]; // skip this interface, the rest will be skipped by the above loop + // TODO can optimize the length --> open_subtask return a OPEN FAILED status + }else + { + usbh_devices[new_addr].flag_supported_class |= BIT_(((tusb_descriptor_interface_t*) p_desc)->bInterfaceClass); + p_desc += length; + } + } else // unsupported class (not enable or yet implemented) + { + p_desc += p_desc[DESCRIPTOR_OFFSET_LENGTH]; // skip this interface, the rest will be skipped by the above loop + } + } + } + + tusbh_device_mount_succeed_cb(new_addr); + } + } + } } } } - tusbh_device_mount_succeed_cb(new_addr); - OSAL_TASK_LOOP_END } diff --git a/tinyusb/osal/osal.h b/tinyusb/osal/osal.h index 531911a7c..91ad3be45 100644 --- a/tinyusb/osal/osal.h +++ b/tinyusb/osal/osal.h @@ -89,7 +89,7 @@ tusb_error_t osal_task_create(osal_task_t *task); #define OSAL_TASK_DEF(name, code, stack_depth, prio) \ osal_task_t name -#define OSAL_TASK_DECLARE(task_name) \ +#define OSAL_TASK_FUNCTION(task_name) \ void task_name(void) #define OSAL_TASK_LOOP_BEGIN diff --git a/tinyusb/osal/osal_freeRTOS.h b/tinyusb/osal/osal_freeRTOS.h index 19754410c..53986ad97 100644 --- a/tinyusb/osal/osal_freeRTOS.h +++ b/tinyusb/osal/osal_freeRTOS.h @@ -71,9 +71,6 @@ extern "C" { //--------------------------------------------------------------------+ // TASK API //--------------------------------------------------------------------+ -#define OSAL_TASK_DECLARE(task_name) \ - void task_name(void *p_task_para) - typedef struct { signed portCHAR const * name; pdTASK_CODE code; @@ -89,6 +86,10 @@ typedef struct { .prio = task_prio \ }; +#define OSAL_TASK_FUNCTION(task_name) \ + void task_name(void *p_task_para) + + #define OSAL_TASK_LOOP_BEGIN \ while(1) { @@ -96,7 +97,7 @@ typedef struct { } //------------- Sub Task -------------// -#define OSAL_SUBTASK_BEGIN +#define OSAL_SUBTASK_BEGIN // TODO refractor move #define OSAL_SUBTASK_END //------------- Task Assert -------------// @@ -114,11 +115,11 @@ typedef struct { condition, TUSB_ERROR_OSAL_TASK_FAILED, "%s", "evaluated to false") -//------------- Sub Task Assert -------------// TODO replace directly by TASK ASSERT -#define SUBTASK_ASSERT_STATUS(...) TASK_ASSERT_STATUS(__VA_ARGS__) -#define SUBTASK_ASSERT_STATUS_WITH_HANDLER(...) TASK_ASSERT_STATUS_WITH_HANDLER(__VA_ARGS__) -#define SUBTASK_ASSERT(...) TASK_ASSERT(__VA_ARGS__) -#define SUBTASK_ASSERT_WITH_HANDLER(...) TASK_ASSERT_WITH_HANDLER(__VA_ARGS__) +//------------- Sub Task Assert -------------// +#define SUBTASK_ASSERT_STATUS TASK_ASSERT_STATUS +#define SUBTASK_ASSERT_STATUS_WITH_HANDLER TASK_ASSERT_STATUS_WITH_HANDLER +#define SUBTASK_ASSERT TASK_ASSERT +#define SUBTASK_ASSERT_WITH_HANDLER TASK_ASSERT_WITH_HANDLER //--------------------------------------------------------------------+ // Semaphore API diff --git a/tinyusb/osal/osal_none.h b/tinyusb/osal/osal_none.h index 75bb41fbd..9b8b16fc5 100644 --- a/tinyusb/osal/osal_none.h +++ b/tinyusb/osal/osal_none.h @@ -51,12 +51,12 @@ #ifndef _TUSB_OSAL_NONE_H_ #define _TUSB_OSAL_NONE_H_ +#include "osal_common.h" + #ifdef __cplusplus extern "C" { #endif -#include "osal_common.h" - //--------------------------------------------------------------------+ // TICK API //--------------------------------------------------------------------+ @@ -90,7 +90,7 @@ static inline volatile uint32_t osal_tick_get(void) #define OSAL_TASK_DEF(name, code, stack_depth, prio) #define osal_task_create(x) TUSB_ERROR_NONE -#define OSAL_TASK_DECLARE(task_name) \ +#define OSAL_TASK_FUNCTION(task_name) \ tusb_error_t task_name(void) #define TASK_RESTART state = 0 @@ -145,11 +145,11 @@ static inline volatile uint32_t osal_tick_get(void) ASSERT_DEFINE_WITH_HANDLER(_TASK_ASSERT_ERROR_HANDLER, func_call, ,\ condition, TUSB_ERROR_OSAL_TASK_FAILED, "%s", "evaluated to false") -//------------- Sub Task Assert -------------// TODO replace directly by TASK ASSERT -#define SUBTASK_ASSERT_STATUS(...) TASK_ASSERT_STATUS(__VA_ARGS__) -#define SUBTASK_ASSERT_STATUS_WITH_HANDLER(...) TASK_ASSERT_STATUS_WITH_HANDLER(__VA_ARGS__) -#define SUBTASK_ASSERT(...) TASK_ASSERT(__VA_ARGS__) -#define SUBTASK_ASSERT_WITH_HANDLER(...) TASK_ASSERT_WITH_HANDLER(__VA_ARGS__) +//------------- Sub Task Assert -------------// +#define SUBTASK_ASSERT_STATUS TASK_ASSERT_STATUS +#define SUBTASK_ASSERT_STATUS_WITH_HANDLER TASK_ASSERT_STATUS_WITH_HANDLER +#define SUBTASK_ASSERT TASK_ASSERT +#define SUBTASK_ASSERT_WITH_HANDLER TASK_ASSERT_WITH_HANDLER //--------------------------------------------------------------------+ // Semaphore API