diff g23m/condat/ms/src/mfw/ti1_tmr.c @ 0:509db1a7b7b8

initial import: leo2moko-r1
author Space Falcon <falcon@ivan.Harhan.ORG>
date Mon, 01 Jun 2015 03:24:05 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/g23m/condat/ms/src/mfw/ti1_tmr.c	Mon Jun 01 03:24:05 2015 +0000
@@ -0,0 +1,338 @@
+/*
++--------------------------------------------------------------------+
+| PROJECT: MMI-Framework (8417)         $Workfile:: ti1_tmr.c       $|
+| $Author:: Es  $ CONDAT GmbH           $Revision:: 8               $|
+| CREATED: 28.01.99                     $Modtime:: 18.02.00 17:57   $|
+| STATE  : code                                                      |
++--------------------------------------------------------------------+
+
+   MODULE  : TI1_TMR
+
+   PURPOSE : timer driver interface (TI1 VERSION)
+             uses only one system timer (programmed in milliseconds)
+
+   EXPORT  :
+
+   TO DO   :
+
+   $History:: ti1_tmr.c                                             $
+ * 
+ * *****************  Version 8  *****************
+ * User: Es           Date: 18.02.00   Time: 17:58
+ * Updated in $/GSM/Condat/MS/SRC/MFW
+ * tmrStart(): bug in inner 'if'-clause
+ * 
+ * *****************  Version 7  *****************
+ * User: Es           Date: 6.07.99    Time: 12:41
+ * Updated in $/GSM/DEV/MS/SRC/MFW
+ * 
+ * *****************  Version 6  *****************
+ * User: Es           Date: 14.06.99   Time: 12:15
+ * Updated in $/GSM/DEV/MS/SRC/MFW
+ *
+ * *****************  Version 5  *****************
+ * User: Es           Date: 1.04.99    Time: 17:07
+ * Updated in $/GSM/DEV/MS/SRC/MFW
+ * removed lots of traces
+ *
+ * *****************  Version 4  *****************
+ * User: Es           Date: 17.02.99   Time: 19:11
+ * Updated in $/GSM/DEV/MS/SRC/MFW
+ *
+ * *****************  Version 3  *****************
+ * User: Es           Date: 14.02.99   Time: 20:57
+ * Updated in $/GSM/DEV/MS/SRC/MFW
+ *
+ * *****************  Version 2  *****************
+ * User: Es           Date: 11.02.99   Time: 16:43
+ * Updated in $/GSM/DEV/MS/SRC/MFW
+ *
+ * *****************  Version 1  *****************
+ * User: Es           Date: 9.02.99    Time: 14:54
+ * Created in $/GSM/DEV/MS/SRC/MFW
+ * TI display & keyboard interface for MFW
+*/
+#define ENTITY_MFW
+
+#if defined (NEW_FRAME)
+
+#include "typedefs.h"
+#include "vsi.h"
+#include "custom.h"
+#include "gsm.h"
+
+#else
+
+#include "STDDEFS.H"
+#include "custom.h"
+#include "gsm.h"
+#include "vsi.h"
+
+#endif
+
+#include "mfw_mfw.h"
+#include "mfw_sys.h"
+#include "drv_tmr.h"
+#include "l4_tim.h"
+#include "ti1_tmr.h"
+
+#include "cus_aci.h"
+
+#if !defined (NEW_FRAME)
+void aci_flush_fifo (T_VSI_THANDLE timer);
+#endif
+
+static void (*sig) (void) = 0;          /* timer signaling function */
+#if !defined (NEW_FRAME)
+static T_VSI_THANDLE timer = 0;         /* VSI timer handle         */
+#endif
+
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : ti1_tmr            |
+| STATE   : code                        ROUTINE : tmrTimer           |
++--------------------------------------------------------------------+
+
+  PURPOSE : forward timer signal
+
+*/
+#if defined (NEW_FRAME)
+
+int mfw_timeout (USHORT t)
+{
+    if (sig AND t EQ MFW_TIMER)
+    {
+      sig();
+      return 1;
+    }
+    return 0;
+}
+
+#else
+
+int mfw_timeout (T_VSI_THANDLE t)
+{
+    if (sig && t == timer)
+    {
+        sig();
+        return 1;
+    }
+
+    return 0;
+}
+#endif
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : ti1_tmr            |
+| STATE   : code                        ROUTINE : tmrInit            |
++--------------------------------------------------------------------+
+
+  PURPOSE : initialize timer driver
+
+*/
+
+#if defined (NEW_FRAME)
+
+int tmrInit (void (*s)(void))
+{
+    sig = s;
+
+    TRACE_FUNCTION("tmrInit()");
+
+    if (!s)
+        return 0;
+
+    return 1;
+}
+
+#else
+
+int tmrInit (void (*s)(void))
+{
+    sig = s;
+
+    TRACE_FUNCTION("tmrInit()");
+
+    if (!s)
+        return 0;
+
+    timer = vsi_t_open(VSI_CALLER "mfwTimer");
+    if (timer < VSI_OK)
+    {
+        TRACE_ERROR("TI1_TMR_INIT: No Timer");
+        sig = 0;
+        return 0;
+    }
+
+    return 1;
+}
+#endif
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : ti1_tmr            |
+| STATE   : code                        ROUTINE : tmrExit            |
++--------------------------------------------------------------------+
+
+  PURPOSE : finalize timer driver
+
+*/
+
+#if defined (NEW_FRAME)
+
+int tmrExit (void)
+{
+    TRACE_FUNCTION("tmrExit()");
+
+    if (sig)
+    {
+      tmrStop();
+    }
+    sig = 0;
+
+    return 1;
+}
+
+#else
+
+int tmrExit (void)
+{
+    TRACE_FUNCTION("tmrExit()");
+
+    if (sig)
+    {
+        tmrStop();
+        vsi_t_close(VSI_CALLER timer);
+    }
+    timer = 0;
+    sig = 0;
+
+    return 1;
+}
+
+#endif
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : ti1_tmr            |
+| STATE   : code                        ROUTINE : tmrStart           |
++--------------------------------------------------------------------+
+
+  PURPOSE : start timer
+
+*/
+#if defined (NEW_FRAME)
+
+void tmrStart (ULONG ms)
+{
+  if (sig)
+  {
+    if (ms < 5)                         /* at least one tick        */
+      ms = 5;                           /* set to minimum           */
+    vsi_t_start(VSI_CALLER MFW_TIMER, ms);
+  }
+}
+
+#else
+
+void tmrStart (U32 ms)
+{
+    T_VSI_TVALUE toTime;                /* VSI timer value          */
+
+    if (sig && timer >= VSI_OK)
+    {
+        toTime = (ms * TMR_PREC) / TMR_TICK;
+        if (ms && !toTime)
+            toTime = 1;                 /* set to minimum           */
+
+        vsi_t_start(VSI_CALLER timer,toTime);
+    }
+}
+#endif
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : ti1_tmr            |
+| STATE   : code                        ROUTINE : tmrStop            |
++--------------------------------------------------------------------+
+
+  PURPOSE : stop timer
+
+*/
+
+#if defined (NEW_FRAME)
+
+ULONG tmrStop (void)
+{
+  T_TIME left;                         /* VSI timer value          */
+
+  if (sig)
+  {
+    vsi_t_status(VSI_CALLER MFW_TIMER, &left);
+    vsi_t_stop(VSI_CALLER MFW_TIMER);
+    return (left);
+  }
+  return 0;
+}
+
+#else
+
+U32 tmrStop (void)
+{
+    T_VSI_TVALUE left;                  /* VSI timer value          */
+
+    if (sig && timer >= VSI_OK)
+    {
+        vsi_t_status(VSI_CALLER timer,&left);
+        vsi_t_stop(VSI_CALLER timer);
+        aci_flush_fifo(timer);
+        return ((left * TMR_TICK) / TMR_PREC);
+    }
+
+    return 0;
+}
+
+#endif
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : ti1_tmr            |
+| STATE   : code                        ROUTINE : tmrLeft            |
++--------------------------------------------------------------------+
+
+  PURPOSE : report left time
+
+*/
+
+#if defined (NEW_FRAME)
+
+ULONG tmrLeft (void)
+{
+    T_TIME left;                  /* VSI timer value          */
+
+    if (sig)
+    {
+      vsi_t_status(VSI_CALLER MFW_TIMER, &left);
+      return (left);
+    }
+    return 0;
+}
+
+#else
+
+U32 tmrLeft (void)
+{
+    T_VSI_TVALUE left;                  /* VSI timer value          */
+
+    if (sig && timer >= VSI_OK)
+    {
+        vsi_t_status(VSI_CALLER timer,&left);
+        return ((left * TMR_TICK) / TMR_PREC);
+    }
+
+    return 0;
+}
+
+#endif