summaryrefslogtreecommitdiffstats
path: root/c/src/exec/itron/src/itrontime.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/exec/itron/src/itrontime.c')
-rw-r--r--c/src/exec/itron/src/itrontime.c241
1 files changed, 241 insertions, 0 deletions
diff --git a/c/src/exec/itron/src/itrontime.c b/c/src/exec/itron/src/itrontime.c
new file mode 100644
index 0000000000..13621a9e6a
--- /dev/null
+++ b/c/src/exec/itron/src/itrontime.c
@@ -0,0 +1,241 @@
+/*
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#include <itron.h>
+
+#include <rtems/score/thread.h>
+#include <rtems/score/tod.h>
+
+#include <rtems/itron/time.h>
+
+/*
+ * set_tim - Set System Clock
+ */
+
+void converTime(SYSTIME ms, TOD_Control *time)
+{
+ int millisecond;
+
+/* XXX need to dereference structure */
+#if 0
+ milisecond = ms % 1000;
+ tempSecond = ms / 1000;
+#else
+ millisecond = 0;
+#endif
+}
+
+
+/*
+ * set_tim - Set System Clock
+ */
+
+ER set_tim(
+ SYSTIME *pk_tim
+)
+{
+ Watchdog_Interval temp; /* an integer in seconds after conversion from SYSTIME */
+ TOD_Control the_tod;
+
+/* convert *pk_tim which is 48 bits integer in binary into an ordinary
+ integer in milliseconds */
+
+/* XXX */ temp = 0;
+ if(temp > 0) {
+ _Thread_Disable_dispatch();
+ _TOD_Set(&the_tod, temp);
+ _Thread_Enable_dispatch();
+ if(_TOD_Validate(&the_tod)){
+ return E_OK;
+ }
+ }
+ return E_SYS;
+}
+
+/*
+ * get_tim - Get System Clock
+ */
+
+ER get_tim(
+ SYSTIME *pk_tim
+)
+{
+ return E_OK;
+}
+
+/*
+ * dly_tsk - Delay Task
+ */
+
+ER dly_tsk(
+ DLYTIME dlytim
+)
+{
+ Watchdog_Interval ticks;
+
+ ticks = TOD_MILLISECONDS_TO_TICKS(dlytim);
+
+ _Thread_Disable_dispatch();
+ if ( ticks == 0 ) {
+ _Thread_Yield_processor();
+ } else {
+ _Thread_Set_state( _Thread_Executing, STATES_DELAYING );
+ _Watchdog_Initialize(
+ &_Thread_Executing->Timer,
+ _Thread_Delay_ended,
+ _Thread_Executing->Object.id,
+ NULL
+ );
+ _Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks );
+ }
+ _Thread_Enable_dispatch();
+ return E_OK;
+}
+
+/*
+ * def_cyc - Define Cyclic Handler
+ */
+
+ER def_cyc(
+ HNO cycno,
+ T_DCYC *pk_dcyc
+)
+{
+ Watchdog_Control *object;
+#if 0
+ Watchdog_Interval timeInterval;
+#endif
+
+/* XXX */ object = 0;
+ if ( pk_dcyc->cycatr != TA_HLNG)
+ return E_RSATR;
+#if 0
+ timeInterval = pk_dcyc->cyctim / 1000;
+ object->delta_interval = timeInterval;
+#endif
+ _Watchdog_Initialize(
+ object,
+ pk_dcyc->cychdr,
+ cycno,
+ pk_dcyc->exinf);
+ _Watchdog_Deactivate(object);
+
+ return E_OK;
+}
+
+/*
+ * act_cyc - Activate Cyclic Handler
+ */
+
+ER act_cyc(
+ HNO cycno,
+ UINT cycact
+)
+{
+ Watchdog_Control *object;
+
+ if(cycact != TCY_OFF || cycact != TCY_ON)
+ return E_PAR;
+
+#if 0
+ if( object->Object_ID != cycno)
+ return E_NOEXS;
+#endif
+
+ _Watchdog_Activate(object);
+
+ return E_OK;
+}
+
+/*
+ * ref_cyc - Reference Cyclic Handler Status
+ */
+
+ER ref_cyc(
+ T_RCYC *pk_rcyc,
+ HNO cycno
+)
+{
+#if 0
+ int timeElapse_since_actCyclic;
+#endif
+ T_DCYC *pk_dcyc;
+#if 0
+ Watchdog_Control *object;
+#endif
+
+/* XXX */ pk_dcyc = 0;
+
+/* XXX will to use a "get" routine to map from id to object pointer */
+/* XXX and the object pointer should be of type specific to this manager */
+#if 0
+ if( object->Object_ID == cycno))
+#else
+ if ( 1 )
+#endif
+ {
+ pk_rcyc->exinf = pk_dcyc->exinf;
+ pk_rcyc->cycact = pk_dcyc->cycact;
+#if 0
+ pk_rcyc->lfttim = pk_dcyc->cyctim - timeElapse_since_actCyclic;
+#endif
+
+ return E_OK;
+ }
+ else
+ return E_NOEXS;
+}
+
+/*
+ * def_alm - Define Alarm Handler
+ */
+
+ER def_alm(
+ HNO almno,
+ T_DALM *pk_dalm
+)
+{
+#if 0
+ Objects_Control *objectAlrm;
+ Watchdog_Interval timeInterval;
+
+ timeInterval = pk_dalm->almtim / 1000;
+ (void) _Watchdog_Remove(&objectAlrm);
+ _Watchdog_Initialize(
+ objectAlrm,
+ pk_dalm->almhdr,
+ almno,
+ pk_dalm->exinf);
+ _Watchdong_Insert_seconds(objectAlrm,timeInterval);
+ _Thread_Enable_dispatch();
+#endif
+
+ return E_OK;
+}
+
+/*
+ * ref_alm - Reference Alarm Handler Status
+ */
+
+ER ref_alm(
+ T_RALM *pk_ralm,
+ HNO almno
+)
+{
+
+ return E_OK;
+}
+
+/*
+ * ret_tmr - Return from Timer Handler
+ */
+
+void ret_tmr( void )
+{
+}
+