برای اطمینان از اینکه اجزای سختافزار و نرمافزار (مانند صفحه نمایش، صدا و تعامل صوتی) بهصورت انتخابی روشن و خاموش میشوند، AAOS خطمشی برق ارائه میکند که شامل مجموعهای از حالتهای روشن و خاموش مورد انتظار برای قطعات سختافزاری و نرمافزاری است. . VHAL یا سرویسهای فروشنده دارای امتیاز سیستم، میتواند یک خطمشی برق جدید را زمانی اعمال کند که حالت قدرت Android تغییر کند یا شرایطی که منتظر آن هستند برآورده شود.
اعمال خط مشی برق در حالت های Wait for VHAL و On مجاز است. در Shutdown Prepare، حالت گاراژ در حال اجرا است و نباید با تغییر وضعیت برق مختل شود. اگرچه یک خط مشی برق معمولی را نمی توان اعمال کرد، یک خط مشی برق ویژه ، که خط مشی قدرت سیستم به نام "بدون تعامل کاربر" است، در Shutdown Prepare اعمال می شود.
وضعیت برق AAOS
دستگاه های AAOS از این نمودار وضعیت قدرت پیروی می کنند:
شکل 1. نمودار وضعیت قدرت AAOS
هر حالت قدرت در زیر توضیح داده شده است:
ارزش | شرح |
---|---|
خاموش | هیچ انرژی فیزیکی به پردازنده برنامه (AP)، حافظه و تجهیزات جانبی ارائه نمی شود. |
منتظر VHAL باشید |
|
بر |
|
خاموش شدن را آماده کنید |
|
منتظر بمانید تا VHAL به پایان برسد |
|
تعلیق به رم (STR) | وسیله نقلیه و AP خاموش هستند، هیچ کدی اجرا نمی شود، و برق به RAM AP حفظ می شود. |
معماری نرم افزار
معماری سیاست قدرت در زیر نشان داده شده و در بخش زیر تعریف شده است:
شکل 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 تنها از یک خط مشی قدرت سیستم پشتیبانی می کند که "عدم تعامل با کاربر" است. خط مشی برق سیستم زمانی اعمال می شود که دستگاه به حالت گاراژ می رود.
رفتار هر جزء در خط مشی قدرت سیستم در جدول زیر آمده است. پیادهکنندهها میتوانند بلوتوث، NFC، و تشخیص دستگاه مورد اعتماد را در خطمشی قدرت سیستم لغو کنند. لغو در /vendor/etc/power_policy.xml
اعمال می شود.
اجزاء | وضعیت قدرت | قابل تنظیم |
---|---|---|
سمعی | خاموش | خیر |
رسانه ها | خاموش | خیر |
نمایش اصلی | خاموش | خیر |
خوشه نمایش | خاموش | خیر |
نمایش سرنشین جلو | خاموش | خیر |
نمایش سرنشین عقب | خاموش | خیر |
بلوتوث | خاموش | آره |
وای فای | بر | خیر |
سلولی | بر | خیر |
شبکه محلی کابلی | بر | خیر |
فرافکنی | خاموش | خیر |
NFC | خاموش | آره |
ورودی | خاموش | خیر |
تعامل صوتی | خاموش | خیر |
تعامل بصری | خاموش | خیر |
تشخیص دستگاه مورد اعتماد | بر | آره |
محل | خاموش | خیر |
میکروفون | خاموش | خیر |
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. */ 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
ثبت کنند.