Auf dieser Seite wird beschrieben, wie Sie die Umgebung in einem Cuttlefish-Gerät mithilfe der REST-API oder der Befehlszeilenschnittstelle steuern. Sie können beispielsweise das WLAN-Signal ändern oder den GPS-Standort des Cuttlefish-Geräts aktualisieren.
Dienstleistungen
Der Befehl cvd env
stellt die folgenden Dienste zur Steuerung der Cuttlefish-Umgebung bereit:
Dienstleistungen | Beschreibung |
---|---|
GnssGrpcProxy | Steuert GNSS für die Tintenfisch-Geolokalisierungsfunktion. |
OpenwrtControlService | Steuert Openwrt , einen virtualisierten Wi-Fi-AP-Anbieter für die Cuttlefish-Wi-Fi-Funktion. |
WmediumdService | Steuert Wmediumd , einen drahtlosen Mediensimulator für die Cuttlefish Wi-Fi-Funktion. |
Steuern Sie die Umgebung mithilfe der REST-API
In diesem Abschnitt wird beschrieben, wie Sie die Umgebung mithilfe der Rest-API über den Dienstendpunkt <https://localhost:1443>
steuern.
Listen Sie verfügbare Dienste oder Methoden auf
Um eine Liste aller Dienste zu erhalten, senden Sie eine GET
Anfrage mit einer Geräte-ID an die folgende URL.
https://localhost:1443/devices/DEVICE_ID/services
Um eine Liste aller Methoden für einen Dienst zu erhalten, 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
Um detaillierte Informationen für eine Methode zu erhalten, beispielsweise die Nachrichtentypen der Anfrage oder Antwort, 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
Erhalten Sie detaillierte Informationen zu Anfrage- und Antworttypen
Um detaillierte Informationen zu einem Anfrage- oder Antwortnachrichtentyp zu erhalten, 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 gedruckt. 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
Senden Sie eine RPC-Anfrage, um Änderungen an der Umgebung vorzunehmen
Um eine RPC-Anfrage zum Aufrufen einer Methode eines Dienstes mit einem JSON-formatierten Protokoll zu senden, senden Sie eine POST
Anfrage mit einer Geräte-ID, einem Dienstnamen und dem Methodennamen an die folgende URL. Das JSON-formatierte Proto muss im Text enthalten sein.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Beispielanwendungsfall
Im Folgenden finden Sie einen Beispielanwendungsfall der Rest-API zum Ändern der WLAN-Signalstärke durch Aufrufen SetTxpower
.
Bestimmen Sie den Dienstnamen, den Methodennamen und den Namen des Anforderungsnachrichtentyps zum Ändern der WLAN-Signalstärke.
Erhalten Sie eine Liste aller verfügbaren Dienste, indem Sie eine
GET
Anfrage an die folgende URL senden.https://localhost:1443/devices/cvd-1/services
Dies ist eine Beispielantwort.
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
Rufen Sie eine Liste der Methoden für
WmediumdService
ab, indem Sie eineGET
Anfrage an die folgende URL senden.https://localhost:1443/devices/cvd-1/services/WmediumdService
Dies ist eine Beispielantwort.
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
Erhalten Sie Informationen zu den Anforderungs- und Antwortnachrichtentypen für die
SetTxpower
Methode, 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"}
Erhalten Sie detaillierte Informationen zum Anforderungsnachrichtentyp
wmediumdserver.SetTxpowerRequest
“, 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, indem Sie einePOST
Anfrage mit dem folgenden Anfragetext an diese URL senden.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
{"mac_address":"42:00:00:00:00:00", "tx_power":1}
Dies ist eine Beispielantwort.
{}
Steuern Sie die Umgebung über die Befehlszeile
In diesem Abschnitt werden die Unterbefehle beschrieben, die für den CLI-Befehl cvd env
verfügbar sind. Für weitere Details drucken Sie die Hilfemeldung mit cvd help env
aus.
Listen Sie verfügbare Dienste oder Methoden auf
Um eine Liste aller Dienste zu erhalten, verwenden Sie cvd env ls
ohne Argumente.
cvd env ls
Um eine Liste aller Methoden für einen Dienst zu erhalten, geben Sie den Namen des Dienstes als Argument an.
cvd env ls SERVICE_NAME
Um detaillierte Informationen wie die Anforderungs- oder Antwortnachrichtentypen einer Methode zu erhalten, geben Sie den Dienstnamen und den Methodennamen an.
cvd env ls SERVICE_NAME METHOD_NAME
Erhalten Sie detaillierte Informationen zu Anfrage- und Antworttypen
Um detaillierte Informationen zu einem Anforderungs- oder Antwortnachrichtentyp zu erhalten, verwenden Sie den Befehl cvd env type
. Dieser Befehl gibt alle Namen und Typen aller Felder in der Nachricht aus. 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
Senden Sie eine RPC-Anfrage, um Änderungen an der Umgebung vorzunehmen
Um eine RPC-Anfrage zum Aufrufen einer Methode eines Dienstes mit einem JSON-formatierten Proto zu senden, 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
Beispielanwendungsfall
Das Folgende ist ein Beispielanwendungsfall des cvd env
CLI-Befehls zum Ändern der WLAN-Signalstärke durch Aufrufen SetTxpower
.
Bestimmen Sie den Dienstnamen, den Methodennamen und den Namen des Anforderungsnachrichtentyps zum Ändern der WLAN-Signalstärke.
Erhalten Sie eine Liste aller verfügbaren Dienste.
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" ] }
Erhalten Sie Informationen zu den Anforderungs- und Antwortnachrichtentypen für die
SetTxpower
Methode.cvd env ls WmediumdService SetTxpower (Omitted) { "request_type" : "wmediumdserver.SetTxpowerRequest", "response_type" : "google.protobuf.Empty" }
Erhalten Sie detaillierte Informationen zum Anforderungsnachrichtentyp
wmediumdserver.SetTxpowerRequest
.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 {}