На этой странице описано, как управлять окружающей средой в устройстве Cuttlefish с помощью REST API или интерфейса командной строки. Например, вы можете изменить сигнал Wi-Fi или обновить местоположение GPS устройства Cuttlefish.
Услуги
Команда cvd env предоставляет следующие сервисы для управления средой Cuttlefish:
| Услуги | Описание |
|---|---|
GnssGrpcProxy | Управляет GNSS для функции геолокации каракатицы. |
OpenwrtControlService | Контроллер Openwrt , виртуализированного поставщика точек доступа Wi-Fi для функции Cuttlefish Wi-Fi. |
WmediumdService | Controls Wmediumd — это симулятор беспроводной среды для функции Wi-Fi Cuttlefish. |
CasimirControlService | Controls Casimir — симулятор внешних NFC-устройств. |
Управляйте средой с помощью REST API.
В этом разделе описывается, как управлять средой с помощью REST API через конечную точку сервиса <https://localhost:1443> .
Перечислите доступные услуги или методы.
Чтобы получить список всех сервисов, отправьте GET запрос на следующий URL-адрес, указав идентификатор устройства.
https://localhost:1443/devices/DEVICE_ID/services
Чтобы получить список всех методов для службы, отправьте GET запрос на следующий URL-адрес, указав идентификатор устройства и имя службы.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME
Чтобы получить подробную информацию о методе, например, о типах сообщений запроса или ответа, отправьте GET запрос на следующий URL-адрес, указав идентификатор устройства, имя службы и имя метода.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Получите подробную информацию о типах запросов и ответов.
Чтобы получить подробную информацию о типе сообщения запроса или ответа, отправьте GET запрос на следующий URL-адрес, указав идентификатор устройства, имя службы и тип сообщения запроса или ответа. Это выведет все имена и типы каждого поля в сообщении. Затем вы можете использовать эту информацию для создания протокола сообщения в формате JSON для отправки RPC-запроса.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type
Отправьте RPC-запрос для внесения изменений в окружение.
Для отправки RPC-запроса на вызов метода сервиса с использованием протокола в формате JSON, отправьте POST запрос на следующий URL-адрес, указав идентификатор устройства, имя сервиса и имя метода. В теле запроса должен быть указан протокол в формате JSON.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Пример использования
Ниже приведён пример использования REST API для изменения уровня сигнала Wi-Fi путём вызова функции SetTxpower .
Определите имя службы, имя метода и имя типа сообщения запроса для изменения уровня сигнала Wi-Fi.
Чтобы получить список всех доступных сервисов, отправьте
GETзапрос по следующему URL-адресу.https://localhost:1443/devices/cvd-1/servicesЭто пример ответа.
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}Чтобы получить список методов
WmediumdService, отправьтеGETзапрос по следующему URL-адресу.https://localhost:1443/devices/cvd-1/services/WmediumdServiceЭто пример ответа.
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}Чтобы получить информацию о типах сообщений запроса и ответа для метода
SetTxpower, отправьтеGETзапрос по следующему URL-адресу.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpowerЭто пример ответа.
{"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
Получите подробную информацию о типе сообщения запроса
wmediumdserver.SetTxpowerRequest, отправивGETзапрос по следующему URL-адресу.https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/typeЭто пример ответа.
message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }Для изменения уровня сигнала Wi-Fi до желаемого значения отправьте RPC-запрос в службу
WmediumdService, используяPOSTзапрос по указанному URL-адресу со следующим телом запроса.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower{"mac_address":"42:00:00:00:00:00", "tx_power":1}Это пример ответа.
{}
Управляйте средой с помощью командной строки.
В этом разделе описаны подкоманды, доступные для команды командной строки cvd env . Для получения более подробной информации выведите справочное сообщение, используя cvd help env .
Перечислите доступные услуги или методы.
Чтобы получить список всех служб, используйте cvd env ls без каких-либо аргументов.
cvd env lsЧтобы получить список всех методов сервиса, укажите имя сервиса в качестве аргумента.
cvd env ls SERVICE_NAMEДля получения подробной информации, такой как типы сообщений запроса или ответа метода, укажите имя службы и имя метода.
cvd env ls SERVICE_NAME METHOD_NAMEПолучите подробную информацию о типах запросов и ответов.
Для получения подробной информации о типе сообщения запроса или ответа используйте команду cvd env type . Эта команда выводит все имена и типы каждого поля в сообщении. Затем вы можете использовать эту информацию для написания протокольного сообщения в формате JSON для отправки RPC-запроса.
cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAMEОтправьте RPC-запрос для внесения изменений в окружение.
Для отправки RPC-запроса на вызов метода сервиса с использованием протокола в формате JSON, используйте команду cvd enc call . После завершения RPC-запроса интерфейс выводит сообщение Rpc succeeded with OK status и, если доступно, ответное сообщение со значениями.
cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTOПример использования
Ниже приведён пример использования команды CLI cvd env для изменения уровня сигнала Wi-Fi путём вызова функции SetTxpower .
Определите имя службы, имя метода и имя типа сообщения запроса для изменения уровня сигнала Wi-Fi.
Получите список всех доступных услуг.
cvd env ls (Omitted) { "services" : [ "OpenwrtControlService", "EchoService", "GnssGrpcProxy", "WmediumdService" ] }Получить список методов для
WmediumdService.cvd env ls WmediumdService (Omitted) { "methods" : [ "ListStations", "LoadConfig", "ReloadConfig", "SetCivicloc", "SetLci", "SetPosition", "SetSnr", "SetTxpower", "StartPcap", "StopPcap" ] }Получите информацию о типах сообщений запроса и ответа для метода
SetTxpower.cvd env ls WmediumdService SetTxpower (Omitted) { "request_type" : "wmediumdserver.SetTxpowerRequest", "response_type" : "google.protobuf.Empty" }Получите подробную информацию о типе сообщения запроса
wmediumdserver.SetTxpowerRequest.cvd env type WmediumdService wmediumdserver.SetTxpowerRequest (Omitted) message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }Отправьте RPC-запрос к службе
WmediumdService, чтобы изменить уровень сигнала Wi-Fi до желаемого значения.cvd env call WmediumdService SetTxpower "{mac_address:'42:00:00:00:00:00', tx_power:1}" (Omitted) Rpc succeeded with OK status {}