Mürekkep balığı: Ortam kontrolü

Bu sayfada, REST API veya komut satırı arayüzünü kullanarak Cuttlefish cihazındaki ortamın nasıl kontrol edileceği açıklanmaktadır. Örneğin, Wi-Fi sinyalini değiştirebilir veya Cuttlefish cihazının 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 Cuttlefish coğrafi konum özelliği için GNSS'yi kontrol eder.
OpenwrtControlService Cuttlefish Wi-Fi özelliği için sanallaştırılmış bir kablosuz AP sağlayıcısı olan Openwrt'yı kontrol eder.
WmediumdService Cuttlefish Wi-Fi özelliği için kablosuz ortam simülatörü olan Wmediumd'ı kontrol eder.
CasimirControlService Harici NFC cihazları için simülatör olan Casimir'ı kontrol eder.

REST API'yi kullanarak ortamı kontrol etme

Bu bölümde, <https://localhost:1443> hizmet uç noktası üzerinden Rest API kullanılarak ortamın nasıl kontrol edileceği açıklanmaktadır.

Kullanılabilir hizmetleri veya yöntemleri listeleme

Tüm hizmetlerin listesini almak için aşağıdaki URL'ye cihaz kimliğiyle birlikte GET isteği gönderin.

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

Bir hizmetle ilgili tüm yöntemlerin listesini almak için aşağıdaki URL'ye cihaz kimliği ve hizmet adıyla birlikte bir GET isteği gönderin.

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

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

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ü hakkında ayrıntılı bilgi edinmek için aşağıdaki URL'ye cihaz kimliği, hizmet adı ve istek ya da yanıt mesajı türü ile birlikte bir GET istek gönderin. Bu işlem, iletideki her alanın adını ve türünü yazdırır. Daha sonra bu bilgileri kullanarak bir RPC isteği göndermek için JSON biçimli bir proto mesajı yazabilirsiniz.

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

Bir hizmetin yöntemini JSON biçimli bir proto ile çağırmak için RPC isteği göndermek üzere aşağıdaki URL'ye cihaz kimliği, hizmet adı ve yöntem adıyla birlikte 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ılarak kablosuz sinyal gücünü değiştirmek için Rest API'nin kullanım alanına dair bir örnek 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. Aşağıdaki URL'ye GET isteği göndererek kullanılabilen tüm hizmetlerin listesini alın.

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

      Bu, örnek bir yanıttır.

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. Aşağıdaki URL'ye 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 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, örnek bir yanıttır.

      {"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
      
  2. Aşağıdaki URL'ye 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. Aşağıdaki istek gövdesiyle bu URL'ye bir POST isteği göndererek WmediumdService hizmetine RPC isteği gönderip Wi-Fi sinyal gücünü istediğiniz düzeye getirin.

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

    Bu, örnek bir yanıttır.

    {}
    

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

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

Kullanılabilir hizmetleri veya yöntemleri listeleme

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

cvd env ls

Bir hizmetle ilgili tüm yöntemlerin listesini almak için hizmetin adını bağımsız değişken olarak ekleyin.

cvd env ls SERVICE_NAME

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

cvd env ls 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ü hakkında ayrıntılı bilgi edinmek için cvd env type komutunu kullanın. Bu komut, iletideki her alanın adını ve türünü yazdırır. Daha sonra bu bilgileri kullanarak bir RPC isteği göndermek için JSON biçimli bir proto mesajı yazabilirsiniz.

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 hizmetin yöntemini çağırmak için RPC isteği göndermek üzere cvd enc call komutunu kullanın. RPC isteği sonlandırıldığında 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

Örnek kullanım alanı

Aşağıda, SetTxpower çağrılarak kablosuz sinyal gücünü değiştirmek için kullanılan cvd env KSA komutunun ö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.

    Kullanılabilir tüm hizmetlerin listesini alma

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

    SetTxpower yöntemi için istek ve yanıt mesajı türleri hakkında bilgi edinin.

    cvd env ls WmediumdService SetTxpower
    (Omitted)
    {
      "request_type" : "wmediumdserver.SetTxpowerRequest",
      "response_type" : "google.protobuf.Empty"
    }
  2. wmediumdserver.SetTxpowerRequest isteği 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 getirmek 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
    {}