< 前へ | 次へ >

レッスン 3: RIMBO を使用した SWC の実装

Rhapsody® 実装オブジェクト (RIMBO) を使用して、アトミック SWC タイプを実装できます。
アトミック SWC タイプを実装するには、以下を行います。
  1. ARBMT パッケージの下に、SWC 実装図を作成します。 パッケージを右クリックし、「新規追加」 > 「ダイアグラム」 > 「SWCImplDiagram」を選択します。
  2. 実装される SWC タイプをダイアグラムにドラッグします。
  3. RIMBO をツールボックスから SWC タイプ・ボックスの中にドラッグします。
  4. 既存の RIMB によって、RIMBO をタイプします。
  5. ツールボックスからコネクターを使用して、SWC タイプのポートを RIMB のポートに接続します。
    • 送信側/受信側のポートを接続するには、データ・コネクターを使用します。
    • クライアント/サーバーのポートを接続するには、サービス・コネクターを使用します。
    注: いくつかの RIMBO は、指定された SWC タイプの内部に配置されて接続される可能性があります。AUTOSAR インターフェース要素と実装ブロック・インターフェース要素は、 名前に基づいてマッチングされます。したがって、AUTOSAR ポートが実装ブロック・ポートに接続するときに、AUTOSAR ポートのインターフェース要素は、 それらの要素の名前に基づいて実装ブロックのインターフェース要素とマッチングされます。
    制約事項: 与えられたソフトウェア・コンポーネント・タイプの内部に、いくつかの実装ブロック・オブジェクトを配置して接続することができます。ただし、それらの相互間の接続はできません。

    RIMB 実装コード構成は、内部振る舞いタグ「SupportMultipleInstamtiation」によって決まります。 タグ「SupportMultipleInstantiation」が「False」であれば、RIMB は、コンテキスト・ポインター (「me」、「self」) を使用しません。例えば、RIMB を singleton またはファイルとして生成することが、struct を生成することにはならず、「me」、「self」ポインターも持ちません。

    タグ「SupportMultipleInstantiation」が「True」であれば、RIMB は、コンテキスト・ポインター (「me」、「self」) を使用します。
    • RIMB の C 構造でデータをカプセル化

    • ActiveOperation 以外のすべての操作で、「me」引数を持つ

    • 次の操作で、「Rte_Instance self」パラメーターを持つ

      • ユーザー・モデル操作

      • ステートチャートの dispatchEvent 操作および takeEvent 操作

      • トリガー操作

      • アクティブ操作

        Rte_PIM API の呼び出しによって、 それぞれのアクティブ操作の先頭に、「Rte_Instance self」パラメーターから「me」ポインターが抽出されるコードが追加されます。

      • ARBMT アクセサー・ヘルパー操作

      • mxf RiCReactive 操作: RiCReactive_consumeEvent、RiCReactive_takeEvent、RiCReactive_takeTrigger、runToCompletion

    • RIMBO データ/インスタンス宣言なし

    • RIMB_Init 操作なし

    • インテグレーターは、<RIMB-class>_Init, <RIMB-class>_startBehavior を呼び出す必要がある

    • InternalBehavior の下に RIMB PIM の ARXML 定義を作成

    • 生成されたコードの中に、関連する typedef を作成

    制限:
    • コードは、「RTE の仕様」の指定結果として、タイプに対して循環の依存関係を持つことがあります。これらは、「インテグレーター」によって手動で処理される必要があります。

    • 「Rte_Instance self」パラメーターは、ステートチャート「entDef」操作に追加されません。

    • 最適化されたステートチャートはサポートされません。

    • すべての実行可能エンティティーは、「排他的領域で実行」モードになければなりません。

    • RIMB は、1 つの RIMBO しかタイプできません。
    • 1 つのアトミック SW/C、RIMB、RIMB インターフェースなどの実装に関連するすべての要素は、 別個のパッケージになければならず、別のアトミック SW/C と関連する要素と混合されてはなりません。
    関連する新規のプロパティー:
    • C_CG::Operation::OSContextName

    • C_CG::Operation::OSContextDeclType

    • C_CG::Operation::ActiveOperationExtractMeCall

< 前へ | 次へ >

フィードバック