5.2 クライアント/サーバー
5.2.1 オペレーション
クライアント/サーバーインターフェース内のオペレーションは0個以上の引数を取ることができます。オペレ ーションの戻り値は、オペレーションがアプリケーションエラーを返すかどうかに応じて、Std_ReturnType 型か列挙型のいずれかです。
オペレーションを作成する:
コンポーネントマネージャで、クライアント/サーバーインターフェース CSInterfaceを選択して Edit → Open Component を選択するか、
CSInterfaceをダブルクリックします。
“Interface Editor for: CSInterface”ウィンドウが開きます。
ツリーペイン内のMainダイアグラムを選択します。
Insert → Method Signature… を選択します。
このオペレーションの名前を MaximumValue にします。
オペレーションの引数を作成する:
オペレーション MaximumValueを選択して Edit → Properties… を選択 します。
“Method Signature Editor for: MaximumValue”ダイアログボックスが開きま す。
Argument → Add を選択し、第1引数の名前をInputAにします。以下 のように設定します。
Argument Type: sdisc
Direction: in
Argument → Addを選択し、第2引数の名前をInputBにします。以下 のように設定します。
Argument Type: sdisc
Direction: in
Argument → Addを選択し、第3引数の名前をOutputMaximumにしま す。以下のように設定します。
Argument Type: sdisc
Direction: out
図20: オペレーション“MaximumValue”の引数
OK をクリックします。
クライアント/サーバーインターフェースCSInterfaceの内容として、オペ レーションMaximumValueとその引数(InputA、InputB、
OutputMaximum)が下図のように表示されます。
図21: クライアント/サーバーインターフェース“CSInterface”のオペレーション“MaximumValue”
オペレーションのインプリメンテーションを設定する:
“Interface Editor for: CSInterface”ウィンドウの“Elements”タブから
“Implementation”タブに切り替えます。
ツリーペイン内のエレメントInputAを選択して Edit → Implementation を選択するか、または“Implementation”タブにあるエレメントInputAをダ ブルクリックします。
“Implementation for: InputA”ダイアログボックスが開きます。
テキストボックスMaxを右クリックしてショートカットメニューを開き、オプショ ン“Default Value”を選択します。
OK をクリックします。
引数InputBおよびMaximumValueについて、このインプリメンテーション 作成手順を繰り返します。
図22: オペレーション“MaximumValue”のインプリメンテーション
ASCETのクライアント/サーバーインターフェースを実装したものは、AUTOSARのクライアント/サーバーイ
ンターフェースに相当します。コンフィギュレーション言語のクライアント/サーバーインターフェースはASCET によりファイルSwc_interfaces.arxml内に生成されます。<OPERATIONS>エレメントにより1つまたは 複数の<OPERATION-PROTOTYPE>エレメントがカプセル化され、その各エレメントがクライアント/サーバー インターフェース内の1つのオペレーションを定義します。
<ARGUMENTS>エレメントにより、オペレーションの各引数を定義する1 つまたは複数の<ARGUMENT-PROTOTYPE>エレメントがカプセル化されます。
各<ARGUMENT-PROTOTYPE>エレメントには以下のものが定義されている必要があります。
パラメータの<SHORT-NAME>
パラメータの型への参照 <TYPE-TREF> - 参照される型は定義済みの型である必要があります。
第 4章「データ型」を参照してください。
パラメータの<DIRECTION> - IN(コンポーネントによる読み取り専用)、OUT(書き込み専用)、
INOUT(読み取りも書き込みも可能)のいずれか
特に定義しない場合、クライアント/サーバーインターフェース内のオペレーションはRTEの標準戻り型
Std_ReturnTypeを返します。また、起こりうるすべてのエラーが定義されているASCET列挙型データを選
択することにより、アプリケーションエラーを返すことも可能です。
アプリケーションエラーで発生しうるエラーが定義された列挙型データを作成する:
コンポーネントマネージャの Insert → Enumeration を選択するか、また は Enumeration ボタンをクリックします。
この列挙型データの名前をApplicationErrorにします。
この列挙型データを選択します。
“Contents”ペインにApplicationErrorの内容が表示されます。
値0について、Enumeration → Rename を選択してラベルをE_NOT_OK にします。
アプリケーションエラーをアプリケーションの戻り値に割り当てる:
コンポーネントマネージャで、クライアント/サーバーインターフェース CSInterfaceを選択して Edit → Open Component を選択するか、ま たはCSInterfaceをダブルクリックします。
“Interface Editor for: CSInterface”ウィンドウが開きます。
ツリーペインでMainダイアグラムを選択します。
Insert → Method Signature… を選択します。
このオペレーションの名前をNotificationにします。
オペレーションNotificationを選択して Edit → Properties… を選択 します。
“Method Signature Editor for: Notification”ダイアログボックスが開きます。
“Return”タブを選択してコンボボックス“Return Type”を開きます。
図23: オペレーション“Notification”の戻り値の型
<enumeration>を選択します。
“Choose a enumeration type…”ダイアログボックスが開きます。
列挙型データApplicationErrorを選択します。
OKをクリックします。
コンフィギュレーション言語のオペレーションNotification、および起こりうるアプリケーションエラーは、
ASCETによりファイルSwc_interfaces.arxml内に以下のように記述されます。
注記
アプリケーションエラーの値はStd_ReturnTypeの下位6ビットにコード化され、値の範囲は[1, 63]で す。ASCETは有効な戻り値を提供するために、1ユニット内のアプリケーションエラー用のASCET列挙型デ ータの値を常にシフトします。
エラーコードが1から始まらない場合や、列挙型の値の増分が1より大きい場合には、生成されるARXML をマニュアル作業で手直しする必要があります。ASCETが生成するCコードは、アプリケーションエラーのシ ョート名を使用して正しく生成されます。