Skip to content

File syn_event_flags.h

File List > sched > syn_event_flags.h

Go to the documentation of this file

#ifndef SYN_EVENT_FLAGS_H
#define SYN_EVENT_FLAGS_H

#include "../common/syn_defs.h"

#include <stdbool.h>
#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef enum {
    SYN_EVENT_FLAGS_WAIT_ANY = 0x01U,  
    SYN_EVENT_FLAGS_WAIT_ALL = 0x02U,  
    SYN_EVENT_FLAGS_AUTO_CLEAR = 0x04U 
} SYN_EventFlagsMode;

typedef struct {
    volatile uint32_t flags; 
} SYN_EventFlags;

SYN_Status syn_event_flags_init(SYN_EventFlags *ef);

SYN_Status syn_event_flags_set(SYN_EventFlags *ef, uint32_t flags_mask);

SYN_Status syn_event_flags_clear(SYN_EventFlags *ef, uint32_t flags_mask);

uint32_t syn_event_flags_get(const SYN_EventFlags *ef);

SYN_Status syn_event_flags_wait(SYN_EventFlags *ef, uint32_t wait_mask, uint32_t mode,
                                uint32_t *out_flags);

#ifdef __cplusplus
}
#endif

#endif /* SYN_EVENT_FLAGS_H */