این صفحه نحوه کنترل محیط در یک دستگاه Cuttlefish را با استفاده از REST API یا رابط خط فرمان شرح میدهد. به عنوان مثال، میتوانید سیگنال Wi-Fi را تغییر دهید یا موقعیت GPS دستگاه Cuttlefish را بهروزرسانی کنید.
خدمات
دستور cvd env سرویسهای زیر را برای کنترل محیط Cuttlefish ارائه میدهد:
| خدمات | توضیحات |
|---|---|
GnssGrpcProxy | GNSS را برای ویژگی موقعیت جغرافیایی Cuttlefish کنترل میکند. |
OpenwrtControlService | Openwrt ، یک ارائهدهندهی نقطه دسترسی مجازی Wi-Fi برای ویژگی Wi-Fi Cuttlefish، را کنترل میکند. |
WmediumdService | Wmediumd ، یک شبیهساز رسانه بیسیم برای ویژگی Wi-Fi Cuttlefish، را کنترل میکند. |
CasimirControlService | Casimir ، یک شبیهساز برای دستگاههای NFC خارجی، را کنترل میکند. |
کنترل محیط با استفاده از REST API
این بخش نحوه کنترل محیط با استفاده از Rest API از طریق نقطه پایانی سرویس <https://localhost:1443> را شرح میدهد.
فهرست خدمات یا روشهای موجود
برای دریافت لیستی از تمام سرویسها، یک درخواست GET به همراه شناسه دستگاه به آدرس اینترنتی زیر ارسال کنید.
https://localhost:1443/devices/DEVICE_ID/services
برای دریافت لیستی از تمام متدهای یک سرویس، یک درخواست GET به همراه شناسه دستگاه و نام سرویس به URL زیر ارسال کنید.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME
برای دریافت اطلاعات دقیق در مورد یک متد، مانند انواع پیامهای درخواست یا پاسخ، یک درخواست GET به همراه شناسه دستگاه، نام سرویس و نام متد به آدرس اینترنتی زیر ارسال کنید.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
اطلاعات دقیقی در مورد انواع درخواست و پاسخ دریافت کنید
برای دریافت اطلاعات دقیق در مورد نوع پیام درخواست یا پاسخ، یک درخواست GET به آدرس اینترنتی زیر ارسال کنید که شامل شناسه دستگاه، نام سرویس و نوع پیام درخواست یا پاسخ باشد. این کار تمام نامها و انواع هر فیلد در پیام را چاپ میکند. سپس میتوانید از این اطلاعات برای نوشتن یک پیام اولیه با فرمت 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 برای تغییر قدرت سیگنال وایفای با فراخوانی SetTxpower ارائه شده است.
نام سرویس، نام روش و نام نوع پیام درخواست برای تغییر قدرت سیگنال Wi-Fi را تعیین کنید.
با ارسال یک درخواست
GETبه آدرس اینترنتی زیر، فهرستی از تمام سرویسهای موجود را دریافت کنید.https://localhost:1443/devices/cvd-1/servicesاین یک نمونه پاسخ است.
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}با ارسال یک درخواست
GETبه URL زیر، لیستی از متدهایWmediumdServiceرا دریافت کنید.https://localhost:1443/devices/cvd-1/services/WmediumdServiceاین یک نمونه پاسخ است.
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}با ارسال یک درخواست
GETبه URL زیر، اطلاعاتی در مورد انواع پیامهای درخواست و پاسخ برای متدSetTxpowerدریافت کنید.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpowerاین یک نمونه پاسخ است.
{"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
با ارسال یک درخواست
GETبه آدرس اینترنتی زیر، اطلاعات دقیقی در مورد نوع پیام درخواستwmediumdserver.SetTxpowerRequestدریافت کنید.https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/typeاین یک نمونه پاسخ است.
message SetTxpowerRequest { string mac_address = 1; int32 tx_power = 2; }با ارسال یک درخواست
POSTبه این URL با متن درخواست زیر، یک درخواست RPC به سرویسWmediumdServiceارسال کنید تا قدرت سیگنال Wi-Fi را به سطح مورد نظر تغییر دهد.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 {}