Cette page décrit comment contrôler l'environnement dans un appareil Cuttlefish à l'aide de l'API REST ou de l'interface de ligne de commande. Par exemple, vous pouvez modifier le signal Wi-Fi ou mettre à jour la localisation GPS de l'appareil Cuttlefish.
Prestations de service
La commande cvd env
fournit les services suivants pour contrôler l'environnement Cuttlefish :
Prestations de service | Description |
---|---|
GnssGrpcProxy | Contrôle le GNSS pour la fonction de géolocalisation de la seiche. |
OpenwrtControlService | Contrôle Openwrt , un fournisseur de points d'accès Wi-Fi virtualisé pour la fonction Wi-Fi Cuttlefish. |
WmediumdService | Contrôle Wmediumd , un simulateur de support sans fil pour la fonction Wi-Fi Cuttlefish. |
Contrôler l'environnement à l'aide de l'API REST
Cette section décrit comment contrôler l'environnement à l'aide de l'API Rest via le point de terminaison du service <https://localhost:1443>
.
Répertorier les services ou méthodes disponibles
Pour obtenir une liste de tous les services, envoyez une requête GET
à l'URL suivante avec un ID d'appareil.
https://localhost:1443/devices/DEVICE_ID/services
Pour obtenir une liste de toutes les méthodes d'un service, envoyez une requête GET
à l'URL suivante avec un ID d'appareil et le nom du service.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME
Pour obtenir des informations détaillées sur une méthode, telles que les types de message de demande ou de réponse, envoyez une demande GET
à l'URL suivante avec un ID de périphérique, un nom de service et le nom de la méthode.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Obtenez des informations détaillées sur les types de demandes et de réponses
Pour obtenir des informations détaillées sur un type de message de demande ou de réponse, envoyez une demande GET
à l'URL suivante avec un ID de périphérique, un nom de service et le type de message de demande ou de réponse. Ceci imprime tous les noms et types de chaque champ du message. Vous pouvez ensuite utiliser ces informations pour écrire un message proto au format JSON pour envoyer une requête RPC.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type
Envoyer une requête RPC pour apporter des modifications à l'environnement
Pour envoyer une requête RPC pour appeler une méthode d'un service avec un prototype au format JSON, envoyez une requête POST
à l'URL suivante avec un ID de périphérique, un nom de service et le nom de la méthode. Le prototype au format JSON doit être inclus dans le corps.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Exemple de cas d'utilisation
Voici un exemple de cas d'utilisation de l'API Rest pour modifier la force du signal Wi-Fi en appelant SetTxpower
.
Déterminez le nom du service, le nom de la méthode et le nom du type de message de demande pour modifier la force du signal Wi-Fi.
Obtenez une liste de tous les services disponibles en envoyant une requête
GET
à l'URL suivante.https://localhost:1443/devices/cvd-1/services
Ceci est un exemple de réponse.
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
Obtenez une liste de méthodes pour
WmediumdService
en envoyant une requêteGET
à l'URL suivante.https://localhost:1443/devices/cvd-1/services/WmediumdService
Ceci est un exemple de réponse.
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
Obtenez des informations sur les types de messages de demande et de réponse pour la méthode
SetTxpower
en envoyant une requêteGET
à l'URL suivante.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
Ceci est un exemple de réponse.
{"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
Obtenez des informations détaillées sur le type de message de requête
wmediumdserver.SetTxpowerRequest
en envoyant une requêteGET
à l'URL suivante.https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/type
Ceci est un exemple de réponse.
message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }
Envoyez une requête RPC au service
WmediumdService
pour modifier la force du signal Wi-Fi au niveau souhaité en envoyant une requêtePOST
à cette URL avec le corps de requête suivant.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
{"mac_address":"42:00:00:00:00:00", "tx_power":1}
Ceci est un exemple de réponse.
{}
Contrôler l'environnement à l'aide de la ligne de commande
Cette section décrit les sous-commandes disponibles pour la commande CLI cvd env
. Pour plus de détails, imprimez le message d'aide en utilisant cvd help env
.
Répertorier les services ou méthodes disponibles
Pour obtenir une liste de tous les services, utilisez cvd env ls
sans aucun argument.
cvd env ls
Pour obtenir une liste de toutes les méthodes d'un service, incluez le nom du service comme argument.
cvd env ls SERVICE_NAME
Pour obtenir des informations détaillées telles que les types de messages de demande ou de réponse d’une méthode, incluez le nom du service et le nom de la méthode.
cvd env ls SERVICE_NAME METHOD_NAME
Obtenez des informations détaillées sur les types de demandes et de réponses
Pour obtenir des informations détaillées sur un type de message de demande ou de réponse, utilisez la commande cvd env type
. Cette commande imprime tous les noms et types de chaque champ du message. Vous pouvez ensuite utiliser ces informations pour écrire un message proto au format JSON pour envoyer une requête RPC.
cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME
Envoyer une requête RPC pour apporter des modifications à l'environnement
Pour envoyer une requête RPC pour appeler une méthode d'un service avec un prototype au format JSON, utilisez la commande cvd enc call
. Lorsque la requête RPC se termine, l'interface imprime le message Rpc succeeded with OK status
et, si disponible, un message de réponse comprenant des valeurs.
cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO
Exemple de cas d'utilisation
Voici un exemple de cas d'utilisation de la commande CLI cvd env
pour modifier la force du signal Wi-Fi en appelant SetTxpower
.
Déterminez le nom du service, le nom de la méthode et le nom du type de message de demande pour modifier la force du signal Wi-Fi.
Obtenez une liste de tous les services disponibles.
cvd env ls (Omitted) { "services" : [ "OpenwrtControlService", "EchoService", "GnssGrpcProxy", "WmediumdService" ] }
Obtenez une liste de méthodes pour
WmediumdService
.cvd env ls WmediumdService (Omitted) { "methods" : [ "ListStations", "LoadConfig", "ReloadConfig", "SetCivicloc", "SetLci", "SetPosition", "SetSnr", "SetTxpower", "StartPcap", "StopPcap" ] }
Obtenez des informations sur les types de messages de demande et de réponse pour la méthode
SetTxpower
.cvd env ls WmediumdService SetTxpower (Omitted) { "request_type" : "wmediumdserver.SetTxpowerRequest", "response_type" : "google.protobuf.Empty" }
Obtenez des informations détaillées sur le type de message de demande
wmediumdserver.SetTxpowerRequest
.cvd env type WmediumdService wmediumdserver.SetTxpowerRequest (Omitted) message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }
Envoyez une requête RPC au service
WmediumdService
pour modifier la force du signal Wi-Fi au niveau souhaité.cvd env call WmediumdService SetTxpower "{mac_address:'42:00:00:00:00:00', tx_power:1}" (Omitted) Rpc succeeded with OK status {}