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
.
Określ nazwę usługi, nazwę metody i nazwę typu wiadomości z żądaniem zmiany siły sygnału Wi-Fi.
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"]}
Aby uzyskać listę metod dla
WmediumdService
, wyślij żądanieGET
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"]}
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"}
Aby uzyskać szczegółowe informacje o typie wiadomości żądania
wmediumdserver.SetTxpowerRequest
, wyślij żądanieGET
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; }
Wyślij żądanie RPC do usługi
WmediumdService
, aby zmodyfikować siłę sygnału Wi-Fi do żądanego poziomu. W tym celu wyślij żądaniePOST
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
.
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" }
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; }
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 {}