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

توضِّح هذه الصفحة كيفية التحكّم في البيئة في جهاز 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

يوضِّح هذا القسم كيفية التحكّم في البيئة باستخدام واجهة برمجة تطبيقات REST من خلال نقطة نهاية الخدمة <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

الحصول على معلومات تفصيلية عن أنواع الطلبات والردود

للحصول على معلومات تفصيلية عن نوع رسالة طلب أو رد، أرسِل طلب GET إلى عنوان URL التالي باستخدام معرّف جهاز واسم خدمة ونوع رسالة الطلب أو الرد. يؤدي ذلك إلى طباعة جميع أسماء وأنواع كل حقل في الرسالة. يمكنك بعد ذلك استخدام هذه المعلومات لكتابة رسالة بروتو بتنسيق 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 لتعديل قوة إشارة 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. يطبع هذا الأمر جميع أسماء وأنواع كل حقل في الرسالة. يمكنك بعد ذلك استخدام هذه المعلومات لكتابة رسالة بروتو بتنسيق 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
    {}