进入状态

enter() 操作允许对象在成功接收触发器和已通过任意可能的警戒条件后进入某个状态。enter() 操作还可以在进入状态时执行用户定义的任意操作。

关于此任务

enter() 操作名称具有以下格式:

<object>_<state>_enter(<object*> const <me>)

例如,以下 enter() 操作是为 systemControl 状态的 HomeHeatingSystem 生成的:

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() 操作。

反馈