状態入場

enter() 操作により、オブジェクトは、トリガーを正常に受け取り、適用される可能性があるガード条件に合格した後に、状態に入場できます。 また、enter() 操作は、状態のユーザー定義の入場時のアクションが存在する場合には、そのアクションも実行します。

このタスクについて

enter() 操作名の形式は以下のとおりです。

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

例えば、HomeHeatingSystem の systemControl 状態の場合には、以下の enter() 操作が生成されます。

void HomeHeatingSystem_systemControl_enter(
   HomeHeatingSystem* const me);

enter() 操作は、 (ステートチャートに基づいて) 退場する状態の <state>_subState および <state>_active メンバーに、 入場する状態を設定します。例えば、HomeHeatingSystem の systemControl 状態の enter() 操作は、 rootState (前の状態) の 2 つのメンバーに 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() 操作は、ルート状態に対しては生成されません。

フィードバック