Cuttlefish: การควบคุมสภาพแวดล้อม

หน้านี้อธิบายวิธีควบคุมสภาพแวดล้อมในอุปกรณ์ Cuttlefish โดยใช้ REST API หรืออินเทอร์เฟซบรรทัดคำสั่ง เช่น คุณสามารถแก้ไข สัญญาณ Wi-Fi หรืออัปเดตตำแหน่ง GPS ของอุปกรณ์ Cuttlefish ได้

บริการ

คำสั่ง cvd env จะให้บริการต่อไปนี้สำหรับการควบคุมสภาพแวดล้อม Cuttlefish

บริการ คำอธิบาย
GnssGrpcProxy ควบคุม GNSS สำหรับฟีเจอร์ตำแหน่งทางภูมิศาสตร์ของ Cuttlefish
OpenwrtControlService ควบคุม Openwrt ซึ่งเป็นผู้ให้บริการ AP ของ Wi-Fi แบบเสมือน สำหรับฟีเจอร์ Wi-Fi ของ Cuttlefish
WmediumdService ควบคุม Wmediumd ซึ่งเป็นโปรแกรมจำลองสื่อไร้สาย สำหรับฟีเจอร์ Wi-Fi ของ Cuttlefish
CasimirControlService ควบคุม Casimir ซึ่งเป็นโปรแกรมจำลองสำหรับอุปกรณ์ NFC ภายนอก

ควบคุมสภาพแวดล้อมโดยใช้ REST API

ส่วนนี้อธิบายวิธีควบคุมสภาพแวดล้อมโดยใช้ REST API ผ่านปลายทางบริการ <https://localhost:1443>

แสดงรายการบริการหรือวิธีการที่มี

หากต้องการดูรายการบริการทั้งหมด ให้ส่งGETคำขอไปยัง URL ต่อไปนี้พร้อมรหัสอุปกรณ์

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

หากต้องการดูรายการเมธอดทั้งหมดสำหรับบริการ ให้ส่งคำขอ GET ไปยัง URL ต่อไปนี้พร้อมรหัสอุปกรณ์และชื่อบริการ

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

หากต้องการดูข้อมูลโดยละเอียดเกี่ยวกับเมธอด เช่น ประเภทข้อความคำขอหรือการตอบกลับ ให้ส่งGETคำขอไปยัง URL ต่อไปนี้พร้อมด้วยรหัสอุปกรณ์ ชื่อบริการ และชื่อเมธอด

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

ดูข้อมูลโดยละเอียดเกี่ยวกับประเภทคำขอและการตอบกลับ

หากต้องการดูข้อมูลโดยละเอียดเกี่ยวกับประเภทข้อความคำขอหรือการตอบกลับ ให้ส่งคำขอไปยัง URL ต่อไปนี้พร้อมรหัสอุปกรณ์ ชื่อบริการ และประเภทข้อความคำขอหรือการตอบกลับGET ซึ่งจะพิมพ์ชื่อและประเภทของแต่ละ ฟิลด์ในข้อความ จากนั้นคุณจะใช้ข้อมูลนี้เพื่อเขียนข้อความ Proto ในรูปแบบ JSON สำหรับส่งคำขอ RPC ได้

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

ส่งคำขอ RPC เพื่อทำการเปลี่ยนแปลงสภาพแวดล้อม

หากต้องการส่งคำขอ RPC เพื่อเรียกใช้เมธอดของบริการด้วย Proto ที่จัดรูปแบบ JSON ให้ส่งคำขอ POST ไปยัง URL ต่อไปนี้พร้อมรหัสอุปกรณ์ ชื่อบริการ และชื่อเมธอด ต้องรวม Proto ที่จัดรูปแบบ JSON ไว้ใน เนื้อหา

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

ตัวอย่างกรณีการใช้งาน

ต่อไปนี้เป็นตัวอย่างกรณีการใช้งานของ Rest API สำหรับการแก้ไขความแรงของสัญญาณ Wi-Fi โดยการเรียกใช้ SetTxpower

  1. กำหนดชื่อบริการ ชื่อเมธอด และชื่อประเภทข้อความคำขอ สำหรับการแก้ไขความแรงของสัญญาณ Wi-Fi

    1. รับรายการบริการทั้งหมดที่พร้อมใช้งานโดยส่งGETคำขอไปยัง URL ต่อไปนี้

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

      นี่คือตัวอย่างคำตอบ

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. รับรายการเมธอดสำหรับ WmediumdService โดยส่งคำขอ GET ไปยัง URL ต่อไปนี้

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

      นี่คือตัวอย่างคำตอบ

      {"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
      
    3. ดูข้อมูลเกี่ยวกับประเภทข้อความคำขอและการตอบกลับสำหรับเมธอด SetTxpower ได้โดยส่งคำขอ GET ไปยัง URL ต่อไปนี้

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

      นี่คือตัวอย่างคำตอบ

      {"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
      
  2. ดูข้อมูลโดยละเอียดสำหรับwmediumdserver.SetTxpowerRequest request message type โดยส่งคำขอ GET ไปยัง URL ต่อไปนี้

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

    นี่คือตัวอย่างคำตอบ

    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
    
  3. ส่งคำขอ RPC ไปยังบริการ WmediumdService เพื่อแก้ไขความแรงของสัญญาณ Wi-Fi ให้อยู่ในระดับที่ต้องการโดยส่งคำขอ POST ไปยัง URL นี้ พร้อมกับเนื้อหาคำขอต่อไปนี้

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

    นี่คือตัวอย่างคำตอบ

    {}
    

ควบคุมสภาพแวดล้อมโดยใช้บรรทัดคำสั่ง

ส่วนนี้อธิบายคำสั่งย่อยที่ใช้ได้กับคำสั่ง cvd env CLI หากต้องการทราบรายละเอียดเพิ่มเติม ให้พิมพ์ข้อความช่วยเหลือโดยใช้ cvd help env

แสดงรายการบริการหรือวิธีการที่มี

หากต้องการดูรายการบริการทั้งหมด ให้ใช้ cvd env ls โดยไม่มีอาร์กิวเมนต์

cvd env ls

หากต้องการดูรายการเมธอดทั้งหมดสำหรับบริการ ให้ระบุชื่อของ บริการเป็นอาร์กิวเมนต์

cvd env ls SERVICE_NAME

หากต้องการดูข้อมูลโดยละเอียด เช่น ประเภทข้อความคำขอหรือการตอบกลับของ เมธอด ให้ระบุชื่อบริการและชื่อเมธอด

cvd env ls SERVICE_NAME METHOD_NAME

ดูข้อมูลโดยละเอียดเกี่ยวกับประเภทคำขอและการตอบกลับ

หากต้องการดูข้อมูลโดยละเอียดเกี่ยวกับประเภทข้อความคำขอหรือการตอบกลับ ให้ใช้คำสั่ง cvd env type คำสั่งนี้จะพิมพ์ชื่อและประเภทของแต่ละฟิลด์ ในข้อความ จากนั้นคุณจะใช้ข้อมูลนี้เพื่อเขียนข้อความ Proto ที่จัดรูปแบบ JSON สำหรับส่งคำขอ RPC ได้

cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME

ส่งคำขอ RPC เพื่อทำการเปลี่ยนแปลงสภาพแวดล้อม

หากต้องการส่งคำขอ RPC เพื่อเรียกใช้เมธอดของบริการที่มี Proto รูปแบบ JSON ให้ใช้คำสั่ง cvd enc call เมื่อคำขอ RPC สิ้นสุด อินเทอร์เฟซจะ พิมพ์ข้อความ Rpc succeeded with OK status และข้อความตอบกลับ (หากมี) รวมถึงค่า

cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO

ตัวอย่างกรณีการใช้งาน

ต่อไปนี้คือตัวอย่างกรณีการใช้งานคำสั่ง cvd env CLI สำหรับการแก้ไข ความแรงของสัญญาณ Wi-Fi โดยการเรียกใช้ SetTxpower

  1. กำหนดชื่อบริการ ชื่อเมธอด และชื่อประเภทข้อความคำขอ สำหรับการแก้ไขความแรงของสัญญาณ Wi-Fi

    ดูรายการบริการทั้งหมดที่พร้อมใช้งาน

    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. ส่งคำขอ RPC ไปยังบริการ WmediumdService เพื่อแก้ไขความแรงของสัญญาณ Wi-Fi เป็นระดับที่ต้องการ

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