מדיניות כוח

כדי להבטיח שרכיבי חומרה ותוכנה (כגון תצוגה, אודיו ואינטראקציה קולית) מופעלים ומכבים באופן סלקטיבי לפי הצורך, AAOS מספקת מדיניות צריכת חשמל, המורכבת מסט של מצבי הפעלה וכיבוי צפויים עבור רכיבי חומרה ותוכנה . VHAL, או שירותי ספק מורשים מערכת, יכולים להחיל מדיניות צריכת חשמל חדשה כאשר מצב הכוח של Android עובר מעבר או כאשר מתקיימים תנאים שהם מחכים להם.

החלת מדיניות צריכת חשמל מותרת במצבים של Wait for VHAL ו-On. ב-Shutdown Prepare, מצב המוסך פועל ואין להפריע לו על ידי שינוי במצב החשמל. למרות שלא ניתן להחיל מדיניות צריכת חשמל רגילה, מדיניות צריכת חשמל מיוחדת , שהיא מדיניות צריכת החשמל של המערכת בשם "ללא אינטראקציה עם משתמש", מוחלת ב-Shutdown Prepare.

מצב כוח AAOS

התקני AAOS עוקבים אחר דיאגרמת מצב הספק הזה:

דיאגרמת מצב כוח AAOS

איור 1. דיאגרמת מצב כוח AAOS

כל מצב כוח מתואר להלן:

ערך תיאור
כבוי אין חשמל מסופק פיזית למעבד היישומים (AP), לזיכרון ולציוד היקפי.
המתן ל-VHAL
  • כאשר הנהג מקיים אינטראקציה עם הרכב (לדוגמה, על ידי פתיחת דלת), ה-VMCU מפעיל מתח לזיכרון ה-AP. וציוד היקפי.
  • AAOS עובר מאחד משלושת המצבים (כבוי, השעיה ל-RAM (STR, Wait for VHAL Finish) ואז נכנס Wait for VHAL, שם הוא ממתין לתיאום עם ה-VHAL.
עַל
  • ה-VHAL מורה ל-AAOS להיכנס למצב מופעל. במצב זה, AAOS פועל במלואו ומקיים אינטראקציה עם מנהל ההתקן.
  • התצוגה נשלטת על ידי מדיניות צריכת החשמל ולא על ידי קריאות הפעלה/כיבוי של תצוגת Android עבור גורמי צורה אחרים.
כיבוי הכנה
  • כאשר הנהג הפסיק לנהוג, ה-VHAL מורה ל-AAOS להיכנס ל-Shutdown Prepare. במצב זה, התצוגה והשמע כבויים וה-AAOS אינו מקיים אינטראקציה עם מנהל ההתקן. מערכת האנדרואיד עדיין פועלת ויכולה לעדכן אפליקציות ומערכת אנדרואיד. לאחר השלמת עדכונים (אם ישנם), מערכת האנדרואיד נכנסת ל-Wit for VHAL Finish.
המתן עד ש-VHAL יסתיים
  • AAOS מודיע ל-VHAL שניתן לכבות אותו. יחידת המיקרו-בקר לרכב (VMCU) צפויה להכניס את מערכת-על-שבב (SoC) לשינה עמוקה ולהסיר מתח מה-AP. AAOS נמצא אז במצב STR, למרות ששום קוד לא מבוצע.
  • אם VHAL לא מסתיים והנהג חוזר, היחידה הראשית (HU) צריכה לעבור ישירות ל-Wit for VHAL.
השעיה ל-RAM (STR) הרכב וה-AP כבויים, שום קוד לא מופעל, והמתח נשמר ל-AP RAM.

ארכיטקטורת תוכנה

ארכיטקטורת מדיניות החשמל מומחשת להלן ומוגדרת בסעיף הבא:

איור 2. ארכיטקטורת מדיניות כוח

כיצד מוגדרת מדיניות החשמל?

המיישמים מגדירים מדיניות צריכת חשמל ב-/vendor/etc/automotive/ /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, and Wait for Finish VHAL (כניסה לשינה עמוקה או התחלת כיבוי).

מדיניות צריכת החשמל של המערכת

AAOS תומך רק במדיניות צריכת חשמל אחת של המערכת, שהיא "ללא אינטראקציה עם משתמש". מדיניות צריכת החשמל של המערכת חלה כאשר המכשיר עובר למצב שקט או מצב מוסך.

ההתנהגות של כל רכיב במדיניות צריכת החשמל של המערכת מופיעה בטבלה למטה. מיישמים יכולים לעקוף את Bluetooth, NFC וזיהוי מכשירים מהימנים במדיניות צריכת החשמל של המערכת. עקיפות מיושמות ב-/vendor/etc/ /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 .