توضِّح هذه الصفحة كيفية التحكّم في البيئة في جهاز 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.
حدِّد اسم الخدمة واسم الطريقة واسم نوع رسالة الطلب لتعديل قوة إشارة Wi-Fi.
احصل على قائمة بجميع الخدمات المتاحة من خلال إرسال طلب
GETإلى عنوان URL التالي.https://localhost:1443/devices/cvd-1/servicesهذا مثال عن الرد.
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}احصل على قائمة بطرق
WmediumdServiceمن خلال إرسال طلبGETإلى عنوان URL التالي.https://localhost:1443/devices/cvd-1/services/WmediumdServiceهذا مثال عن الرد.
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}احصل على معلومات عن أنواع رسائل الطلبات والردود لطريقة
SetTxpowerمن خلال إرسال طلبGETإلى عنوان URL التالي.https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpowerهذا مثال عن الرد.
{"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
احصل على معلومات تفصيلية عن نوع رسالة الطلب
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; }أرسِل طلب 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.
حدِّد اسم الخدمة واسم الطريقة واسم نوع رسالة الطلب لتعديل قوة إشارة 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 {}