From e7a92d9417bf648d44643031ec4f41202331b5ef Mon Sep 17 00:00:00 2001 From: xj Date: Tue, 27 Aug 2024 04:33:02 -0700 Subject: [PATCH] Modify osal functions --- .../drivers/usb/components/osal/usb_osal.c | 42 ++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/osal/usb_osal.c b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/osal/usb_osal.c index f261b6ee5..d2fed989a 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/osal/usb_osal.c +++ b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/osal/usb_osal.c @@ -93,6 +93,8 @@ usb_osal_mutex_t usb_osal_mutex_create(void){ mutex_id = semaphore_new(1); + printf("In %s, mutex_id = %d\n", __func__, mutex_id); + return (usb_osal_mutex_t)mutex_id; } @@ -129,6 +131,7 @@ int usb_osal_mutex_give(usb_osal_mutex_t mutex){ semaphore_signal(mutex_id); + return 0; } @@ -181,6 +184,8 @@ osal_msg_queue_t osal_mq_create(const char *name, mq->msg_size = msg_size; mq->max_msgs = max_msgs; + printf("In %s, msg_size = %d, max_msgs = %d\n", __func__, msg_size, max_msgs); + return mq; } @@ -227,8 +232,10 @@ int osal_mq_send(osal_msg_queue_t mq, tail = mq->tail; header = mq->header; + + printf("In %s, tail = %d, header = %d\n", __func__, tail, header); /* message queue is full. */ - tail_nxt = (tail + 1) > mq->max_msgs ? (tail + 1 -mq->max_msgs):(tail + 1); + tail_nxt = (tail + 1) > mq->max_msgs ? (tail + 1 - mq->max_msgs):(tail + 1); if(tail_nxt == header){ usb_osal_sem_give(mq->mutex); return 0; @@ -246,7 +253,7 @@ int osal_mq_send(osal_msg_queue_t mq, -int osal_mq_recv(osal_msg_queue_t mq, +int __osal_mq_recv(osal_msg_queue_t mq, void *msg, size_t msg_len, uint32_t timeout){ @@ -277,6 +284,8 @@ int osal_mq_recv(osal_msg_queue_t mq, return 0; } + printf("In %s, tail = %d, header = %d\n", __func__, tail, header); + msg_header = (osal_mq_msg_header_t)(mq->data + (sizeof(struct osal_mq_msg_header) + mq->msg_size) * header); msg_buf = (uint8_t *)(msg_header + 1); copy_len = (msg_header->len > msg_len ? msg_len : msg_header->len); @@ -290,6 +299,35 @@ int osal_mq_recv(osal_msg_queue_t mq, return copy_len; } +int osal_mq_recv(osal_msg_queue_t mq, + void *msg, + size_t msg_len, + uint32_t timeout){ + int ret = 0; + int sleep_time = timeout; + int for_ever = 0; + + if(sleep_time == 0) + for_ever = 1; + + do{ + ret = __osal_mq_recv(mq, msg, msg_len, timeout); + + if(ret == 0){ + if(sleep_time > 0 || for_ever == 1){ + usb_osal_msleep(10); + + if(for_ever == 0) + sleep_time -= 10; + }else{ + break; + } + } + + }while(ret == 0); + + return ret; +} usb_osal_mq_t usb_osal_mq_create(uint32_t max_msgs){