Cuttlefish: kontrola środowiska

Na tej stronie opisujemy, jak kontrolować środowisko na urządzeniu Cuttlefish za pomocą interfejsu REST API lub interfejsu wiersza poleceń. Możesz na przykład zmodyfikować sygnał Wi-Fi lub zaktualizować lokalizację GPS urządzenia Cuttlefish.

Usługi

Polecenie cvd env udostępnia te usługi do sterowania środowiskiem Cuttlefish:

Usługi Opis
GnssGrpcProxy Określa GNSS na potrzeby funkcji geolokalizacji Cuttlefish.
OpenwrtControlService Steruje Openwrt, czyli zwirtualizowanym dostawcą punktu dostępu Wi-Fi dla funkcji Wi-Fi Cuttlefish.
WmediumdService Steruje Wmediumd, symulatorem bezprzewodowego medium dla funkcji Wi-Fi na urządzeniu Cuttlefish.
CasimirControlService Steruje Casimir, symulatorem zewnętrznych urządzeń NFC.

Kontrolowanie środowiska za pomocą interfejsu API REST

W tej sekcji opisujemy, jak sterować środowiskiem za pomocą interfejsu Rest API przez punkt końcowy usługi <https://localhost:1443>.

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

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

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

Aby uzyskać listę wszystkich metod usługi, wyślij żądanie GET na ten adres URL, podając identyfikator urządzenia i nazwę usługi.

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

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

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

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

Aby uzyskać szczegółowe informacje o typie wiadomości żądania lub odpowiedzi, wyślij GETżądanie na ten adres URL, podając identyfikator urządzenia, nazwę usługi oraz typ wiadomości żądania lub odpowiedzi. Spowoduje to wydrukowanie wszystkich nazw i typów poszczególnych pól w wiadomości. Następnie możesz użyć tych informacji do napisania wiadomości proto w formacie JSON, aby wysłać żądanie 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 z proto w formacie JSON, wyślij żądanie POST na ten adres URL z identyfikatorem urządzenia, nazwą usługi i nazwą metody. Protokół w formacie JSON musi być zawarty w treści.

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

Przypadek użycia

Poniżej znajdziesz przykładowy przypadek użycia interfejsu Rest API do modyfikowania siły sygnału Wi-Fi przez wywołanie funkcji SetTxpower.

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

    1. Aby uzyskać listę wszystkich dostępnych usług, wyślij GETżądanie na ten adres URL:

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

      To jest przykładowa odpowiedź.

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. Aby uzyskać listę metod dla WmediumdService, wyślij żądanie GET na ten adres URL:

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

      To jest przykładowa odpowiedź.

      {"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
      
    3. Informacje o typach wiadomości z prośbą i odpowiedzią dla metody SetTxpower uzyskasz, wysyłając prośbę GET na ten adres URL.

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

      To jest przykładowa odpowiedź.

      {"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
      
  2. Aby uzyskać szczegółowe informacje o typie wiadomości żądania wmediumdserver.SetTxpowerRequest, wyślij żądanie 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ć siłę sygnału Wi-Fi do żądanego poziomu. W tym celu wyślij żądanie POST na ten adres URL z tą treścią.

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

    To jest przykładowa odpowiedź.

    {}
    

Sterowanie środowiskiem za pomocą wiersza poleceń

W tej sekcji opisujemy podpolecenia dostępne dla polecenia interfejsu 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 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 wiadomości żądania lub odpowiedzi metody, podaj nazwę usługi i nazwę metody.

cvd env ls SERVICE_NAME METHOD_NAME

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

Aby uzyskać szczegółowe informacje o typie wiadomości żądania lub odpowiedzi, użyj polecenia cvd env type. To polecenie wyświetla wszystkie nazwy i typy każdego pola w wiadomości. Następnie możesz użyć tych informacji do napisania wiadomości proto w formacie JSON, aby wysłać żądanie 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. Gdy żądanie RPC zostanie zakończone, interfejs wyświetli komunikat Rpc succeeded with OK status oraz, jeśli jest dostępny, komunikat odpowiedzi zawierający wartości.

cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO

Przypadek użycia

Poniżej znajdziesz przykładowy przypadek użycia polecenia interfejsu wiersza poleceń cvd env do modyfikowania siły sygnału Wi-Fi przez wywołanie SetTxpower.

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

    Wyświetl 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"
      ]
    }

    Uzyskaj informacje o typach wiadomości żądań i odpowiedzi dla 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 żądania 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 na żądany poziom.

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