यह सुनिश्चित करने के लिए कि हार्डवेयर और सॉफ्टवेयर घटकों (जैसे डिस्प्ले, ऑडियो और वॉयस इंटरैक्शन) को आवश्यकतानुसार चुनिंदा रूप से चालू और बंद किया जाता है, एएओएस एक पावर नीति प्रदान करता है, जिसमें हार्डवेयर और सॉफ्टवेयर घटकों के लिए अपेक्षित पावर चालू और बंद स्थितियों का एक सेट शामिल होता है। . वीएचएएल, या सिस्टम-विशेषाधिकार प्राप्त विक्रेता सेवाएं, एक नई पावर नीति लागू कर सकती हैं जब एंड्रॉइड पावर स्थिति में परिवर्तन होता है या जब वे शर्तें पूरी होती हैं जिनकी वे प्रतीक्षा कर रहे हैं।
वेट फॉर वीएचएएल और ऑन राज्यों में बिजली नीति लागू करने की अनुमति है। शटडाउन प्रिपेयर में, गैराज मोड चल रहा है और पावर स्थिति परिवर्तन से परेशान नहीं होना चाहिए। हालाँकि एक नियमित बिजली नीति लागू नहीं की जा सकती है, एक विशेष बिजली नीति, जिसे "नो यूजर इंटरेक्शन" नाम की सिस्टम पावर नीति कहा जाता है, शटडाउन प्रिपेयर में लागू की जाती है।
एएओएस पावर स्थिति
AAOS डिवाइस इस पावर स्टेट आरेख का अनुसरण करते हैं:
चित्र 1. एएओएस पावर स्थिति आरेख
प्रत्येक शक्ति स्थिति का वर्णन नीचे दिया गया है:
कीमत | विवरण |
---|---|
बंद | एप्लिकेशन प्रोसेसर (एपी), मेमोरी और बाह्य उपकरणों को भौतिक रूप से कोई शक्ति प्रदान नहीं की जाती है। |
वीएचएएल की प्रतीक्षा करें |
|
पर |
|
शटडाउन की तैयारी |
|
वीएचएएल के समाप्त होने तक प्रतीक्षा करें |
|
सस्पेंड-टू-रैम (एसटीआर) | वाहन और एपी बंद हैं, कोई कोड निष्पादित नहीं किया जा रहा है, और एपी रैम को बिजली बनाए रखी गई है। |
सॉफ़्टवेयर वास्तुशिल्प
बिजली नीति वास्तुकला को नीचे चित्रित किया गया है और निम्नलिखित अनुभाग में परिभाषित किया गया है:
चित्र 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
पर पंजीकृत कर सकते हैं।