FreeCalypso > hg > fc-tourmaline
diff src/cs/services/fcbm/fcbm_task.c @ 230:baa738eeb842
FCBM code implemented in first pass
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 01 May 2021 10:05:53 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cs/services/fcbm/fcbm_task.c Sat May 01 10:05:53 2021 +0000 @@ -0,0 +1,45 @@ +/* + * The FCBM task's core function lives here. + */ + +#include "fcbm/fcbm_env.h" +#include "fcbm/fcbm_func_i.h" +#include "fcbm/fcbm_timer_i.h" +#include "fcbm/fcbm_life_cycle.h" +#include "rv/rv_general.h" +#include "rvf/rvf_api.h" +#include "rvm/rvm_use_id_list.h" + +enum fcbm_life_cycle_state fcbm_life_cycle_state; + +T_RV_RET fcbm_core(void) +{ + BOOLEAN error_occured = FALSE; + T_RV_HDR *msg_ptr; + + /* loop to process messages */ + while (error_occured == FALSE) + { + /* Wait for the necessary events (infinite wait for a msg in the mailbox 0). */ + UINT16 received_event = rvf_wait (0xffff, 0); + + /* If an event related to mailbox 0 is received, then */ + if (received_event & RVF_TASK_MBOX_0_EVT_MASK) + { + /* Read the message in the driver mailbox and delegate action..*/ + msg_ptr = (T_RV_HDR *) rvf_read_mbox(FCBM_MAILBOX); + if (msg_ptr) { + fcbm_process_message(msg_ptr); + rvf_free_buf ((void *) msg_ptr); + } + } + + /* Timers */ + if (received_event & RVF_TIMER_0_EVT_MASK) + fcbm_chg_periodic_timer(); + if (received_event & RVF_TIMER_1_EVT_MASK) + fcbm_display_off_timer(); + + } // end of while + return RV_OK; +}