כדי לוודא שרכיבי החומרה והתוכנה (כמו מסך, אודיו וקול) אינטראקציה) מופעלות ומושבתות באופן סלקטיבי לפי הצורך, AAOS מספק מדיניות כוח, הכוללת קבוצה של מצבי הפעלה וכיבוי צפויים רכיבי חומרה ותוכנה. VHAL או שירותי ספקים שיש להם הרשאות מערכת יכולים להחיל מדיניות אספקת חשמל חדשה כשמצב החשמל של Android משתנה או כשהתנאים מתקיימים על התגובות.
אפשר להחיל מדיניות אספקת חשמל במצבי המתנה ל-VHAL ו-On. בשלבי הכנה לכיבוי, מצב החניה פועל ואין להפריע למצב החשמל. למרות לא ניתן להחיל מדיניות אספקת חשמל רגילה, מדיניות אספקת חשמל מיוחדת, שהיא המערכת מדיניות חשמל שנקראת "ללא אינטראקציה עם משתמשים" מיושמת בהכנה לכיבוי.
מצב הספק AAOS
מכשירי AAOS פועלים לפי התרשים הבא של מצב אספקת החשמל:
איור 1. תרשים מצב ההספק של AAOS
כל מצב של אספקת חשמל מתואר בהמשך:
ערך | תיאור |
---|---|
מושבתת | אספקת חשמל לא מסופקת פיזית למעבד האפליקציות (AP), לזיכרון ול ציוד היקפי. |
המתנה ל-VHAL |
|
מצב פעיל |
|
היערכות לכיבוי |
|
צריך להמתין ש-VHAL יסתיים |
|
השעיה ל-RAM (STR) | הרכב וה-AP כבויים, לא מופעל קוד, והמערכת שומרת על אספקת החשמל ל-AP RAM. |
ארכיטקטורת תוכנה
הארכיטקטורה של מדיניות צריכת החשמל מתוארת בהמשך ומוגדרת בקטע הבא:
איור 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
קבוצת מדיניות חזקה
מדיניות ברירת המחדל לאספקת חשמל מוחלת באופן אוטומטי בזמן המעבר למצב חשמל היא שצוין בקבוצה של מדיניות אספקת החשמל. ספקים יכולים להגדיר את מדיניות ברירת המחדל של אספקת החשמל עבור יש להמתין ל-VHAL, למצב מופעל ולהמתין לסיום VHAL (כניסה לשינה עמוקה או התחלת כיבוי).
מדיניות בנושא אספקת החשמל למערכת
ב-AAOS יש תמיכה רק במדיניות אחת של אספקת החשמל למערכת – 'ללא אינטראקציה עם המשתמש'. ההספק החשמלי של המערכת המדיניות חלה כשהמכשיר עובר למצב חנייה.
ההתנהגות של כל רכיב במדיניות בנושא אספקת החשמל של המערכת מפורטת בטבלה שבהמשך.
מטמיעים יכולים לבטל את הזיהוי של Bluetooth, NFC ומכשיר מהימן במערכת
מדיניות בנושא חשמל. השינויים יחולו ב-/vendor/etc/power_policy.xml
.
רכיבים | מצב חשמל | ניתן להגדרה |
---|---|---|
אודיו | מושבתת | לא |
מדיה | מושבתת | לא |
תצוגה ראשית | מושבתת | לא |
אשכול תצוגה | מושבתת | לא |
הצגת הנוסע הקדמי | מושבתת | לא |
הצגת הנוסע האחורי | מושבתת | לא |
Bluetooth | מושבתת | כן |
Wi-Fi | מופעלת | לא |
רשת סלולרית | מופעלת | לא |
אתרנט | מופעלת | לא |
תחזית | מושבתת | לא |
NFC | מושבתת | כן |
קלט | מושבתת | לא |
אינטראקציה קולית | מושבתת | לא |
אינטראקציה חזותית | מושבתת | לא |
זיהוי מכשירים מהימנים | מופעלת | כן |
מיקום | מושבתת | לא |
מיקרופון | מושבתת | לא |
CPU | מצב פעיל | לא |
אינטראקציה עם VHAL
הדימון (daemon) של מדיניות החשמל של הרכב שרץ בשכבת המערכת רושם שני מאפיינים להאזנה בקשות מ-VHAL:
POWER_POLICY_REQ
, ה-VHAL כותב מזהה מדיניות עוצמה לנכס הזה.POWER_POLICY_GROUP_REQ
, ה-VHAL כותב את מזהה הקבוצה של מדיניות החשמל לנכס הזה.
אפשר לשנות את מדיניות אספקת החשמל הנוכחית במערכת באמצעות מודולים שאינם VHAL. במקרה הזה,
הדימון (daemon) של מדיניות החשמל של הרכב מעדכן את הנכס CURRENT_POWER_POLICY
כדי להודיע
ל-VHAL.
אינטראקציה עם תהליכים מותאמים
כפי שצוין למעלה, הדימון (daemon) של מדיניות החשמל של הרכב פועל בשכבת המערכת, ומבחינת חשמל לניהול מדיניות, מספק כמעט את אותה פונקציונליות כמו CPMS שפועל בשכבת המסגרת. כמו כן, נניח שהדימון (daemon) של מדיניות החשמל ברכב וה-CPMS מסונכרנים באופן מלא.
הדימון (daemon) של מדיניות האנרגיה של הרכב מייצא ממשקי 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); }
אינטראקציה עם מודולים של Java
ב-CarPowerManager
יש שיטות להפעלה של ניהול מדיניות צריכת החשמל:
- מקבלים את מדיניות אספקת החשמל הנוכחית.
- טעינת הקבוצה הנוכחית של מדיניות אספקת החשמל
- החלת מדיניות אספקת חשמל חדשה
- הגדרה של קבוצה חדשה של מדיניות חזקה
רק מודולים עם הרשאות מערכת יכולים להשתמש בשיטות. מודולים שרוצים
לקבל מידע כשמחילים מדיניות אספקת חשמל, יכול לרשום מסנן לשינוי מדיניות כוח
CarPowerManager