diff src/cs/drivers/drv_app/r2d/r2d_task.c @ 217:6541e43f88e5

R2D display on/off control implemented
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 24 Apr 2021 23:38:18 +0000
parents 777698cf6583
children 4221c724c664
line wrap: on
line diff
--- a/src/cs/drivers/drv_app/r2d/r2d_task.c	Sat Apr 24 19:58:49 2021 +0000
+++ b/src/cs/drivers/drv_app/r2d/r2d_task.c	Sat Apr 24 23:38:18 2021 +0000
@@ -1,8 +1,8 @@
 /**
 
-	@file:	r2d_task.c
+    @file:	r2d_task.c
 
-	@author Christophe Favergeon
+    @author Christophe Favergeon
 
     @version 0.5
 
@@ -12,18 +12,16 @@
 
 /*
 
- 	Date       	Modification
+    Date       	Modification
   ------------------------------------
     06/02/2001	Create
-	10/18/2001  Version 0.5 for first integration with Riviera database
+    10/18/2001  Version 0.5 for first integration with Riviera database
 
 
  (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved
 */
 
 
-
-
 #include "rv/general.h"
 #include "rvf/rvf_api.h"
 #include "rvm/rvm_api.h"
@@ -38,6 +36,8 @@
 
 extern INT16 r2d_g_refresh_disabled;
 
+extern void r2d_process_onoff_message(T_R2D_EVT *msg);
+
 /* FreeCalypso addition */
 int r2d_is_running;
 
@@ -50,7 +50,7 @@
 T_RVM_RETURN r2d_core(void)
 {
 	BOOLEAN error_occured = FALSE;
-//	T_R2D_EVT * msg_ptr_rx, * msg_ptr_tx;
+	T_R2D_EVT *msg;
 
 	//r2d_start();
 
@@ -70,13 +70,25 @@
 		//rvf_send_trace("WAIT EVENT",strlen("WAIT EVENT"), NULL_PARAM,
 		//	   RV_TRACE_LEVEL_DEBUG_HIGH, TRACE_XXX );
 		/* Wait for the necessary events (infinite wait for a msg in the mailbox 0). */
-		 received_event = rvf_wait ( EVENT_MASK(RVF_APPL_EVT_0), 0);
+		received_event = rvf_wait(EVENT_MASK(RVF_APPL_EVT_0) |
+					  RVF_TASK_MBOX_0_EVT_MASK, 0);
 
 		 //rvf_send_trace("EVENT RECEIVED",strlen("EVENT RECEIVED"), NULL_PARAM,
 		//	   RV_TRACE_LEVEL_DEBUG_HIGH, TRACE_XXX );
 
-		/* If an event related to mailbox 0 is received, then */
-		if (received_event & EVENT_MASK(RVF_APPL_EVT_0) )
+		/* Check for mailbox events */
+		if (received_event & RVF_TASK_MBOX_0_EVT_MASK) 
+		{
+			/* Read the message in the driver mailbox and delegate action..*/
+			msg = (T_R2D_EVT *) rvf_read_mbox(RVF_TASK_MBOX_0);
+			if (msg) {
+				if (msg->os_hdr.msg_id == R2D_MESSAGE_ONOFF)
+					r2d_process_onoff_message(msg);
+				rvf_free_buf ((void *) msg);
+			}
+		}
+		/* Check for refresh trigger events */
+		if (received_event & EVENT_MASK(RVF_APPL_EVT_0))
 		{
 			//rvf_send_trace("GOOD EVENT",strlen("GOOD EVENT"), NULL_PARAM,
 			//   RV_TRACE_LEVEL_DEBUG_HIGH, TRACE_XXX );
@@ -86,7 +98,6 @@
 			  r2d_refresh();
 			rvf_delay(RVF_MS_TO_TICKS(R2D_REFRESH_PERIOD));
 		}
-
 	}
 
 	return RVM_OK;