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
.
Określ nazwę usługi, nazwę metody i nazwę typu wiadomości z prośbą o zmianę siły sygnału Wi-Fi.
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"]}
Uzyskaj listę metod działania
WmediumdService
, wysyłając żą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"]}
Aby uzyskać informacje o typach komunikatów dotyczących żądań i odpowiedzi w metodzie
SetTxpower
, wyślij żądanieGET
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 żądania
wmediumdserver.SetTxpowerRequest
, wyślij żądanieGET
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; }
Wyślij żądanie RPC do usługi
WmediumdService
, aby zmienić siłę sygnału Wi-Fi na odpowiedni poziom, wysyłając żądaniePOST
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
.
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" }
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; }
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 {}