الحبّار: التحكّم في البيئة

توضّح هذه الصفحة كيفية التحكّم في البيئة على جهاز Cuttlefish باستخدام واجهة برمجة تطبيقات REST أو واجهة سطر الأوامر. على سبيل المثال، يمكنك تعديل إشارة 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 إلى عنوان 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 يطبع هذا الأمر جميع أسماء وأنواع كل حقل في الرسالة. يمكنك بعد ذلك استخدام هذه المعلومات لكتابة رسالة أولية بتنسيق 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 لتعديل قوة إشارة Wi-Fi من خلال طلب SetTxpower.

  1. حدِّد اسم الخدمة واسم الطريقة واسم نوع رسالة الطلب لتعديل قوة إشارة Wi-Fi.

    1. يمكنك الحصول على قائمة بجميع الخدمات المتاحة من خلال إرسال طلب GET إلى عنوان URL التالي.

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

      هذا مثال على الردّ.

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. يمكنك الحصول على قائمة بطُرق WmediumdService من خلال إرسال طلب GET إلى عنوان URL التالي.

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

      هذا مثال على الردّ.

      {"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
      
    3. يمكنك الحصول على معلومات حول أنواع رسائل الطلبات والردود الخاصة بطريقة SetTxpower من خلال إرسال طلب GET إلى عنوان URL التالي.

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

      هذا مثال على الردّ.

      {"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
      
  2. يمكنك الحصول على معلومات تفصيلية عن نوع الرسالة wmediumdserver.SetTxpowerRequest من خلال إرسال طلب GET إلى عنوان URL التالي.

    https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/type
    

    هذا مثال على الردّ.

    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
    
  3. أرسِل طلب 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 في واجهة سطر الأوامر. لمزيد من التفاصيل، اطبع رسالة المساعدة باستخدام 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 لاستدعاء طريقة خدمة باستخدام بروتوكول بتنسيق JSON، استخدِم الأمر cvd enc call. عند انتهاء طلب RPC، تعرض الواجهة الرسالة Rpc succeeded with OK status، وإذا كانت متاحة، تعرض رسالة استجابة تتضمّن القيم.

cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO

مثال على حالة الاستخدام

في ما يلي مثال على حالة استخدام أمر واجهة سطر الأوامر cvd env لتعديل قوة إشارة 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
    {}