बिजली नीति

यह सुनिश्चित करने के लिए कि हार्डवेयर और सॉफ्टवेयर घटकों (जैसे डिस्प्ले, ऑडियो और वॉयस इंटरैक्शन) को आवश्यकतानुसार चुनिंदा रूप से चालू और बंद किया जाता है, एएओएस एक पावर नीति प्रदान करता है, जिसमें हार्डवेयर और सॉफ्टवेयर घटकों के लिए अपेक्षित पावर चालू और बंद स्थितियों का एक सेट शामिल होता है। . वीएचएएल, या सिस्टम-विशेषाधिकार प्राप्त विक्रेता सेवाएं, एक नई पावर नीति लागू कर सकती हैं जब एंड्रॉइड पावर स्थिति में परिवर्तन होता है या जब वे शर्तें पूरी होती हैं जिनकी वे प्रतीक्षा कर रहे हैं।

वेट फॉर वीएचएएल और ऑन राज्यों में बिजली नीति लागू करने की अनुमति है। शटडाउन प्रिपेयर में, गैराज मोड चल रहा है और पावर स्थिति परिवर्तन से परेशान नहीं होना चाहिए। हालाँकि एक नियमित बिजली नीति लागू नहीं की जा सकती है, एक विशेष बिजली नीति, जिसे "नो यूजर इंटरेक्शन" नाम की सिस्टम पावर नीति कहा जाता है, शटडाउन प्रिपेयर में लागू की जाती है।

एएओएस पावर स्थिति

AAOS डिवाइस इस पावर स्टेट आरेख का अनुसरण करते हैं:

एएओएस पावर स्टेट आरेख

चित्र 1. एएओएस पावर स्थिति आरेख

प्रत्येक शक्ति स्थिति का वर्णन नीचे दिया गया है:

कीमत विवरण
बंद एप्लिकेशन प्रोसेसर (एपी), मेमोरी और बाह्य उपकरणों को भौतिक रूप से कोई शक्ति प्रदान नहीं की जाती है।
वीएचएएल की प्रतीक्षा करें
  • जब ड्राइवर वाहन के साथ इंटरैक्ट करता है (उदाहरण के लिए, दरवाजा खोलकर), तो वीएमसीयू एपी, मेमोरी पर पावर लागू करता है। और परिधीय.
  • एएओएस तीन स्थितियों में से एक में परिवर्तित होता है (ऑफ, सस्पेंड-टू-रैम (एसटीआर, वीएचएएल समाप्त होने की प्रतीक्षा करें) और फिर वीएचएएल के लिए प्रतीक्षा करें में प्रवेश करता है, जहां यह वीएचएएल के साथ समन्वय की प्रतीक्षा करता है।
पर
  • वीएचएएल एएओएस को ऑन स्थिति में प्रवेश करने का निर्देश देता है। इस स्थिति में, AAOS पूरी तरह से चल रहा है और ड्राइवर के साथ इंटरैक्ट कर रहा है।
  • डिस्प्ले को पावर पॉलिसी द्वारा नियंत्रित किया जाता है, न कि एंड्रॉइड डिस्प्ले द्वारा अन्य फॉर्म कारकों के लिए ऑन/ऑफ कॉल द्वारा।
शटडाउन की तैयारी
  • जब ड्राइवर ने गाड़ी चलाना बंद कर दिया है, तो वीएचएएल एएओएस को शटडाउन तैयारी में प्रवेश करने का निर्देश देता है। इस स्थिति में, डिस्प्ले और ऑडियो बंद हैं और AAOS ड्राइवर के साथ इंटरैक्ट नहीं कर रहा है। एंड्रॉइड सिस्टम अभी भी चल रहा है और ऐप्स और एंड्रॉइड सिस्टम को अपडेट कर सकता है। जब अपडेट (यदि कोई हो) पूरा हो जाता है, तो एंड्रॉइड सिस्टम वीएचएएल फिनिश के लिए प्रतीक्षा करें में प्रवेश करता है।
वीएचएएल के समाप्त होने तक प्रतीक्षा करें
  • एएओएस ने वीएचएएल को सूचित किया कि इसे बंद किया जा सकता है। वाहन माइक्रोकंट्रोलर यूनिट (वीएमसीयू) से सिस्टम-ऑन-चिप (एसओसी) को डीप स्लीप में रखने और एपी से बिजली हटाने की उम्मीद है। एएओएस तब एसटीआर स्थिति में है, हालांकि कोई कोड निष्पादित नहीं किया जा रहा है।
  • यदि वीएचएएल समाप्त नहीं होता है और ड्राइवर वापस लौट आता है, तो हेड यूनिट (एचयू) को सीधे वेट फॉर वीएचएएल में स्थानांतरित कर देना चाहिए।
सस्पेंड-टू-रैम (एसटीआर) वाहन और एपी बंद हैं, कोई कोड निष्पादित नहीं किया जा रहा है, और एपी रैम को बिजली बनाए रखी गई है।

सॉफ़्टवेयर वास्तुशिल्प

बिजली नीति वास्तुकला को नीचे चित्रित किया गया है और निम्नलिखित अनुभाग में परिभाषित किया गया है:

चित्र 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

विद्युत नीति समूह

पावर नीति समूह में निर्दिष्ट पावर स्थिति परिवर्तन पर डिफ़ॉल्ट पावर नीति स्वचालित रूप से लागू होती है। विक्रेता वीएचएएल के लिए प्रतीक्षा करें, चालू करें और वीएचएएल समाप्त होने के लिए प्रतीक्षा करें (डीप स्लीप एंट्री या शटडाउन स्टार्ट) के लिए डिफ़ॉल्ट बिजली नीति को परिभाषित कर सकते हैं।

सिस्टम पावर नीति

एएओएस केवल एक सिस्टम पावर नीति का समर्थन करता है, जो "कोई उपयोगकर्ता इंटरैक्शन नहीं" है। जब डिवाइस गैराज मोड में जाता है तो सिस्टम पावर नीति लागू होती है।

सिस्टम पावर नीति में प्रत्येक घटक का व्यवहार नीचे तालिका में सूचीबद्ध है। कार्यान्वयनकर्ता सिस्टम पावर नीति में ब्लूटूथ, एनएफसी और विश्वसनीय डिवाइस पहचान को ओवरराइड कर सकते हैं। ओवरराइड /vendor/etc/power_policy.xml में लागू होते हैं।

अवयव शक्ति अवस्था विन्यास
ऑडियो बंद नहीं
मिडिया बंद नहीं
मुख्य प्रदर्शित करें बंद नहीं
क्लस्टर प्रदर्शित करें बंद नहीं
सामने वाले यात्री को प्रदर्शित करें बंद नहीं
पीछे वाले यात्री को प्रदर्शित करें बंद नहीं
ब्लूटूथ बंद हाँ
वाईफ़ाई पर नहीं
सेलुलर पर नहीं
ईथरनेट पर नहीं
प्रक्षेपण बंद नहीं
एनएफसी बंद हाँ
इनपुट बंद नहीं
आवाज बातचीत बंद नहीं
दृश्य अंतःक्रिया बंद नहीं
विश्वसनीय डिवाइस का पता लगाना पर हाँ
जगह बंद नहीं
माइक्रोफ़ोन बंद नहीं
CPU पर नहीं

वीएचएएल के साथ बातचीत

सिस्टम लेयर में चल रहा कार पावर पॉलिसी डेमॉन VHAL के अनुरोधों को सुनने के लिए दो गुणों की सदस्यता लेता है:

  • POWER_POLICY_REQ , VHAL इस प्रॉपर्टी पर पावर पॉलिसी आईडी लिखता है।
  • POWER_POLICY_GROUP_REQ , VHAL इस प्रॉपर्टी पर पावर पॉलिसी ग्रुप आईडी लिखता है।

सिस्टम में वर्तमान बिजली नीति को वीएचएएल के अलावा अन्य मॉड्यूल द्वारा बदला जा सकता है। उस स्थिति में, कार पावर पॉलिसी डेमॉन VHAL में परिवर्तन को सूचित करने के लिए CURRENT_POWER_POLICY प्रॉपर्टी को अपडेट करता है।

देशी प्रक्रियाओं के साथ सहभागिता

जैसा कि ऊपर बताया गया है, कार पावर पॉलिसी डेमॉन सिस्टम लेयर में चलता है और पावर पॉलिसी प्रबंधन के संदर्भ में, फ्रेमवर्क लेयर में चलने वाले सीपीएमएस के समान ही कार्यक्षमता प्रदान करता है। साथ ही, मान लें कि कार पावर पॉलिसी डेमॉन और सीपीएमएस पूरी तरह से सिंक हैं।

कार पावर पॉलिसी डेमॉन एचएएल और अन्य मूल प्रक्रियाओं द्वारा उपयोग के लिए एआईडीएल इंटरफेस निर्यात करता है। नई बिजली नीति में बदलाव होने पर उन्हें सूचित किया जा सकता है। दूसरे शब्दों में, जब प्रत्येक को अपनी शक्ति स्थिति बदलनी होगी।

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 पर पंजीकृत कर सकते हैं।