このページでは、REST API またはコマンドライン インターフェースを使用して、Cuttlefish デバイスの環境を制御する方法について説明します。たとえば、Cuttlefish デバイスの Wi-Fi の電波を変更したり、GPS 位置情報を更新したりできます。
サービス
cvd env
コマンドでは、Cuttlefish 環境を制御する次のサービスを実行できます。
サービス | 説明 |
---|---|
GnssGrpcProxy
|
Cuttlefish 位置情報機能の GNSS を制御します。 |
OpenwrtControlService
|
Openwrt (Cuttlefish Wi-Fi 機能の仮想化 Wi-Fi AP プロバイダ)を制御します。 |
WmediumdService
|
Wmediumd (Cuttlefish Wi-Fi 機能のワイヤレス メディア シミュレータ)を制御します。 |
CasimirControlService
|
Casimir (外部 NFC デバイスのシミュレータ)を制御します。 |
REST API を使用して環境を制御する
このセクションでは、<https://localhost:1443>
サービス エンドポイントを介して REST API を使用して環境を制御する方法について説明します。
利用できるサービスまたはメソッドを一覧表示する
すべてのサービスのリストを取得するには、デバイス ID を指定した次の URL に GET
リクエストを送信します。
https://localhost:1443/devices/DEVICE_ID/services
サービスの全メソッドのリストを取得するには、デバイス ID とサービス名を指定した次の URL に GET
リクエストを送信します。
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME
メソッドの詳細情報(リクエストやレスポンス メッセージのタイプなど)を取得するには、デバイス ID、サービス名、メソッド名を指定した次の URL に GET
リクエストを送信します。
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
リクエストおよびレスポンス タイプに関する詳細情報を取得する
リクエストまたはレスポンス メッセージのタイプに関する詳細情報を取得するには、デバイス ID、サービス名、リクエストまたはレスポンス メッセージのタイプを指定した次の URL に GET
リクエストを送信します。これにより、メッセージの各フィールドの名前とタイプがすべて出力されます。この情報を利用して、リモート プロシージャ コール(RPC)リクエストを送信するための JSON 形式の proto メッセージを作成できます。
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type
RPC リクエストを送信して環境を変更する
JSON 形式の proto で RPC リクエストを送信して、サービスのメソッドを呼び出すには、デバイス ID、サービス名、メソッド名を指定した次の URL に POST
リクエストを送信します。JSON 形式の proto を本文に含める必要があります。
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
ユースケースの例
以下は、SetTxpower
を呼び出して Wi-Fi 電波強度を調整する、REST API のユースケースの例です。
Wi-Fi 電波強度を調整するサービス名、メソッド名、リクエスト メッセージのタイプ名を決定します。
次の URL に
GET
リクエストを送信して、利用可能なすべてのサービスのリストを取得します。https://localhost:1443/devices/cvd-1/services
以下は、レスポンスの例です。
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
次の URL に
GET
リクエストを送信して、WmediumdService
のメソッドのリストを取得します。https://localhost:1443/devices/cvd-1/services/WmediumdService
以下は、レスポンスの例です。
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
次の URL に
GET
リクエストを送信して、SetTxpower
メソッドのリクエストおよびレスポンス メッセージのタイプに関する情報を取得します。https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
以下は、レスポンスの例です。
{"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
次の URL に
GET
リクエストを送信して、wmediumdserver.SetTxpowerRequest
リクエスト メッセージ タイプの詳細情報を取得します。https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/type
以下は、レスポンスの例です。
message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }
下記のリクエスト本文を使用して次の URL に
POST
リクエストを送信し、Wi-Fi 電波強度を望ましいレベルに調整するようWmediumdService
サービスに RPC リクエストを送信します。https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
{"mac_address":"42:00:00:00:00:00", "tx_power":1}
以下は、レスポンスの例です。
{}
コマンドラインを使用して環境を制御する
このセクションでは、cvd env
CLI コマンドで利用できるサブコマンドについて説明します。詳細については、cvd help env
を使用してヘルプ メッセージを出力してください。
利用できるサービスまたはメソッドを一覧表示する
すべてのサービスのリストを取得するには、引数なしで cvd env ls
を使用します。
cvd env ls
特定のサービスのすべてのメソッドのリストを取得するには、引数としてサービス名を指定します。
cvd env ls SERVICE_NAME
メソッドのリクエストまたはレスポンス メッセージのタイプなどの詳細情報を取得するには、サービス名とメソッド名を指定します。
cvd env ls SERVICE_NAME METHOD_NAME
リクエストおよびレスポンス タイプに関する詳細情報を取得する
リクエストまたはレスポンス メッセージのタイプに関する詳細情報を取得するには、cvd env type
コマンドを使用します。このコマンドでは、メッセージの各フィールドの名前とタイプがすべて出力されます。この情報を利用して、リモート プロシージャ コール(RPC)リクエストを送信するための JSON 形式の proto メッセージを作成できます。
cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME
RPC リクエストを送信して環境を変更する
JSON 形式の proto で RPC リクエストを送信して、サービスのメソッドを呼び出すには、cvd enc call
コマンドを使用します。RPC リクエストの処理が終了すると、インターフェースは Rpc succeeded with OK status
というメッセージと、値を含むレスポンス メッセージを出力します(存在する場合)。
cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO
ユースケースの例
以下は、SetTxpower
を呼び出して Wi-Fi 電波強度を調整する、cvd env
CLI コマンドのユースケースの例です。
Wi-Fi 電波強度を調整するサービス名、メソッド名、リクエスト メッセージのタイプ名を決定します。
利用可能なすべてのサービスのリストを取得します。
cvd env ls (Omitted) { "services" : [ "OpenwrtControlService", "EchoService", "GnssGrpcProxy", "WmediumdService" ] }
WmediumdService
のメソッドのリストを取得します。cvd env ls WmediumdService (Omitted) { "methods" : [ "ListStations", "LoadConfig", "ReloadConfig", "SetCivicloc", "SetLci", "SetPosition", "SetSnr", "SetTxpower", "StartPcap", "StopPcap" ] }
SetTxpower
メソッドのリクエストおよびレスポンス メッセージのタイプに関する情報を取得します。cvd env ls WmediumdService SetTxpower (Omitted) { "request_type" : "wmediumdserver.SetTxpowerRequest", "response_type" : "google.protobuf.Empty" }
wmediumdserver.SetTxpowerRequest
リクエスト メッセージ タイプの詳細情報を取得します。cvd env type WmediumdService wmediumdserver.SetTxpowerRequest (Omitted) message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }
WmediumdService
サービスに RPC リクエストを送信して、Wi-Fi 電波強度を望ましいレベルに調整します。cvd env call WmediumdService SetTxpower "{mac_address:'42:00:00:00:00:00', tx_power:1}" (Omitted) Rpc succeeded with OK status {}