このセクションでは、関数管理インターフェイス (FMI) のメッセージ形式について説明します。 メッセージ形式は、言語に依存しない表記で表示されます。 メッセージ形式の表記の詳細と、メッセージ形式の内容に関する主な前提条件は次のとおりです。
Reserved は、メッセージの送信者によってフィールドがゼロ (数値フィールドの場合) またはすべての null (名前の場合) に設定されていることを示します。
Undefined は、フィールドの値が不確定であることを示します。 このフィールドは送信者によって設定されていないため、メッセージの受信者によって検査されるべきではありません。
Open(PLU) 要求の opresid など、2 バイトを占有するフィールドは、ソフトウェアが実行されるプロセッサによって使用される通常の向きに関係なく、最も小さいバイト アドレスで最も算術的に有効なバイトで表されます。 つまり、0x1234の 2 バイト値は、最下位のバイト アドレスにバイト 0x12を持ちます。 ただし、次のフィールドは例外です。
バッファー ヘッダーの srci フィールドと desti フィールドは、割り当てるアプリケーションのローカル形式で格納されます。これは、割り当てるアプリケーションのみがこれらの値を解釈する必要があるためです。
要素の 開始 フィールドと 終了 フィールドは、常に低バイトの高バイト方向 (Intel プロセッサの通常の向き) に格納されます。
メッセージは、バッファーヘッダーと0個以上のバッファー要素からなるバッファーで構成されています。 バッファー形式の詳細については、「 メッセージ」を参照してください。
アプリケーションでは、ノード内のすべてのアクティブな LPI 接続に一意のインデックス (I) 値を割り当てる必要があります。 特に、 Open(SSCP) 要求 は、 Open(PLU) に応答して送信するソース インデックスとは異なる必要があります。 また、0 は I 値として使用しないでください。 I 値が 0 の場合は、メッセージの送信者がメッセージの受信者を招待して I 値を割り当てることを意味します。
各要素の 開始 フィールドは、trpad フィールドの後に続くデータの最初のバイトのオフセットを示します。
非論理ユニット アプリケーション (LUA) アプリケーションの場合、 startd は 1 ( trpad フィールドの後のバイトで開始されるデータ)、10 ( trpad フィールドとデータの開始の間に 9 バイトのパディングが含まれます)、または 13 ( trpad フィールドとデータの開始の間に 12 バイトのパディングが含まれます) のいずれかになります。
LUA アプリケーションの場合、 startd はメッセージの最初の要素の 4 ( trpad フィールドとデータの先頭の間の 3 バイトのパディング) と、後続の要素の 13 (12 バイトのパディング) です。
ローカル ノードでは、追加のヘッダー情報に余分なバイトが使用されます。 これにより、この情報を追加するときに新しいバッファーにデータをコピーする必要がなくなります。
startd は 0 ではなく 1 から始まる dataru へのインデックスを示しているため、有効なデータの最初のバイトは常に dataru[startd-1] になります。
startd が endd より大きい場合、メッセージに有効なデータはありません。
dataru 内のすべてのフィールドは CHAR 型です。ただし、注釈がそれ以外の場合を示す点が異なります。
バッファー要素の 先頭 が 1、10、または 13 の場合、これは要素のチェーン内の初期要素にのみ適用され、チェーン内の後続の要素の 開始値 は 1 であることに注意してください。 メッセージ形式に 2 つの個別のリンクされた要素チェーン (Open (PLU) Request や Open(PLU) OK Response など) を持つメッセージは、チェーンの先頭にある要素の 開始 フィールドをメッセージ形式で指定された値 (1、10、または 13) として、他のすべての要素の 開始 フィールドを 1 として持ちます。