На этой странице описывается, как управлять средой устройства Cuttlefish с помощью REST API или интерфейса командной строки. Например, вы можете изменить сигнал Wi-Fi или обновить GPS-координаты устройства Cuttlefish.
Услуги
Команда cvd env предоставляет следующие службы для управления средой Cuttlefish:
| Услуги | Описание |
|---|---|
GnssGrpcProxy | Управляет GNSS для функции геолокации Cuttlefish. |
OpenwrtControlService | Управляет Openwrt — поставщиком виртуализированной точки доступа Wi-Fi для функции Cuttlefish Wi-Fi. |
WmediumdService | Управляет Wmediumd — беспроводным симулятором среды для функции Cuttlefish Wi-Fi. |
CasimirControlService | Управляет 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-адрес, указав идентификатор устройства, имя службы и тип сообщения запроса или ответа. Будут выведены все имена и типы каждого поля сообщения. Затем эту информацию можно использовать для создания proto-сообщения в формате 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; }Отправьте RPC-запрос службе
WmediumdService, чтобы изменить уровень сигнала Wi-Fi до желаемого уровня, отправивPOSTзапрос на этот URL-адрес со следующим телом запроса.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower{"mac_address":"42:00:00:00:00:00", "tx_power":1}Это пример ответа.
{}
Управление средой с помощью командной строки
В этом разделе описаны подкоманды, доступные для команды CLI 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 . Эта команда выводит все имена и типы каждого поля в сообщении. Затем эту информацию можно использовать для создания proto-сообщения в формате 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 {}