На этой странице описывается, как управлять средой в устройстве 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 proto, используйте команду 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 {}