リアルタイム対応アプリケーションとの通信

Azure Sphere では、高レベルアプリケーションとリアルタイム対応アプリケーション (RTApp) 間のコア間通信がサポートされています。 高レベルのアプリケーションでは、applibs Application_Connect 関数を使用して、RTApp と通信するときにデータを送受信できます。 Application_Connect は、RTApp との通信に使用されるソケットにファイル記述子を取得します。 ファイル記述子が開いている間は、send/recv などの操作を実行できます。

IntercoreComms サンプルは、高レベルのアプリケーションを使用して MT3620 上の RTApp と通信する方法を示しています。 高度なアプリケーションとの通信 では、RTApp のプログラミングに関する考慮事項について説明します。

要件

アプリ間通信を使用する高度なアプリケーションには、適切なヘッダー ファイルを含め、 アプリケーション マニフェストにアプリケーション設定を追加する必要があります。

ヘッダー ファイル

#include <sys/socket.h>
#include <applibs/application.h>

アプリ マニフェストの設定

RTApp と通信するには、両方のアプリケーションが AllowedApplicationConnections 機能を アプリケーション マニフェストに含める必要があります。

  • 高レベルのアプリケーションでは、AllowedApplicationConnections 機能でリアルタイム対応アプリケーションのコンポーネント ID を一覧表示する必要があります。
  • リアルタイム対応アプリケーションは、AllowedApplicationConnections 機能の高レベル アプリケーションのコンポーネント ID を一覧表示する必要があります。
"AllowedApplicationConnections": [ "005180BC-402F-4CB3-A662-72937DBCDE47" ]

パートナー アプリケーション

Azure Sphere デバイスにアプリケーションを読み込むと、Azure Sphere デプロイ ツールによって既定ですべての既存のアプリケーションが削除されます。 相互に通信するアプリケーションのペアを開発するときにこの問題が発生しないようにするには、アプリケーションを パートナーとしてマークする必要があります。 いずれかのアプリケーションをデプロイしても、そのパートナーは削除されません。 詳細については、「 アプリケーションをパートナーとしてマークする 」を参照してください。

ソケットを開く

RTApp と通信する前に、 Application_Connect 関数を呼び出してソケットを開く必要があります。 この関数呼び出しによって返されるファイル記述子は、ソケットで送信/recv 操作を実行するために使用されます。

データの送信

POSIX send() 関数を呼び出すことで、RTApp にメッセージを送信できます。 最大メッセージ サイズは 1 KB です。

データの受信

POSIX recv() 関数を呼び出すことで、RTApp からメッセージを受信できます。

ソケットを閉じる

ソケットを閉じるには、POSIX close() 関数を呼び出します。