Esta página descreve como controlar o ambiente em um dispositivo Cuttlefish usando a API REST ou a interface de linha de comando. Por exemplo, você pode modificar o sinal Wi-Fi ou atualizar a localização GPS do dispositivo Cuttlefish.
Serviços
O comando cvd env
fornece os seguintes serviços para controlar o ambiente Cuttlefish:
Serviços | Descrição |
---|---|
GnssGrpcProxy | Controla o GNSS para o recurso de geolocalização Cuttlefish. |
OpenwrtControlService | Controla Openwrt , um provedor de AP Wi-Fi virtualizado para o recurso Cuttlefish Wi-Fi. |
WmediumdService | Controla Wmediumd , um simulador de mídia sem fio para o recurso Cuttlefish Wi-Fi. |
Controle o ambiente usando a API REST
Esta seção descreve como controlar o ambiente usando a API Rest por meio do endpoint de serviço <https://localhost:1443>
.
Liste os serviços ou métodos disponíveis
Para obter uma lista de todos os serviços, envie uma solicitação GET
para o seguinte URL com um ID de dispositivo.
https://localhost:1443/devices/DEVICE_ID/services
Para obter uma lista de todos os métodos de um serviço, envie uma solicitação GET
para o seguinte URL com um ID de dispositivo e o nome do serviço.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME
Para obter informações detalhadas sobre um método, como os tipos de mensagem de solicitação ou resposta, envie uma solicitação GET
para a seguinte URL com um ID de dispositivo, um nome de serviço e o nome do método.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Obtenha informações detalhadas sobre tipos de solicitação e resposta
Para obter informações detalhadas de um tipo de mensagem de solicitação ou resposta, envie uma solicitação GET
para a seguinte URL com um ID de dispositivo, um nome de serviço e o tipo de mensagem de solicitação ou resposta. Isso imprime todos os nomes e tipos de cada campo da mensagem. Você pode então usar essas informações para escrever uma mensagem proto no formato JSON para enviar uma solicitação RPC.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type
Envie solicitação RPC para fazer alterações no ambiente
Para enviar uma solicitação RPC para chamar um método de um serviço com um proto formatado em JSON, envie uma solicitação POST
para o seguinte URL com um ID de dispositivo, um nome de serviço e o nome do método. O proto formatado em JSON deve ser incluído no corpo.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Exemplo de caso de uso
A seguir está um exemplo de caso de uso da API Rest para modificar a intensidade do sinal Wi-Fi chamando SetTxpower
.
Determine o nome do serviço, o nome do método e o nome do tipo de mensagem de solicitação para modificar a intensidade do sinal Wi-Fi.
Obtenha uma lista de todos os serviços disponíveis enviando uma solicitação
GET
para o seguinte URL.https://localhost:1443/devices/cvd-1/services
Este é um exemplo de resposta.
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
Obtenha uma lista de métodos para
WmediumdService
enviando uma solicitaçãoGET
para o URL a seguir.https://localhost:1443/devices/cvd-1/services/WmediumdService
Este é um exemplo de resposta.
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
Obtenha informações sobre os tipos de mensagens de solicitação e resposta para o método
SetTxpower
enviando uma solicitaçãoGET
para a URL a seguir.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
Este é um exemplo de resposta.
{"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
Obtenha informações detalhadas sobre o tipo de mensagem de solicitação
wmediumdserver.SetTxpowerRequest
enviando uma solicitaçãoGET
para a URL a seguir.https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/type
Este é um exemplo de resposta.
message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }
Envie uma solicitação RPC ao serviço
WmediumdService
para modificar a intensidade do sinal Wi-Fi para o nível desejado, enviando uma solicitaçãoPOST
para esse URL com o seguinte corpo de solicitação.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
{"mac_address":"42:00:00:00:00:00", "tx_power":1}
Este é um exemplo de resposta.
{}
Controle o ambiente usando a linha de comando
Esta seção descreve os subcomandos disponíveis para o comando CLI cvd env
. Para mais detalhes, imprima a mensagem de ajuda usando cvd help env
.
Liste os serviços ou métodos disponíveis
Para obter uma lista de todos os serviços, use cvd env ls
sem argumentos.
cvd env ls
Para obter uma lista de todos os métodos de um serviço, inclua o nome do serviço como argumento.
cvd env ls SERVICE_NAME
Para obter informações detalhadas, como os tipos de mensagens de solicitação ou resposta de um método, inclua o nome do serviço e o nome do método.
cvd env ls SERVICE_NAME METHOD_NAME
Obtenha informações detalhadas sobre tipos de solicitação e resposta
Para obter informações detalhadas de um tipo de mensagem de solicitação ou resposta, use o comando cvd env type
. Este comando imprime todos os nomes e tipos de cada campo da mensagem. Você pode então usar essas informações para escrever uma mensagem proto no formato JSON para enviar uma solicitação RPC.
cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME
Envie solicitação RPC para fazer alterações no ambiente
Para enviar uma solicitação RPC para chamar um método de um serviço com um proto formatado em JSON, use o comando cvd enc call
. Quando a solicitação RPC termina, a interface imprime a mensagem Rpc succeeded with OK status
e, se disponível, uma mensagem de resposta incluindo valores.
cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO
Exemplo de caso de uso
A seguir está um exemplo de caso de uso do comando cvd env
CLI para modificar a intensidade do sinal Wi-Fi chamando SetTxpower
.
Determine o nome do serviço, o nome do método e o nome do tipo de mensagem de solicitação para modificar a intensidade do sinal Wi-Fi.
Obtenha uma lista de todos os serviços disponíveis.
cvd env ls (Omitted) { "services" : [ "OpenwrtControlService", "EchoService", "GnssGrpcProxy", "WmediumdService" ] }
Obtenha uma lista de métodos para
WmediumdService
.cvd env ls WmediumdService (Omitted) { "methods" : [ "ListStations", "LoadConfig", "ReloadConfig", "SetCivicloc", "SetLci", "SetPosition", "SetSnr", "SetTxpower", "StartPcap", "StopPcap" ] }
Obtenha informações sobre os tipos de mensagens de solicitação e resposta para o método
SetTxpower
.cvd env ls WmediumdService SetTxpower (Omitted) { "request_type" : "wmediumdserver.SetTxpowerRequest", "response_type" : "google.protobuf.Empty" }
Obtenha informações detalhadas para o tipo de mensagem de solicitação
wmediumdserver.SetTxpowerRequest
.cvd env type WmediumdService wmediumdserver.SetTxpowerRequest (Omitted) message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }
Envie uma solicitação RPC ao serviço
WmediumdService
para modificar a intensidade do sinal Wi-Fi para o nível desejado.cvd env call WmediumdService SetTxpower "{mac_address:'42:00:00:00:00:00', tx_power:1}" (Omitted) Rpc succeeded with OK status {}