From 58f41971b1e801ad2fbcea08e5152afa2b18ca73 Mon Sep 17 00:00:00 2001 From: Uros Majstorovic Date: Mon, 28 Jul 2025 23:27:12 +0200 Subject: sys logging added; power management reimplemented; bugfixes; --- fw/fe310/eos/event.c | 107 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 85 insertions(+), 22 deletions(-) (limited to 'fw/fe310/eos/event.c') diff --git a/fw/fe310/eos/event.c b/fw/fe310/eos/event.c index f76384a..b21e5ea 100644 --- a/fw/fe310/eos/event.c +++ b/fw/fe310/eos/event.c @@ -1,69 +1,110 @@ #include #include #include -#include #include "encoding.h" #include "platform.h" #include "eos.h" +#include "log.h" #include "msgq.h" #include "event.h" EOSMsgQ _eos_event_q; static EOSMsgItem event_q_array[EOS_EVT_SIZE_Q]; -static eos_evt_handler_t evt_handler[EOS_EVT_MAX_EVT + 1]; +static eos_evt_handler_t evt_handler[EOS_EVT_MAX]; +static eos_evt_handler_global_t evt_handler_global; +static eos_evt_loopf_t evt_loop_f; -static void evtq_handler(unsigned char type, unsigned char *buffer, uint16_t len) { +static void evtq_handler(unsigned char type, unsigned char *buffer, uint16_t len, uint8_t _idx) { unsigned char idx = (type & EOS_EVT_MASK) >> 4; - if (idx && (idx <= EOS_EVT_MAX_EVT)) { - evt_handler[idx](type, buffer, len); + if (idx && (idx <= EOS_EVT_MAX)) { + evt_handler[idx - 1](type, buffer, len); } else { eos_evtq_bad_handler(type, buffer, len); } } -int eos_evtq_init(uint8_t wakeup_cause) { +int eos_evtq_init(void) { int i; - evt_handler[0] = evtq_handler; - for (i=0; i> 4; if (handler == NULL) handler = eos_evtq_bad_handler; - if (idx <= EOS_EVT_MAX_EVT) evt_handler[idx] = handler; + if (idx && (idx <= EOS_EVT_MAX)) evt_handler[idx - 1] = handler; } eos_evt_handler_t eos_evtq_get_handler(unsigned char type) { unsigned char idx = (type & EOS_EVT_MASK) >> 4; - if (idx <= EOS_EVT_MAX_EVT) return evt_handler[idx]; + if (idx && (idx <= EOS_EVT_MAX)) return evt_handler[idx - 1]; return NULL; } + +void eos_evtq_set_handler_global(eos_evt_handler_global_t handler) { + evt_handler_global = handler; +} + +eos_evt_handler_global_t eos_evtq_get_handler_global(void) { + return evt_handler_global; +} -- cgit v1.2.3