Cuttlefish: controllo dell'ambiente

In questa pagina viene descritto come controllare l'ambiente in un dispositivo Seppia utilizzando l'API REST o l'interfaccia a riga di comando. Ad esempio, puoi modificare Segnale Wi-Fi o aggiornamento della posizione GPS del dispositivo Seppia.

Servizi

Il comando cvd env fornisce i seguenti servizi per il controllo dell'ambiente Cuttlefish:

Servizi Descrizione
GnssGrpcProxy Controlla GNSS per la geolocalizzazione di Seppia funzionalità.
OpenwrtControlService Controlla Openwrt, un fornitore di AP Wi-Fi virtualizzati per la funzionalità Wi-Fi di Cuttlefish.
WmediumdService Controlla Wmediumd, un simulatore di veicoli wireless per la funzionalità Wi-Fi Cuttlefish.
CasimirControlService Controlla Casimir, un simulatore per dispositivi NFC esterni.

Controlla l'ambiente utilizzando l'API REST

Questa sezione descrive come controllare l'ambiente utilizzando l'API Rest tramite l'endpoint di servizio <https://localhost:1443>.

Elenca i servizi o i metodi disponibili

Per ricevere 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 il 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 all'URL seguente 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 nel messaggio. Puoi quindi utilizzare queste informazioni per scrivere un Messaggio di protocollo 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 protocollo in formato JSON, invia una richiesta POST al seguente URL con un ID dispositivo, un servizio e il nome del metodo. Il protocollo in formato JSON deve essere incluso nel del testo.

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 il Wi-Fi potenza del segnale chiamando SetTxpower.

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

    1. Per ottenere un elenco di tutti i servizi disponibili, invia una richiesta GET al seguente URL.

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

      Questo è un esempio di risposta.

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

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

      Questo è un esempio di risposta.

      {"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
      
    3. Per informazioni sui tipi di messaggi di richiesta e risposta per il metodo SetTxpower, invia 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 la richiesta wmediumdserver.SetTxpowerRequest tipo di messaggio inviando una richiesta GET al seguente URL.

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

    Questo è un esempio di risposta.

    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
    
  3. Invia una richiesta RPC al servizio WmediumdService per modificare il Wi-Fi di intensità del segnale 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

In questa sezione vengono descritti i sottocomandi disponibili per il comando dell'interfaccia a riga di comando cvd env. Per ulteriori dettagli, stampa il messaggio della guida utilizzando cvd help env.

Elenca i servizi o i metodi disponibili

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

cvd env ls

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

cvd env ls SERVICE_NAME

Per ottenere informazioni dettagliate, ad esempio i tipi di messaggi di richiesta o risposta di un metodo, includi 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 risposta, utilizza la 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 prompt in formato JSON messaggio di protocollo per l'invio di una richiesta RPC.

cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME

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, 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_PROTO

Caso d'uso di esempio

Di seguito è riportato un esempio di caso d'uso del comando dell'interfaccia a riga di comando cvd env per la modifica l'intensità del segnale Wi-Fi chiamando il numero SetTxpower.

  1. Determinare il nome del servizio, il nome del metodo e il tipo di messaggio di richiesta nome 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"
      ]
    }

    Ottenere informazioni sui tipi di messaggi di richiesta e risposta per SetTxpower.

    cvd env ls WmediumdService SetTxpower
    (Omitted)
    {
      "request_type" : "wmediumdserver.SetTxpowerRequest",
      "response_type" : "google.protobuf.Empty"
    }
  2. Ottieni informazioni dettagliate per la richiesta wmediumdserver.SetTxpowerRequest tipo di messaggio.

    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 il Wi-Fi l'intensità del segnale 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
    {}