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;	
+}