takeEvent() 오퍼레이션 이름의 형식은 다음과 같습니다.
<object>_<state>_takeEvent(<object>* const <me>, <event ID>)
이벤트 ID는 패키지 스펙 파일의 맨 위에서 이벤트에 대해 생성된 ID 번호입니다.
예를 들어, HomeHeatingSystem의 systemControl 상태의 경우 다음 takeEvent() 오퍼레이션이 생성됩니다.
int HomeHeatingSystem_systemControl_takeEvent( HomeHeatingSystem* const me, short id);
int HomeHeatingSystem_systemControl_takeEvent(
HomeHeatingSystem* const me, short id) {
int res = eventNotConsumed;
if(id == Timeout_id)
{
if(RiCTimeout_getTimeoutId((RiCTimeout*)
me->ric_reactive.current_event) ==
HomeHeatingSystem_Timeout_systemControl_id)
{
NOTIFY_TRANSITION_STARTED(me,
HomeHeatingSystem, "1");
HomeHeatingSystem_systemControl_exit(me);
{
/*#[ transition 1 */
if(IS_IN(&me->theFurnace,Furnace_starting))
RiCGEN(&me->theFurnace,motorReady());
/*#]*/
}
systemControl_entDef(me);
NOTIFY_TRANSITION_TERMINATED(me,
HomeHeatingSystem, "1");
res = eventConsumed;
}
}
return res;
}