操作
機能 #3656
完了RTC生成時に指定した実行コンテキストが存在しなかった場合にデフォルトの実行コンテキストを生成する
開始日:
2016/10/11
期日:
2016/10/31
進捗率:
100%
予定工数:
説明
現在の実装ではrtc.confで存在しない実行コンテキストを指定してRTCを生成しようとした場合に、1つも実行コンテキストが生成されずにRTCが生成されてしまうことがあるが、その場合はデフォルトの実行コンテキスト( PeriodicExecutionContext)で生成する
n-miyamoto さんが約8年前に更新
- ステータス を 新規 から 解決 に変更
- 進捗率 を 0 から 100 に変更
createContexts関数に生成した実行コンテキストの数が0の時にデフォルトの実行コンテキストを生成する処理を追加
if (m_eclist.empty()) { coil::Properties prop; prop.setDefaults(default_config); RTC::ExecutionContextBase* ec = NULL; ec = RTC::ExecutionContextFactory:: instance().createObject(prop["exec_cxt.periodic.type"].c_str()); if (ec == NULL) { RTC_ERROR(("EC (%s) creation failed.", prop["exec_cxt.periodic.type"].c_str())); RTC_DEBUG(("Available EC list: %s", coil::flatten(avail_ec).c_str())); ret = RTC::RTC_ERROR; } ec->init(coil::Properties()); m_eclist.push_back(ec); ec->bindComponent(this); }
デフォルトの実行コンテキスト名はDefaultConfiguration.hから取得しているが、そのままDefaultConfiguration.hをインクルードしようとすると変数の多重定義エラーが発生するため、version.hの変数にはstaticを付けるように変更した。
echo 'static const char* openrtm_name = "'${PACKAGE}'-'${VERSION}'";' >> $@ echo 'static const char* openrtm_version = "'${VERSION}'";' >> $@ echo 'static const char* corba_name = "'${ORB}'";' >> $@
操作