कटलफ़िश: एनवायरमेंट कंट्रोल

इस पेज में बताया गया है कि REST API या कमांड लाइन इंटरफ़ेस का इस्तेमाल करके, कटलफ़िश डिवाइस में एनवायरमेंट को कैसे कंट्रोल किया जाता है. उदाहरण के लिए, वाई-फ़ाई सिग्नल में बदलाव किया जा सकता है या कटलफ़िश डिवाइस की जीपीएस लोकेशन अपडेट की जा सकती है.

सेवाएं

cvd env कमांड, कटलफ़िश के एनवायरमेंट को कंट्रोल करने के लिए ये सेवाएं देता है:

सेवाएं ब्यौरा
GnssGrpcProxy कटलफ़िश जियोलोकेशन की सुविधा के लिए जीएनएसएस को कंट्रोल करती है.
OpenwrtControlService Openwrt को कंट्रोल करती है. यह कटलफ़िश वाई-फ़ाई की सुविधा के लिए, वर्चुअलाइज़ की गई वाई-फ़ाई एपी सेवा देने वाली कंपनी है.
WmediumdService Cuttlefish वाई-फ़ाई सुविधा के लिए, वायरलेस मीडियम सिम्युलेटर Wmediumd को कंट्रोल करता है.
CasimirControlService Casimir को कंट्रोल करता है. यह बाहरी एनएफ़सी डिवाइसों का सिम्युलेटर है.

REST API का इस्तेमाल करके, एनवायरमेंट को कंट्रोल करना

इस सेक्शन में बताया गया है कि <https://localhost:1443> सर्विस एंडपॉइंट की मदद से, Trust API का इस्तेमाल करके एनवायरमेंट को कैसे कंट्रोल किया जाता है.

उपलब्ध सेवाओं या तरीकों की सूची बनाएं

सभी सेवाओं की सूची पाने के लिए, डिवाइस आईडी के साथ नीचे दिए गए यूआरएल पर GET अनुरोध भेजें.

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

किसी सेवा के सभी तरीकों की सूची पाने के लिए, डिवाइस आईडी और सेवा के नाम के साथ, यहां दिए गए यूआरएल पर GET अनुरोध भेजें.

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

किसी तरीके के बारे में ज़्यादा जानकारी पाने के लिए, डिवाइस आईडी, सेवा का नाम, और तरीके का नाम डालकर, नीचे दिए गए यूआरएल पर GET अनुरोध भेजें. जैसे, अनुरोध या जवाब के मैसेज टाइप.

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

अनुरोध और रिस्पॉन्स के टाइप के बारे में ज़्यादा जानकारी पाएं

अनुरोध या रिस्पॉन्स मैसेज टाइप के बारे में ज़्यादा जानकारी पाने के लिए, यहां दिए गए यूआरएल पर GET अनुरोध भेजें. साथ ही, डिवाइस आईडी, सेवा का नाम, और अनुरोध या रिस्पॉन्स मैसेज टाइप की जानकारी दें. इससे मैसेज में मौजूद हर फ़ील्ड के सभी नाम और टाइप प्रिंट हो जाते हैं. इसके बाद, इस जानकारी का इस्तेमाल करके RPC अनुरोध भेजने के लिए JSON-फ़ॉर्मैट किया गया प्रोटो मैसेज लिखा जा सकता है.

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

एनवायरमेंट में बदलाव करने के लिए, आरपीसी अनुरोध भेजें

JSON के फ़ॉर्मैट वाले प्रोटोकॉल से किसी सेवा के तरीके को कॉल करने के लिए, RPC अनुरोध भेजने के लिए डिवाइस आईडी, सेवा का नाम, और तरीके के नाम के साथ इस यूआरएल पर POST अनुरोध भेजें. JSON फ़ॉर्मैट में प्रोटो को मुख्य हिस्से में शामिल करना ज़रूरी है.

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

इस्तेमाल का उदाहरण

यहां SetTxpower को कॉल करके, वाई-फ़ाई सिग्नल की क्षमता में बदलाव करने के लिए, Rest API के इस्तेमाल का उदाहरण दिया गया है.

  1. वाई-फ़ाई सिग्नल की क्षमता में बदलाव करने के लिए सेवा का नाम, तरीका का नाम, और अनुरोध वाले मैसेज का नाम तय करें.

    1. नीचे दिए गए यूआरएल पर GET अनुरोध भेजकर, सभी उपलब्ध सेवाओं की सूची पाएं.

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

      यह जवाब का एक उदाहरण है.

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. WmediumdService के लिए तरीकों की सूची पाने के लिए, नीचे दिए गए यूआरएल पर GET का अनुरोध भेजें.

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

      यह जवाब का एक उदाहरण है.

      {"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
      
    3. SetTxpower तरीके के लिए किए गए अनुरोध और रिस्पॉन्स वाले मैसेज के टाइप के बारे में जानकारी पाने के लिए, नीचे दिए गए यूआरएल पर GET अनुरोध भेजें.

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

      यह जवाब का एक उदाहरण है.

      {"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
      
  2. wmediumdserver.SetTxpowerRequest अनुरोध मैसेज टाइप के बारे में ज़्यादा जानकारी पाने के लिए, नीचे दिए गए यूआरएल पर GET अनुरोध भेजें.

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

    यह जवाब का एक उदाहरण है.

    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
    
  3. वाई-फ़ाई सिग्नल की क्वालिटी में अपने हिसाब से बदलाव करने के लिए, WmediumdService सेवा को एक RPC अनुरोध भेजें. इसके लिए, नीचे दिए गए अनुरोध के मुख्य हिस्से के साथ इस यूआरएल पर POST का अनुरोध भेजें.

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

    यह जवाब का एक उदाहरण है.

    {}
    

कमांड लाइन का इस्तेमाल करके, एनवायरमेंट को कंट्रोल करें

इस सेक्शन में, cvd env सीएलआई कमांड के लिए उपलब्ध सब-कमांड के बारे में बताया गया है. ज़्यादा जानकारी के लिए, cvd help env का इस्तेमाल करके सहायता मैसेज प्रिंट करें.

उपलब्ध सेवाओं या तरीकों की सूची बनाना

सभी सेवाओं की सूची पाने के लिए, बिना किसी तर्क के cvd env ls का इस्तेमाल करें.

cvd env ls

किसी सेवा के सभी तरीकों की सूची पाने के लिए, आर्ग्युमेंट के तौर पर सेवा का नाम शामिल करें.

cvd env ls SERVICE_NAME

किसी तरीके के अनुरोध या जवाब के मैसेज टाइप जैसी ज़्यादा जानकारी पाने के लिए, सेवा का नाम और तरीके का नाम शामिल करें.

cvd env ls SERVICE_NAME METHOD_NAME

अनुरोध और जवाब के टाइप के बारे में ज़्यादा जानकारी पाना

अनुरोध या रिस्पॉन्स मैसेज टाइप के बारे में ज़्यादा जानकारी पाने के लिए, cvd env type कमांड का इस्तेमाल करें. यह कमांड, मैसेज में मौजूद हर फ़ील्ड के सभी नाम और टाइप को प्रिंट करता है. इसके बाद, इस जानकारी का इस्तेमाल करके, आरपीसी अनुरोध भेजने के लिए, JSON फ़ॉर्मैट में प्रोटो मैसेज लिखा जा सकता है.

cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME

एनवायरमेंट में बदलाव करने के लिए आरपीसी अनुरोध भेजना

JSON के फ़ॉर्मैट किए गए प्रोटो की मदद से किसी सेवा के तरीके को कॉल करने के लिए, RPC अनुरोध भेजने के लिए cvd enc call कमांड का इस्तेमाल करें. आरपीसी अनुरोध के खत्म होने पर इंटरफ़ेस, Rpc succeeded with OK status मैसेज को प्रिंट करता है. साथ ही, उपलब्ध होने पर रिस्पॉन्स मैसेज भी प्रिंट करता है, जिसमें वैल्यू भी शामिल होती हैं.

cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO

इस्तेमाल के उदाहरण

यहां cvd env सीएलआई कमांड के इस्तेमाल का उदाहरण दिया गया है. इसकी मदद से, SetTxpower को कॉल करके वाई-फ़ाई सिग्नल की क्षमता में बदलाव किया जा सकता है.

  1. वाई-फ़ाई सिग्नल की क्षमता में बदलाव करने के लिए सेवा का नाम, तरीका का नाम, और अनुरोध वाले मैसेज का नाम तय करें.

    सभी उपलब्ध सेवाओं की सूची पाएं.

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

    WmediumdService के लिए तरीकों की सूची पाएं.

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

    SetTxpower तरीके के लिए, अनुरोध और रिस्पॉन्स मैसेज टाइप के बारे में जानकारी पाएं.

    cvd env ls WmediumdService SetTxpower
    (Omitted)
    {
      "request_type" : "wmediumdserver.SetTxpowerRequest",
      "response_type" : "google.protobuf.Empty"
    }
  2. wmediumdserver.SetTxpowerRequest अनुरोध के मैसेज के टाइप के बारे में ज़्यादा जानकारी पाएं.

    cvd env type WmediumdService wmediumdserver.SetTxpowerRequest
    (Omitted)
    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
  3. WmediumdService सेवा को आरपीसी अनुरोध भेजें, ताकि वाई-फ़ाई सिग्नल की क्षमता को अपनी पसंद के लेवल पर बदला जा सके.

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