クラス インターフェイスの設定
チュートリアルのこのステップでは、C++ クラス インターフェイスを構成します。カスタマイズした C++ クラス インターフェイスを使用すると、生成されたクラスで特定のコードの標準やインターフェイス要件を満たすことができ、生成後のカスタマイズが最小限で済む大規模なアーキテクチャを生成コードでコンパイルして生成コードをそのアーキテクチャに統合できるようになります。
モデル CppClassWorkflowKeyIgnition
のクラス インターフェイスをカスタマイズするには、次を行います。
クラス名を
engine_status
に変更します。クラス名前空間を
en1
に設定します。モデルの入力端子をパブリックとして構成し、アクセスのための set メソッドを指定します。
モデルの出力端子をパブリックとして構成し、すべての出力端子にアクセスするための集約構造体ベースの get メソッドを指定します。
初期化エントリポイント メソッドと終了エントリポイント メソッドの名前を更新します。
モデルのクラス名と名前空間の構成
モデル
CppClassWorkflowKeyIgnition
が開いていない場合はモデルを開きます。openExample('ecoder/CppCodeGenerationWorkflowForKeyIgnitionSystemExample', ... supportingFile='CppClassWorkflowKeyIgnition.slx')
[C++ コード] タブで、[コード インターフェイス] をクリックして [クラス名と名前空間] を選択します。
[C++ クラス名] フィールドを
engine_status
に編集します。[C++ クラス名空間] フィールドに「
en1
」と入力します。[OK] をクリックします。検証が対話形式で実行され、無効な名前または名前空間を入力している場合はフィールドに関する警告が表示されます。
モデルを保存し、[ビルド] をクリックしてコードをビルドし再生成します。
コード ビュー ペインで、
engine_status
を検索して生成コードの変更内容を確認します。
クラス メンバーの可視性とアクセスの構成
コード マッピング エディターを開きます。
コード マッピング エディターを開くには、[C++ コード] タブで、[コード インターフェイス] をクリックして [コード マッピング] を選択します。
[Data] タブをクリックして [Data] ペインを開きます。
コード マッピングのスプレッドシートに、モデル要素の各カテゴリに関する可視性とアクセスの情報が表示されます。
[Inports] を構成します。
[Data Visibility] 列で、
[public]
を選択します。[Member Access Method] 列で、
[Inlined method]
を選択します。
[Outports] を構成します。
[Data Visibility] 列で、
[public]
を選択します。[Member Access Method] 列で、
[Structure-based method]
を選択します。
モデルを保存し、[ビルド] をクリックしてコードをビルドし再生成します。
モデル
CppClassWorkflowKeyIgnition
で、Inport ブロックkeyState
をクリックします。ブロックの上の省略記号メニューの上にカーソルを置き、[コードに移動] をクリックします。
コード ビューで、ブロックに対応するコードが強調表示されます。
コード ビューで、検索矢印をクリックして、ルート入力端子
keyState
の set メソッドsetkeyState
のパブリック宣言および定義を見つけます。集約されたルート出力端子の get メソッド
getExternalOutputs
が入力端子の set メソッドの直下に宣言されています。getExternalOutputs
メソッドの宣言内の識別子ExtY
にカーソルを合わせます。[トレーサビリティ] ダイアログ ボックスに、コードに対応する定義が表示されます。
[トレーサビリティ] ダイアログ ボックスで、
struct ExtY
をクリックしてその構造体を見つけます。// External outputs (root outports fed by signals with default storage) struct ExtY { real_T engineState[3]; // '<Root>/engineState' real_T cycleTime; // '<Root>/cycleTime' };
検索バーに「
getExternalOutputs
」と入力し、Enter キーを押してCppClassWorkflowKeyIgnition.cpp
内のメソッド定義を見つけます。
モデル関数の構成
クラス メソッド名を構成します。モデルから C++ コードを生成すると、生成コードでモデルのエントリポイント関数がクラス メソッドとして表示されます。外部コードやインターフェイスの要件と統合するには、生成されたメソッドの名前をカスタマイズできます。
ファンクションコード マッピング エディターで、[Functions] タブをクリックしてクラス メソッドを表示します。
[Initialize] 関数名を構成します。
[Method Name] 列で、スプレッドシートをクリックして編集し、名前を
initIntegrator
に変更します。[Terminate] 関数名を構成します。
[Method Name] 列で、スプレッドシートをクリックして編集し、名前を
terminateIntegrator
に変更します。[Method Preview] 列で更新した名前を確認します。
モデルを保存し、[ビルド] をクリックしてコードをビルドし再生成します。
コード ビューで、エントリポイント関数の更新したメソッド名を検索して生成コードを確認します。
次に、C++ 生成コードを展開します。