Mątwy: kontrola środowiska

Na tej stronie opisano, jak kontrolować środowisko na urządzeniu Cuttlefish za pomocą interfejsu API typu REST lub 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 sterowania środowiskiem mątwy:

Usługi Opis
GnssGrpcProxy Kontroluje GNSS na potrzeby funkcji geolokalizacji mątwy.
OpenwrtControlService Obsługuje Openwrt, wirtualnego dostawcę punktów dostępu Wi-Fi w ramach funkcji Cuttlefish Wi-Fi.
WmediumdService Steruje Wmediumd, bezprzewodowym symulatorem sieci Wi-Fi Cuttlefish.
CasimirControlService Steruje Casimir, symulatorem zewnętrznych urządzeń NFC.

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 dotyczących 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 żądanie GET na poniższy adres URL zawierające identyfikator urządzenia, nazwę usługi oraz typ wiadomości żądania lub odpowiedzi. Wyświetla nazwy i typy wszystkich pól w wiadomości. Następnie możesz użyć tych informacji do napisania wiadomości proto 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 protokołem w formacie JSON, wyślij żądanie POST z identyfikatorem urządzenia, nazwą usługi i nazwą metody na poniższy adres URL. Protokół w formacie JSON musi znajdować się w treści.

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

Przykład zastosowania

Poniżej znajduje się przykład użycia interfejsu Rest API do zmiany siły sygnału Wi-Fi przez wywołanie metody 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 żądanie GET na ten adres URL.

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

      To jest przykładowa odpowiedź.

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. Uzyskaj listę metod działania WmediumdService, wysyłając żą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. Aby uzyskać informacje o typach komunikatów dotyczących żądań i odpowiedzi w metodzie SetTxpower, wyślij żądanie 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 żądania wmediumdserver.SetTxpowerRequest, wyślij żądanie GET pod tym 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. Wyślij żądanie RPC do usługi WmediumdService, aby zmienić siłę sygnału Wi-Fi na odpowiedni poziom, wysyłając żądanie POST na ten adres URL z podaną niżej 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 za pomocą wiersza poleceń

W tej sekcji opisujemy polecenia podrzędne dostępne dla polecenia interfejsu wiersza poleceń cvd env. Aby uzyskać więcej informacji, wydrukuj komunikat pomocy, klikając cvd help env.

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

Aby wyświetlić listę wszystkich usług, użyj funkcji cvd env ls bez żadnych argumentów.

cvd env ls

Aby uzyskać listę wszystkich metod związanych z usługą, podaj jej nazwę jako argument.

cvd env ls SERVICE_NAME

Aby uzyskać szczegółowe informacje, takie jak typy wiadomości żądania lub odpowiedzi w metodzie, podaj nazwę usługi i nazwy 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 powoduje wydrukowanie wszystkich nazw i typów wszystkich 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 z protokołem 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, wiadomość z odpowiedzią zawierającą wartości.

cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO

Przykładowy przypadek użycia

Poniżej znajdziesz przykład 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 komunikatu żądania, by zmodyfikować siłę 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"
      ]
    }

    Uzyskaj informacje o typach wiadomości żądań i odpowiedzi w metodzie SetTxpower.

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

    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 odpowiedni poziom.

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