バグ #2320
ECのコールバック実行順序を修正する
開始日:
2012/01/11
期日:
進捗率:
100%
予定工数:
説明
現在のECはon_executeとon_state_updateの実行順序がA,BというRTCが同一ECにアタッチされている場合、
A:on_execute->A:on_state_update->B:on_execute->B:on_state_update
となっているが、OMG RTC標準仕様にしたがって、
A:on_execute->B:on_execute->A:on_state_update->B:on_state_update
となるように修正する。
修正項目としては、- StateMachine::worker() を worker_pre(), worker_do(), worker_post()に分割し、それぞれでpre_do, do, post_doコールバックを呼ぶように変更する。
- PeriodicEC内でfor_eachでworker()を呼んでいる部分をworker_pre(), worker_do(), worker_post()に分割する。
[incompatible] ExecutionContextBase's super classes have been moved to PeriodicExecutionContext class. refs #2323
[incomaptible API] Now ExecutionContextProfile management has been moved to ExecutionContextBase. getObjRef() is also moved to ExecutionContextBase.
[incompatible behavior] Now onExecute and onStateUpdate execution behavior has been changed when two or more RTCs attached to the EC. refs #2320
Old: A::onExecute, A::onStateUpdate, B::onExecute, B::onStateUpdate
New: A::onExecute, B::onExecute, A::onStateUpdate, B::onStateUpdate