หน้านี้อธิบายวิธีควบคุมสภาพแวดล้อมในอุปกรณ์ 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
กำหนดชื่อบริการ ชื่อวิธีการ และชื่อประเภทข้อความคำขอเพื่อแก้ไขความแรงของสัญญาณ Wi-Fi
รับรายการบริการที่มีอยู่ทั้งหมดโดยส่งคำขอ
GET
ไปยัง URL ต่อไปนี้https://localhost:1443/devices/cvd-1/services
นี่คือตัวอย่างคำตอบ
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
รับรายการวิธีการสำหรับ
WmediumdService
โดยส่งคำขอGET
ไปยัง URL ต่อไปนี้https://localhost:1443/devices/cvd-1/services/WmediumdService
นี่คือตัวอย่างคำตอบ
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
รับข้อมูลเกี่ยวกับประเภทข้อความคำขอและตอบกลับสำหรับวิธี
SetTxpower
โดยการส่งคำขอGET
ไปยัง URL ต่อไปนี้https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
นี่คือตัวอย่างคำตอบ
{"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
รับข้อมูลโดยละเอียดสำหรับประเภทข้อความคำขอ
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; }
ส่งคำขอ 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
กำหนดชื่อบริการ ชื่อวิธีการ และชื่อประเภทข้อความคำขอเพื่อแก้ไขความแรงของสัญญาณ 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" }
รับข้อมูลโดยละเอียดสำหรับประเภทข้อความคำขอ
wmediumdserver.SetTxpowerRequest
cvd env type WmediumdService wmediumdserver.SetTxpowerRequest (Omitted) message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }
ส่งคำขอ 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 {}