Auf dieser Seite wird beschrieben, wie Sie die Umgebung auf einem Cuttlefish-Gerät mit der REST API oder der Befehlszeilenschnittstelle steuern. Sie können beispielsweise das WLAN-Signal ändern oder den GPS-Standort des Cuttlefish-Geräts aktualisieren.
Dienste
Der Befehl cvd env
bietet die folgenden Dienste zum Steuern der Cuttlefish-Umgebung:
Dienste | Beschreibung |
---|---|
GnssGrpcProxy
|
Steuert GNSS für die Cuttlefish-Standortbestimmung. |
OpenwrtControlService
|
Steuert Openwrt , einen virtualisierten WLAN-AP-Anbieter für die Cuttlefish-WLAN-Funktion. |
WmediumdService
|
Steuert Wmediumd , einen Simulator für drahtlose Medien für die Cuttlefish-WLAN-Funktion. |
CasimirControlService
|
Steuert Casimir , einen Simulator für externe NFC-Geräte. |
Umgebung mit der REST API steuern
In diesem Abschnitt wird beschrieben, wie Sie die Umgebung über die REST API über den Dienstendpunkt <https://localhost:1443>
steuern.
Verfügbare Dienste oder Methoden auflisten
Wenn Sie eine Liste aller Dienste abrufen möchten, senden Sie eine GET
-Anfrage mit einer Geräte-ID an die folgende URL.
https://localhost:1443/devices/DEVICE_ID/services
Wenn Sie eine Liste aller Methoden für einen Dienst abrufen möchten, senden Sie eine GET
-Anfrage mit einer Geräte-ID und dem Dienstnamen an die folgende URL.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME
Wenn Sie detaillierte Informationen zu einer Methode abrufen möchten, z. B. die Nachrichtentypen für Anfragen oder Antworten, senden Sie eine GET
-Anfrage mit einer Geräte-ID, einem Dienstnamen und dem Methodennamen an die folgende URL.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Detaillierte Informationen zu Anfrage- und Antworttypen
Wenn Sie detaillierte Informationen zu einem Anfrage- oder Antwortnachrichtentyp abrufen möchten, senden Sie eine GET
-Anfrage mit einer Geräte-ID, einem Dienstnamen und dem Anfrage- oder Antwortnachrichtentyp an die folgende URL. Dadurch werden alle Namen und Typen der einzelnen Felder in der Nachricht ausgegeben. Anschließend können Sie diese Informationen verwenden, um eine JSON-formatierte Proto-Nachricht zum Senden einer RPC-Anfrage zu schreiben.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type
RPC-Anfrage zum Ändern der Umgebung senden
Wenn Sie eine RPC-Anfrage senden möchten, um eine Methode eines Dienstes mit einem JSON-formatierten Proto aufzurufen, senden Sie eine POST
-Anfrage an die folgende URL mit einer Geräte-ID, einem Dienstnamen und dem Methodennamen. Das JSON-formatierte Proto muss im Textkörper enthalten sein.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Beispiel aus dem Alltag:
Im Folgenden finden Sie ein Beispiel für die Verwendung der REST API zum Ändern der WLAN-Signalstärke durch Aufrufen von SetTxpower
.
Bestimmen Sie den Dienstnamen, den Methodennamen und den Namen des Anforderungsnachrichtentyps zum Ändern der WLAN-Signalstärke.
Wenn Sie eine Liste aller verfügbaren Dienste benötigen, senden Sie eine
GET
-Anfrage an die folgende URL.https://localhost:1443/devices/cvd-1/services
Dies ist eine Beispielantwort.
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
Wenn Sie eine Liste der Methoden für
WmediumdService
abrufen möchten, senden Sie eineGET
-Anfrage an die folgende URL.https://localhost:1443/devices/cvd-1/services/WmediumdService
Dies ist eine Beispielantwort.
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
Informationen zu den Anfrage- und Antwortnachrichtentypen für die Methode
SetTxpower
erhalten Sie, indem Sie eineGET
-Anfrage an die folgende URL senden.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
Dies ist eine Beispielantwort.
{"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
Detaillierte Informationen zum Nachrichtentyp der
wmediumdserver.SetTxpowerRequest
-Anfrage erhalten Sie, indem Sie eineGET
-Anfrage an die folgende URL senden.https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/type
Dies ist eine Beispielantwort.
message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }
Senden Sie eine RPC-Anfrage an den
WmediumdService
-Dienst, um die WLAN-Signalstärke auf das gewünschte Niveau zu ändern. Senden Sie dazu einePOST
-Anfrage an diese URL mit dem folgenden Anfragetext.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
{"mac_address":"42:00:00:00:00:00", "tx_power":1}
Dies ist eine Beispielantwort.
{}
Umgebung über die Befehlszeile steuern
In diesem Abschnitt werden die für den cvd env
-CLI-Befehl verfügbaren Unterbefehle beschrieben.
Weitere Informationen erhalten Sie, wenn Sie die Hilfemeldung mit cvd help env
ausdrucken.
Verfügbare Dienste oder Methoden auflisten
Wenn Sie eine Liste aller Dienste abrufen möchten, verwenden Sie cvd env ls
ohne Argumente.
cvd env ls
Wenn Sie eine Liste aller Methoden für einen Dienst abrufen möchten, geben Sie den Namen des Dienstes als Argument an.
cvd env ls SERVICE_NAME
Wenn Sie detaillierte Informationen wie die Anforderungs- oder Antwortnachrichtentypen einer Methode abrufen möchten, geben Sie den Dienstnamen und den Methodennamen an.
cvd env ls SERVICE_NAME METHOD_NAME
Detaillierte Informationen zu Anfrage- und Antworttypen
Wenn Sie detaillierte Informationen zu einem Anfrage- oder Antwortnachrichtentyp abrufen möchten, verwenden Sie den Befehl cvd env type
. Mit diesem Befehl werden alle Namen und Typen der einzelnen Felder in der Nachricht ausgegeben. Anschließend können Sie diese Informationen verwenden, um eine JSON-formatierte Proto-Nachricht zum Senden einer RPC-Anfrage zu schreiben.
cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME
RPC-Anfrage zum Ändern der Umgebung senden
Wenn Sie eine RPC-Anfrage senden möchten, um eine Methode eines Dienstes mit einem JSON-formatierten Proto aufzurufen, verwenden Sie den Befehl cvd enc call
. Wenn die RPC-Anfrage beendet wird, gibt die Schnittstelle die Meldung Rpc succeeded with OK status
und, falls verfügbar, eine Antwortmeldung mit Werten aus.
cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO
Beispiel aus dem Alltag:
Das folgende Beispiel zeigt einen Anwendungsfall für den cvd env
-CLI-Befehl zum Ändern der WLAN-Signalstärke durch Aufrufen von SetTxpower
.
Bestimmen Sie den Dienstnamen, den Methodennamen und den Namen des Anforderungsnachrichtentyps zum Ändern der WLAN-Signalstärke.
Rufen Sie eine Liste aller verfügbaren Dienste ab.
cvd env ls (Omitted) { "services" : [ "OpenwrtControlService", "EchoService", "GnssGrpcProxy", "WmediumdService" ] }
Rufen Sie eine Liste der Methoden für
WmediumdService
ab.cvd env ls WmediumdService (Omitted) { "methods" : [ "ListStations", "LoadConfig", "ReloadConfig", "SetCivicloc", "SetLci", "SetPosition", "SetSnr", "SetTxpower", "StartPcap", "StopPcap" ] }
Hier finden Sie Informationen zu den Anfrage- und Antwortnachrichtentypen für die Methode
SetTxpower
.cvd env ls WmediumdService SetTxpower (Omitted) { "request_type" : "wmediumdserver.SetTxpowerRequest", "response_type" : "google.protobuf.Empty" }
Detaillierte Informationen zum Nachrichtentyp
wmediumdserver.SetTxpowerRequest
-Anfrage abrufen.cvd env type WmediumdService wmediumdserver.SetTxpowerRequest (Omitted) message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }
Senden Sie eine RPC-Anfrage an den
WmediumdService
-Dienst, um die WLAN-Signalstärke auf das gewünschte Niveau zu ändern.cvd env call WmediumdService SetTxpower "{mac_address:'42:00:00:00:00:00', tx_power:1}" (Omitted) Rpc succeeded with OK status {}