Na tej stronie opisujemy, jak sterować środowiskiem 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
|
Steruje GNSS na potrzeby funkcji geolokalizacji Cuttlefish. |
OpenwrtControlService
|
Steruje Openwrt, czyli zwirtualizowanym dostawcą punktu dostępu Wi-Fi na potrzeby funkcji Wi-Fi na urządzeniu Cuttlefish. |
WmediumdService
|
Steruje Wmediumd, bezprzewodowym symulatorem medium
dla funkcji Wi-Fi na urządzeniu Cuttlefish. |
CasimirControlService
|
Steruje Casimir, czyli 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 za pośrednictwem 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 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 GET żądanie 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 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.
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
Przykładowy 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 SetTxpower.
Określ nazwę usługi, nazwę metody i nazwę typu wiadomości żądania, aby zmodyfikować siłę 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/servicesTo jest przykładowa odpowiedź.
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}Aby uzyskać listę metod dla
WmediumdService, wyślij żądanieGETna ten adres URL:https://localhost:1443/devices/cvd-1/services/WmediumdServiceTo 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
SetTxpoweruzyskasz, wysyłając prośbęGETna ten adres URL:https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpowerTo 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 żądanieGETna ten adres URL:https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/typeTo jest przykładowa odpowiedź.
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. W tym celu wyślij żądaniePOSTna 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 polecenia podrzędne dostępne dla polecenia interfejsu 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 argumentów.
cvd env lsAby uzyskać listę wszystkich metod usługi, podaj jej nazwę jako argument.
cvd env ls SERVICE_NAMEAby 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_NAMESzczegół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, aby napisać wiadomość protokołu w formacie JSON i wysłać żądanie RPC.
cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAMEWysył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 odpowiedzi zawierający wartości.
cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTOPrzykładowy 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 żądania, aby zmodyfikować siłę 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 {}