Auf dieser Seite wird beschrieben, wie Sie die Umgebung auf einem Cuttlefish-Gerät mithilfe der REST API oder der Befehlszeilenschnittstelle steuern. Du kannst beispielsweise das WLAN-Signal ändern oder den GPS-Standort des Sepia-Geräts aktualisieren.
Dienste
Der Befehl cvd env
bietet die folgenden Dienste zum Steuern der Sepia-Umgebung:
Dienste | Beschreibung |
---|---|
GnssGrpcProxy
|
Steuert GNSS für die Cuttlefish-Standortbestimmung. |
OpenwrtControlService
|
Steuert Openwrt , einen virtualisierten WLAN-Zugangspunktanbieter 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 mit der Rest API über den Dienstendpunkt <https://localhost:1443>
steuern.
Verfügbare Dienste oder Methoden auflisten
Senden Sie eine GET
-Anfrage mit einer Geräte-ID an die folgende URL, um eine Liste aller Dienste abzurufen.
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 an die folgende URL mit einer Geräte-ID und dem Dienstnamen.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME
Wenn Sie detaillierte Informationen zu einer Methode abrufen möchten, z. B. die Anfrage- oder Antwortnachrichtentypen, senden Sie eine GET
-Anfrage an die folgende URL mit einer Geräte-ID, einem Dienstnamen und dem Namen der Methode.
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 erhalten möchten, senden Sie eine GET
-Anfrage mit einer Geräte-ID, einem Dienstnamen und dem Nachrichtentyp „Anfrage“ oder „Antwort“ an die folgende URL. Damit werden alle Namen und Typen jedes Felds in der Nachricht ausgegeben. Anhand dieser Informationen können Sie dann eine JSON-formatierte Proto-Nachricht zum Senden einer RPC-Anfrage schreiben.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type
RPC-Anfrage senden, um Änderungen an der Umgebung vorzunehmen
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 im JSON-Format vorliegende 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 einen Anwendungsfall der REST API zum Ändern der WLAN-Signalstärke durch Aufrufen von SetTxpower
.
Ermitteln Sie den Dienstnamen, den Methodennamen und den Namen des Anfragenachrichtentyps, um die WLAN-Signalstärke zu ändern.
Wenn Sie eine Liste aller verfügbaren Dienste abrufen möchten, 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"]}
Zum Abrufen von Informationen zu den Anfrage- und Antwortnachrichtentypen für die Methode
SetTxpower
senden Sie eineGET
-Anfrage an die folgende URL.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
Dies ist eine Beispielantwort.
{"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
Senden Sie eine
GET
-Anfrage an die folgende URL, um detaillierte Informationen zum Anfragenachrichtentypwmediumdserver.SetTxpowerRequest
zu erhalten.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 mit dem folgenden Anfragetext an diese URL.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 Unterbefehle beschrieben, die für den Befehl cvd env
in der Befehlszeile verfügbar sind.
Wenn Sie weitere Informationen benötigen, drucken Sie die Hilfemeldung mit cvd help env
aus.
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
Geben Sie den Dienst- und Methodennamen an, um detaillierte Informationen zu erhalten, z. B. zu den Anfrage- oder Antwortnachrichtentypen einer Methode.
cvd env ls SERVICE_NAME METHOD_NAME
Detaillierte Informationen zu Anfrage- und Antworttypen
Verwenden Sie den Befehl cvd env type
, um detaillierte Informationen zu einem Anfrage- oder Antwortnachrichtentyp abzurufen. Mit diesem Befehl werden alle Namen und Typen der einzelnen Felder in der Nachricht ausgegeben. Anhand dieser Informationen können Sie dann eine JSON-formatierte Proto-Nachricht zum Senden einer RPC-Anfrage schreiben.
cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME
RPC-Anfrage senden, um Änderungen an der Umgebung vorzunehmen
Verwenden Sie den Befehl cvd enc call
, um eine RPC-Anfrage zum Aufrufen einer Methode eines Dienstes mit einem JSON-formatierten Proto zu senden. Wenn die RPC-Anfrage beendet wird, gibt die Schnittstelle die Nachricht Rpc succeeded with OK status
und, falls verfügbar, eine Antwortnachricht mit Werten aus.
cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO
Beispiel aus dem Alltag:
Im folgenden Beispiel wird der Befehl cvd env
verwendet, um die WLAN-Signalstärke durch Aufrufen von SetTxpower
zu ändern.
Ermitteln Sie den Dienstnamen, den Methodennamen und den Namen des Anfragenachrichtentyps, um die WLAN-Signalstärke zu ändern.
Rufen Sie eine Liste aller verfügbaren Dienste ab.
cvd env ls (Omitted) { "services" : [ "OpenwrtControlService", "EchoService", "GnssGrpcProxy", "WmediumdService" ] }
Liste der Methoden für
WmediumdService
abrufencvd env ls WmediumdService (Omitted) { "methods" : [ "ListStations", "LoadConfig", "ReloadConfig", "SetCivicloc", "SetLci", "SetPosition", "SetSnr", "SetTxpower", "StartPcap", "StopPcap" ] }
Rufen Sie Informationen zu den Anfrage- und Antwortnachrichtentypen für die Methode
SetTxpower
ab.cvd env ls WmediumdService SetTxpower (Omitted) { "request_type" : "wmediumdserver.SetTxpowerRequest", "response_type" : "google.protobuf.Empty" }
Detaillierte Informationen zum
wmediumdserver.SetTxpowerRequest
-Anfragenachrichtentyp abrufencvd env type WmediumdService wmediumdserver.SetTxpowerRequest (Omitted) message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }
Senden Sie eine RPC-Anfrage an den Dienst
WmediumdService
, um die WLAN-Signalstärke auf die gewünschte Stufe zu ändern.cvd env call WmediumdService SetTxpower "{mac_address:'42:00:00:00:00:00', tx_power:1}" (Omitted) Rpc succeeded with OK status {}