Esta página describe cómo controlar el entorno en un dispositivo Cuttlefish utilizando la API REST o la interfaz de línea de comandos. Por ejemplo, podrás modificar la señal Wi-Fi o actualizar la ubicación GPS del dispositivo Cuttlefish.
Servicios
El comando cvd env
proporciona los siguientes servicios para controlar el entorno de Cuttlefish:
Servicios | Descripción |
---|---|
GnssGrpcProxy | Controla GNSS para la función de geolocalización de Sepia. |
OpenwrtControlService | Controla Openwrt , un proveedor de AP Wi-Fi virtualizado para la función Wi-Fi Cuttlefish. |
WmediumdService | Controla Wmediumd , un simulador de medio inalámbrico para la función Wi-Fi Cuttlefish. |
Controle el entorno utilizando la API REST
Esta sección describe cómo controlar el entorno utilizando la API Rest a través del punto final del servicio <https://localhost:1443>
.
Listar servicios o métodos disponibles
Para obtener una lista de todos los servicios, envíe una solicitud GET
a la siguiente URL con un ID de dispositivo.
https://localhost:1443/devices/DEVICE_ID/services
Para obtener una lista de todos los métodos de un servicio, envíe una solicitud GET
a la siguiente URL con un ID de dispositivo y el nombre del servicio.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME
Para obtener información detallada sobre un método, como los tipos de mensajes de solicitud o respuesta, envíe una solicitud GET
a la siguiente URL con un ID de dispositivo, un nombre de servicio y el nombre del método.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Obtenga información detallada sobre los tipos de solicitudes y respuestas
Para obtener información detallada de un tipo de mensaje de solicitud o respuesta, envíe una solicitud GET
a la siguiente URL con un ID de dispositivo, un nombre de servicio y el tipo de mensaje de solicitud o respuesta. Esto imprime todos los nombres y tipos de cada campo en el mensaje. Luego puede utilizar esta información para escribir un protomensaje con formato JSON para enviar una solicitud RPC.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type
Enviar solicitud RPC para realizar cambios en el entorno.
Para enviar una solicitud RPC para llamar a un método de un servicio con un protocolo con formato JSON, envíe una solicitud POST
a la siguiente URL con un ID de dispositivo, un nombre de servicio y el nombre del método. El protocolo con formato JSON debe incluirse en el cuerpo.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Caso de uso de ejemplo
El siguiente es un caso de uso de ejemplo de Rest API para modificar la intensidad de la señal Wi-Fi llamando SetTxpower
.
Determine el nombre del servicio, el nombre del método y el nombre del tipo de mensaje de solicitud para modificar la intensidad de la señal Wi-Fi.
Obtenga una lista de todos los servicios disponibles enviando una solicitud
GET
a la siguiente URL.https://localhost:1443/devices/cvd-1/services
Esta es una respuesta de ejemplo.
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
Obtenga una lista de métodos para
WmediumdService
enviando una solicitudGET
a la siguiente URL.https://localhost:1443/devices/cvd-1/services/WmediumdService
Esta es una respuesta de ejemplo.
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
Obtenga información sobre los tipos de mensajes de solicitud y respuesta para el método
SetTxpower
enviando una solicitudGET
a la siguiente URL.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
Esta es una respuesta de ejemplo.
{"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
Obtenga información detallada para el tipo de mensaje de solicitud
wmediumdserver.SetTxpowerRequest
enviando una solicitudGET
a la siguiente URL.https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/type
Esta es una respuesta de ejemplo.
message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }
Envíe una solicitud RPC al servicio
WmediumdService
para modificar la intensidad de la señal Wi-Fi al nivel deseado enviando una solicitudPOST
a esta URL con el siguiente cuerpo de solicitud.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
{"mac_address":"42:00:00:00:00:00", "tx_power":1}
Esta es una respuesta de ejemplo.
{}
Controlar el entorno mediante la línea de comando.
Esta sección describe los subcomandos disponibles para el comando CLI cvd env
. Para obtener más detalles, imprima el mensaje de ayuda utilizando cvd help env
.
Listar servicios o métodos disponibles
Para obtener una lista de todos los servicios, utilice cvd env ls
sin ningún argumento.
cvd env ls
Para obtener una lista de todos los métodos de un servicio, incluya el nombre del servicio como argumento.
cvd env ls SERVICE_NAME
Para obtener información detallada, como los tipos de mensajes de solicitud o respuesta de un método, incluya el nombre del servicio y el nombre del método.
cvd env ls SERVICE_NAME METHOD_NAME
Obtenga información detallada sobre los tipos de solicitudes y respuestas
Para obtener información detallada de un tipo de mensaje de solicitud o respuesta, utilice el comando cvd env type
. Este comando imprime todos los nombres y tipos de cada campo en el mensaje. Luego puede utilizar esta información para escribir un protomensaje con formato JSON para enviar una solicitud RPC.
cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME
Enviar solicitud RPC para realizar cambios en el entorno.
Para enviar una solicitud RPC para llamar a un método de un servicio con un protocolo con formato JSON, utilice el comando cvd enc call
. Cuando finaliza la solicitud RPC, la interfaz imprime el mensaje Rpc succeeded with OK status
y, si está disponible, un mensaje de respuesta que incluye valores.
cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO
Caso de uso de ejemplo
El siguiente es un caso de uso de ejemplo del comando CLI cvd env
para modificar la intensidad de la señal Wi-Fi llamando a SetTxpower
.
Determine el nombre del servicio, el nombre del método y el nombre del tipo de mensaje de solicitud para modificar la intensidad de la señal Wi-Fi.
Obtenga una lista de todos los servicios disponibles.
cvd env ls (Omitted) { "services" : [ "OpenwrtControlService", "EchoService", "GnssGrpcProxy", "WmediumdService" ] }
Obtenga una lista de métodos para
WmediumdService
.cvd env ls WmediumdService (Omitted) { "methods" : [ "ListStations", "LoadConfig", "ReloadConfig", "SetCivicloc", "SetLci", "SetPosition", "SetSnr", "SetTxpower", "StartPcap", "StopPcap" ] }
Obtenga información sobre los tipos de mensajes de solicitud y respuesta para el método
SetTxpower
.cvd env ls WmediumdService SetTxpower (Omitted) { "request_type" : "wmediumdserver.SetTxpowerRequest", "response_type" : "google.protobuf.Empty" }
Obtenga información detallada para el tipo de mensaje de solicitud
wmediumdserver.SetTxpowerRequest
.cvd env type WmediumdService wmediumdserver.SetTxpowerRequest (Omitted) message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }
Envíe una solicitud RPC al servicio
WmediumdService
para modificar la intensidad de la señal Wi-Fi al nivel deseado.cvd env call WmediumdService SetTxpower "{mac_address:'42:00:00:00:00:00', tx_power:1}" (Omitted) Rpc succeeded with OK status {}