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 de Wi-Fi ou atualizar a localização do GPS do dispositivo Cuttlefish.
Serviços
O comando cvd env
oferece os seguintes serviços para controlar o
ambiente do Cuttlefish:
Serviços | Descrição |
---|---|
GnssGrpcProxy
|
Controla o GNSS para o recurso de geolocalização do Cuttlefish. |
OpenwrtControlService
|
Controla o Openwrt , um provedor de AP Wi-Fi virtualizado
para o recurso de Wi-Fi do Cuttlefish. |
WmediumdService
|
Controla o Wmediumd , um simulador de mídia sem fio
para o recurso de Wi-Fi do Cuttlefish. |
CasimirControlService
|
Controla o Casimir , um simulador para dispositivos NFC
externos. |
Controlar o ambiente usando a API REST
Esta seção descreve como controlar o ambiente usando a API REST
pelo endpoint de serviço <https://localhost:1443>
.
Lista de serviços ou métodos disponíveis
Para consultar uma lista de todos os serviços, envie uma solicitação GET
para o seguinte URL com
um ID do dispositivo.
https://localhost:1443/devices/DEVICE_ID/services
Para consultar uma lista de todos os métodos para um serviço, envie uma solicitação GET
para o
seguinte URL com um ID do dispositivo e o nome do serviço.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME
Para consultar informações detalhadas para um método, como os tipos solicitação ou de mensagem
de resposta, envie uma solicitação GET
para o seguinte URL com um ID do dispositivo,
um nome do serviço e o nome do método.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Consultar informações detalhadas sobre tipos de solicitação e resposta
Para consultar informações detalhadas sobre um tipo de solicitação ou mensagem de resposta, envie uma solicitação GET
para o seguinte URL com um ID do dispositivo, um nome de serviço e o
tipo de solicitação ou mensagem de resposta. Assim, todos os nomes e tipos de cada
campo vão aparecer na mensagem. Essa informação pode ser usada para escrever uma mensagem .proto
em formato JSON e enviar uma solicitação de RPC.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type
Enviar solicitação de RPC (remote procedure call) para fazer mudanças no ambiente
Use uma solicitação POST
para o seguinte URL com um ID do dispositivo, um nome de serviço e o nome do método
para enviar uma solicitação de RPC e chamar um método de um
serviço com um .proto em formato JSON. O .proto em formato JSON precisa estar incluído no
corpo.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Exemplo de caso de uso
Confira abaixo um exemplo de caso de uso da API REST para modificar a intensidade do sinal
de Wi-Fi chamando SetTxpower
.
Determine os nomes do serviço, do método e do tipo de mensagem de solicitação para modificar a intensidade do sinal de Wi-Fi.
Consulte 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"]}
Consulte uma lista de métodos para
WmediumdService
enviando uma solicitaçãoGET
para o seguinte URL.https://localhost:1443/devices/cvd-1/services/WmediumdService
Este é um exemplo de resposta.
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
Consulte informações sobre os tipos de solicitação e mensagens de resposta para o método
SetTxpower
enviando uma solicitaçãoGET
para o seguinte URL.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"}
Consulte informações detalhadas para o tipo de mensagem de solicitação
wmediumdserver.SetTxpowerRequest
enviando uma solicitaçãoGET
para o seguinte URL.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 de RPC ao serviço
WmediumdService
para ajustar a intensidade do sinal de Wi-Fi até o nível desejado enviando uma solicitaçãoPOST
para este URL com o seguinte corpo da 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.
{}
Controlar o ambiente usando a linha de comando
Esta seção descreve os subcomandos disponíveis para o comando cvd env
da CLI.
Para mais detalhes, confira a mensagem de ajuda usando cvd help env
.
Lista de serviços ou métodos disponíveis
Para consultar uma lista de todos os serviços, use cvd env ls
sem nenhum argumento.
cvd env ls
Para consultar uma lista de todos os métodos para um serviço, inclua o nome do serviço como um argumento.
cvd env ls SERVICE_NAME
Para consultar informações detalhadas, como os tipos de mensagem de resposta ou solicitação de um método, inclua o nome do serviço e do método.
cvd env ls SERVICE_NAME METHOD_NAME
Consultar informações detalhadas sobre tipos de solicitação e resposta
Para consultar informações detalhadas sobre um tipo de solicitação ou mensagem de resposta, use o
comando cvd env type
. Ele mostra todos os nomes e tipos de cada campo
na mensagem. Essa informação pode ser usada para escrever uma mensagem .proto
em formato JSON e enviar uma solicitação de RPC.
cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME
Enviar solicitação de RPC (remote procedure call) para fazer mudanças no ambiente
Use o comando cvd enc call
para enviar uma solicitação de RPC e chamar o método de um serviço
com um .proto em formato JSON. Quando a solicitação de RPC for encerrada, a interface
vai mostrar 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
Confira abaixo um exemplo de caso de uso do comando cvd env
da CLI para modificar
a intensidade do sinal de Wi-Fi chamando SetTxpower
.
Determine os nomes do serviço, do método e do tipo de mensagem de solicitação para modificar a intensidade do sinal de Wi-Fi.
Consulte uma lista de todos os serviços disponíveis.
cvd env ls (Omitted) { "services" : [ "OpenwrtControlService", "EchoService", "GnssGrpcProxy", "WmediumdService" ] }
Consulte uma lista de métodos para
WmediumdService
.cvd env ls WmediumdService (Omitted) { "methods" : [ "ListStations", "LoadConfig", "ReloadConfig", "SetCivicloc", "SetLci", "SetPosition", "SetSnr", "SetTxpower", "StartPcap", "StopPcap" ] }
Consulte informações sobre os tipos de mensagem de resposta e solicitação para o método
SetTxpower
.cvd env ls WmediumdService SetTxpower (Omitted) { "request_type" : "wmediumdserver.SetTxpowerRequest", "response_type" : "google.protobuf.Empty" }
Consulte informações detalhadas do 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 de RPC ao serviço
WmediumdService
para ajustar a intensidade do sinal de Wi-Fi até 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 {}