سياسة الطاقة

التأكد من أن مكونات الأجهزة والبرامج (مثل العرض والصوت والتفاعل الصوتي) يتم تشغيلها وإيقافها بشكل انتقائي حسب الحاجة، ويوفر AAOS سياسة الطاقة، والتي تتألف من مجموعة من حالات التشغيل وإيقاف التشغيل المتوقعة لمكونات الأجهزة والبرامج. VHAL أو خدمات الموردين التي يوفرها النظام، يمكنها تطبيق سياسة طاقة جديدة عند انتهاء حالة الانتقالات أو عند استيفاء الشروط التي ينتظرونها.

يُسمح بتطبيق سياسة الطاقة في حالات انتظار VHAL و مفعَّل (مع بعض القيود أحيانًا). أثناء الاستعداد لإيقاف التشغيل، يكون "وضع المرآب" قيد التشغيل ويجب أن عدم إزعاجك بتغيير حالة الطاقة. وبالرغم من عدم إمكانية تطبيق سياسة طاقة عادية، فإن يتم تطبيق سياسة الطاقة الخاصة، وهي سياسة طاقة النظام المُسماة "عدم تفاعل المستخدم"، في الاستعداد لإيقاف التشغيل

حالة طاقة AAOS

تتّبع أجهزة AAOS هذا الرسم البياني لحالة الطاقة:

مخطط حالة طاقة AAOS

الشكل 1. مخطط حالة طاقة AAOS.

في ما يلي توضيح لكل حالة من حالات الطاقة:

القيمة الوصف
غير مفعّلة
  • لا يتم توفير أي طاقة فعليًا إلى معالج التطبيقات (AP) والذاكرة الأجهزة الملحقة.
انتظار VHAL
  • عندما يتفاعل السائق مع المركبة (على سبيل المثال، عن طريق فتح الباب)، يتم تطبيق VMCU. الطاقة إلى نقطة الوصول، الذاكرة. والأجهزة الملحقة بها.
  • عمليات نقل AAOS من إحدى الحالات الثلاث (إيقاف التشغيل، التعليق إلى ذاكرة الوصول العشوائي (STR)، الانتظار حتى انتهاء VHAL)) ثم يدخل في انتظار VHAL، حيث ينتظر التنسيق مع VHAL.
تشغيل
  • توجه VHAL جهاز AAOS إلى الدخول في حالة "تشغيل". وفي هذه الحالة، يكون نظام التشغيل Android Automotive (AAOS) قيد التشغيل بشكل كامل. تتفاعل مع السائق.
  • يتم التحكّم في الشاشة من خلال سياسة الطاقة وليس من خلال طلبات تفعيل/إيقاف شاشة Android للأجهزة الأخرى. من أشكال الأجهزة.
الاستعداد لإيقاف التشغيل
  • عندما يتوقف السائق عن القيادة، تطلب VHAL من نظام التشغيل AAOS الدخول إلى وضع "التجهيز لإيقاف التشغيل". في هذه الحالة، يتم إيقاف العرض والصوت ولا يتفاعل نظام التشغيل AAOS مع السائق. لا يزال نظام Android قيد التشغيل ويمكنه تحديث التطبيقات ونظام Android. عند اكتمال التحديثات (في حال توفّرها)، يدخل نظام Android إلى "انتظار الانتهاء من VHAL".
انتظار انتهاء VHAL
  • يبلغ نظام التشغيل AAOS جهاز VHAL بإمكانية إيقاف التشغيل. تُعد وحدة التحكم الدقيقة للمركبة (VMCU) ومن المتوقع وضع النظام على الرقاقة (SoC) في وضع السكون وإزالة الطاقة من نقطة الوصول. يكون AAOS في هذه الحالة في حالة STR، على الرغم من عدم تنفيذ أيّ رمز برمجي.
  • إذا لم يكتمل VHAL وعاد السائق، يجب أن تنتقل الوحدة الرئيسية (HU) مباشرةً لانتظار VHAL.
التعليق على ذاكرة الوصول العشوائي (STR)
  • المركبة ونقطة الوصول متوقفةان ولا يتم تنفيذ أي رمز ويحافظان على الطاقة. إلى ذاكرة الوصول العشوائي AP.
التعليق على القرص (STD)
  • المركبة ونقطة الوصول متوقفةان ولا يتم تنفيذ الرموز ولا يتم الاحتفاظ بأي مصدر للتيار إلى وحدة المعالجة وذاكرة الوصول العشوائي AP.

كيف يتم تحديد سياسة الطاقة؟

تحدّد جهات التنفيذ سياسات الطاقة في /vendor/etc/automotive/power_policy.xml الذي:

  • تحدِّد هذه السياسة سياسة الطاقة.
  • يتم تحديد مجموعات سياسات الطاقة، والتي تتضمن سياسة الطاقة التلقائية ويتم تلقائيًا يتم تطبيقها عند حدوث انتقالات حالة الطاقة.
  • يؤدي هذا الخيار إلى إلغاء سياسة طاقة النظام.

سياسة الطاقة

تتكون سياسة الطاقة من مجموعة من حالات الطاقة المتوقعة لمكونات الأجهزة والبرامج. يتيح نظام التشغيل Android Automotive (AAOS) هذه المكوّنات في سياسة الطاقة:

صوت
الوسائط
الشبكة الإعلانية
البلوتوث
Wi-Fi
شبكة الجوّال
EtheRNET
التوقعات
الاتصال القصير المدى (NFC)
الإدخال
التفاعل الصوتي
التفاعل VISUAL_INTERACTION
TRUSTED_DEVICE_DETECTION
الموقع
الميكروفون
وحدة المعالجة المركزية (CPU)

يمكن للمورّدين أيضًا تحديد مكوّنات الطاقة المخصَّصة لاستخدامها مع سياسات الطاقة. التحديد مكوّنات طاقة مخصّصة في ملف XML نفسه المرتبط بسياسات الطاقة، كما في هذا المثال:

<customComponents>
  CUSTOM_COMPONENT_1000
  CUSTOM_COMPONENT_SPECIAL_SENSOR
  CUSTOM_COMPONENT_AUX_INPUT
</customComponents>

مجموعة سياسات التشغيل

يتم تطبيق سياسة الطاقة التلقائية عند تغيير حالة الطاقة تلقائيًا المحددة في مجموعة سياسات الطاقة. يمكن للمورّدين تحديد سياسة الطاقة الافتراضية انتظِر حتى يتم تفعيل VHAL أو VHAL أو بدء إيقاف التشغيل.

سياسات طاقة النظام

يدعم نظام التشغيل AAOS سياستين من سياسات الطاقة، وهما عدم تفاعل المستخدم و تعليق التحضير تُطبَّق سياسة طاقة النظام عند دخول الجهاز إلى الوضع الصامت أو وضع المرآب أو التعليق على ذاكرة الوصول العشوائي أو التعليق على القرص.

توضح الجداول التالية سلوك كل مكوَّن في سياسة طاقة النظام. يمكن للجهات المنفّذة إلغاء الرصد من خلال البلوتوث وNFC و"الأجهزة الموثوق بها" في سياسة طاقة النظام بدون تفاعل المستخدم. يتم تطبيق عمليات الإلغاء في /vendor/etc/power_policy.xml

بدون تفاعل المستخدم

يتم تحديد سلوك سياسة طاقة النظام بدون تفاعل من المستخدم في هذه :

المكوّنات حالة الطاقة قابل للضبط
الصوت غير مفعّلة لا
الوسائط غير مفعّلة لا
الشاشة غير مفعّلة لا
البلوتوث غير مفعّلة نعم
شبكة Wi-Fi تشغيل لا
شبكة الجوّال تشغيل لا
إيثرنت تشغيل لا
القيمة المتوقّعة غير مفعّلة لا
الاتصال القصير المدى (NFC) غير مفعّلة نعم
الإدخال غير مفعّلة لا
مساعد Google غير مفعّلة لا
تفاعل المستخدم غير مفعّلة لا
رصد الجهاز الموثوق به لتسجيل دخول المستخدم تشغيل نعم
الموقع الجغرافي غير مفعّلة لا
الميكروفون غير مفعّلة لا
وحدة المعالجة المركزية (CPU) تشغيل لا

التحضير لعملية التعليق

يتم تحديد سلوك سياسة طاقة نظام الإعداد المسبق في هذا الجدول:

المكوّنات حالة الطاقة قابل للضبط من قِبل المصنّع الأصلي للجهاز
الصوت غير مفعّلة لا
الوسائط لا ينطبق لا
الشاشة لا ينطبق لا
البلوتوث غير مفعّلة لا
شبكة Wi-Fi غير مفعّلة لا
شبكة الجوّال لا ينطبق لا
إيثرنت لا ينطبق لا
القيمة المتوقّعة لا ينطبق لا
الاتصال القصير المدى (NFC) لا ينطبق لا
الإدخال لا ينطبق لا
مساعد Google لا ينطبق لا
تفاعل المستخدم لا ينطبق لا
رصد الجهاز الموثوق به لتسجيل دخول المستخدم لا ينطبق لا
الموقع الجغرافي غير مفعّلة لا
الميكروفون غير مفعّلة لا
وحدة المعالجة المركزية (CPU) غير مفعّلة لا

التفاعل مع VHAL

يشترك البرنامج الخفي لسياسة تشغيل السيارة في طبقة النظام في خاصيتين للاستماع إلىهما. الطلبات من VHAL:

  • POWER_POLICY_REQ تكتب VHAL معرّف سياسة الطاقة لهذه السمة.
  • POWER_POLICY_GROUP_REQ يكتب VHAL معرّف مجموعة سياسة الطاقة على هذا الموقع.

يمكن تغيير سياسة الطاقة الحالية في النظام باستخدام وحدات غير VHAL. في هذه الحالة، يعدّل البرنامج الخفي لسياسة تشغيل السيارة السمة CURRENT_POWER_POLICY لإرسال إشعار إلى التغيير إلى VHAL.

التفاعل مع العمليات الأصلية

كما ذكرنا أعلاه، يتم تشغيل البرنامج الخفي لسياسة طاقة السيارة في طبقة النظام ومن حيث الطاقة إدارة السياسات، يوفر تقريبًا نفس وظائف التكلفة لكل ألف ظهور التي تعمل في طبقة إطار العمل. لنفترض أيضًا أنّه قد تمت مزامنة البرنامج الخفي لسياسة تشغيل السيارة والتكلفة لكل ألف ظهور (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.
     * @throws IllegalStateException if the current policy is not set.
     */
    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.
     * @throws IllegalArgumentException if the componentId is invalid.
     */
    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.
     * @throws IllegalArgumentException if the callback is already registered.
     * @throws IllegalStateException if the callback is dead.
     */
    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.
     * @throws IllegalArgumentException if the callback is not registered.
     */
    void unregisterPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback);

    /**
     * Applies the power policy.
     *
     * 

{@code policyId} should be one of power policy IDs defined in * {@code /vendor/etc/automotive/power_policy.xml} or predefined system power policies. * * @param policyId ID of power policy. * @throws IllegalArgumentException if {@code policyId} is invalid. */ void applyPowerPolicy(in @utf8InCpp String policyId); /** * Sets the current power policy group. * *

{@code policyGroupId} should be one of power policy group IDs defined in * {@code /vendor/etc/automotive/power_policy.xml}. * * @param policyGroupId ID of power policy group. * @throws IllegalArgumentException if {@code policyGroupId} is invalid. */ void setPowerPolicyGroup(in @utf8InCpp String policyGroupId); }

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