سياسة القوة

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

يُسمح بتطبيق سياسة الطاقة في حالتي انتظر VHAL وOn. في إعداد إيقاف التشغيل، يتم تشغيل وضع Garage ويجب عدم إزعاجه بتغيير حالة الطاقة. على الرغم من أنه لا يمكن تطبيق سياسة طاقة عادية، إلا أنه يتم تطبيق سياسة طاقة خاصة ، وهي سياسة طاقة النظام المسماة "عدم تفاعل المستخدم"، في إعداد إيقاف التشغيل.

حالة الطاقة AAOS

تتبع أجهزة AAOS مخطط حالة الطاقة هذا:

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

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

يتم وصف كل حالة طاقة أدناه:

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

هيكلة البرمجيات

تم توضيح بنية سياسة الطاقة أدناه وتم تعريفها في القسم التالي:

الشكل 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 سياسة طاقة نظام واحدة فقط، وهي "عدم تفاعل المستخدم". يتم تطبيق سياسة طاقة النظام عندما ينتقل الجهاز إلى وضع المرآب.

يتم سرد سلوك كل مكون في سياسة طاقة النظام في الجدول أدناه. يمكن للمنفذين تجاوز اكتشاف Bluetooth وNFC والجهاز الموثوق به في سياسة طاقة النظام. يتم تطبيق التجاوزات في /vendor/etc/power_policy.xml .

عناصر حالة الطاقة شكلي
صوتي عن لا
وسائط عن لا
العرض الرئيسي عن لا
عرض الكتلة عن لا
عرض الراكب الأمامي عن لا
عرض الراكب الخلفي عن لا
بلوتوث عن نعم
واي فاي على لا
الخلوية على لا
إيثرنت على لا
تنبؤ عن لا
نفك عن نعم
مدخل عن لا
التفاعل الصوتي عن لا
التفاعل البصري عن لا
اكتشاف الجهاز الموثوق به على نعم
موقع عن لا
ميكروفون عن لا
وحدة المعالجة المركزية على لا

التفاعل مع 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);
}

التفاعل مع وحدات جافا

يوفر CarPowerManager طرقًا لتمكين إدارة سياسة الطاقة:

  • الحصول على سياسة الطاقة الحالية.
  • احصل على مجموعة سياسة الطاقة الحالية
  • تطبيق سياسة طاقة جديدة
  • قم بتعيين مجموعة سياسة طاقة جديدة

يمكن للوحدات المميزة بالنظام فقط استخدام الأساليب. يمكن للوحدات التي ترغب في الحصول على معلومات عند تطبيق سياسة الطاقة، تسجيل مستمع تغيير سياسة الطاقة في CarPowerManager .