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

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

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

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

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

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

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

ตัวอย่าง Use Case

ต่อไปนี้คือตัวอย่างกรณีการใช้งาน 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 แบบข้อความโดยส่งคำขอ 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}
    

    นี่คือตัวอย่างการตอบกลับ

    {}
    

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

ส่วนนี้จะอธิบายคำสั่งย่อยที่ใช้ได้กับคำสั่ง CLI 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 คำสั่งนี้จะพิมพ์ชื่อและประเภทของช่องแต่ละช่องในข้อความ จากนั้นคุณก็ใช้ข้อมูลนี้เพื่อเขียนข้อความ proto ในรูปแบบ JSON เพื่อส่งคําขอ RPC ได้

cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME

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

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

cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO

ตัวอย่าง Use Case

ต่อไปนี้คือตัวอย่าง Use Case ของคําสั่ง CLI cvd env สําหรับการแก้ไขความแรงของสัญญาณ 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
    {}