Questa pagina descrive come controllare l'ambiente in un dispositivo Cuttlefish utilizzando l'API REST o l'interfaccia a riga di comando. Ad esempio, puoi modificare il segnale Wi-Fi o aggiornare la posizione GPS del dispositivo Cuttlefish.
Servizi
Il comando cvd env fornisce i seguenti servizi per controllare l'ambiente Cuttlefish:
| Servizi | Descrizione |
|---|---|
GnssGrpcProxy
|
Controlla il GNSS per la funzionalità di geolocalizzazione di Cuttlefish. |
OpenwrtControlService
|
Controlla Openwrt, un provider di AP Wi-Fi virtualizzato
per la funzionalità Wi-Fi di Cuttlefish. |
WmediumdService
|
Controlli Wmediumd, un simulatore di mezzo wireless
per la funzionalità Wi-Fi di Cuttlefish. |
CasimirControlService
|
Controlli Casimir, un simulatore per dispositivi NFC esterni. |
Controllare l'ambiente utilizzando l'API REST
Questa sezione descrive come controllare l'ambiente utilizzando l'API REST
tramite l'endpoint del servizio <https://localhost:1443>.
Elenco dei servizi o metodi disponibili
Per ottenere un elenco di tutti i servizi, invia una richiesta GET al seguente URL con
un ID dispositivo.
https://localhost:1443/devices/DEVICE_ID/services
Per ottenere un elenco di tutti i metodi per un servizio, invia una richiesta GET al
seguente URL con un ID dispositivo e il nome del servizio.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME
Per ottenere informazioni dettagliate su un metodo, ad esempio i tipi di messaggi di richiesta o risposta, invia una richiesta GET al seguente URL con un ID dispositivo, un nome del servizio e il nome del metodo.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Ottieni informazioni dettagliate sui tipi di richiesta e risposta
Per ottenere informazioni dettagliate su un tipo di messaggio di richiesta o risposta, invia una richiesta GET
al seguente URL con un ID dispositivo, un nome del servizio e il tipo di messaggio di richiesta o risposta. Vengono stampati tutti i nomi e i tipi di ciascun
campo del messaggio. Puoi quindi utilizzare queste informazioni per scrivere un messaggio proto in formato JSON per l'invio di una richiesta RPC.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type
Invia una richiesta RPC per apportare modifiche all'ambiente
Per inviare una richiesta RPC per chiamare un metodo di un servizio con un proto in formato JSON,
invia una richiesta POST al seguente URL con un ID dispositivo, un nome
servizio e il nome del metodo. Il proto in formato JSON deve essere incluso nel corpo.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Esempio di caso d'uso
Di seguito è riportato un esempio di caso d'uso dell'API Rest per modificare l'intensità del segnale Wi-Fi chiamando SetTxpower.
Determina il nome del servizio, il nome del metodo e il nome del tipo di messaggio di richiesta per modificare l'intensità del segnale Wi-Fi.
Per ottenere un elenco di tutti i servizi disponibili, invia una richiesta
GETal seguente URL.https://localhost:1443/devices/cvd-1/servicesQuesta è una risposta di esempio.
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}Per ottenere un elenco di metodi per
WmediumdService, invia una richiestaGETal seguente URL.https://localhost:1443/devices/cvd-1/services/WmediumdServiceQuesta è una risposta di esempio.
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}Per ottenere informazioni sui tipi di messaggi di richiesta e risposta per il metodo
SetTxpower, invia una richiestaGETal seguente URL.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpowerQuesta è una risposta di esempio.
{"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
Per ottenere informazioni dettagliate sul tipo di messaggio di richiesta
wmediumdserver.SetTxpowerRequest, invia una richiestaGETal seguente URL.https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/typeQuesta è una risposta di esempio.
message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }Invia una richiesta RPC al servizio
WmediumdServiceper modificare l'intensità del segnale Wi-Fi al livello desiderato inviando una richiestaPOSTa questo URL con il seguente corpo della richiesta.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower{"mac_address":"42:00:00:00:00:00", "tx_power":1}Questa è una risposta di esempio.
{}
Controllare l'ambiente utilizzando la riga di comando
Questa sezione descrive i sottocomandi disponibili per il comando CLI cvd env.
Per ulteriori dettagli, stampa il messaggio di aiuto utilizzando cvd help env.
Elenco dei servizi o metodi disponibili
Per ottenere un elenco di tutti i servizi, utilizza cvd env ls senza argomenti.
cvd env lsPer ottenere un elenco di tutti i metodi per un servizio, includi il nome del servizio come argomento.
cvd env ls SERVICE_NAMEPer ottenere informazioni dettagliate, ad esempio i tipi di messaggi di richiesta o risposta di un metodo, includi il nome del servizio e del metodo.
cvd env ls SERVICE_NAME METHOD_NAMEOttieni informazioni dettagliate sui tipi di richiesta e risposta
Per ottenere informazioni dettagliate su un tipo di messaggio di richiesta o risposta, utilizza il
comando cvd env type. Questo comando stampa tutti i nomi e i tipi di ciascun campo
nel messaggio. Puoi quindi utilizzare queste informazioni per scrivere un messaggio proto
formattato in JSON per l'invio di una richiesta RPC.
cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAMEInvia una richiesta RPC per apportare modifiche all'ambiente
Per inviare una richiesta RPC per chiamare un metodo di un servizio con un proto in formato JSON,
utilizza il comando cvd enc call. Quando la richiesta RPC termina, l'interfaccia
stampa il messaggio Rpc succeeded with OK status e, se disponibile, un messaggio
di risposta che include i valori.
cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTOEsempio di caso d'uso
Di seguito è riportato un esempio di caso d'uso del comando CLI cvd env per modificare
l'intensità del segnale Wi-Fi chiamando SetTxpower.
Determina il nome del servizio, il nome del metodo e il nome del tipo di messaggio di richiesta per modificare l'intensità del segnale Wi-Fi.
Visualizza un elenco di tutti i servizi disponibili.
cvd env ls (Omitted) { "services" : [ "OpenwrtControlService", "EchoService", "GnssGrpcProxy", "WmediumdService" ] }Ottieni un elenco di metodi per
WmediumdService.cvd env ls WmediumdService (Omitted) { "methods" : [ "ListStations", "LoadConfig", "ReloadConfig", "SetCivicloc", "SetLci", "SetPosition", "SetSnr", "SetTxpower", "StartPcap", "StopPcap" ] }Ricevi informazioni sui tipi di messaggi di richiesta e risposta per il metodo
SetTxpower.cvd env ls WmediumdService SetTxpower (Omitted) { "request_type" : "wmediumdserver.SetTxpowerRequest", "response_type" : "google.protobuf.Empty" }Ottieni informazioni dettagliate per il tipo di messaggio di richiesta
wmediumdserver.SetTxpowerRequest.cvd env type WmediumdService wmediumdserver.SetTxpowerRequest (Omitted) message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }Invia una richiesta RPC al servizio
WmediumdServiceper modificare l'intensità del segnale Wi-Fi al livello desiderato.cvd env call WmediumdService SetTxpower "{mac_address:'42:00:00:00:00:00', tx_power:1}" (Omitted) Rpc succeeded with OK status {}