Sepien: Umgebungssteuerung

Auf dieser Seite wird beschrieben, wie du die Umgebung in einem Sepia-Gerät steuern kannst. über die REST API oder die Befehlszeilenschnittstelle. 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 des Umgebung von Tintenfischen:

Dienste Beschreibung
GnssGrpcProxy Steuert GNSS für die Sepia-Geolokalisierung .
OpenwrtControlService Steuert Openwrt, einen virtualisierten WLAN-ZP für die WLAN-Funktion von Cuttlefish.
WmediumdService Steuert Wmediumd, einen drahtlosen Mediensimulator für die WLAN-Funktion von Sepia.

Umgebung mit der REST API steuern

In diesem Abschnitt wird beschrieben, wie Sie die Umgebung mithilfe der Rest API steuern können. über den Dienstendpunkt <https://localhost:1443>.

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

Um detaillierte Informationen zu einer Methode zu erhalten, z. B. die Anfrage oder Antwort senden Sie eine GET-Anfrage mit einer Geräte-ID an folgende URL, einen Dienstnamen und den Methodennamen.

https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME

Detaillierte Informationen zu Anfrage- und Antworttypen abrufen

Wenn Sie detaillierte Informationen zu einem Anfrage- oder Antwortnachrichtentyp erhalten möchten, senden Sie eine GET. an die folgende URL mit einer Geräte-ID, einem Dienstnamen und dem Anfrage- oder Antwortnachricht. Damit werden alle Namen und Typen jedes in der Nachricht. Anhand dieser Informationen können Sie dann eine JSON-formatierte Proto-Nachricht zum Senden einer RPC-Anfrage.

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 JSON-formatierte Proto muss im Textkörper.

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.

  1. Dienstname, Methodennamen und Typ der Anfragenachricht ermitteln Name zum Ändern der WLAN-Signalstärke.

    1. 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"]}
      
    2. Eine Liste der Methoden für WmediumdService durch Senden einer GET-Anfrage abrufen 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"]}
      
    3. Informationen zu den Anfrage- und Antwortnachrichtentypen für die SetTxpower durch Senden einer GET-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"}
      
  2. Detaillierte Informationen zur wmediumdserver.SetTxpowerRequest-Anfrage abrufen Nachrichtentyp durch Senden einer GET-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;
    }
    
  3. RPC-Anfrage an den Dienst WmediumdService senden, um das WLAN zu ändern bis die gewünschte Signalstärke dadurch erreicht werden kann, dass eine POST-Anfrage an diese URL gesendet wird. 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

Verwenden Sie cvd env ls ohne Argumente, um eine Liste aller Dienste abzurufen.

cvd env ls

Um eine Liste aller Methoden für einen Dienst zu erhalten, geben Sie den Namen der Dienst als Argument.

cvd env ls SERVICE_NAME

Um detaillierte Informationen wie die Anfrage- oder Antwortnachrichtentypen einer den Dienstnamen und den Methodennamen.

cvd env ls SERVICE_NAME METHOD_NAME

Detaillierte Informationen zu Anfrage- und Antworttypen abrufen

Um detaillierte Informationen zu einem Anfrage- oder Antwortnachrichtentyp zu erhalten, verwenden Sie den cvd env type-Befehl. Dieser Befehl gibt alle Namen und Typen jedes Felds aus in der Nachricht. Anhand dieser Informationen können Sie dann eine JSON-formatierte Proto-Nachricht zum Senden einer RPC-Anfrage.

cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME

RPC-Anfrage senden, um Änderungen an der Umgebung vorzunehmen

So senden Sie eine RPC-Anfrage zum Aufrufen einer Dienstmethode mit einem JSON-formatierten Proto: 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

Anwendungsbeispiel

Im Folgenden finden Sie ein Anwendungsbeispiel für den Befehl cvd env der Befehlszeile zum Ändern WLAN-Signalstärke durch Aufrufen von SetTxpower.

  1. 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 abrufen

    cvd env ls WmediumdService
    (Omitted)
    {
      "methods" :
      [
        "ListStations",
        "LoadConfig",
        "ReloadConfig",
        "SetCivicloc",
        "SetLci",
        "SetPosition",
        "SetSnr",
        "SetTxpower",
        "StartPcap",
        "StopPcap"
      ]
    }
    

    Informationen zu den Anfrage- und Antwortnachrichtentypen für die SetTxpower-Methode.

    cvd env ls WmediumdService SetTxpower
    (Omitted)
    {
      "request_type" : "wmediumdserver.SetTxpowerRequest",
      "response_type" : "google.protobuf.Empty"
    }
    
  2. 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;
    }
    
  3. RPC-Anfrage an den Dienst WmediumdService senden, um das WLAN zu ändern der Signalstärke bis zum gewünschten Pegel anzupassen.

    cvd env call WmediumdService SetTxpower "{mac_address:'42:00:00:00:00:00', tx_power:1}"
    (Omitted)
    Rpc succeeded with OK status
    {}