1 #ifndef EVE_MWORK_H_INCLUDED 2 #define EVE_MWORK_H_INCLUDED 46 #include <hal/nrf_rtc.h> 58 #define MWORK_COUNTER_WIDTH (24) 64 #define MWORK_GUARD_WIDTH (2) 70 #define MWORK_EFFECTIVE_WIDTH (MWORK_COUNTER_WIDTH - MWORK_GUARD_WIDTH) 76 #define MWORK_TIME_MASK ((1 << MWORK_EFFECTIVE_WIDTH) - 1) 82 #define MWORK_ROUND_TIME(tick) ((tick) & MWORK_TIME_MASK) 88 #define MWORK_TIME_SPAN_IS_NEGATIVE(span) \ 89 (((span) & (1 << (MWORK_EFFECTIVE_WIDTH - 1))) != 0) 98 #define MWORK_MSEC(ms) MS_TO_TICKS(ms) 115 #define MWORK_INIT(x, callback) \ 117 .work.link.next = &(x).work.link, \ 118 .work.link.prev = &(x).work.link, \ 119 .work.cb = (work_cb_t) (callback), \ 126 #define MWORK_INIT_TYPED(x, callback) \ 127 (struct mwork_t) MWORK_INIT(x, callback) 144 #define DECLARE_MWORK(x, callback) \ 145 struct mwork_t x = MWORK_INIT(x, callback)
static mwork_time_t mwork_now()
The code implements Dummy Headed Doubly Linked Circularlist (DHDLC) primitive.
static int dlist_is_empty(struct dlist_t *list)
Header file for the EVE work scheduling.
void(* mwork_cb_t)(struct mwork_t *work)
static bool mwork_pending(struct mwork_t *work)
#define MWORK_GUARD_WIDTH
void mwork_schedule(struct mwork_t *work)
void mwork_cancel(struct mwork_t *work)