mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #4571 from geky/events-use-rtx-event-flags
events: Adopt osEventFlags from RTX 5pull/4636/head
commit
fecb99140d
|
@ -86,18 +86,21 @@ void equeue_mutex_unlock(equeue_mutex_t *m) {
|
||||||
#ifdef MBED_CONF_RTOS_PRESENT
|
#ifdef MBED_CONF_RTOS_PRESENT
|
||||||
|
|
||||||
int equeue_sema_create(equeue_sema_t *s) {
|
int equeue_sema_create(equeue_sema_t *s) {
|
||||||
MBED_STATIC_ASSERT(sizeof(equeue_sema_t) >= sizeof(Semaphore),
|
osEventFlagsAttr_t attr;
|
||||||
"The equeue_sema_t must fit the class Semaphore");
|
memset(&attr, 0, sizeof(attr));
|
||||||
new (s) Semaphore(0);
|
attr.cb_mem = &s->mem;
|
||||||
return 0;
|
attr.cb_size = sizeof(s->mem);
|
||||||
|
|
||||||
|
s->id = osEventFlagsNew(&attr);
|
||||||
|
return !s->id ? -1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void equeue_sema_destroy(equeue_sema_t *s) {
|
void equeue_sema_destroy(equeue_sema_t *s) {
|
||||||
reinterpret_cast<Semaphore*>(s)->~Semaphore();
|
osEventFlagsDelete(s->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
void equeue_sema_signal(equeue_sema_t *s) {
|
void equeue_sema_signal(equeue_sema_t *s) {
|
||||||
reinterpret_cast<Semaphore*>(s)->release();
|
osEventFlagsSet(s->id, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool equeue_sema_wait(equeue_sema_t *s, int ms) {
|
bool equeue_sema_wait(equeue_sema_t *s, int ms) {
|
||||||
|
@ -105,7 +108,7 @@ bool equeue_sema_wait(equeue_sema_t *s, int ms) {
|
||||||
ms = osWaitForever;
|
ms = osWaitForever;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (reinterpret_cast<Semaphore*>(s)->wait(ms) > 0);
|
return (osEventFlagsWait(s->id, 1, osFlagsWaitAny, ms) == 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -49,6 +49,9 @@ extern "C" {
|
||||||
// Platform includes
|
// Platform includes
|
||||||
#if defined(EQUEUE_PLATFORM_POSIX)
|
#if defined(EQUEUE_PLATFORM_POSIX)
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
#elif defined(EQUEUE_PLATFORM_MBED)
|
||||||
|
#include "cmsis_os2.h"
|
||||||
|
#include "rtx_lib.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -112,7 +115,10 @@ typedef struct equeue_sema {
|
||||||
bool signal;
|
bool signal;
|
||||||
} equeue_sema_t;
|
} equeue_sema_t;
|
||||||
#elif defined(EQUEUE_PLATFORM_MBED) && defined(MBED_CONF_RTOS_PRESENT)
|
#elif defined(EQUEUE_PLATFORM_MBED) && defined(MBED_CONF_RTOS_PRESENT)
|
||||||
typedef unsigned equeue_sema_t[9];
|
typedef struct equeue_sema {
|
||||||
|
osEventFlagsId_t id;
|
||||||
|
os_event_flags_t mem;
|
||||||
|
} equeue_sema_t;
|
||||||
#elif defined(EQUEUE_PLATFORM_MBED)
|
#elif defined(EQUEUE_PLATFORM_MBED)
|
||||||
typedef volatile int equeue_sema_t;
|
typedef volatile int equeue_sema_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue