Mątwy: Kontrola środowiska

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

Usługi

Polecenie cvd env udostępnia następujące usługi umożliwiające kontrolowanie środowiska mątwy:

Usługi Opis
GnssGrpcProxy Steruje GNSS dla funkcji geolokalizacji mątwy.
OpenwrtControlService Kontroluje Openwrt , zwirtualizowanego dostawcę punktów dostępu Wi-Fi dla funkcji Wi-Fi mątwy.
WmediumdService Kontroluje Wmediumd , bezprzewodowy symulator medium dla funkcji Wi-Fi mątwy.

Kontroluj środowisko za pomocą API REST

W tej sekcji opisano, jak kontrolować środowisko za pomocą interfejsu API Rest za pośrednictwem punktu końcowego usługi <https://localhost:1443> .

Lista dostępnych usług lub metod

Aby uzyskać listę wszystkich usług, wyślij żądanie GET na następujący 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 następujący 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, takie jak typy komunikatów żądania lub odpowiedzi, wyślij żądanie GET na następujący adres URL z identyfikatorem urządzenia, nazwą usługi i nazwą metody.

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

Uzyskaj szczegółowe informacje na temat typów żądań i odpowiedzi

Aby uzyskać szczegółowe informacje o typie żądania lub odpowiedzi, wyślij żądanie GET na następujący adres URL, podając identyfikator urządzenia, nazwę usługi oraz typ żądania lub odpowiedzi. Spowoduje to wydrukowanie wszystkich nazw i typów każdego pola w wiadomości. Następnie możesz użyć tych informacji do napisania komunikatu proto w formacie JSON w celu 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 następujący adres URL z identyfikatorem urządzenia, nazwą usługi i nazwą metody. Proto w formacie JSON musi być zawarte w treści.

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 API Rest do modyfikowania siły sygnału Wi-Fi poprzez wywołanie SetTxpower .

  1. Określ nazwę usługi, nazwę metody i nazwę typu komunikatu żądania dotyczącego modyfikacji siły sygnału Wi-Fi.

    1. Uzyskaj listę wszystkich dostępnych usług, wysyłając żądanie GET na następujący adres URL.

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

      To jest przykładowa odpowiedź.

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. Uzyskaj listę metod dla WmediumdService , wysyłając żądanie GET na następujący 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. Uzyskaj informacje na temat typów komunikatów żądań i odpowiedzi dla metody SetTxpower , wysyłając żądanie GET na następujący 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. Uzyskaj szczegółowe informacje na temat typu komunikatu żądania wmediumdserver.SetTxpowerRequest , wysyłając żądanie GET na następujący 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, wysyłając żądanie POST na ten adres URL z następującą treścią żądania.

    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ź.

    {}
    

Kontroluj środowisko za pomocą wiersza poleceń

W tej sekcji opisano podkomendy dostępne dla komendy cvd env CLI. Aby uzyskać więcej informacji, wydrukuj komunikat pomocy za pomocą cvd help env .

Lista dostępnych usług lub metod

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

cvd env ls

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

cvd env ls SERVICE_NAME

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

cvd env ls SERVICE_NAME METHOD_NAME

Uzyskaj szczegółowe informacje na temat typów żądań i odpowiedzi

Aby uzyskać szczegółowe informacje o typie żą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 komunikatu proto w formacie JSON w celu wysłania żądania RPC.

cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME

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, użyj polecenia cvd enc call . Po zakończeniu żądania RPC interfejs wypisuje 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

Przykładowy przypadek użycia

Poniżej znajduje się przykład użycia polecenia cvd env CLI do modyfikowania siły sygnału Wi-Fi poprzez wywołanie SetTxpower .

  1. Określ nazwę usługi, nazwę metody i nazwę typu komunikatu żądania dotyczącego modyfikacji siły sygnału Wi-Fi.

    Uzyskaj 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 na temat typów komunikatów żą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 na temat typu komunikatu żą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 zmodyfikować siłę sygnału 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
    {}