На этой странице описывается, как управлять средой на устройстве Cuttlefish с помощью REST API или интерфейса командной строки. Например, вы можете изменить сигнал Wi-Fi или обновить местоположение GPS устройства «Каракатица».
Услуги
Команда cvd env
предоставляет следующие службы для управления средой Cuttlefish:
Услуги | Описание |
---|---|
GnssGrpcProxy | Управляет GNSS для функции геолокации каракатицы. |
OpenwrtControlService | Управляет Openwrt , поставщиком виртуализированных точек доступа Wi-Fi для функции Wi-Fi Cuttlefish. |
WmediumdService | Управляет Wmediumd , симулятором беспроводной среды для функции Wi-Fi Cuttlefish. |
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-адресу с идентификатором устройства, именем службы и типом сообщения запроса или ответа. При этом печатаются все имена и типы каждого поля в сообщении. Затем вы можете использовать эту информацию для написания прототипа сообщения в формате 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
. Эта команда печатает все имена и типы каждого поля в сообщении. Затем вы можете использовать эту информацию для написания прототипа сообщения в формате 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 {}