Trang này mô tả cách kiểm soát môi trường trong thiết bị Cuttlefish bằng API REST hoặc giao diện dòng lệnh. Ví dụ: bạn có thể sửa đổi tín hiệu Wi-Fi hoặc cập nhật vị trí GPS của thiết bị Cuttlefish.
Dịch vụ
Lệnh cvd env cung cấp các dịch vụ sau để kiểm soát môi trường Cuttlefish:
| Dịch vụ | Mô tả |
|---|---|
GnssGrpcProxy
|
Kiểm soát GNSS cho tính năng vị trí địa lý của Cuttlefish. |
OpenwrtControlService
|
Kiểm soát Openwrt, một nhà cung cấp AP Wi-Fi ảo hoá cho tính năng Wi-Fi của Cuttlefish. |
WmediumdService
|
Kiểm soát Wmediumd, một trình mô phỏng phương tiện không dây cho tính năng Wi-Fi của Cuttlefish. |
CasimirControlService
|
Kiểm soát Casimir, một trình mô phỏng cho các thiết bị NFC bên ngoài. |
Kiểm soát môi trường bằng API REST
Phần này mô tả cách kiểm soát môi trường bằng Rest API
thông qua điểm cuối dịch vụ <https://localhost:1443>.
Liệt kê các dịch vụ hoặc phương thức hiện có
Để xem danh sách tất cả các dịch vụ, hãy gửi yêu cầu GET đến URL sau đây bằng mã thiết bị.
https://localhost:1443/devices/DEVICE_ID/services
Để xem danh sách tất cả các phương thức cho một dịch vụ, hãy gửi yêu cầu GET đến URL sau đây bằng mã thiết bị và tên dịch vụ.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME
Để xem thông tin chi tiết về một phương thức, chẳng hạn như các loại thông báo yêu cầu hoặc phản hồi, hãy gửi yêu cầu GET đến URL sau đây bằng mã thiết bị, tên dịch vụ và tên phương thức.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Xem thông tin chi tiết về các loại yêu cầu và phản hồi
Để xem thông tin chi tiết về loại thông báo yêu cầu hoặc phản hồi, hãy gửi yêu cầu GET đến URL sau đây bằng mã thiết bị, tên dịch vụ và loại thông báo yêu cầu hoặc phản hồi. Thao tác này sẽ in tất cả tên và loại của từng trường trong thông báo. Sau đó, bạn có thể sử dụng thông tin này để viết thông báo proto ở định dạng JSON để gửi yêu cầu RPC.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type
Gửi yêu cầu RPC để thay đổi môi trường
Để gửi yêu cầu RPC nhằm gọi một phương thức của dịch vụ bằng proto ở định dạng JSON, hãy gửi yêu cầu POST đến URL sau đây bằng mã thiết bị, tên dịch vụ và tên phương thức. Proto ở định dạng JSON phải được đưa vào nội dung.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
Trường hợp sử dụng mẫu
Sau đây là trường hợp sử dụng mẫu của Rest API để sửa đổi cường độ tín hiệu Wi-Fi bằng cách gọi SetTxpower.
Xác định tên dịch vụ, tên phương thức và tên loại thông báo yêu cầu để sửa đổi cường độ tín hiệu Wi-Fi.
Xem danh sách tất cả các dịch vụ hiện có bằng cách gửi yêu cầu
GETđến URL sau đây.https://localhost:1443/devices/cvd-1/servicesĐây là một ví dụ về phản hồi.
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}Xem danh sách các phương thức cho
WmediumdServicebằng cách gửi yêu cầuGETđến URL sau đây.https://localhost:1443/devices/cvd-1/services/WmediumdServiceĐây là một ví dụ về phản hồi.
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}Xem thông tin về các loại thông báo yêu cầu và phản hồi cho phương thức
SetTxpowerbằng cách gửi yêu cầuGETđến URL sau đây.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpowerĐây là một ví dụ về phản hồi.
{"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
Xem thông tin chi tiết về loại thông báo yêu cầu
wmediumdserver.SetTxpowerRequestbằng cách gửi yêu cầuGETđến URL sau đây.https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/typeĐây là một ví dụ về phản hồi.
message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }Gửi yêu cầu RPC đến dịch vụ
WmediumdServiceđể sửa đổi cường độ tín hiệu Wi-Fi theo mức mong muốn bằng cách gửi yêu cầuPOSTđến URL này với nội dung yêu cầu sau.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower{"mac_address":"42:00:00:00:00:00", "tx_power":1}Đây là một ví dụ về phản hồi.
{}
Kiểm soát môi trường bằng dòng lệnh
Phần này mô tả các lệnh con có sẵn cho lệnh CLI cvd env.
Để biết thêm thông tin chi tiết, hãy in thông báo trợ giúp bằng cách sử dụng cvd help env.
Liệt kê các dịch vụ hoặc phương thức hiện có
Để xem danh sách tất cả các dịch vụ, hãy sử dụng cvd env ls mà không có đối số nào.
cvd env lsĐể xem danh sách tất cả các phương thức cho một dịch vụ, hãy thêm tên của dịch vụ đó làm đối số.
cvd env ls SERVICE_NAMEĐể xem thông tin chi tiết, chẳng hạn như các loại thông báo yêu cầu hoặc phản hồi của một phương thức, hãy thêm tên dịch vụ và tên phương thức.
cvd env ls SERVICE_NAME METHOD_NAMEXem thông tin chi tiết về các loại yêu cầu và phản hồi
Để xem thông tin chi tiết về loại thông báo yêu cầu hoặc phản hồi, hãy sử dụng lệnh cvd env type. Lệnh này sẽ in tất cả tên và loại của từng trường trong thông báo. Sau đó, bạn có thể sử dụng thông tin này để viết thông báo proto ở định dạng JSON để gửi yêu cầu RPC.
cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAMEGửi yêu cầu RPC để thay đổi môi trường
Để gửi yêu cầu RPC nhằm gọi một phương thức của dịch vụ bằng proto ở định dạng JSON, hãy sử dụng lệnh cvd enc call. Khi yêu cầu RPC kết thúc, giao diện sẽ in thông báo Rpc succeeded with OK status và thông báo phản hồi (nếu có) bao gồm các giá trị.
cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTOTrường hợp sử dụng mẫu
Sau đây là trường hợp sử dụng mẫu của lệnh CLI cvd env để sửa đổi cường độ tín hiệu Wi-Fi bằng cách gọi SetTxpower.
Xác định tên dịch vụ, tên phương thức và tên loại thông báo yêu cầu để sửa đổi cường độ tín hiệu Wi-Fi.
Xem danh sách tất cả các dịch vụ hiện có.
cvd env ls (Omitted) { "services" : [ "OpenwrtControlService", "EchoService", "GnssGrpcProxy", "WmediumdService" ] }Xem danh sách các phương thức cho
WmediumdService.cvd env ls WmediumdService (Omitted) { "methods" : [ "ListStations", "LoadConfig", "ReloadConfig", "SetCivicloc", "SetLci", "SetPosition", "SetSnr", "SetTxpower", "StartPcap", "StopPcap" ] }Xem thông tin về các loại thông báo yêu cầu và phản hồi cho phương thức
SetTxpower.cvd env ls WmediumdService SetTxpower (Omitted) { "request_type" : "wmediumdserver.SetTxpowerRequest", "response_type" : "google.protobuf.Empty" }Xem thông tin chi tiết về loại thông báo yêu cầu
wmediumdserver.SetTxpowerRequest.cvd env type WmediumdService wmediumdserver.SetTxpowerRequest (Omitted) message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }Gửi yêu cầu RPC đến dịch vụ
WmediumdServiceđể sửa đổi cường độ tín hiệu Wi-Fi theo mức mong muốn.cvd env call WmediumdService SetTxpower "{mac_address:'42:00:00:00:00:00', tx_power:1}" (Omitted) Rpc succeeded with OK status {}