نهج القوة

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

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

حالة طاقة 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 Finish.
انتظر حتى ينتهي VHAL
  • تبلغ AAOS جهاز VHAL بإمكانية إيقاف تشغيله. من المتوقع أن تقوم وحدة التحكم الدقيقة للمركبة (VMCU) بوضع System-on-Chip (SoC) في وضع السكون العميق وإزالة الطاقة من AP. وبذلك تكون AAOS في حالة STR ، على الرغم من عدم تنفيذ أي كود.
  • إذا لم ينتهي VHAL وعاد السائق ، يجب أن تنتقل وحدة الرأس (HU) مباشرة إلى Wait for VHAL.
تعليق إلى ذاكرة الوصول العشوائي (STR) تم إيقاف تشغيل السيارة و AP ، ولا يتم تنفيذ أي رمز ، ويتم الحفاظ على الطاقة في ذاكرة الوصول العشوائي 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 (Deep Sleep Entry أو Shutdown Start).

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

يدعم 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);
}

التفاعل مع وحدات جافا النمطية

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

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

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