لضمان تشغيل وإيقاف مكونات الأجهزة والبرامج (مثل العرض والصوت والتفاعل الصوتي) بشكل انتقائي حسب الحاجة، يوفر AAOS سياسة طاقة تتكون من مجموعة من حالات التشغيل وإيقاف التشغيل المتوقعة لمكونات الأجهزة والبرامج . يمكن لـ VHAL، أو خدمات الموردين المميزة للنظام، تطبيق سياسة طاقة جديدة عند انتقال حالة طاقة Android أو عند استيفاء الشروط التي ينتظرونها.
يُسمح بتطبيق سياسة الطاقة في حالتي انتظر VHAL وOn. في إعداد إيقاف التشغيل، يتم تشغيل وضع Garage ويجب عدم إزعاجه بتغيير حالة الطاقة. على الرغم من أنه لا يمكن تطبيق سياسة طاقة عادية، إلا أنه يتم تطبيق سياسة طاقة خاصة ، وهي سياسة طاقة النظام المسماة "عدم تفاعل المستخدم"، في إعداد إيقاف التشغيل.
حالة الطاقة AAOS
تتبع أجهزة AAOS مخطط حالة الطاقة هذا:
الشكل 1. مخطط حالة الطاقة AAOS
يتم وصف كل حالة طاقة أدناه:
قيمة | وصف |
---|---|
عن | لا يتم توفير الطاقة فعليًا لمعالج التطبيقات (AP) والذاكرة والأجهزة الطرفية. |
انتظر VHAL |
|
على |
|
إعداد إيقاف التشغيل |
|
انتظر حتى ينتهي VHAL |
|
التعليق إلى ذاكرة الوصول العشوائي (STR) | يتم إيقاف تشغيل السيارة ونقطة الوصول، ولا يتم تنفيذ أي تعليمات برمجية، ويتم الحفاظ على الطاقة في ذاكرة الوصول العشوائي لنقطة الوصول. |
هيكلة البرمجيات
تم توضيح بنية سياسة الطاقة أدناه وتم تعريفها في القسم التالي:
الشكل 2. بنية سياسة القوة
كيف يتم تعريف سياسة الطاقة؟
يحدد المنفذون سياسات الطاقة في /vendor/etc/automotive/power_policy.xml
، والتي:
- يحدد سياسة الطاقة.
- يحدد مجموعات سياسة الطاقة، والتي تتضمن سياسة الطاقة الافتراضية ويتم تطبيقها تلقائيًا عند حدوث تحولات في حالة الطاقة.
- تجاوز سياسة طاقة النظام.
سياسة القوة
سياسة الطاقة عبارة عن مجموعة من حالات الطاقة المتوقعة لمكونات الأجهزة والبرامج. يدعم AAOS المكونات التالية في سياسة الطاقة:
-
AUDIO
-
MEDIA
-
DISPLAY_MAIN
-
DISPLAY_CLUSTER
-
DISPLAY_FRONT_PASSENGER
-
DISPLAY_REAR_PASSENGER
-
BLUETOOTH
-
WIFI
-
CELLULAR
-
ETHERNET
-
PROJECTION
-
NFC
-
INPUT
-
VOICE_INTERACTION
-
VISUAL_INTERACTION
-
TRUSTED_DEVICE_DETECTION
-
LOCATION
-
MICROPHONE
-
CPU
مجموعة سياسات الطاقة
يتم تطبيق سياسة الطاقة الافتراضية تلقائيًا عند تحديد انتقال حالة الطاقة في مجموعة سياسة الطاقة. يمكن للموردين تحديد سياسة الطاقة الافتراضية لـ Wait For VHAL، وOn، وWait for VHAL Finish (إدخال السكون العميق أو إيقاف التشغيل).
سياسة طاقة النظام
يدعم AAOS سياسة طاقة نظام واحدة فقط، وهي "عدم تفاعل المستخدم". يتم تطبيق سياسة طاقة النظام عندما ينتقل الجهاز إلى وضع المرآب.
يتم سرد سلوك كل مكون في سياسة طاقة النظام في الجدول أدناه. يمكن للمنفذين تجاوز اكتشاف Bluetooth وNFC والجهاز الموثوق به في سياسة طاقة النظام. يتم تطبيق التجاوزات في /vendor/etc/power_policy.xml
.
عناصر | حالة الطاقة | شكلي |
---|---|---|
صوتي | عن | لا |
وسائط | عن | لا |
العرض الرئيسي | عن | لا |
عرض الكتلة | عن | لا |
عرض الراكب الأمامي | عن | لا |
عرض الراكب الخلفي | عن | لا |
بلوتوث | عن | نعم |
واي فاي | على | لا |
الخلوية | على | لا |
إيثرنت | على | لا |
تنبؤ | عن | لا |
نفك | عن | نعم |
مدخل | عن | لا |
التفاعل الصوتي | عن | لا |
التفاعل البصري | عن | لا |
اكتشاف الجهاز الموثوق به | على | نعم |
موقع | عن | لا |
ميكروفون | عن | لا |
وحدة المعالجة المركزية | على | لا |
التفاعل مع VHAL
يشترك البرنامج الخفي لسياسة طاقة السيارة الذي يعمل في طبقة النظام في خاصيتين للاستماع إلى الطلبات الواردة من VHAL:
-
POWER_POLICY_REQ
، يقوم VHAL بكتابة معرف سياسة الطاقة لهذه الخاصية. -
POWER_POLICY_GROUP_REQ
، يقوم VHAL بكتابة معرف مجموعة سياسة الطاقة لهذه الخاصية.
يمكن تغيير سياسة الطاقة الحالية في النظام بواسطة وحدات أخرى غير VHAL. في هذه الحالة، يقوم البرنامج الخفي لسياسة طاقة السيارة بتحديث خاصية CURRENT_POWER_POLICY
لإعلام التغيير الذي تم إجراؤه على VHAL.
التفاعل مع العمليات الأصلية
كما هو مذكور أعلاه، يعمل البرنامج الخفي لسياسة طاقة السيارة في طبقة النظام، وفيما يتعلق بإدارة سياسة الطاقة، فإنه يوفر تقريبًا نفس الوظيفة التي يوفرها CPMS الذي يعمل في طبقة إطار العمل. افترض أيضًا أن البرنامج الخفي لسياسة طاقة السيارة وCPMS متزامنان بشكل كامل.
يقوم البرنامج الخفي لسياسة طاقة السيارة بتصدير واجهات AIDL لاستخدامها بواسطة HALs والعمليات الأصلية الأخرى. ويمكن إخطارهم عند تغيير سياسة الطاقة الجديدة. وبعبارة أخرى، عندما يجب على كل منهما تغيير حالة الطاقة الخاصة به.
ICarPowerPolicyServer.aidl
package android.frameworks.automotive.powerpolicy; import android.frameworks.automotive.powerpolicy.CarPowerPolicy; import android.frameworks.automotive.powerpolicy.CarPowerPolicyFilter; import android.frameworks.automotive.powerpolicy.ICarPowerPolicyChangeCallback; import android.frameworks.automotive.powerpolicy.PowerComponent; /** * ICarPowerPolicyServer is an interface implemented by the power policy daemon. * VHAL changes the power policy and the power policy daemon notifies the change to registered * subscribers. When subscribing to policy changes, a filter can be specified so that the registered * callbacks can listen only to a specific power component's change. */ @VintfStability interface ICarPowerPolicyServer { /** * Gets the current power policy. */ CarPowerPolicy getCurrentPowerPolicy(); /** * Gets whether the power component is turned on or off. * * @param componentId Power component ID defined in PowerComponent.aidl to check power state. * @return True if the component's power state is on. */ boolean getPowerComponentState(in PowerComponent componentId); /** * Subscribes to power policy change. * Notification is sent to the registered callback when the power policy changes and the power * state of the components which the callback is interested in changes. * * @param callback Callback that is invoked when the power policy changes. * @param filter The list of components which the callback is interested in. */ void registerPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback, in CarPowerPolicyFilter filter); /** * Unsubscribes from power policy change. * * @param callback Callback that doesn't want to receive power policy change. */ void unregisterPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback); }
ICarPowerPolicyChangeCallback.aidl
package android.frameworks.automotive.powerpolicy; import android.frameworks.automotive.powerpolicy.CarPowerPolicy; /** * ICarPowerPolicyChangeCallback is notified when a power policy changes. */ @VintfStability oneway interface ICarPowerPolicyChangeCallback { /** * Called when a power policy is fully changed. * * @param policy The current policy. */ void onPolicyChanged(in CarPowerPolicy policy); }
التفاعل مع وحدات جافا
يوفر CarPowerManager
طرقًا لتمكين إدارة سياسة الطاقة:
- الحصول على سياسة الطاقة الحالية.
- احصل على مجموعة سياسة الطاقة الحالية
- تطبيق سياسة طاقة جديدة
- قم بتعيين مجموعة سياسة طاقة جديدة
يمكن للوحدات المميزة بالنظام فقط استخدام الأساليب. يمكن للوحدات التي ترغب في الحصول على معلومات عند تطبيق سياسة الطاقة، تسجيل مستمع تغيير سياسة الطاقة في CarPowerManager
.