Mürekkep balığı: Ortam kontrolü

Bu sayfada, REST API'yi veya komut satırı arayüzünü kullanarak Cuttlefish cihazındaki ortamın nasıl kontrol edileceği açıklanmaktadır. Örneğin, Cuttlefish cihazının kablosuz sinyalini değiştirebilir veya GPS konumunu güncelleyebilirsiniz.

Hizmetler

cvd env komutu, Cuttlefish ortamını kontrol etmek için aşağıdaki hizmetleri sağlar:

Hizmetler Açıklama
GnssGrpcProxy Mürekkepbalığı coğrafi konum özelliği için GNSS'yi kontrol eder.
OpenwrtControlService Sanallaştırılmış bir Kablosuz erişim noktası olan Openwrt'i kontrol eder sağlayıcım var.
WmediumdService Mürekkep Balığı kablosuz özelliği için kablosuz ortam simülasyon aracı olan Wmediumd'yi kontrol eder.
CasimirControlService Harici NFC için bir simülatör olan Casimir öğesini kontrol eder cihazlar.

REST API'yi kullanarak ortamı kontrol etme

Bu bölümde, Rest API'yi kullanarak ortamın nasıl kontrol edileceği açıklanmaktadır <https://localhost:1443> hizmet uç noktası aracılığıyla yapılıyor.

Kullanılabilir hizmetleri veya yöntemleri listeleme

Tüm hizmetlerin listesini almak için aşağıdaki URL'ye şu değeri içeren bir GET isteği gönderin: Cihaz kimliği.

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

Bir hizmete yönelik tüm yöntemlerin listesini almak için şuraya bir GET isteği gönderin: aşağıdaki URL'yi eklemeniz gerekir.

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

Bir yöntemle ilgili ayrıntılı bilgi (ör. istek veya yanıt) almak için mesaj türlerini öğrenmek için aşağıdaki URL'ye cihaz kimliğiyle birlikte bir GET isteği gönderin, hizmet adı ve yöntem adı girilmelidir.

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

İstek ve yanıt türleri hakkında ayrıntılı bilgi edinme

Bir istek veya yanıt mesajı türüyle ilgili ayrıntılı bilgi edinmek için aşağıdaki URL'ye cihaz kimliği, hizmet adı ve istek veya yanıt mesajı türünü içeren bir GETistek gönderin. Bu işlem, iletideki tüm alanların adlarını ve türlerini yazdırır. Daha sonra bu bilgileri kullanarak RPC isteği göndermek için kullanılan JSON biçimli proto mesajı.

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

Ortamda değişiklik yapmak için RPC isteği gönderme

JSON biçimli bir proto ile bir hizmetin yöntemini çağırmak için RPC isteği göndermek üzere aşağıdaki URL'ye cihaz kimliği, hizmet adı ve yöntem adını içeren bir POST isteği gönderin. JSON biçimli proto, gövdeye dahil edilmelidir.

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

Örnek kullanım alanı

Aşağıda, SetTxpower çağrısı yaparak kablosuz sinyal gücünü değiştirmek için Rest API'nin kullanıldığı örnek bir kullanım alanı verilmiştir.

  1. Kablosuz sinyal gücünü değiştirmek için hizmet adını, yöntem adını ve istek mesajı türü adını belirleyin.

    1. Şuna bir GET isteği göndererek kullanılabilir tüm hizmetlerin listesini alabilirsiniz: ekleyin.

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

      Bu, örnek bir yanıttır.

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. Aşağıdaki URL'ye bir GET isteği göndererek WmediumdService için yöntemlerin listesini alın.

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

      Bu, örnek bir yanıttır.

      {"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
      
    3. Aşağıdaki URL'ye bir GET isteği göndererek SetTxpower yöntemi için istek ve yanıt mesajı türleri hakkında bilgi edinin.

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

      Bu bir örnek yanıttır.

      {"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
      
  2. Aşağıdaki URL'ye bir GET isteği göndererek wmediumdserver.SetTxpowerRequest istek mesajı türü hakkında ayrıntılı bilgi edinin.

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

    Bu, örnek bir yanıttır.

    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
    
  3. Kablosuz ağı değiştirmek için WmediumdService hizmetine RPC isteği gönderin bu URL'ye bir POST isteği göndererek istenen sinyale kadar sinyal gücünü artırın aşağıdaki istek gövdesiyle değiştirebilirsiniz.

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

    Bu bir örnek yanıttır.

    {}
    

Komut satırını kullanarak ortamı kontrol etme

Bu bölümde, cvd env CLI komutu için kullanılabilen alt komutlar açıklanmaktadır. Daha fazla bilgi için cvd help env simgesini kullanarak yardım mesajını yazdırın.

Kullanılabilir hizmetleri veya yöntemleri listeleme

Tüm hizmetlerin listesini almak için cvd env ls öğesini bağımsız değişken olmadan kullanın.

cvd env ls

Bir hizmete yönelik tüm yöntemlerin listesini almak için hizmeti kullanabilirsiniz.

cvd env ls SERVICE_NAME

Bir yöntemin istek veya yanıt mesajı türleri gibi ayrıntılı bilgiler almak için hizmet adını ve yöntem adını ekleyin.

cvd env ls SERVICE_NAME METHOD_NAME

İstek ve yanıt türleriyle ilgili ayrıntılı bilgi edinin

Bir istek veya yanıt mesajı türüyle ilgili ayrıntılı bilgi edinmek için cvd env type komutudur. Bu komut, her alanın tüm adlarını ve türlerini yazdırır sağlayabilirsiniz. Ardından, RPC isteği göndermek için JSON biçimli bir proto mesajı yazmak üzere bu bilgileri kullanabilirsiniz.

cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME

Ortamda değişiklik yapmak için RPC isteği gönderme

JSON biçimli bir proto ile bir hizmetin yöntemini çağırmak için RPC isteği göndermek üzere cvd enc call komutunu kullanın. RPC isteği sona erdiğinde arayüz Rpc succeeded with OK status mesajını ve varsa değerleri içeren bir yanıt mesajını yazdırır.

cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO

Kullanım alanı örneği

Aşağıda, SetTxpower çağrısı yaparak kablosuz sinyal gücünü değiştirmek için cvd env CLI komutunun örnek bir kullanım alanı verilmiştir.

  1. Hizmet adını, yöntem adını ve istek mesajı türünü belirleme kablosuz sinyal gücünü değiştirme adı.

    Kullanılabilir tüm hizmetlerin listesini alın.

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

    WmediumdService için yöntemlerin listesini alın.

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

    Şunun için istek ve yanıt mesajı türleri hakkında bilgi edinin: SetTxpower yöntemini çağırın.

    cvd env ls WmediumdService SetTxpower
    (Omitted)
    {
      "request_type" : "wmediumdserver.SetTxpowerRequest",
      "response_type" : "google.protobuf.Empty"
    }
  2. wmediumdserver.SetTxpowerRequest istek mesajı türü hakkında ayrıntılı bilgi edinin.

    cvd env type WmediumdService wmediumdserver.SetTxpowerRequest
    (Omitted)
    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
  3. Wi-Fi sinyal gücünü istenen seviyeye değiştirmek için WmediumdService hizmetine RPC isteği gönderin.

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