상태 진입

enter() 오퍼레이션은 오브젝트가 트리거를 수신하고 가능한 보호 조건이 패스된 후 상태에 들어갈 수 있도록 합니다. enter() 오퍼레이션은 또한 상태에 대해 사용자 정의 시작 조치를 실행할 수 있습니다.

이 태스크 정보

enter() 오퍼레이션 이름의 형식은 다음과 같습니다.

<object>_<state>_enter(<오브젝트*> const <me>)

예를 들어, 다음 enter() 오퍼레이션은 HomeHeatingSystem의 systemControl 상태에 대해 생성됩니다.

void HomeHeatingSystem_systemControl_enter(
   HomeHeatingSystem* const me);

enter() 오퍼레이션은 (상태 차트를 기반으로) 나가는 상태의 <state>_subState<state>_active 멤버를 들어오는 상태의 멤버로 설정합니다. 예를 들어, HomeHeatingSystem의 systemControl 상태에 대한 enter() 오퍼레이션은 다음과 같이 rootState(이전 상태)의 두 멤버를 systemControl 상태(들어가는 상태)로 설정합니다.

void HomeHeatingSystem_systemControl_enter(
   HomeHeatingSystem* const me) {
   NOTIFY_STATE_ENTERED(me, HomeHeatingSystem,
      "ROOT.systemControl");
   me->rootState_subState = HomeHeatingSystem_systemControl;
   me->rootState_active = HomeHeatingSystem_systemControl;
   RiCTask_schedTm(me->ric_reactive.myTask, 3000,
      HomeHeatingSystem_Timeout_systemControl_id, 
         &me->ric_reactive, "ROOT.systemControl");
}
주: enter() 오퍼레이션은 루트 상태에 대해 생성되지 않습니다.

피드백