از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
ساقه ماهی: کنترل محیط
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
در این صفحه نحوه کنترل محیط در دستگاه Cuttlefish با استفاده از REST API یا رابط خط فرمان توضیح داده شده است. به عنوان مثال، می توانید سیگنال Wi-Fi را تغییر دهید یا مکان GPS دستگاه Cuttlefish را به روز کنید.
خدمات
دستور cvd env
خدمات زیر را برای کنترل محیط Cuttlefish ارائه می دهد:
خدمات | توضیحات |
---|
GnssGrpcProxy | GNSS را برای ویژگی موقعیت جغرافیایی ساقه ماهی کنترل می کند. |
OpenwrtControlService | Openwrt کنترل میکند، یک ارائهدهنده AP مجازی Wi-Fi برای ویژگی Cuttlefish Wi-Fi. |
WmediumdService | Wmediumd کنترل می کند، یک شبیه ساز رسانه بی سیم برای ویژگی Wi-Fi Cuttlefish. |
CasimirControlService | Casimir کنترل می کند، شبیه ساز دستگاه های NFC خارجی. |
محیط را با استفاده از REST API کنترل کنید
این بخش نحوه کنترل محیط را با استفاده از Rest API از طریق <https://localhost:1443>
پایان سرویس توضیح می دهد.
خدمات یا روش های موجود را فهرست کنید
برای دریافت لیستی از تمام خدمات، یک درخواست GET
با یک شناسه دستگاه به آدرس اینترنتی زیر ارسال کنید.
https://localhost:1443/devices/DEVICE_ID/services
برای دریافت لیستی از همه روشهای یک سرویس، یک درخواست GET
با یک شناسه دستگاه و نام سرویس به آدرس اینترنتی زیر ارسال کنید.
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
را با شناسه دستگاه، نام سرویس و نام روش به آدرس اینترنتی زیر ارسال کنید. پروتو با فرمت JSON باید در بدنه گنجانده شود.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
مثال استفاده
در زیر نمونهای از موارد استفاده Rest API برای تغییر قدرت سیگنال Wi-Fi با فراخوانی 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
به آدرس اینترنتی زیر، اطلاعات مربوط به انواع پیام درخواست و پاسخ را برای روش SetTxpower
دریافت کنید.
https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
این یک نمونه پاسخ است.
{"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
با ارسال یک درخواست GET
به URL زیر، اطلاعات دقیقی را برای wmediumdserver.SetTxpowerRequest
نوع پیام درخواست دریافت کنید.
https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/type
این یک نمونه پاسخ است.
message SetTxpowerRequest {
string mac_address = 1;
int32 tx_power = 2;
}
یک درخواست RPC به سرویس WmediumdService
ارسال کنید تا با ارسال یک درخواست POST
به این URL با بدنه درخواست زیر، قدرت سیگنال 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
{}
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Cuttlefish: Environment control\n\nThis page describes how to control the environment in a Cuttlefish device\nusing the REST API or the command line interface. For example, you can modify the\nWi-Fi signal or update the GPS location of the Cuttlefish device.\n\nServices\n--------\n\nThe `cvd env` command provides the following services for controlling the\nCuttlefish environment:\n\n| Services | Description |\n|----------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|\n| `GnssGrpcProxy` | Controls GNSS for the Cuttlefish geolocation feature. |\n| [`OpenwrtControlService`](/docs/devices/cuttlefish/wifi#openwrt_control_service) | Controls `Openwrt`, a virtualized Wi-Fi AP provider for the Cuttlefish Wi-Fi feature. |\n| [`WmediumdService`](/docs/devices/cuttlefish/wifi#wmediumd_service) | Controls `Wmediumd`, a wireless medium simulator for the Cuttlefish Wi-Fi feature. |\n| [`CasimirControlService`](/docs/devices/cuttlefish/nfc#casimir_control_service) | Controls `Casimir`, a simulator for external NFC devices. |\n\nControl the environment using the REST API\n------------------------------------------\n\nThis section describes how to control the environment using the Rest API\nthrough the `\u003chttps://localhost:1443\u003e` service endpoint.\n\n### List available services or methods\n\nTo get a list of all services, send a `GET` request to the following URL with\na device ID. \n\n https://localhost:1443/devices/\u003cvar translate=\"no\"\u003eDEVICE_ID\u003c/var\u003e/services\n\nTo get a list of all the methods for a service, send a `GET` request to the\nfollowing URL with a device ID and the service name. \n\n https://localhost:1443/devices/\u003cvar translate=\"no\"\u003eDEVICE_ID\u003c/var\u003e/services/\u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e\n\nTo get detailed information for a method, such as the request or response\nmessage types, send a `GET` request to the following URL with a device ID,\na service name, and the method name. \n\n https://localhost:1443/devices/\u003cvar translate=\"no\"\u003eDEVICE_ID\u003c/var\u003e/services/\u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e/\u003cvar translate=\"no\"\u003eMETHOD_NAME\u003c/var\u003e\n\n### Get detailed information on request and response types\n\nTo get detailed information of a request or response message type, send a `GET`\nrequest to the following URL with a device ID, a service name, and the\nrequest or response message type. This prints all the names and types of each\nfield in the message. You can then use this information to write a\nJSON-formatted proto message for sending a RPC request. \n\n https://localhost:1443/devices/\u003cvar translate=\"no\"\u003eDEVICE_ID\u003c/var\u003e/services/\u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e/\u003cvar translate=\"no\"\u003eREQUEST_OR_RESPONSE_TYPE_NAME\u003c/var\u003e/type\n\n### Send RPC request to make changes to the environment\n\nTo send a RPC request to call a method of a service with a JSON-formatted proto,\nsend a `POST` request to the following URL with a device ID, a service\nname, and the method name. The JSON-formatted proto must be included in the\nbody. \n\n https://localhost:1443/devices/\u003cvar translate=\"no\"\u003eDEVICE_ID\u003c/var\u003e/services/\u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e/\u003cvar translate=\"no\"\u003eMETHOD_NAME\u003c/var\u003e\n\n### Example use case\n\nThe following is an example use case of the Rest API for modifying the Wi-Fi\nsignal strength by calling `SetTxpower`.\n\n1. Determine the service name, method name, and the request message type\n name for modifying the Wi-Fi signal strength.\n\n 1. Get a list of all available services by sending a `GET` request to the\n following URL.\n\n https://localhost:1443/devices/cvd-1/services\n\n This is an example response. \n\n {\"services\":[\"OpenwrtControlService\",\"EchoService\",\"GnssGrpcProxy\",\"WmediumdService\"]}\n\n 2. Get a list of methods for `WmediumdService` by sending a `GET` request\n to the following URL.\n\n https://localhost:1443/devices/cvd-1/services/WmediumdService\n\n This is an example response. \n\n {\"methods\":[\"ListStations\",\"LoadConfig\",\"ReloadConfig\",\"SetCivicloc\",\"SetLci\",\"SetPosition\",\"SetSnr\",\"SetTxpower\",\"StartPcap\",\"StopPcap\"]}\n\n 3. Get information on the request and response message types for the\n `SetTxpower` method by sending a `GET` request to the following URL.\n\n https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower\n\n This is an example response. \n\n {\"request_type_name\":\"wmediumdserver.SetTxpowerRequest\",\"response_type_name\":\"google.protobuf.Empty\"}\n\n2. Get detailed information for the `wmediumdserver.SetTxpowerRequest` request\n message type by sending a `GET` request to the following URL.\n\n https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/type\n\n This is an example response. \n\n message SetTxpowerRequest {\n string mac_address = 1;\n int32 tx_power = 2;\n }\n\n3. Send a RPC request to the `WmediumdService` service to modify the Wi-Fi\n signal strength to the desired level by sending a `POST` request to this URL\n with the following request body.\n\n https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower\n\n {\"mac_address\":\"42:00:00:00:00:00\", \"tx_power\":1}\n\n This is an example response. \n\n {}\n\nControl the environment using the command line\n----------------------------------------------\n\nThis section describes the subcommands available for the `cvd env` CLI command.\nFor further details, print the help message using `cvd help env`.\n\n### List available services or methods\n\nTo get a list of all services, use `cvd env ls` without any arguments. \n\n cvd env ls\n\nTo get a list of all the methods for a service, include the name of the\nservice as an argument. \n\n cvd env ls \u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e\n\nTo get detailed information such as the request or response message types of a\nmethod, include the service name and method name. \n\n cvd env ls \u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e \u003cvar translate=\"no\"\u003eMETHOD_NAME\u003c/var\u003e\n\n### Get detailed information on request and response types\n\nTo get detailed information of a request or response message type, use the\n`cvd env type` command. This command prints all names and types of each field\nin the message. You can then use this information to write a JSON-formatted\nproto message for sending a RPC request. \n\n cvd env type \u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e \u003cvar translate=\"no\"\u003eREQUEST_OR_RESPONSE_TYPE_NAME\u003c/var\u003e\n\n### Send RPC request to make changes to the environment\n\nTo send a RPC request to call a method of a service with a JSON-formatted proto,\nuse the `cvd enc call` command. When the RPC request terminates, the interface\nprints the message `Rpc succeeded with OK status` and, if available, a response\nmessage including values. \n\n cvd env call \u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e \u003cvar translate=\"no\"\u003eMETHOD_NAME\u003c/var\u003e \u003cvar translate=\"no\"\u003eJSON_FORMATTED_PROTO\u003c/var\u003e\n\n### Example use case\n\nThe following is an example use case of the `cvd env` CLI command for modifying\nthe Wi-Fi signal strength by calling `SetTxpower`.\n\n1. Determine the service name, method name, and the request message type\n name for modifying the Wi-Fi signal strength.\n\n Get a list of all available services. \n\n cvd env ls\n (Omitted)\n {\n \"services\" :\n [\n \"OpenwrtControlService\",\n \"EchoService\",\n \"GnssGrpcProxy\",\n \"WmediumdService\"\n ]\n }\n\n Get a list of methods for `WmediumdService`. \n\n cvd env ls WmediumdService\n (Omitted)\n {\n \"methods\" :\n [\n \"ListStations\",\n \"LoadConfig\",\n \"ReloadConfig\",\n \"SetCivicloc\",\n \"SetLci\",\n \"SetPosition\",\n \"SetSnr\",\n \"SetTxpower\",\n \"StartPcap\",\n \"StopPcap\"\n ]\n }\n\n Get information on the request and response message types for the\n `SetTxpower` method. \n\n cvd env ls WmediumdService SetTxpower\n (Omitted)\n {\n \"request_type\" : \"wmediumdserver.SetTxpowerRequest\",\n \"response_type\" : \"google.protobuf.Empty\"\n }\n\n2. Get detailed information for the `wmediumdserver.SetTxpowerRequest` request\n message type.\n\n cvd env type WmediumdService wmediumdserver.SetTxpowerRequest\n (Omitted)\n message SetTxpowerRequest {\n string mac_address = 1;\n int32 tx_power = 2;\n }\n\n3. Send RPC request to the `WmediumdService` service to modify the Wi-Fi\n signal strength to the desired level.\n\n cvd env call WmediumdService SetTxpower \"{mac_address:'42:00:00:00:00:00', tx_power:1}\"\n (Omitted)\n Rpc succeeded with OK status\n {}"]]