ปลาหมึก: การควบคุมสิ่งแวดล้อม

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

บริการ

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

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

ควบคุมสภาพแวดล้อมโดยใช้ 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 ต่อไปนี้พร้อมรหัสอุปกรณ์ ชื่อบริการ และประเภทข้อความคำขอหรือข้อความตอบกลับ ซึ่งจะพิมพ์ชื่อและประเภททั้งหมดของแต่ละฟิลด์ในข้อความ จากนั้นคุณสามารถใช้ข้อมูลนี้เพื่อเขียนข้อความโปรโตในรูปแบบ 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

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

ต่อไปนี้เป็นตัวอย่างการใช้งานของ 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}
    

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

    {}
    

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

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

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

ต่อไปนี้เป็นตัวอย่างการใช้งานของคำสั่ง 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
    {}