|
|
|
@ -114,6 +114,21 @@ void Rd_SemWait(void *_sem, const char *_pcFunc, int *_piCnt) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
int Rd_SemWaitTimeout(void *_sem, uint32_t _uiTimeoutMs) |
|
|
|
{ |
|
|
|
rd_sem_t *pSem = (rd_sem_t *)_sem; |
|
|
|
uint32_t ticks = (_uiTimeoutMs * osKernelGetTickFreq()) / 1000; |
|
|
|
if (ticks == 0) ticks = 1; |
|
|
|
osStatus_t status = osSemaphoreAcquire(pSem->sem_id, ticks); |
|
|
|
if (status == osOK) { |
|
|
|
return 0; |
|
|
|
} else if (status == osErrorTimeout || status == osErrorResource) { |
|
|
|
return -1; |
|
|
|
} else { |
|
|
|
return -2; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void Rd_SemPost(void *_sem, const char *_pcFunc, int *_piCnt) |
|
|
|
{ |
|
|
|
rd_sem_t *pSem = (rd_sem_t *)_sem; |
|
|
|
|