Project

General

Profile

機能 #3656

RTC生成時に指定した実行コンテキストが存在しなかった場合にデフォルトの実行コンテキストを生成する

Added by n-miyamoto about 5 years ago. Updated about 4 years ago.

Status:
終了
Priority:
通常
Assignee:
Target version:
-
Start date:
10/11/2016
Due date:
10/31/2016
% Done:

100%

Estimated time:

Description

現在の実装ではrtc.confで存在しない実行コンテキストを指定してRTCを生成しようとした場合に、1つも実行コンテキストが生成されずにRTCが生成されてしまうことがあるが、その場合はデフォルトの実行コンテキスト( PeriodicExecutionContext)で生成する

Associated revisions

Revision 2776 (diff)
Added by n-ando about 5 years ago

[compat,RELENG_1_2] Indentation has been modified. refs #3656

Revision 2776 (diff)
Added by n-ando about 5 years ago

[compat,RELENG_1_2] Indentation has been modified. refs #3656

History

#1 Updated by n-miyamoto about 5 years ago

  • Status changed from 新規 to 解決
  • % Done changed from 0 to 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}'";' >> $@

#2 Updated by n-ando about 4 years ago

  • Status changed from 解決 to 終了

Also available in: Atom PDF