이 메소드는 RiCOSTimer 오브젝트를 초기화합니다.
RiCBoolean RiCOSTimer_init (RiCOSTimer *const me, timeUnit ptime, void (*cbkfunc)(void *), void *params);
me
초기화할 RiCOSTimer 오브젝트입니다.
pTime
타이머의 각 틱 간의 시간입니다. 대부분의 어댑터에서 시간 단위는 밀리초입니다. 그러나 시간 단위는 특정 어댑터 구현에 따라 달라집니다.
cbkfunc
틱이 발생한 타이머 클라이언트를 알리는 데 사용되는 틱 타이머 콜백 함수입니다.
params
콜백 함수에 대한 매개변수입니다.
성공한 경우 이 메소드는 RiCTRUE를 리턴합니다.
RiCBoolean RiCOSTimer_init(RiCOSTimer * const me,
timeUnit ptime, void (*cbkfunc)(void *), void *params)
{
if (me == NULL) return RiCFALSE;
me->cbkfunc = cbkfunc;
me->param = params;
if (((RiCTimerManager*)params)->realTimeModel) {
/**** VxWorks TickTimer(Real Time) ****/
me->m_Time = ptime;
/* Create a thread that runs the bridge, passing
this as an argument. */
me->ticks = cvrtTmInMStoTicks(me->m_Time);
me->hThread = taskSpawn("timer", PRIORITY_HIGH, 0,
SMALL_STACK, (int (*)())bridge,
(int)(void *)me /*p1*/, 0,0,0,0,0,0,0,0,0 );
return me->hThread != ERROR;
}
else {
/**** IdleTimer (Simulated Time) ****/
me->m_Time = 0; /* Just create context-switch
until the system enters idle mode. */
me->hThread = taskSpawn("timer", PRIORITY_LOW, 0,
SMALL_STACK, (int (*)())bridge, (int)(void*)me,
0,0,0,0,0,0,0,0,0);
return RiCTRUE;
}
}