برای اطمینان از اینکه اجزای سختافزار و نرمافزار (مانند صفحه نمایش، صدا و تعامل صوتی) بهصورت انتخابی روشن و خاموش میشوند، AAOS خطمشی برق ارائه میکند که شامل مجموعهای از حالتهای روشن و خاموش مورد انتظار برای قطعات سختافزاری و نرمافزاری است. . VHAL یا سرویسهای فروشنده دارای امتیاز سیستم، میتواند یک خطمشی برق جدید را زمانی اعمال کند که حالت قدرت Android تغییر کند یا شرایطی که منتظر آن هستند برآورده شود.
اعمال خط مشی برق در حالت های Wait for VHAL و On مجاز است (گاهی با برخی محدودیت ها). در Shutdown Prepare، حالت گاراژ در حال اجرا است و نباید با تغییر وضعیت برق مختل شود. اگرچه یک خط مشی برق معمولی را نمی توان اعمال کرد، یک خط مشی برق ویژه، که خط مشی قدرت سیستم به نام عدم تعامل کاربر است، در Shutdown Prepare اعمال می شود.
وضعیت برق AAOS
دستگاه های AAOS از این نمودار وضعیت قدرت پیروی می کنند:
شکل 1. نمودار وضعیت قدرت AAOS.
هر حالت قدرت در زیر توضیح داده شده است:
ارزش | توضیحات |
---|---|
خاموش |
|
منتظر VHAL باشید |
|
روشن |
|
خاموش شدن را آماده کنید |
|
صبر کنید تا VHAL تمام شود |
|
تعلیق به رم (STR) |
|
تعلیق به دیسک (STD) |
|
سیاست قدرت چگونه تعریف می شود؟
پیادهکنندهها سیاستهای قدرت را در /vendor/etc/automotive/power_policy.xml
تعریف میکنند که:
- خط مشی قدرت را تعریف می کند.
- گروههای خطمشی توان را تعریف میکند که شامل خطمشی توان پیشفرض میشود و بهطور خودکار هنگام انتقال وضعیت قدرت اعمال میشود.
- خط مشی قدرت سیستم را لغو می کند.
سیاست قدرت
خط مشی قدرت شامل مجموعه ای از حالت های قدرت مورد انتظار قطعات سخت افزاری و نرم افزاری است. AAOS از این مؤلفه ها در خط مشی قدرت پشتیبانی می کند:
AUDIO رسانه ها نمایش بلوتوث | WIFI سلولی اترنت فرافکنی | NFC ورودی VOICE_INTERACTION VISUAL_INTERACTION | TRUSTED_DEVICE_DETECTION مکان میکروفون CPU |
فروشندگان همچنین می توانند اجزای برق سفارشی خود را برای استفاده با خط مشی های قدرت تعریف کنند. مولفه های قدرت سفارشی را در همان فایل XML به عنوان پاور پالیسی ها تعریف کنید، مانند این مثال:
<customComponents>CUSTOM_COMPONENT_1000 CUSTOM_COMPONENT_SPECIAL_SENSOR CUSTOM_COMPONENT_AUX_INPUT </customComponents>
گروه سیاست قدرت
خط مشی قدرت پیشفرض به طور خودکار در انتقال وضعیت قدرت اعمال میشود و در گروه سیاست قدرت مشخص میشود. فروشندگان می توانند خط مشی برق پیش فرض را برای Wait For VHAL، On، و Wait for VHAL Finish (ورودی در خواب عمیق یا شروع خاموش شدن) تعریف کنند.
سیاست های قدرت سیستم
AAOS از دو خط مشی قدرت سیستم پشتیبانی می کند که عبارتند از عدم تعامل کاربر و آماده سازی تعلیق. خط مشی برق سیستم زمانی اعمال میشود که دستگاه به حالت بیصدا، حالت گاراژ، تعلیق به رم یا تعلیق به دیسک میرود.
جداول زیر رفتار هر جزء در خط مشی قدرت سیستم را فهرست می کند. پیادهکنندهها میتوانند بلوتوث، NFC و تشخیص دستگاه مورد اعتماد را در خطمشی قدرت سیستم تعامل بدون کاربر لغو کنند. لغو در /vendor/etc/power_policy.xml
اعمال می شود.
بدون تعامل کاربر
رفتار سیاست قدرت سیستم تعامل بدون کاربر در این جدول تعریف شده است:
اجزاء | وضعیت قدرت | قابل تنظیم |
---|---|---|
صوتی | خاموش | خیر |
رسانه ها | خاموش | خیر |
نمایش | خاموش | خیر |
بلوتوث | خاموش | بله |
فای | روشن | خیر |
سلولی | روشن | خیر |
اترنت | روشن | خیر |
فرافکنی | خاموش | خیر |
NFC | خاموش | بله |
ورودی | خاموش | خیر |
دستیار | خاموش | خیر |
تعامل کاربر | خاموش | خیر |
تشخیص دستگاه مورد اعتماد برای ورود کاربر | روشن | بله |
مکان | خاموش | خیر |
میکروفون | خاموش | خیر |
CPU | روشن | خیر |
تعلیق آمادگی
رفتار خط مشی قدرت سیستم آماده سازی تعلیق در این جدول تعریف شده است:
اجزاء | وضعیت قدرت | OEM قابل تنظیم |
---|---|---|
صوتی | خاموش | خیر |
رسانه ها | N/A | خیر |
نمایش | N/A | خیر |
بلوتوث | خاموش | خیر |
فای | خاموش | خیر |
سلولی | N/A | خیر |
اترنت | N/A | خیر |
فرافکنی | N/A | خیر |
NFC | N/A | خیر |
ورودی | N/A | خیر |
دستیار | N/A | خیر |
تعامل کاربر | N/A | خیر |
تشخیص دستگاه مورد اعتماد برای ورود کاربر | N/A | خیر |
مکان | خاموش | خیر |
میکروفون | خاموش | خیر |
CPU | خاموش | خیر |
تعامل با VHAL
دیمون خط مشی قدرت خودرو که در لایه سیستم اجرا می شود، دو ویژگی را برای گوش دادن به درخواست های VHAL مشترک می کند:
-
POWER_POLICY_REQ
VHAL شناسه خط مشی قدرت را در این ویژگی می نویسد. -
POWER_POLICY_GROUP_REQ
VHAL شناسه گروه خط مشی قدرت را در این ویژگی می نویسد.
خط مشی برق فعلی در سیستم را می توان توسط ماژول هایی غیر از VHAL تغییر داد. در آن صورت، دیمون خط مشی برق خودرو، ویژگی CURRENT_POWER_POLICY
را بهروزرسانی میکند تا تغییر VHAL را اعلام کند.
تعامل با فرآیندهای بومی
همانطور که در بالا ذکر شد، شبح سیاست قدرت خودرو در لایه سیستم اجرا می شود و از نظر مدیریت خط مشی قدرت، تقریباً همان عملکرد CPMS در حال اجرا در لایه چارچوب را ارائه می دهد. همچنین فرض کنید دیمون خط مشی برق خودرو و CPMS به طور کامل همگام شده اند.
دیمون خط مشی قدرت خودرو، رابط های AIDL را برای استفاده توسط HAL ها و سایر فرآیندهای بومی صادر می کند. هنگامی که یک خط مشی برق جدید تغییر می کند، می توان به آنها اطلاع داد. به عبارت دیگر، زمانی که هر یک باید حالت قدرت خود را تغییر دهد.
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. * @throws IllegalStateException if the current policy is not set. */ 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. * @throws IllegalArgumentException if the componentId is invalid. */ 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. * @throws IllegalArgumentException if the callback is already registered. * @throws IllegalStateException if the callback is dead. */ 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. * @throws IllegalArgumentException if the callback is not registered. */ void unregisterPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback); /** * Applies the power policy. * *{@code policyId} should be one of power policy IDs defined in * {@code /vendor/etc/automotive/power_policy.xml} or predefined system power policies. * * @param policyId ID of power policy. * @throws IllegalArgumentException if {@code policyId} is invalid. */ void applyPowerPolicy(in @utf8InCpp String policyId); /** * Sets the current power policy group. * *
{@code policyGroupId} should be one of power policy group IDs defined in * {@code /vendor/etc/automotive/power_policy.xml}. * * @param policyGroupId ID of power policy group. * @throws IllegalArgumentException if {@code policyGroupId} is invalid. */ void setPowerPolicyGroup(in @utf8InCpp String policyGroupId); }
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
ثبت کنند.