Sotong: Kontrol lingkungan

Halaman ini menjelaskan cara mengontrol lingkungan di perangkat Cuttlefish menggunakan REST API atau antarmuka command line. Misalnya, Anda dapat memodifikasi Sinyal Wi-Fi atau perbarui lokasi GPS perangkat Cuttlefish.

Layanan

Perintah cvd env menyediakan layanan berikut untuk mengontrol Lingkungan cumi-cumi:

Layanan Deskripsi
GnssGrpcProxy Mengontrol GNSS untuk geolokasi Cuttlefish aplikasi baru.
OpenwrtControlService Mengontrol Openwrt, AP Wi-Fi tervirtualisasi penyedia layanan untuk fitur Wi-Fi Cuttlefish.
WmediumdService Mengontrol Wmediumd, simulator media nirkabel untuk fitur Wi-Fi Sotong.

Mengontrol lingkungan menggunakan REST API

Bagian ini menjelaskan cara mengontrol lingkungan menggunakan Rest API melalui endpoint layanan <https://localhost:1443>.

Mencantumkan layanan atau metode yang tersedia

Untuk mendapatkan daftar semua layanan, kirim permintaan GET ke URL berikut dengan ID perangkat.

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

Untuk mendapatkan daftar semua metode untuk suatu layanan, kirim permintaan GET ke URL berikut dengan ID perangkat dan nama layanan.

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

Untuk mendapatkan informasi mendetail tentang suatu metode, seperti permintaan atau respons jenis pesan, kirim permintaan GET ke URL berikut dengan ID perangkat, nama layanan, dan nama metode.

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

Mendapatkan informasi mendetail mengenai jenis permintaan dan respons

Untuk mendapatkan informasi mendetail tentang jenis pesan respons atau permintaan, kirim GET permintaan ke URL berikut dengan ID perangkat, nama layanan, dan jenis pesan respons atau permintaan. Perintah ini akan mencetak semua nama dan jenis dalam pesan. Anda kemudian dapat menggunakan informasi ini untuk menulis Pesan proto berformat JSON untuk mengirim permintaan RPC.

https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type

Kirim permintaan RPC untuk membuat perubahan pada lingkungan

Untuk mengirim permintaan RPC guna memanggil metode layanan dengan proto berformat JSON, kirim permintaan POST ke URL berikut dengan ID perangkat, yaitu layanan nama, dan nama metode. Protokol berformat JSON harus disertakan dalam {i>body <i}itu.

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

Contoh kasus penggunaan

Berikut adalah contoh kasus penggunaan Rest API untuk mengubah Wi-Fi kekuatan sinyal dengan memanggil SetTxpower.

  1. Menentukan nama layanan, nama metode, dan jenis pesan permintaan untuk memodifikasi kekuatan sinyal Wi-Fi.

    1. Dapatkan daftar semua layanan yang tersedia dengan mengirim permintaan GET ke URL berikut.

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

      Ini adalah contoh respons.

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. Dapatkan daftar metode untuk WmediumdService dengan mengirim permintaan GET ke URL berikut.

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

      Ini adalah contoh respons.

      {"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
      
    3. Dapatkan informasi tentang jenis pesan permintaan dan respons untuk SetTxpower dengan mengirim permintaan GET ke URL berikut.

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

      Ini adalah contoh respons.

      {"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
      
  2. Dapatkan informasi mendetail untuk permintaan wmediumdserver.SetTxpowerRequest dengan mengirim permintaan GET ke URL berikut.

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

    Ini adalah contoh respons.

    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
    
  3. Kirim permintaan RPC ke layanan WmediumdService untuk mengubah Wi-Fi kekuatan sinyal ke tingkat yang diinginkan dengan mengirimkan permintaan POST ke URL ini dengan isi permintaan berikut.

    https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
    
    {"mac_address":"42:00:00:00:00:00", "tx_power":1}
    

    Ini adalah contoh respons.

    {}
    

Mengontrol lingkungan menggunakan command line

Bagian ini menjelaskan subperintah yang tersedia untuk perintah CLI cvd env. Untuk detail selengkapnya, cetak pesan bantuan menggunakan cvd help env.

Mencantumkan layanan atau metode yang tersedia

Untuk mendapatkan daftar semua layanan, gunakan cvd env ls tanpa argumen apa pun.

cvd env ls

Untuk mendapatkan daftar semua metode layanan, sertakan nama metode layanan sebagai argumen.

cvd env ls SERVICE_NAME

Untuk mendapatkan informasi terperinci seperti permintaan atau respons, jenis pesan , sertakan nama layanan dan nama metode.

cvd env ls SERVICE_NAME METHOD_NAME

Mendapatkan informasi mendetail mengenai jenis permintaan dan respons

Untuk mendapatkan informasi mendetail tentang jenis pesan permintaan atau respons, gunakan Perintah cvd env type. Perintah ini mencetak semua nama dan jenis setiap {i>field<i} dalam pesan. Anda kemudian dapat menggunakan informasi ini untuk menulis file berformat JSON untuk mengirim permintaan RPC.

cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME

Kirim permintaan RPC untuk membuat perubahan pada lingkungan

Untuk mengirim permintaan RPC guna memanggil metode layanan dengan proto berformat JSON, gunakan perintah cvd enc call. Ketika permintaan RPC dihentikan, antarmuka mencetak pesan Rpc succeeded with OK status dan, jika tersedia, respons pesan yang menyertakan nilai.

cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO

Contoh kasus penggunaan

Berikut adalah contoh kasus penggunaan perintah CLI cvd env untuk melakukan modifikasi kekuatan sinyal Wi-Fi dengan memanggil SetTxpower.

  1. Menentukan nama layanan, nama metode, dan jenis pesan permintaan untuk memodifikasi kekuatan sinyal Wi-Fi.

    Dapatkan daftar semua layanan yang tersedia.

    cvd env ls
    (Omitted)
    {
      "services" :
      [
        "OpenwrtControlService",
        "EchoService",
        "GnssGrpcProxy",
        "WmediumdService"
      ]
    }
    

    Dapatkan daftar metode untuk WmediumdService.

    cvd env ls WmediumdService
    (Omitted)
    {
      "methods" :
      [
        "ListStations",
        "LoadConfig",
        "ReloadConfig",
        "SetCivicloc",
        "SetLci",
        "SetPosition",
        "SetSnr",
        "SetTxpower",
        "StartPcap",
        "StopPcap"
      ]
    }
    

    Dapatkan informasi tentang jenis pesan permintaan dan respons untuk Metode SetTxpower.

    cvd env ls WmediumdService SetTxpower
    (Omitted)
    {
      "request_type" : "wmediumdserver.SetTxpowerRequest",
      "response_type" : "google.protobuf.Empty"
    }
    
  2. Dapatkan informasi mendetail untuk permintaan wmediumdserver.SetTxpowerRequest .

    cvd env type WmediumdService wmediumdserver.SetTxpowerRequest
    (Omitted)
    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
    
  3. Kirim permintaan RPC ke layanan WmediumdService untuk mengubah Wi-Fi kekuatan sinyal ke tingkat yang diinginkan.

    cvd env call WmediumdService SetTxpower "{mac_address:'42:00:00:00:00:00', tx_power:1}"
    (Omitted)
    Rpc succeeded with OK status
    {}