event.c 650 B

123456789101112131415161718192021222324
  1. #include "event.h"
  2. #include <string.h>
  3. bool init_event(Event* event) {
  4. event->semaphore_id = osSemaphoreNew(1, 0, NULL);
  5. return event->semaphore_id != NULL;
  6. }
  7. bool delete_event(Event* event) {
  8. return osSemaphoreDelete(event->semaphore_id) == osOK;
  9. }
  10. void signal_event(Event* event) {
  11. // Ignore the result, as we do not care about repeated event signalling.
  12. osSemaphoreRelease(event->semaphore_id);
  13. }
  14. void wait_event(Event* event) {
  15. wait_event_with_timeout(event, osWaitForever);
  16. }
  17. bool wait_event_with_timeout(Event* event, uint32_t timeout_ms) {
  18. return osSemaphoreAcquire(event->semaphore_id, timeout_ms) == osOK;
  19. }