سیاست قدرت

برای اطمینان از اینکه اجزای سخت‌افزار و نرم‌افزار (مانند صفحه نمایش، صدا و تعامل صوتی) به‌صورت انتخابی روشن و خاموش می‌شوند، AAOS خط‌مشی برق ارائه می‌کند که شامل مجموعه‌ای از حالت‌های روشن و خاموش مورد انتظار برای قطعات سخت‌افزاری و نرم‌افزاری است. . VHAL یا سرویس‌های فروشنده دارای امتیاز سیستم، می‌تواند یک خط‌مشی برق جدید را زمانی اعمال کند که حالت قدرت Android تغییر کند یا شرایطی که منتظر آن هستند برآورده شود.

اعمال خط مشی برق در حالت های Wait for VHAL و On مجاز است. در Shutdown Prepare، حالت گاراژ در حال اجرا است و نباید با تغییر وضعیت برق مختل شود. اگرچه یک خط مشی برق معمولی را نمی توان اعمال کرد، یک خط مشی برق ویژه ، که خط مشی قدرت سیستم به نام "بدون تعامل کاربر" است، در Shutdown Prepare اعمال می شود.

وضعیت برق AAOS

دستگاه های AAOS از این نمودار وضعیت قدرت پیروی می کنند:

نمودار وضعیت قدرت AAOS

شکل 1. نمودار وضعیت قدرت AAOS

هر حالت قدرت در زیر توضیح داده شده است:

ارزش شرح
خاموش هیچ انرژی فیزیکی به پردازنده برنامه (AP)، حافظه و تجهیزات جانبی ارائه نمی شود.
منتظر VHAL باشید
  • هنگامی که راننده با وسیله نقلیه تعامل می کند (مثلاً با باز کردن یک در)، VMCU برق را به AP، حافظه اعمال می کند. و لوازم جانبی
  • AAOS از یکی از سه حالت (خاموش، تعلیق به RAM (STR، انتظار برای پایان VHAL) منتقل می شود و سپس وارد Wait for VHAL می شود، جایی که منتظر هماهنگی با VHAL است.
بر
  • VHAL به AAOS دستور می دهد تا وارد حالت روشن شود. در این حالت، AAOS به طور کامل در حال اجرا است و با راننده در تعامل است.
  • صفحه نمایش توسط خط مشی برق کنترل می شود و نه با تماس های روشن/خاموش صفحه نمایش اندروید برای سایر عوامل شکل.
خاموش شدن را آماده کنید
  • هنگامی که راننده رانندگی را متوقف کرد، VHAL به AAOS دستور می دهد تا Shutdown Prepare را وارد کند. در این حالت، صفحه نمایش و صدا خاموش هستند و AAOS با درایور تعامل ندارد. سیستم اندروید هنوز در حال اجرا است و می تواند برنامه ها و سیستم اندروید را به روز کند. هنگامی که به روز رسانی ها (در صورت وجود) کامل شد، سیستم اندروید وارد Wait for VHAL Finish می شود.
منتظر بمانید تا VHAL به پایان برسد
  • AAOS به VHAL اطلاع می دهد که می تواند خاموش شود. انتظار می رود که واحد میکروکنترلر خودرو (VMCU) سیستم روی تراشه (SoC) را در خواب عمیق قرار دهد و برق را از AP ​​حذف کند. سپس AAOS در وضعیت STR است، اگرچه هیچ کدی اجرا نمی شود.
  • اگر VHAL تمام نشود و راننده برگردد، واحد اصلی (HU) باید مستقیماً به Wait for 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 ثبت کنند.