Auf dieser Seite wird beschrieben, wie Sie die Umgebung auf einem Cuttlefish-Gerät mithilfe der REST API oder der Befehlszeile steuern. Sie können beispielsweise die WLAN-Signal oder aktualisieren Sie den GPS-Standort des Cuttlefish-Geräts.
Dienste
Der Befehl cvd env
bietet die folgenden Dienste zur Steuerung der Cuttlefish-Umgebung:
Dienste | Beschreibung |
---|---|
GnssGrpcProxy
|
Steuert GNSS für die Sepia-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 über den Dienstendpunkt <https://localhost:1443>
mit der Rest API steuern.
Verfügbare Dienste oder Methoden auflisten
Wenn Sie eine Liste aller Dienste abrufen möchten, senden Sie eine GET
-Anfrage an die folgende URL mit
eine Geräte-ID.
https://localhost:1443/devices/DEVICE_ID/services
Um eine Liste aller Methoden für einen Dienst abzurufen, senden Sie eine GET
-Anfrage an den
folgenden URL mit einer Geräte-ID und dem Dienstnamen ein.
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 abrufen
Um detaillierte Informationen zu einem Anfrage- oder Antwortnachrichtentyp zu erhalten, senden Sie eine GET
an die folgende URL mit einer Geräte-ID, einem Dienstnamen und dem
Anfrage- oder Antwortnachricht. Dadurch 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.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type
RPC-Anfrage senden, um Änderungen an der Umgebung vorzunehmen
So senden Sie eine RPC-Anfrage zum Aufrufen einer Dienstmethode mit einem JSON-formatierten Proto:
POST
-Anfrage mit einer Geräte-ID, einem Dienst, an die folgende URL senden:
und den Namen der Methode. Das im JSON-Format vorliegende Proto muss im Textkörper enthalten sein.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Anwendungsbeispiel
Im Folgenden sehen Sie ein Anwendungsbeispiel für die REST API zum Ändern des WLANs.
indem du SetTxpower
anrufst.
Dienstname, Methodennamen und Typ der Anfragenachricht ermitteln Name zum Ändern der WLAN-Signalstärke.
Rufen Sie eine Liste aller verfügbaren Dienste ab, indem Sie eine
GET
-Anfrage an den folgenden URL.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
durch Senden einerGET
-Anfrage ab. an die folgende URL an.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
SetTxpower
durch Senden einerGET
-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"}
Wenn Sie detaillierte Informationen zum
wmediumdserver.SetTxpowerRequest
-Anfragenachrichtentyp abrufen möchten, senden Sie eineGET
-Anfrage an die folgende URL.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; }
RPC-Anfrage an den Dienst
WmediumdService
senden, um das WLAN zu ändern Signalstärke durch Senden einerPOST
-Anfrage an diese URL auf die gewünschte Ebene anpassen durch den 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 Befehl cvd env
verfügbaren Unterbefehle beschrieben.
Wenn Sie weitere Informationen benötigen, drucken Sie die Hilfenachricht mit cvd help env
.
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 Anfrage- oder Antwortnachrichtentypen einer Methode erhalten möchten, geben Sie den Dienst- und den Methodennamen an.
cvd env ls SERVICE_NAME METHOD_NAME
Detaillierte Informationen zu Anfrage- und Antworttypen abrufen
Verwenden Sie den Befehl cvd env type
, um detaillierte Informationen zu einem Anfrage- oder Antwortnachrichtentyp abzurufen. Dieser Befehl gibt alle Namen und Typen jedes Felds aus
in der Nachricht. Anhand dieser Informationen können Sie dann eine Proto-Nachricht im JSON-Format 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
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 Nachricht Rpc succeeded with OK status
und, falls verfügbar, eine Antwort aus
Nachricht mit Werten.
cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO
Beispiel für einen Anwendungsfall
Im folgenden Beispiel wird der Befehl cvd env
verwendet, um die WLAN-Signalstärke durch Aufrufen von SetTxpower
zu ändern.
Dienstname, Methodennamen und Typ der Anfragenachricht ermitteln Name zum Ändern der WLAN-Signalstärke.
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" ] }
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 zur
wmediumdserver.SetTxpowerRequest
-Anfrage abrufen Nachrichtentyp.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 {}