ساقه ماهی: کنترل محیط

در این صفحه نحوه کنترل محیط در دستگاه 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 است.

  1. نام سرویس، نام روش و نام نوع پیام درخواست را برای تغییر قدرت سیگنال Wi-Fi تعیین کنید.

    1. با ارسال یک درخواست GET به آدرس اینترنتی زیر، فهرستی از تمام خدمات موجود را دریافت کنید.

      https://localhost:1443/devices/cvd-1/services
      

      این یک نمونه پاسخ است.

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. با ارسال یک درخواست GET به URL زیر، فهرستی از روش‌ها را برای WmediumdService دریافت کنید.

      https://localhost:1443/devices/cvd-1/services/WmediumdService
      

      این یک نمونه پاسخ است.

      {"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
      
    3. با ارسال یک درخواست GET به آدرس اینترنتی زیر، اطلاعات مربوط به انواع پیام درخواست و پاسخ را برای روش SetTxpower دریافت کنید.

      https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
      

      این یک نمونه پاسخ است.

      {"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
      
  2. با ارسال یک درخواست 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;
    }
    
  3. یک درخواست 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 است.

  1. نام سرویس، نام روش و نام نوع پیام درخواست را برای تغییر قدرت سیگنال 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"
    }
  2. اطلاعات دقیق برای wmediumdserver.SetTxpowerRequest نوع پیام درخواست دریافت کنید.

    cvd env type WmediumdService wmediumdserver.SetTxpowerRequest
    (Omitted)
    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
  3. درخواست 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
    {}