Seppie: controllo dell'ambiente

Questa pagina descrive come controllare l'ambiente in un dispositivo Cuttlefish utilizzando l'API REST o l'interfaccia della 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 il controllo dell'ambiente Cuttlefish:

Servizi Descrizione
GnssGrpcProxy Controlla il GNSS per la funzione di geolocalizzazione delle seppie.
OpenwrtControlService Controlla Openwrt , un provider AP Wi-Fi virtualizzato per la funzionalità Wi-Fi Cuttlefish.
WmediumdService Controlla Wmediumd , un simulatore di supporto wireless per la funzione Wi-Fi Cuttlefish.

Controlla 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> .

Elenca i servizi o i metodi disponibili

Per ottenere un elenco di tutti i servizi, inviare 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, inviare 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 di risposta, inviare una richiesta GET al seguente URL con un ID dispositivo, un nome di 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 di risposta, inviare una richiesta GET al seguente URL con un ID dispositivo, un nome di servizio e il tipo di messaggio di richiesta o di risposta. Verranno stampati tutti i nomi e i tipi di ciascun campo nel messaggio. È quindi possibile 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 richiesta RPC per apportare modifiche all'ambiente

Per inviare una richiesta RPC per chiamare un metodo di un servizio con un protocollo formattato JSON, invia una richiesta POST al seguente URL con un ID dispositivo, un nome di servizio e il nome del metodo. Il protocollo in formato JSON deve essere incluso nel corpo.

https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME

Caso d'uso di esempio

Di seguito è riportato un esempio di caso d'uso dell'API Rest per modificare la potenza del segnale Wi-Fi chiamando SetTxpower .

  1. Determinare il nome del servizio, il nome del metodo e il nome del tipo di messaggio di richiesta per modificare la potenza del segnale Wi-Fi.

    1. Ottieni un elenco di tutti i servizi disponibili inviando una richiesta GET al seguente URL.

      https://localhost:1443/devices/cvd-1/services
      

      Questa è una risposta di esempio.

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. Ottieni un elenco di metodi per WmediumdService inviando una richiesta GET al seguente URL.

      https://localhost:1443/devices/cvd-1/services/WmediumdService
      

      Questa è una risposta di esempio.

      {"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
      
    3. Ottieni informazioni sui tipi di messaggi di richiesta e risposta per il metodo SetTxpower inviando una richiesta GET al seguente URL.

      https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
      

      Questa è una risposta di esempio.

      {"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
      
  2. Ottieni informazioni dettagliate per il tipo di messaggio di richiesta wmediumdserver.SetTxpowerRequest inviando una richiesta GET al seguente URL.

    https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/type
    

    Questa è una risposta di esempio.

    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
    
  3. Invia una richiesta RPC al servizio WmediumdService per modificare la potenza del segnale Wi-Fi al livello desiderato inviando una richiesta POST a 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.

    {}
    

Controlla l'ambiente utilizzando la riga di comando

Questa sezione descrive i sottocomandi disponibili per il comando CLI cvd env . Per ulteriori dettagli, stampare il messaggio di aiuto utilizzando cvd help env .

Elenca i servizi o i metodi disponibili

Per ottenere un elenco di tutti i servizi, utilizzare cvd env ls senza argomenti.

cvd env ls

Per ottenere un elenco di tutti i metodi per un servizio, includere il nome del servizio come argomento.

cvd env ls SERVICE_NAME

Per ottenere informazioni dettagliate come i tipi di messaggi di richiesta o di risposta di un metodo, includere il nome del servizio e il nome del metodo.

cvd env ls 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 di risposta, utilizzare il comando cvd env type . Questo comando stampa tutti i nomi e i tipi di ciascun campo nel messaggio. È quindi possibile utilizzare queste informazioni per scrivere un messaggio proto in formato JSON per l'invio di una richiesta RPC.

cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME

Invia richiesta RPC per apportare modifiche all'ambiente

Per inviare una richiesta RPC per chiamare un metodo di un servizio con un protocollo formattato JSON, utilizzare 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 comprensivo di valori.

cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO

Caso d'uso di esempio

Di seguito è riportato un esempio di caso d'uso del comando CLI cvd env per modificare la potenza del segnale Wi-Fi chiamando SetTxpower .

  1. Determinare il nome del servizio, il nome del metodo e il nome del tipo di messaggio di richiesta per modificare la potenza del segnale Wi-Fi.

    Ottieni 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"
      ]
    }
    

    Ottieni 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"
    }
    
  2. 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;
    }
    
  3. Invia una richiesta RPC al servizio WmediumdService per modificare la potenza 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
    {}