Cuttlefish: kontrola środowiska

Ta strona opisuje, jak sterować środowiskiem na urządzeniu mątwy za pomocą interfejsu API typu REST lub interfejsu wiersza poleceń. Możesz na przykład zmienić Użyj sieci Wi-Fi lub zaktualizuj lokalizację GPS urządzenia Cuttlefish.

Usługi

Polecenie cvd env udostępnia te usługi do kontrolowania środowiska Cuttlefish:

Usługi Opis
GnssGrpcProxy Element sterujący GNSS dla funkcji geolokalizacji Cuttlefish.
OpenwrtControlService Steruje urządzeniem Openwrt – zwirtualizowanym punktem dostępu Wi-Fi operatora sieci Wi-Fi firmy Cuttlefish.
WmediumdService Steruje urządzeniem Wmediumd, symulatorem mediów bezprzewodowych dla funkcji Wi-Fi dla mątwy.
CasimirControlService Kontroluje urządzenie Casimir, symulator zewnętrznej komunikacji NFC urządzenia.

Zarządzanie środowiskiem za pomocą interfejsu REST API

W tej sekcji opisaliśmy, jak zarządzać środowiskiem za pomocą interfejsu REST API za pomocą punktu końcowego usługi <https://localhost:1443>.

Wyświetlanie listy dostępnych usług lub metod

Aby uzyskać listę wszystkich usług, wyślij żądanie GET pod adresem URL z identyfikatorem urządzenia.

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

Aby uzyskać listę wszystkich metod związanych z usługą, wyślij żądanie GET do poniższy adres URL z identyfikatorem urządzenia i nazwą usługi.

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

Aby uzyskać szczegółowe informacje o metodzie, np. żądanie lub odpowiedź typy wiadomości, wyślij żądanie GET z identyfikatorem urządzenia na poniższy adres URL, nazwę usługi i nazwę metody.

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

Uzyskaj szczegółowe informacje o typach żądań i odpowiedzi

Aby uzyskać szczegółowe informacje o typie żądania lub odpowiedzi, wyślij GETżądanie pod adresem URL podanym poniżej, podając identyfikator urządzenia, nazwę usługi i typ żądania lub odpowiedzi. Spowoduje to wydrukowanie wszystkich nazw i typów każdego w wiadomości. Następnie możesz użyć tych informacji, aby napisać Komunikat protokołu w formacie JSON do wysłania żądania RPC.

https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type

Wyślij żądanie RPC, aby wprowadzić zmiany w środowisku

Aby wysłać żądanie RPC w celu wywołania metody usługi z proto w formacie JSON: wyślij żądanie POST na poniższy adres URL z identyfikatorem urządzenia, usługą nazwa i nazwa metody. Protokół w formacie JSON musi być zawarty w .

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

Przykładowy przypadek użycia

Poniżej znajduje się przykład użycia interfejsu Rest API do modyfikowania sieci Wi-Fi siłą sygnału połączenia: SetTxpower.

  1. Określ nazwę usługi, nazwę metody i nazwę typu wiadomości z prośbą o zmianę siły sygnału Wi-Fi.

    1. Aby uzyskać listę wszystkich dostępnych usług, wyślij GET do tego adresu URL.

      https://localhost:1443/devices/cvd-1/services
      

      To jest przykładowa odpowiedź.

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. Wyślij żądanie GET, aby uzyskać listę metod działania WmediumdService na następujący adres URL.

      https://localhost:1443/devices/cvd-1/services/WmediumdService
      

      Oto przykład odpowiedzi.

      {"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
      
    3. Aby uzyskać informacje o typach żądań i odpowiedzi dla metody SetTxpower, wyślij żądanie GET pod tym adresem URL.

      https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
      

      Oto przykład odpowiedzi.

      {"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
      
  2. Uzyskaj szczegółowe informacje o żądaniu wmediumdserver.SetTxpowerRequest przez wysłanie żądania GET na ten adres URL.

    https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/type
    

    To jest przykładowa odpowiedź.

    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
    
  3. Wyślij żądanie RPC do usługi WmediumdService, aby zmodyfikować sieć Wi-Fi siłę sygnału do odpowiedniego poziomu, wysyłając na ten adres URL żądanie POST. o następującej treści żądania.

    https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
    
    {"mac_address":"42:00:00:00:00:00", "tx_power":1}
    

    Oto przykład odpowiedzi.

    {}
    

Sterowanie środowiskiem przy użyciu wiersza poleceń

Ta sekcja opisuje podpolecenia dostępne w przypadku polecenia wiersza poleceń cvd env. Aby uzyskać więcej informacji, wydrukuj komunikat pomocy, klikając cvd help env.

Wyświetl listę dostępnych usług lub metod

Aby uzyskać listę wszystkich usług, użyj polecenia cvd env ls bez żadnych argumentów.

cvd env ls

Aby uzyskać listę wszystkich metod danej usługi, podaj jej nazwę jako argument.

cvd env ls SERVICE_NAME

Aby uzyskać szczegółowe informacje, takie jak typy żądań lub odpowiedzi w należy podać nazwę usługi i metody.

cvd env ls SERVICE_NAME METHOD_NAME

Uzyskaj szczegółowe informacje o typach żądań i odpowiedzi

Szczegółowe informacje o typie żądania lub odpowiedzi znajdziesz w cvd env type. To polecenie wypisuje wszystkie nazwy i typy pól w wiadomości. Następnie możesz użyć tych informacji, aby napisać wiadomość proto w formacie JSON na potrzeby wysłania żądania RPC.

cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME

Wysyłanie żądania RPC w celu wprowadzenia zmian w środowisku

Aby wysłać żądanie RPC w celu wywołania metody usługi z proto w formacie JSON: użyj polecenia cvd enc call. Po zakończeniu żądania RPC interfejs drukuje wiadomość Rpc succeeded with OK status oraz, jeśli jest dostępna, odpowiedź wraz z wartościami.

cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO

Przykładowy przypadek użycia

Poniżej znajduje się przykład użycia polecenia interfejsu wiersza poleceń cvd env do modyfikacji siłę sygnału Wi-Fi, dzwoniąc pod numer SetTxpower.

  1. Określ nazwę usługi, nazwę metody i nazwę typu wiadomości z żądaniem zmiany siły sygnału Wi-Fi.

    Zobacz listę wszystkich dostępnych usług.

    cvd env ls
    (Omitted)
    {
      "services" :
      [
        "OpenwrtControlService",
        "EchoService",
        "GnssGrpcProxy",
        "WmediumdService"
      ]
    }

    Uzyskaj listę metod dla funkcji WmediumdService.

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

    Dowiedz się więcej o typach żądań i odpowiedzi w metodach SetTxpower.

    cvd env ls WmediumdService SetTxpower
    (Omitted)
    {
      "request_type" : "wmediumdserver.SetTxpowerRequest",
      "response_type" : "google.protobuf.Empty"
    }
  2. Uzyskaj szczegółowe informacje o typie wiadomości wmediumdserver.SetTxpowerRequest.

    cvd env type WmediumdService wmediumdserver.SetTxpowerRequest
    (Omitted)
    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
  3. Wyślij żądanie RPC do usługi WmediumdService, aby zmodyfikować sieć Wi-Fi do żądanego poziomu.

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