diff --git a/osal/usb_osal_freertos.c b/osal/usb_osal_freertos.c index 933833b6..4c190bef 100644 --- a/osal/usb_osal_freertos.c +++ b/osal/usb_osal_freertos.c @@ -21,6 +21,7 @@ * */ #include "usb_osal.h" +#include "usb_errno.h" #include #include "semphr.h" #include "timers.h" @@ -56,7 +57,7 @@ void usb_osal_sem_delete(usb_osal_sem_t sem) int usb_osal_sem_take(usb_osal_sem_t sem, uint32_t timeout) { - return (xSemaphoreTake((SemaphoreHandle_t)sem, pdMS_TO_TICKS(timeout)) == pdPASS) ? 0 : -1; + return (xSemaphoreTake((SemaphoreHandle_t)sem, pdMS_TO_TICKS(timeout)) == pdPASS) ? 0 : -ETIMEDOUT; } int usb_osal_sem_give(usb_osal_sem_t sem) @@ -80,7 +81,7 @@ int usb_osal_sem_give(usb_osal_sem_t sem) } } - return (ret == pdPASS) ? 0 : -1; + return (ret == pdPASS) ? 0 : -EINVAL; } usb_osal_mutex_t usb_osal_mutex_create(void) @@ -95,12 +96,12 @@ void usb_osal_mutex_delete(usb_osal_mutex_t mutex) int usb_osal_mutex_take(usb_osal_mutex_t mutex) { - return (xSemaphoreTake((SemaphoreHandle_t)mutex, portMAX_DELAY) == pdPASS) ? 0 : -1; + return (xSemaphoreTake((SemaphoreHandle_t)mutex, portMAX_DELAY) == pdPASS) ? 0 : -ETIMEDOUT; } int usb_osal_mutex_give(usb_osal_mutex_t mutex) { - return (xSemaphoreGive((SemaphoreHandle_t)mutex) == pdPASS) ? 0 : -1; + return (xSemaphoreGive((SemaphoreHandle_t)mutex) == pdPASS) ? 0 : -EINVAL; } usb_osal_event_t usb_osal_event_create(void) @@ -128,7 +129,7 @@ int usb_osal_event_send(usb_osal_event_t event, uint32_t set) if (ret == pdPASS) { portYIELD_FROM_ISR(xHigherPriorityTaskWoken); } - return (ret == pdPASS) ? 0 : -1; + return (ret == pdPASS) ? 0 : -EINVAL; } size_t usb_osal_enter_critical_section(void) diff --git a/osal/usb_osal_rtthread.c b/osal/usb_osal_rtthread.c index 5212f349..43155e65 100644 --- a/osal/usb_osal_rtthread.c +++ b/osal/usb_osal_rtthread.c @@ -21,7 +21,9 @@ * */ #include "usb_osal.h" +#include "usb_errno.h" #include +#include usb_osal_thread_t usb_osal_thread_create(const char *name, uint32_t stack_size, uint32_t prio, usb_thread_entry_t entry, void *args) { @@ -53,7 +55,19 @@ void usb_osal_sem_delete(usb_osal_sem_t sem) int usb_osal_sem_take(usb_osal_sem_t sem, uint32_t timeout) { - return (int)rt_sem_take((rt_sem_t)sem, rt_tick_from_millisecond(timeout)); + int ret = 0; + rt_err_t result = RT_EOK; + + result = rt_sem_take((rt_sem_t)sem, rt_tick_from_millisecond(timeout)); + if (result == RT_ETIMEOUT) { + ret = -ETIMEDOUT; + } else if (result == RT_ERROR) { + ret = -EINVAL; + } else { + ret = 0; + } + + return (int)ret; } int usb_osal_sem_give(usb_osal_sem_t sem) @@ -96,9 +110,13 @@ int usb_osal_event_recv(usb_osal_event_t event, uint32_t set, uint32_t *recved) int ret = 0; rt_err_t result = RT_EOK; - result = rt_event_recv((rt_event_t)event, set, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, RT_WAITING_FOREVER, recved); - if (result != RT_EOK) { - ret = -1; + result = rt_event_recv((rt_event_t)event, set, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, RT_WAITING_FOREVER, (rt_uint32_t *)recved); + if (result == RT_ETIMEOUT) { + ret = -ETIMEDOUT; + } else if (result == RT_ERROR) { + ret = -EINVAL; + } else { + ret = 0; } return ret; @@ -111,7 +129,7 @@ int usb_osal_event_send(usb_osal_event_t event, uint32_t set) result = rt_event_send((rt_event_t)event, set); if (result != RT_EOK) { - ret = -1; + ret = -EINVAL; } return ret;