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/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 zmodyfikować siłę sygnału Wi-Fi do żądanego poziomu. 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 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 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 do napisania wiadomości proto w formacie JSON, aby 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 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_PROTOPrzypadek 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 {}