כדי להבטיח שרכיבי חומרה ותוכנה (כגון תצוגה, אודיו ואינטראקציה קולית) מופעלים ומכבים באופן סלקטיבי לפי הצורך, AAOS מספקת מדיניות צריכת חשמל, המורכבת מסט של מצבי הפעלה וכיבוי צפויים עבור רכיבי חומרה ותוכנה . VHAL, או שירותי ספק מורשים מערכת, יכולים להחיל מדיניות צריכת חשמל חדשה כאשר מצב הכוח של Android עובר מעבר או כאשר מתקיימים תנאים שהם מחכים להם.
החלת מדיניות צריכת חשמל מותרת במדינות Wait for VHAL ו-On. ב-Shutdown Prepare, מצב המוסך פועל ואין להפריע לו על ידי שינוי במצב החשמל. למרות שלא ניתן להחיל מדיניות צריכת חשמל רגילה, מדיניות צריכת חשמל מיוחדת , שהיא מדיניות צריכת החשמל של המערכת בשם "ללא אינטראקציה עם משתמש", מוחלת ב-Shutdown Prepare.
מצב כוח AAOS
התקני AAOS עוקבים אחר דיאגרמת מצב הספק הזה:
איור 1. דיאגרמת מצב כוח AAOS
כל מצב כוח מתואר להלן:
ערך | תיאור |
---|---|
כבוי | לא מסופק פיזית חשמל למעבד היישומים (AP), לזיכרון ולציוד היקפי. |
המתן ל-VHAL |
|
עַל |
|
כיבוי הכנה |
|
המתן עד ש-VHAL יסתיים |
|
השעיה ל-RAM (STR) | הרכב וה-AP כבויים, שום קוד לא מופעל, והמתח נשמר ל-AP RAM. |
ארכיטקטורת תוכנה
ארכיטקטורת מדיניות החשמל מומחשת להלן ומוגדרת בסעיף הבא:
איור 2. ארכיטקטורת מדיניות כוח
כיצד מוגדרת מדיניות החשמל?
המיישמים מגדירים מדיניות צריכת חשמל ב- /vendor/etc/automotive/power_policy.xml
/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, and Wait for Finish VHAL (כניסה לשינה עמוקה או התחלת כיבוי).
מדיניות צריכת החשמל של המערכת
AAOS תומך רק במדיניות צריכת חשמל אחת של המערכת, שהיא "ללא אינטראקציה עם משתמש". מדיניות צריכת החשמל של המערכת מופעלת כאשר המכשיר עובר למצב מוסך.
ההתנהגות של כל רכיב במדיניות צריכת החשמל של המערכת מופיעה בטבלה למטה. מיישמים יכולים לעקוף את Bluetooth, NFC וזיהוי מכשירים מהימנים במדיניות צריכת החשמל של המערכת. עקיפות מיושמות ב- /vendor/etc/power_policy.xml
.
רכיבים | מצב כוח | ניתן להגדרה |
---|---|---|
שֶׁמַע | כבוי | לא |
כְּלֵי תִקְשׁוֹרֶת | כבוי | לא |
תצוגה ראשית | כבוי | לא |
אשכול תצוגה | כבוי | לא |
תצוגה לנוסע קדמי | כבוי | לא |
תצוגה לנוסע מאחור | כבוי | לא |
בלוטות | כבוי | כן |
וויי - פיי | עַל | לא |
תָאִי | עַל | לא |
אתרנט | עַל | לא |
הַקרָנָה | כבוי | לא |
NFC | כבוי | כן |
קֶלֶט | כבוי | לא |
אינטראקציה קולית | כבוי | לא |
אינטראקציה חזותית | כבוי | לא |
זיהוי מכשירים מהימנים | עַל | כן |
מקום | כבוי | לא |
מִיקרוֹפוֹן | כבוי | לא |
מעבד | עַל | לא |
אינטראקציה עם ה-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); }
אינטראקציה עם מודולי Java
CarPowerManager
מספק שיטות לאפשר ניהול מדיניות צריכת חשמל:
- קבל את מדיניות החשמל הנוכחית.
- קבל את קבוצת מדיניות החשמל הנוכחית
- החל מדיניות חשמל חדשה
- הגדר קבוצת מדיניות צריכת חשמל חדשה
רק מודולים מוסמכים למערכת יכולים להשתמש בשיטות. מודולים שרוצים לקבל מידע בעת הפעלת מדיניות צריכת חשמל, יכולים לרשום מאזין לשינוי מדיניות צריכת חשמל ב- CarPowerManager
.