Cuttlefish: kontrola środowiska

Na tej stronie opisano, jak kontrolować środowisko na urządzeniu Cuttlefish za pomocą interfejsu API typu REST lub interfejsu wiersza poleceń. Możesz na przykład zmienić sygnał Wi-Fi lub zaktualizować 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 Openwrt, wirtualnym punktem dostępu Wi-Fi w ramach funkcji Cuttlefish Wi-Fi.
WmediumdService Steruje Wmediumd, symulatorem medium bezprzewodowego dla funkcji Wi-Fi w Cuttlefish.
CasimirControlService Steruje Casimir, symulatorem zewnętrznych urządzeń NFC.

Zarządzanie środowiskiem za pomocą interfejsu API REST

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 usługi, wyślij żądanie GET pod adresem URL podanym poniżej, podając identyfikator urządzenia i nazwę usługi.

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

Aby uzyskać szczegółowe informacje o metodach, np. typy żądań lub odpowiedzi, wyślij żądanie GET pod podanym adresem URL, podając identyfikator urządzenia, 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. Wyświetla nazwy i typy wszystkich pól w wiadomości. Następnie możesz użyć tych informacji, aby napisać wiadomość proto w formacie JSON na potrzeby wysyłania żądania RPC.

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

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

Aby wysłać żądanie RPC w celu wywołania metody usługi w formacie proto JSON, wyślij żądanie POST pod adresem URL z identyfikatorem urządzenia, nazwą usługi i nazwą metody. W treści musisz podać proto w formacie JSON.

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

Przykładowy przypadek użycia

Poniżej przedstawiamy przykład użycia interfejsu API REST do modyfikowania siły sygnału Wi-Fi przez wywołanie funkcji SetTxpower.

  1. Określ nazwę usługi, nazwę metody i nazwę typu żądania wiadomości w celu modyfikacji 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
      

      Oto przykład odpowiedzi.

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. Aby uzyskać listę metod obsługiwanych przez WmediumdService, wyślij żądanie GET pod ten 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. Aby uzyskać szczegółowe informacje o typie żądania wmediumdserver.SetTxpowerRequest, wyślij żądanie GET pod podanym niżej adresem URL.

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

    Oto przykład odpowiedzi.

    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
    
  3. Aby zmienić siłę sygnału Wi-Fi do pożądanego poziomu, wyślij żądanie RPC do usługi WmediumdService, wysyłając żądanie POST na ten adres URL z treścią żądania podaną poniżej.

    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 za pomocą wiersza poleceń

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

Wyświetlanie listy 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 usługi, podaj jej nazwę jako argument.

cvd env ls SERVICE_NAME

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

cvd env ls SERVICE_NAME METHOD_NAME

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

Aby uzyskać szczegółowe informacje o typie żądania lub odpowiedzi, użyj polecenia cvd env type. To polecenie wypisuje wszystkie nazwy i typy pól w wiadomości. Następnie możesz użyć tych informacji do napisania wiadomości 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 za pomocą proto w formacie JSON, użyj polecenia cvd enc call. Po zakończeniu żądania RPC interfejs wyświetla komunikat Rpc succeeded with OK status oraz, jeśli jest dostępny, komunikat z odpowiedzią zawierającą wartości.

cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO

Przykładowy przypadek użycia

Poniżej przedstawiamy przykład użycia polecenia wiersza poleceń cvd env do zmiany siły sygnału Wi-Fi przez wywołanie SetTxpower.

  1. Określ nazwę usługi, nazwę metody i nazwę typu żądania wiadomości w celu modyfikacji 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 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 przypadku metody 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 zmienić siłę sygnału Wi-Fi do pożądanego poziomu.

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