หน้านี้อธิบายวิธีควบคุมสภาพแวดล้อมในอุปกรณ์ 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
กำหนดชื่อบริการ ชื่อเมธอด และชื่อประเภทข้อความคำขอ สำหรับการแก้ไขความแรงของสัญญาณ 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.SetTxpowerRequestrequest 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; }ส่งคำขอ 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
กำหนดชื่อบริการ ชื่อเมธอด และชื่อประเภทข้อความคำขอ สำหรับการแก้ไขความแรงของสัญญาณ Wi-Fi
ดูรายการบริการทั้งหมดที่พร้อมใช้งาน
cvd env ls (Omitted) { "services" : [ "OpenwrtControlService", "EchoService", "GnssGrpcProxy", "WmediumdService" ] }ดูรายการวิธีการสำหรับ
WmediumdServicecvd env ls WmediumdService (Omitted) { "methods" : [ "ListStations", "LoadConfig", "ReloadConfig", "SetCivicloc", "SetLci", "SetPosition", "SetSnr", "SetTxpower", "StartPcap", "StopPcap" ] }ดูข้อมูลเกี่ยวกับประเภทข้อความคำขอและการตอบกลับสำหรับเมธอด
SetTxpowercvd 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 {}