Na tej stronie opisano, jak kontrolować środowisko na urządzeniu Cuttlefish za pomocą interfejsu API typu REST lub interfejsu 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 kontrolowania środowiska Cuttlefish:
Usługi | Opis |
---|---|
GnssGrpcProxy
|
Element sterujący GNSS dla funkcji geolokalizacji Cuttlefish. |
OpenwrtControlService
|
Steruje Openwrt , wirtualnym punktem dostępu Wi-Fi w ramach funkcji Cuttlefish Wi-Fi. |
WmediumdService
|
Steruje Wmediumd , symulatorem medium bezprzewodowego dla funkcji Wi-Fi w Cuttlefish. |
CasimirControlService
|
Steruje Casimir , symulatorem zewnętrznych urządzeń NFC. |
Zarządzanie środowiskiem za pomocą interfejsu API REST
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 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 GET
żądanie pod adresem URL podanym poniżej, podając identyfikator urządzenia, nazwę usługi i typ żądania lub odpowiedzi. Wyświetla nazwy i typy wszystkich pól w wiadomości. Następnie możesz użyć tych informacji, aby napisać wiadomość proto w formacie JSON na potrzeby wysyłania żądania 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 w formacie proto JSON, wyślij żądanie POST
pod adresem URL z identyfikatorem urządzenia, nazwą usługi i nazwą metody. W treści musisz podać proto w formacie JSON.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Przykładowy przypadek użycia
Poniżej przedstawiamy przykład użycia interfejsu API REST do modyfikowania siły sygnału Wi-Fi przez wywołanie funkcji SetTxpower
.
Określ nazwę usługi, nazwę metody i nazwę typu żądania wiadomości w celu modyfikacji siły sygnału Wi-Fi.
Aby uzyskać listę wszystkich dostępnych usług, wyślij
GET
do tego adresu URL.https://localhost:1443/devices/cvd-1/services
Oto przykład odpowiedzi.
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
Aby uzyskać listę metod obsługiwanych przez
WmediumdService
, wyślij żądanieGET
pod ten adres URL.https://localhost:1443/devices/cvd-1/services/WmediumdService
Oto przykład odpowiedzi.
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
Aby uzyskać informacje o typach żądań i odpowiedzi dla metody
SetTxpower
, wyślij żądanieGET
pod tym adresem URL.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
Oto przykład odpowiedzi.
{"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 podanym niżej 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; }
Aby zmienić siłę sygnału Wi-Fi do pożądanego poziomu, wyślij żądanie RPC do usługi
WmediumdService
, wysyłając żądaniePOST
na ten adres URL z treścią żądania podaną poniżej.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ń
Ta sekcja opisuje podpolecenia dostępne w przypadku polecenia wiersza poleceń 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 żadnych 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 żądań lub odpowiedzi metody, podaj nazwę usługi i nazwę 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 wypisuje wszystkie nazwy i typy 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 za pomocą proto 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, komunikat z odpowiedzią zawierającą wartości.
cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO
Przykładowy przypadek użycia
Poniżej przedstawiamy przykład użycia polecenia wiersza poleceń cvd env
do zmiany siły sygnału Wi-Fi przez wywołanie SetTxpower
.
Określ nazwę usługi, nazwę metody i nazwę typu żądania wiadomości w celu modyfikacji siły 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" ] }
Dowiedz się więcej o typach żądań i odpowiedzi w przypadku 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
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 do pożądanego poziomu.cvd env call WmediumdService SetTxpower "{mac_address:'42:00:00:00:00:00', tx_power:1}" (Omitted) Rpc succeeded with OK status {}