إدارة الطاقة

لتوفير إمكانية إدارة الطاقة الخاصة بالمركبة، يوفّر نظام التشغيل Android CarPowerManagementService خدمة وCarPowerManager واجهة.

يتم تشغيل عمليات الانتقال بين الحالات من خلال وحدة التحكّم الرئيسية في المركبة (VMCU). للتواصل مع وحدة التحكّم في الماكينة الافتراضية (VM) للأجهزة، على الجهات المدمجة تنفيذ عدة مكونات. يكون المدمجون مسؤولين عن الدمج مع طبقة تجريد أجهزة المركبة (VHAL) وتنفيذ النواة. ويتحمّل المدمجون أيضًا مسؤولية إيقاف مصادر التنشيط وضمان عدم تأجيل عمليات الإيقاف إلى أجل غير مسمّى.

المصطلحات

تُستخدَم هذه المصطلحات في جميع أنحاء هذا المستند:

معالج التطبيقات (AP)
جزء من المنظومة على رقاقة (SoC)
حزمة دعم لوحة الجهاز (BSP)
طبقة البرامج التي تحتوي على برامج ثابتة خاصة بتشغيل الأجهزة وبرامج تشغيل الأجهزة التي تسمح لنظام التشغيل المضمّن بالعمل في بيئة أجهزة معيّنة (لوحة أم)، مدمجة مع نظام التشغيل المضمّن
CarPowerManager (CPM)
تعرض واجهة برمجة تطبيقات لتسجيل التطبيقات في حال حدوث تغييرات في حالة الطاقة.
CarPowerManagementService (CPMS)
تنسّق عمليات الانتقال بين حالات الطاقة، وتتفاعل مع "طبقة تجريد الأجهزة في المركبة" (VHAL) للتحكّم في حالة الطاقة، وتنفّذ عمليات الاستدعاء النهائية للتعليق والإيقاف.
CarPowerPolicyDaemon (CPPD)
تدير سياسات الطاقة وتوفّر واجهات AIDL للعمليات الأصلية لتسجيل أدوات معالجة سياسات الطاقة.
الإدخال أو الإخراج للأغراض العامة (GPIO)
دبوس إشارة رقمية للاستخدام العام
طبقة تجريد الأجهزة (HAL)
طبقة برمجية يجب أن تتفاعل معها جميع الوحدات الأخرى ذات المستوى الأعلى من أجل الوصول إلى وظائف الأجهزة.
إسبات
يُعرف أيضًا باسم التعليق إلى القرص (S2D/S4). يتم وضع منظومة على رقاقة (SoC) في وضع الطاقة S4 (إسبات) ويتم نقل محتوى ذاكرة الوصول العشوائي (RAM) إلى وسائط غير متطايرة (مثل تثبيت ذاكرة ROM أو قرص) ويتم إيقاف تشغيل النظام بأكمله.
معالج الوسائط (MP)
اطّلِع على منظومة على رقاقة (SoC).
دائرة متكاملة لإدارة الطاقة (PMIC)
شريحة مستخدَمة لإدارة متطلبات الطاقة لنظام المضيف
منظومة على رقاقة (SoC)
المعالج الرئيسي الذي يشغّل AAOS، والذي يوفّره عادةً مصنّعون مثل Intel وMediaTek وNvidia وQualcomm وRenesas وTexas Instruments
تعليق
يُشار إليها أيضًا باسم التعليق إلى ذاكرة الوصول العشوائي (S2R أو STR). يتم وضع نظام SoC في وضع الطاقة S3 ويتم إيقاف تشغيل وحدة المعالجة المركزية مع إبقاء ذاكرة الوصول العشوائي قيد التشغيل.
طبقة تجريد الأجهزة في المركبة (VHAL)
واجهة برمجة تطبيقات Android المستخدَمة للتفاعل مع شبكة المركبة ويكون الشريك أو الشركة المصنّعة للمعدات الأصلية (OEM) من المستوى 1 مسؤولاً عن كتابة هذه الوحدة. يمكن أن تستخدم شبكة المركبة أي طبقة مادية (مثل CAN وLIN وMOST وEthernet). تجرّد VHAL شبكة المركبة هذه للسماح لنظام التشغيل AAOS بالتفاعل مع المركبة.
معالج واجهة المركبة (VIP)
الاطّلاع على وحدة التحكّم الرئيسية في السيارة
وحدة التحكم الرئيسية في المركبة (VMCU)
وحدة التحكّم الدقيق التي توفّر الواجهة بين شبكة السيارة وSoC. تتواصل SoC مع VMCU من خلال إشارات USB وUART وSPI وGPIO.

تصميم النظام

يوضّح هذا القسم كيف يمثّل نظام التشغيل Android Automotive OS حالة الطاقة لمعالج التطبيق والوحدات التي تنفّذ نظام إدارة الطاقة. توضّح هذه المادة أيضًا كيفية عمل هذه الوحدات معًا وكيفية حدوث عمليات نقل الحالة عادةً.

آلة حالة تشغيل ميزات السيارة

يستخدم نظام التشغيل Android Automotive آلة حالات لتمثيل حالة الطاقة لمعالج التطبيقات. توفّر آلة الحالة الحالات الموضّحة أدناه:

آلة حالة تشغيل ميزات السيارة

الشكل 1: آلة حالة طاقة السيارة

يتم تمييز عمليات الانتقال الأكثر شيوعًا باللون الأزرق. في ما يلي الحالات وعمليات الانتقال الشائعة:

  • التعليق إلى ذاكرة الوصول العشوائي: المركبة ونظام التشغيل مغلقان، ولا يتم تنفيذ أي رمز برمجي. يتم الحفاظ على الطاقة في ذاكرة الوصول العشوائي (RAM) الخاصة بمنظومة على رقاقة (SoC).
  • انتظِر VHAL. عندما يتفاعل السائق مع المركبة، مثلاً من خلال فتح أحد الأبواب، يزوّد نظام VMCU وحدة SoC بالطاقة. يستأنف نظام التشغيل AAOS العمل من وضع "تعليق إلى ذاكرة الوصول العشوائي" (Suspend-to-RAM) وينتقل إلى وضع "انتظار VHAL" (Wait for VHAL)، حيث ينتظر التنسيق مع VHAL.
  • مفعَّلة تطلب VHAL من AAOS الانتقال إلى الحالة "قيد التشغيل". في هذه الحالة، يكون نظام التشغيل AAOS قيد التشغيل بالكامل ويتفاعل مع السائق.
  • التحضير قبل إيقاف التشغيل عندما ينتهي السائق من القيادة، يطلب VHAL من نظام التشغيل Android Automotive ‏(AAOS) الانتقال إلى مرحلة الإعداد قبل الإيقاف النهائي عن طريق إرسال SHUTDOWN_PREPARE. في هذه الحالة، تتلقّى أدوات معالجة تغييرات حالة الطاقة القيمة STATE_PRE_SHUTDOWN_PREPARE. ويشكّل ذلك تحذيرًا مبكرًا بأنّ عملية الإيقاف قد بدأت.
  • التحضير للإيقاف النهائي: عندما يكمل جميع المستمعين عملية الإغلاق أو يتم بلوغ مهلة الإعداد قبل الإغلاق، يدخل نظام التشغيل Android في مرحلة الإعداد الأساسية قبل الإغلاق، ويُرسِل إشعارًا إلى المستمعين باستخدام STATE_SHUTDOWN_PREPARE. تكون شاشة العرض والصوت متوقفَين ولا يتفاعل نظام التشغيل Android Automotive مع السائق. يظل نظام Android قيد التشغيل ويمكنه تنفيذ عمليات التنظيف والتحديث، مثل تنفيذ "وضع المرآب".
  • انتظِر إلى أن تنتهي عملية VHAL. في هذه المرحلة، يُعلم AAOS طبقة VHAL بأنّه جاهز للإيقاف. من المتوقّع أن يضع VMCU نظام SoC في وضع "السكون العميق" وأن يزيل الطاقة من معالج التطبيق. بعد ذلك، يصبح نظام التشغيل AAOS في حالة "تعليق إلى ذاكرة الوصول العشوائي"، على الرغم من عدم تنفيذ أي رمز برمجي.

وحدات إدارة الطاقة

يتألف نظام إدارة الطاقة من الوحدات التالية:

اسم الوحدة الوصف
CarPowerManager واجهة برمجة تطبيقات Java أو C++
CarPowerManagementService تنسّق عمليات الانتقال بين حالات التشغيل وتفوّض إدارة سياسة التشغيل إلى CarPowerPolicyDaemon.
CarPowerPolicyDaemon تدير هذه الخدمة سياسات الطاقة وتتواصل مع برامج العميل الأصلية لسياسات الطاقة.
طبقة تجريد الأجهزة في المركبة واجهة وحدة التحكّم في المركبة (VMCU)
Kernel تعليق التنفيذ في ذاكرة الوصول العشوائي أو القرص

يتم تنفيذ ميزة السكون العميق/وضع الإسبات (تعليق Android في ذاكرة الوصول العشوائي/القرص) في النواة. تتوفّر هذه الميزة لمساحة المستخدم كملف خاص يقع في /sys/power/state. يتم تعليق AAOS من خلال كتابة mem أو disk في هذا الملف.

تنسّق خدمة إدارة الطاقة حالة الطاقة مع الخدمات الأخرى وطبقات HAL. تنفّذ خدمة CPMS آلة الحالة الموضّحة أعلاه وترسل إشعارات إلى كل مراقب عند حدوث انتقال في حالة الطاقة. تستخدم هذه الخدمة أيضًا VHAL لإرسال الرسائل إلى الأجهزة.

تمثّل "سياسة إدارة الطاقة في ChromeOS" المصدر الموثوق به لسياسات الطاقة. تدير هذه الخدمة سياسات الطاقة طوال دورة حياة الجهاز، وتُرسل إشعارات إلى نظام إدارة الطاقة المركزي (CPMS) وطبقة تجريد الأجهزة في السيارة (VHAL) وبرامج الاستماع الأصلية الأخرى بشأن التغييرات في سياسات الطاقة. يُفوِّض نظام إدارة الطاقة في السحابة الإلكترونية (CPMS) طلبات تغيير سياسة الطاقة إلى نظام إدارة الطاقة في السحابة الإلكترونية (CPPD).

يتواصل نظام إدارة الطاقة المركزي (CPMS) مع وحدة التحكّم في المركبة (VCU) من خلال قراءة خصائص VHAL وكتابتها، مثل AP_POWER_STATE_REQ وAP_POWER_STATE_REPORT. يمكن للتطبيقات استخدام الواجهة المحدّدة في CPM لمراقبة التغييرات في حالة الطاقة. تتيح هذه الواجهة أيضًا للتطبيقات تسجيل مستمعي سياسة الطاقة. يتم وضع التعليقات التوضيحية @SystemApi و@hide على واجهة برمجة تطبيقات Java هذه، ما يجعلها متاحة للتطبيقات التي تتمتع بامتيازات فقط. في ما يلي توضيح للعلاقة بين هذه الوحدات والتطبيقات والخدمات:

مخطّط مرجعي لمكوّنات الطاقة

الشكل 2: مخطّط مرجعي لمكوّنات الطاقة

تسلسل الرسائل

وصف القسم السابق الوحدات التي يتألف منها نظام إدارة الطاقة. يستخدم هذا القسم المثالَين enter deep sleep وexit deep sleep لتوضيح كيفية تواصل الوحدات والتطبيقات:

الدخول في مرحلة النوم العميق

يمكن لوحدة التحكّم في المركبة (VMCU) فقط بدء وضع السكون العميق. بعد بدء وضع السكون العميق، يرسل VMCU إشعارًا إلى CPMS عبر VHAL. تغيّر خدمة CPMS الحالة إلى SHUTDOWN PREPARE، وتبث هذا الانتقال إلى الحالة الجديدة إلى جميع المراقبين (التطبيقات والخدمات التي تراقب خدمة CPMS) من خلال استدعاء الطريقة onStateChanged() باستخدام رقم تعريف حالة جديد تقدّمه خدمة CPM.

تتوسّط "منصة إدارة المحتوى" بين التطبيقات/الخدمات و"أنظمة إدارة المحتوى". يتم استدعاء طريقة onStateChanged() للتطبيقات/الخدمات بشكل متزامن في طريقة onStateChanged() الخاصة بـ CPM. يجب أن تكمل معظم التطبيقات والخدمات عملية الإعداد قبل العودة من هذه المكالمة. يُسمح للخدمات ذات الأولوية بمواصلة عمليات الإعداد بشكل غير متزامن بعد عرض PRE_SHUTDOWN_PREPARE أو SUSPEND_ENTER أو POST_SUSPEND_ENTER. في هذه الحالة، من المفترض أن تستدعي الخدمة ذات الامتيازات الدالة complete() على عنصر CompletablePowerStateChangeFuture المقدَّم عند انتهاء عملية الإعداد. يُرجى العِلم أنّه لا يُسمح بالتحضير غير المتزامن لـ SHUTDOWN_PREPARE. قبل إرسال DEEP_SLEEP_ENTRY إلى VHAL، يرسل نظام CPMS بشكل دوري طلبات تأجيل الإيقاف إلى VHAL.

عندما تنتهي جميع عناصر CPM من الاستعدادات لإيقاف التشغيل، يرسل نظام إدارة الطاقة AP_POWER_STATE_REPORT إلى VHAL، الذي يرسل بدوره إشعارًا إلى VMCU بأنّ معالج التطبيقات جاهز للتعليق. يستدعي نظام إدارة الطاقة أيضًا طريقة التعليق التي تعلّق النواة.

يتم توضيح التسلسل الموصوف أعلاه أدناه:

الدخول في مرحلة النوم العميق

الشكل 3: الدخول في وضع النوم العميق

واجهات البرمجة التي توفّرها منصة إدارة العملاء

يصف هذا القسم واجهة برمجة تطبيقات Java التي توفّرها "إدارة سياسات المحتوى" لتطبيقات وخدمات النظام. تتيح واجهة برمجة التطبيقات هذه لبرنامج النظام تنفيذ ما يلي:

  • تتبُّع التغييرات في حالة الطاقة في نقطة الوصول
  • تطبيق سياسات التشغيل

اتّبِع الخطوات التالية لطلب البيانات من واجهات برمجة التطبيقات التي يوفّرها CPM:

  1. للحصول على مثيل CPM، استخدِم Car API.
  2. استدعِ الطريقة المناسبة على العنصر الذي تم إنشاؤه في الخطوة 1.

إنشاء عنصر CarPowerManager

لإنشاء عنصر CPM، استدعِ طريقة getCarManager() الخاصة بالكائن Car. هذه الطريقة هي واجهة مستخدم تُستخدَم لإنشاء عناصر التكلفة لكل ألف ظهور. حدِّد android.car.Car.POWER_SERVICE كمعلَمة لإنشاء عنصر CPM.

Car car = Car.createCar(this);
CarPowerManager powerManager =
  (CarPowerManager) car.getCarManager(android.car.Car.POWER_SERVICE);

‫CarPowerStateListener والتسجيل

يمكن لتطبيقات وخدمات النظام تلقّي إشعارات بتغيير حالة الطاقة من خلال تنفيذ CarPowerManager.CarPowerStateListener. يحدّد هذا الصف طريقة واحدة، onStateChanged()، وهي دالة ردّ اتصال يتم استدعاؤها عند تغيير حالة الطاقة في CPMS. يحدّد المثال التالي فئة مجهولة جديدة تنفّذ الواجهة:

private final CarPowerManager.CarPowerStateListener powerListener =
  new CarPowerManager.CarPowerStateListener () {
    @Override
     public void onStateChanged(int state) {
       Log.i(TAG, "onStateChanged() state = " + state);
     }
};

لتوجيه عنصر المستمع هذا إلى مراقبة عملية انتقال حالة الطاقة، أنشئ سلسلة تنفيذ جديدة وسجِّل المستمع وسلسلة التنفيذ هذه في عنصر CPM:

executor = new ThreadPerTaskExecutor();
powerManager.setListener(powerListener, executor);

عند تغيير حالة الطاقة، يتم استدعاء الطريقة onStateChanged() الخاصة بعنصر المستمع مع قيمة تمثّل حالة الطاقة الجديدة. يتم تحديد العلاقة بين القيمة الفعلية وحالة الطاقة في CarPowerManager، كما هو موضّح في الجدول التالي:

الاسم الوصف
STATE_ON أدخِل حالة التشغيل. النظام يعمل بشكل كامل.
STATE_SHUTDOWN_CANCELLED يتم إلغاء عملية إيقاف التشغيل والعودة إلى حالة الطاقة العادية.
STATE_SHUTDOWN_ENTER من المتوقّع أن يتم تنظيف التطبيقات وتجهيزها لإيقاف التشغيل.
STATE_POST_SHUTDOWN_ENTER اكتملت الاستعدادات لإيقاف التشغيل وأصبحت VMCU جاهزة للإيقاف. أدخِل حالة الإيقاف.
STATE_PRE_SHUTDOWN_PREPARE تم طلب إيقاف عملية CPMS، ولكن لم تبدأ العملية بعد. لا يزال العرض والصوت مفعّلين
STATE_SHUTDOWN_PREPARE قد يتم تشغيل "وضع المرآب" خلال هذه الفترة.
STATE_SUSPEND_ENTER من المتوقّع أن تنظّف التطبيقات بياناتها وتكون جاهزة للتعليق إلى ذاكرة الوصول العشوائي.
STATE_POST_SUSPEND_ENTER اكتملت الاستعدادات لوضع "تعليق إلى ذاكرة الوصول العشوائي" وأصبحت الآلة الافتراضية لوحدة التحكّم في الأجهزة جاهزة لوضع "تعليق إلى ذاكرة الوصول العشوائي". أدخِل حالة التعليق.
STATE_SUSPEND_EXIT الاستئناف من حالة التعليق أو إلغاء التعليق
STATE_HIBERNATION_ENTER يُتوقّع من التطبيقات أن تنظّف نفسها وتكون جاهزة للدخول في وضع الإسبات.
STATE_POST_HIBERNATION_ENTER اكتملت الاستعدادات لوضع الإسبات وأصبحت الآلة الافتراضية جاهزة لوضع الإسبات.
STATE_HIBERNATION_EXIT الخروج من وضع الإسبات أو استئناف الإسبات الذي تم إلغاؤه
STATE_WAIT_FOR_VHAL يبدأ النظام في التشغيل، ولكنّه ينتظر إنشاء اتصال مع VHAL قبل الانتقال إلى الحالة ON.

إلغاء تسجيل CarPowerStateListener

لإلغاء تسجيل جميع عناصر معالجة الأحداث المسجّلة في "وحدة المنتجات التجارية"، استخدِم طريقة clearListener:

powerManager.clearListener();

تكامل النظام في تطبيق Android

يتحمّل المسؤولون عن الدمج مسؤولية العناصر التالية:

  • تنفيذ واجهة النواة لتعليق Android
  • تنفيذ وظائف VHAL من أجل:
    • نقل طلب التعليق أو الإيقاف من السيارة إلى Android
    • أرسِل رسالة الاستعداد للإيقاف من هاتف Android إلى السيارة.
    • بدء إيقاف تشغيل Android أو تعليقه من خلال واجهة نواة Linux
  • تأكَّد من إيقاف جميع مصادر التنشيط عندما يكون الجهاز في وضع التعليق.
  • تأكَّد من إيقاف التطبيقات بسرعة كافية حتى لا يتم تأجيل عملية الإيقاف إلى أجل غير مسمى.
  • تأكَّد من أنّ حزمة دعم اللوحة (BSP) تشغّل (أو توقف) مكوّنات الجهاز وفقًا لسياسة الطاقة، وذلك لتجنُّب حظر التعليق أو وضع الإسبات.

واجهة النواة: /sys/power/state

يضع نظام التشغيل Android Automotive OS الجهاز في وضع التعليق عندما يكتب تطبيق أو خدمة mem للتعليق إلى ذاكرة الوصول العشوائي أو disk للتعليق إلى القرص في ملف موجود في /sys/power/state. يجب أن يوفّر برنامج الدمج وظيفة تراقب هذا الملف وتضع نظام التشغيل Linux في حالة تعليق التشغيل. قد ترسل هذه الوظيفة إشارة GPIO إلى وحدة VMCU لإبلاغها بأنّ الجهاز قد تم إيقافه بالكامل. يكون برنامج الدمج مسؤولاً أيضًا عن إزالة أي حالات تعارض بين إرسال VHAL للرسالة النهائية إلى VMCU ودخول النظام في وضع التعليق أو الإيقاف.

مسؤولية VHAL

توفّر VHAL واجهة بين شبكة المركبة ونظام التشغيل Android. واجهة VHAL:

  • ينقل هذا الإذن طلب تعليق أو إيقاف من السيارة إلى Android.
  • يرسل رسالة الاستعداد للإيقاف النهائي من Android إلى السيارة.
  • يبدأ عملية إيقاف تشغيل Android أو تعليقه من خلال واجهة نواة Linux.

عندما يُعلم نظام إدارة الشحن (CPMS) طبقة VHAL بأنّه جاهز للإيقاف، ترسل طبقة VHAL رسالة "الإيقاف جاهز" إلى وحدة VMCU. عادةً، تنقل الأجهزة الطرفية المدمجة في الشريحة، مثل UART وSPI وUSB، الرسالة. بعد إرسال الرسالة، يستدعي نظام إدارة الطاقة المركزي أمر النواة لتعليق الجهاز أو إيقافه. قبل إجراء ذلك، قد يفعّل VHAL أو BSP مفتاح GPIO لإعلام VMCU بأنّه من الآمن إيقاف تشغيل الجهاز.

يجب أن تتوافق طبقة تجريد الأجهزة في المركبة (VHAL) مع السمات التالية التي تتحكّم في إدارة الطاقة من خلال VHAL:

الاسم الوصف
AP_POWER_STATE_REPORT تُبلِغ تقارير Android عن حالات الانتقال إلى VMCU باستخدام هذه السمة، وذلك باستخدام قيم تعداد VehicleApPowerStateReport.
AP_POWER_STATE_REQ تستخدم وحدة التحكّم في المركبة (VCU) هذه السمة لتوجيه نظام التشغيل Android إلى الانتقال إلى حالات طاقة مختلفة، وذلك باستخدام قيم التعداد VehicleApPowerStateReq.

AP_POWER_STATE_REPORT

استخدِم هذه السمة للإبلاغ عن حالة إدارة الطاقة الحالية في نظام التشغيل Android. تحتوي هذه السمة على عددين صحيحين:

  • int32Values[0]: تعداد VehicleApPowerStateReport للحالة الحالية.
  • int32Values[1]: الوقت بالملّي ثانية لتأجيل أو السكون أو إيقاف الجهاز. يعتمد معنى هذه القيمة على القيمة الأولى.

يمكن أن تأخذ القيمة الأولى إحدى القيم التالية. يحتوي VehicleApPowerStateReport.aidl على أوصاف أكثر تحديدًا يتم تخزينها في hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle.

اسم القيمة الوصف القيمة الثانية
WAIT_FOR_VHAL يبدأ نظام AP ويحتاج إلى إنشاء اتصال مع VHAL.
DEEP_SLEEP_ENTRY ستدخل نقطة الوصول في حالة السكون العميق. يجب أن يعيد VMCU تفعيل نقطة الوصول بعد مرور الوقت المحدّد في القيمة الثانية. يجب ضبطها
DEEP_SLEEP_EXIT يخرج نقطة الوصول من حالة النوم العميق.
HIBERNATION_ENTRY يدخل التطبيق في حالة إسبات. يجب أن يعيد VMCU تفعيل نقطة الوصول بعد مرور الوقت المحدّد في القيمة الثانية. يجب ضبطها
HIBERNATION_EXIT يخرج نقطة الوصول من وضع السبات.
SHUTDOWN_POSTPONE لم يتم إيقاف تشغيل Android بعد. يجب أن تنتظر وحدة التحكّم في المركبة (VMCU) المدة الزمنية المحدّدة في القيمة الثانية قبل إيقاف نقطة الوصول. قد يطلب نظام التشغيل Android تأجيلًا إضافيًا من خلال إصدار تقارير SHUTDOWN_POSTPONE إضافية. يجب ضبطها
SHUTDOWN_PREPARE يستعد جهاز Android للإيقاف. يجب ضبطها
SHUTDOWN_START نقطة الوصول جاهزة للإيقاف. يجب أن يعيد VMCU تفعيل نقطة الوصول بعد الوقت المحدّد في القيمة الثانية. (ليس مطلوبًا أن تتوافق وحدة التحكّم في المركبة مع ميزة التشغيل المحدّد بوقت). يجب ضبطها
SHUTDOWN_CANCELLED سيتوقّف Android عن الاستعداد للإيقاف وسينتقل إلى WAIT_FOR_VHAL.
تفعيل يعمل نظام التشغيل Android بشكل طبيعي.

يمكن ضبط الحالة بشكل مستقل أو استجابةً لطلب من خلال وحدة التحكّم في المركبة.

AP_POWER_STATE_REQ

يتم إرسال هذه السمة من خلال VMCU لنقل Android إلى حالة طاقة مختلفة، وتحتوي على عددين صحيحين:

  • int32Values[0]: قيمة التعداد VehicleApPowerStateReq التي تمثّل الحالة الجديدة التي سيتم الانتقال إليها.
  • int32Values[1]: قيمة التعداد VehicleApPowerStateShutdownParam. يتم إرسال هذه القيمة فقط للرسالة SHUTDOWN_PREPARE، ويتم نقل الخيارات التي تحتوي عليها إلى Android.

تمثّل قيمة العدد الصحيح الأولى الحالة الجديدة التي سينتقل إليها نظام التشغيل Android. يتم تحديد الدلالات في VehicleApPowerStateReq.aidl، وهي موضّحة أدناه:

اسم القيمة الوصف
تفعيل من المفترض أن تبدأ نقطة الوصول عملها بالكامل.
SHUTDOWN_PREPARE يجب أن تستعد نقطة الوصول لإيقاف التشغيل. تشير القيمة الثانية إلى ما إذا كان يُسمح لنقطة الوصول بتأجيل الإيقاف وما إذا كان من المتوقّع أن يتم إيقاف نقطة الوصول أو أن تدخل في وضع السكون العميق.
CANCEL_SHUTDOWN يجب أن يتوقف نقطة الوصول عن الاستعداد لإيقاف التشغيل وأن تستعد للتشغيل.
انتهى الإعداد سيتم الآن إيقاف نقطة الوصول أو تعليقها.

يتم تحديد VehicleApPowerStateShutdownParam في VehicleApPowerStateShutdownParam.aidl. تتضمّن هذه القائمة تعداد العناصر التالية:

اسم القيمة الوصف
CAN_SLEEP يمكن أن يدخل نقطة الوصول في وضع السكون العميق بدلاً من إيقاف تشغيلها بالكامل. يُسمح بالتأجيل.
CAN_HIBERNATE يمكن أن يدخل جهاز نقطة الوصول في وضع الإسبات بدلاً من إيقافه تمامًا. يُسمح بالتأجيل.
SHUTDOWN_ONLY يجب إيقاف نقطة الوصول. يُسمح بالتأجيل. لا يُسمح بالنوم العميق.
SLEEP_IMMEDIATELY قد يدخل AP في وضع السكون العميق، ولكن يجب أن ينام أو يتم إيقاف تشغيله على الفور. لا يُسمح بالتأجيل.
HIBERNATE_IMMEDIATELY قد يدخل AP في وضع التعليق إلى القرص، ولكن يجب أن يدخل في وضع الإسبات أو يتم إيقاف تشغيله على الفور. لا يُسمح بالتأجيل.
SHUTDOWN_IMMEDIATELY يجب إيقاف نقطة الوصول على الفور. لا يُسمح بالتأجيل. لا يُسمح بالنوم العميق.

مصادر التنشيط

على المدمج إيقاف مصادر التنشيط المناسبة عندما يكون الجهاز في وضع التعليق. تشمل مصادر التنشيط الشائعة إشارات نبض القلب والمودم وشبكة Wi-Fi والبلوتوث. يجب أن يكون مصدر التنشيط الصالح الوحيد هو مقاطعة من وحدة التحكّم في المركبة (VMCU) لتنشيط نظام التشغيل على الشريحة (SoC)، مع افتراض أنّ وحدة التحكّم في المركبة (VMCU) يمكنها الاستماع إلى المودم بحثًا عن أحداث التنشيط عن بُعد (مثل تشغيل المحرّك عن بُعد). إذا تم نقل هذه الوظيفة إلى نقطة الوصول، يجب إضافة مصدر تنبيه آخر لخدمة المودم.

التطبيقات

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

الملحق

الأدلة في شجرة رمز المصدر

Content الدليل
الرمز البرمجي المرتبط بفئة CarPowerManager packages/services/Car/car-lib/src/android/car/hardware/power
‫CarPowerManagementService وما إلى ذلك packages/services/Car/service/src/com/android/car/power
الخدمات التي تتعامل مع VHAL، مثل VehicleHal وHAlClient packages/services/Car/service/src/com/android/car/hal
تعريفات واجهة VHAL والسمات hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle/
تطبيق نموذجي لتقديم بعض الأفكار حول CarPowerManager packages/services/Car/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink

مخطط الفئات

يعرض مخطط الفئات هذا فئات Java وواجهاتها في نظام إدارة الطاقة:

مخطط فئات الطاقة

الشكل 4. مخطط فئة الطاقة

علاقة الكائن

يوضّح الشكل 5 الكائنات التي تتضمّن مراجع إلى كائنات أخرى. يعني الحافة أنّ العنصر المصدر يتضمّن مرجعًا إلى العنصر المستهدف. على سبيل المثال، يحتوي VehicleHAL على مرجع إلى عنصر PropertyHalService.

مخطط مرجعي للعناصر

الشكل 5. مخطط مرجعي للعناصر