diff options
Diffstat (limited to 'cpukit/itron/src/itrontime.c')
-rw-r--r-- | cpukit/itron/src/itrontime.c | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/cpukit/itron/src/itrontime.c b/cpukit/itron/src/itrontime.c new file mode 100644 index 0000000000..13621a9e6a --- /dev/null +++ b/cpukit/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 ) +{ +} + |