वाहन के हिसाब से पावर मैनेजमेंट की सुविधा देने के लिए, Android एक CarPowerManagementService
सेवा और CarPowerManager
इंटरफ़ेस उपलब्ध कराता है.
स्टेट ट्रांज़िशन, वाहन की मुख्य कंट्रोल यूनिट (वीएमसीयू) से ट्रिगर होते हैं. VMCU के साथ कम्यूनिकेट करने के लिए, इंटिग्रेटर को कई कॉम्पोनेंट लागू करने होंगे. इंटिग्रेटर, वाहन के हार्डवेयर एब्स्ट्रैक्शन लेयर (VHAL) और कर्नेल लागू करने के साथ इंटिग्रेट करने के लिए ज़िम्मेदार होते हैं. इंटिग्रेटर के पास डिवाइस को जगाने के सोर्स बंद करने की भी ज़िम्मेदारी होती है. साथ ही, यह पक्का करना भी उनकी ज़िम्मेदारी होती है कि डिवाइस को बंद करने की प्रोसेस को अनलिमिटेड तौर पर न रोका जाए.
शब्दावली
इस दस्तावेज़ में इन शब्दों का इस्तेमाल किया गया है:
suspend()
और shutdown()
को फ़ाइनल कॉल करता है.सिस्टम डिज़ाइन
इस सेक्शन में बताया गया है कि AAOS, ऐप्लिकेशन प्रोसेसर की पावर स्टेट को कैसे दिखाता है और पावर मैनेजमेंट सिस्टम को कौनसे मॉड्यूल लागू करते हैं. इस कॉन्टेंट में यह भी बताया गया है कि ये मॉड्यूल एक साथ कैसे काम करते हैं और आम तौर पर स्टेटस ट्रांज़िशन कैसे होते हैं.
कार के पावर की स्थिति दिखाने वाली मशीन
एपी की पावर स्टेटस दिखाने के लिए, AAOS स्टेट मशीन का इस्तेमाल करता है. स्टेटमैशीन, नीचे दी गई स्थितियां दिखाती है:
पहली इमेज. कार के पावर की स्थिति की मशीन.
सबसे सामान्य ट्रांज़िशन नीले रंग में हाइलाइट किए जाते हैं. ये स्टेटस और सामान्य ट्रांज़िशन हैं:
- रैम में निलंबित करें. वाहन और SoC बंद हैं. कोई कोड नहीं चलाया जा रहा है. SoC रैम में पावर बनी रहती है.
- VHAL के दिखने का इंतज़ार करें. जब ड्राइवर, वाहन के साथ इंटरैक्ट करता है, जैसे कि दरवाज़ा खोलकर, तो VMCU, SoC को पावर देता है. AAOS, 'RAM में निलंबित करें' मोड से फिर से शुरू होता है और 'VHAL के लिए इंतज़ार करें' मोड में चला जाता है. यहां यह VHAL के साथ समन्वय करने का इंतज़ार करता है.
- चालू है. VHAL, AAOS को चालू होने का निर्देश देता है. इस स्थिति में, AAOS पूरी तरह से काम कर रहा है और ड्राइवर के साथ इंटरैक्ट कर रहा है.
- शटडाउन तैयार करें. जब ड्राइवर ड्राइविंग पूरी कर लेता है, तो VHAL, AAOS को शटडाउन की तैयारी करने के लिए कहता है. इस स्थिति में, डिसप्ले और ऑडियो बंद होते हैं और AAOS, ड्राइवर के साथ इंटरैक्ट नहीं करता. Android सिस्टम अब भी काम कर रहा है और ऐप्लिकेशन और Android सिस्टम को अपडेट किया जा सकता है. अगर कोई अपडेट है, तो उसके पूरा होने के बाद Android सिस्टम, 'VHAL के पूरा होने का इंतज़ार करें' मोड में चला जाता है.
- वीएचएएल की प्रोसेस पूरी होने का इंतज़ार करें. इस दौरान, AAOS, VHAL को बताता है कि वह शट डाउन होने के लिए तैयार है. उम्मीद है कि VMCU, SoC को डीप स्लीप मोड में डाल देगा और ऐप्लिकेशन प्रोसेसर से पावर हटा देगा. इसके बाद, AAOS, RAM में निलंबित होने की स्थिति में होता है. हालांकि, कोई कोड नहीं चल रहा होता.
पावर मैनेजमेंट मॉड्यूल
पावर मैनेजमेंट सिस्टम में ये मॉड्यूल शामिल होते हैं:
मॉड्यूल का नाम | जानकारी |
---|---|
CarPowerManager | Java या C++ API. |
CarPowerManagementService | यह पावर स्टेटस के ट्रांज़िशन को मैनेज करता है. |
CarPowerPolicyDaemon | यह नेटिव पावर नीति क्लाइंट के साथ संपर्क करता है. |
वाहन एचएएल | VMCU के लिए इंटरफ़ेस. |
कर्नेल | रैम या डिस्क पर लागू करने के लिए रोकें. |
गहरी नींद/हाइबरनेशन मोड (Android को रैम/डिस्क पर निलंबित करना) की सुविधा, कर्नेल में लागू की गई है.
यह सुविधा, उपयोगकर्ता के स्पेस में /sys/power/state
में मौजूद एक खास फ़ाइल के तौर पर दिखती है. इस फ़ाइल में mem
या disk
लिखकर, AAOS को निलंबित किया जाता है.
सीपीएमएस, अन्य सेवाओं और एचएएल के साथ डिवाइस की पावर स्टेटस को मैनेज करता है. सीपीएमएस, ऊपर बताई गई स्टेट मशीन को लागू करता है. साथ ही, पावर स्टेट में बदलाव होने पर, हर ऑब्ज़र्वर को सूचनाएं भेजता है. यह सेवा, हार्डवेयर को मैसेज भेजने के लिए भी VHAL का इस्तेमाल करती है.
सीपीएमएस के कंट्रोल में आने तक, सीपीपीडी पावर नीति को मैनेज करता है. यह नेटिव दर्शकों को, पावर नीति में हुए बदलावों की सूचनाएं भी भेजता है.
कुछ प्रॉपर्टी, VHAL में तय की गई हैं. VMCU के साथ बातचीत करने के लिए, सीपीएमएस इन प्रॉपर्टी को पढ़ता और लिखता है. ऐप्लिकेशन, सीपीएम में तय किए गए इंटरफ़ेस का इस्तेमाल करके, पावर की स्थिति में होने वाले बदलावों को मॉनिटर कर सकते हैं. इस इंटरफ़ेस की मदद से, ऐप्लिकेशन बैटरी से जुड़ी नीति के लिसनर भी रजिस्टर कर सकते हैं. इस एपीआई को Java से कॉल किया जा सकता है और इसे @hide / @System API के साथ एनोटेट किया गया है. इसका मतलब है कि यह सिर्फ़ खास ऐप्लिकेशन के लिए उपलब्ध है. इन मॉड्यूल, ऐप्लिकेशन, और सेवाओं के बीच के संबंध को यहां दिखाया गया है:
दूसरी इमेज. पावर कॉम्पोनेंट का रेफ़रंस डायग्राम.
मैसेज का क्रम
पिछले सेक्शन में, उन मॉड्यूल के बारे में बताया गया था जिनमें पावर मैनेजमेंट सिस्टम शामिल होता है. इस सेक्शन में, डीप स्लीप मोड में जाना और डीप स्लीप मोड से बाहर निकलना के उदाहरणों का इस्तेमाल करके बताया गया है कि मॉड्यूल और ऐप्लिकेशन, एक-दूसरे से कैसे बातचीत करते हैं:
गहरी नींद में जाना
डीप स्लीप मोड सिर्फ़ VMCU चालू कर सकता है. डीप स्लीप मोड शुरू होने के बाद, VMCU, VHAL के ज़रिए सीपीएमएस को सूचना भेजता है. सीपीएमएस, स्टेटस को 'शटडाउन की तैयारी' में बदल देता है और इस स्टेटस ट्रांज़िशन को सभी ऑब्ज़र्वर (सीपीएमएस को मॉनिटर करने वाले ऐप्लिकेशन और सेवाएं) को ब्रॉडकास्ट करता है. इसके लिए, सीपीएम से मिले नए स्टेटस आईडी के साथ onStateChanged()
तरीके को कॉल किया जाता है.
सीपीएम, ऐप्लिकेशन/सेवाओं और सीपीएमएस के बीच मध्यस्थता करता है. ऐप्लिकेशन/सेवाओं के लिए onStateChanged()
तरीका, सीपीएम के onStateChanged()
तरीके में सिंक किया जाता है. ज़्यादातर ऐप्लिकेशन और सेवाओं को इस कॉल से बाहर आने से पहले, अपनी तैयारी पूरी करनी होती है. PRE_SHUTDOWN_PREPARE
, SUSPEND_ENTER
, POST_SUSPEND_ENTER
के लिए वापस आने के बाद, विशेष सुविधाओं वाली सेवाओं को अपनी तैयारी को असिंक्रोनस तरीके से जारी रखने की अनुमति है. इस मामले में, जब विशेषाधिकार वाली सेवा तैयार हो जाती है, तो उसे दिए गए CompletablePowerStateChangeFuture
ऑब्जेक्ट पर complete() को कॉल करना चाहिए. ध्यान दें कि SHUTDOWN_PREPARE
के लिए, एक साथ कई टास्क पूरा करने की अनुमति नहीं है. DEEP_SLEEP_ENTRY
को VHAL पर भेजने से पहले, सीपीएमएस समय-समय पर VHAL को शटडाउन को स्थगित करने के अनुरोध भेजता है.
जब सभी सीपीएम ऑब्जेक्ट बंद होने की तैयारी पूरी कर लेते हैं, तो सीपीएमएस, VHAL को AP_POWER_STATE_REPORT
भेजता है. इसके बाद, VMCU को सूचना दी जाती है कि एपी को निलंबित करने के लिए तैयार किया गया है. सीपीएम, अपने निलंबन के तरीके को भी कॉल करता है, जो कर्नेल को निलंबित करता है.
ऊपर बताए गए क्रम को यहां दिखाया गया है:
तीसरी इमेज. गहरी नींद में जाएं.
सीपीएम से मिलने वाले प्रोग्रामिंग इंटरफ़ेस
इस सेक्शन में, सिस्टम ऐप्लिकेशन और सेवाओं के लिए, सीपीएम से मिलने वाले Java API के बारे में बताया गया है. इस एपीआई की मदद से, सिस्टम सॉफ़्टवेयर ये काम कर सकता है:
- एपी में पावर स्टेटस में होने वाले बदलावों पर नज़र रखना.
- पावर से जुड़ी नीतियां लागू करें.
सीपीएम से मिलने वाले एपीआई को कॉल करने के लिए, यह तरीका अपनाएं:
- सीपीएम इंस्टेंस पाने के लिए, Car API को कॉल करें.
- पहले चरण में बनाए गए ऑब्जेक्ट पर सही तरीका कॉल करें.
CarPowerManager ऑब्जेक्ट बनाना
सीपीएम ऑब्जेक्ट बनाने के लिए, कार ऑब्जेक्ट के getCarManager()
मेथड को कॉल करें. यह तरीका, सीपीएम ऑब्जेक्ट बनाने के लिए इस्तेमाल किया जाने वाला एक फ़ेसेड है. सीपीएम ऑब्जेक्ट बनाने के लिए, android.car.Car.POWER_SERVICE
को आर्ग्युमेंट के तौर पर बताएं.
Car car = Car.createCar(this); CarPowerManager powerManager = (CarPowerManager) car.getCarManager(android.car.Car.POWER_SERVICE);
CarPowerStateListener और रजिस्ट्रेशन
CarPowerManager.CarPowerStateListener
को लागू करके, सिस्टम ऐप्लिकेशन और सेवाओं को पावर की स्थिति में हुए बदलाव की सूचनाएं मिल सकती हैं. इस इंटरफ़ेस में एक तरीका onStateChanged()
बताया गया है. यह एक कॉलबैक फ़ंक्शन है, जो सीपीएमएस की पावर की स्थिति बदलने पर ट्रिगर होता है. यहां दिए गए उदाहरण में, इंटरफ़ेस को लागू करने वाली एक नई क्लास के बारे में बताया गया है:
private final CarPowerManager.CarPowerStateListener powerListener = new CarPowerManager.CarPowerStateListener () { @Override public void onStateChanged(int state) { Log.i(TAG, "onStateChanged() state = " + state); } };
इस लिसनर ऑब्जेक्ट को पावर स्टेटस ट्रांज़िशन को मॉनिटर करने का निर्देश देने के लिए, एक नई एक्सीक्यूशन टारगेट बनाने के साथ-साथ लिसनर और इस थ्रेड को सीपीएम ऑब्जेक्ट में रजिस्टर करें:
executor = new ThreadPerTaskExecutor(); powerManager.setListener(powerListener, executor);
पावर की स्थिति बदलने पर, पावर की नई स्थिति दिखाने के लिए, listener ऑब्जेक्ट के onStateChanged()
तरीके को किसी वैल्यू के साथ शुरू किया जाता है. CarPowerManager
में, असल वैल्यू और बिजली की स्थिति के बीच के संबंध के बारे में बताया गया है. साथ ही, इस बारे में यहां दी गई टेबल में भी जानकारी दी गई है:
नाम | जानकारी |
---|---|
STATE_ON | चालू होने की स्थिति डालें. सिस्टम पूरी तरह से काम कर रहा है. |
STATE_SHUTDOWN_CANCELLED | शटडाउन रद्द हो जाता है और डिवाइस की पावर की स्थिति सामान्य हो जाती है. |
STATE_SHUTDOWN_ENTER | ऐप्लिकेशन बंद हो जाएंगे. |
STATE_POST_SHUTDOWN_ENTER | शट डाउन की तैयारियां पूरी हो गई हैं और VMCU शट डाउन के लिए तैयार है. बंद होने की स्थिति डालें. |
STATE_PRE_SHUTDOWN_PREPARE | शटडाउन की प्रोसेस का अनुरोध किया गया है, लेकिन सीपीएमएस ने अब तक प्रोसेस शुरू नहीं की है. डिसप्ले और ऑडियो अब भी चालू हैं |
STATE_SHUTDOWN_PREPARE | इस दौरान, गैरेज मोड चालू रह सकता है. |
STATE_SUSPEND_ENTER | ऐप्लिकेशन, स्टोरेज खाली कर देंगे और 'रैम में निलंबित करें' मोड के लिए तैयार हो जाएंगे. |
STATE_POST_SUSPEND_ENTER | 'रैम में निलंबित करें' मोड के लिए तैयारी पूरी हो गई है और VMCU, 'रैम में निलंबित करें' मोड के लिए तैयार है. निलंबन की स्थिति डालें. |
STATE_SUSPEND_EXIT | निलंबन की स्थिति से डिवाइस को चालू करना या निलंबन की रद्द की गई स्थिति से डिवाइस को चालू करना. |
STATE_HIBERNATION_ENTER | ऐप्लिकेशन, डेटा मिटा देंगे और हाइबरनेट मोड में जाने के लिए तैयार हो जाएंगे. |
STATE_POST_HIBERNATION_ENTER | हाइबरनेट मोड के लिए तैयारी पूरी हो गई है और VMCU, हाइबरनेट मोड में जाने के लिए तैयार है. |
STATE_HIBERNATION_EXIT | हाइबरनेट मोड से डिवाइस को चालू करना या रद्द किए गए हाइबरनेट मोड से डिवाइस को चालू करना. |
STATE_WAIT_FOR_VHAL | सिस्टम चालू हो रहा है, लेकिन चालू होने से पहले VHAL से संपर्क करने का इंतज़ार कर रहा है. |
CarPowerStateListener का रजिस्ट्रेशन रद्द करना
सीपीएम के लिए रजिस्टर किए गए सभी लिसनर ऑब्जेक्ट को अनरजिस्टर करने के लिए, clearListener
विधि को कॉल करें:
powerManager.clearListener();
Android पर लागू करने के लिए सिस्टम इंटिग्रेशन
इंटिग्रेटर इन चीज़ों के लिए ज़िम्मेदार हैं:
- Android को निलंबित करने के लिए, कर्नेल इंटरफ़ेस लागू करना.
- VHAL फ़ंक्शन लागू करने के लिए:
- कार से Android पर, निलंबित या बंद करने की प्रोसेस शुरू करने की जानकारी भेजना.
- Android से कार को, बंद करने के लिए तैयार होने का मैसेज भेजें.
- Linux kernel इंटरफ़ेस की मदद से, Android को बंद या निलंबित करें.
- पक्का करें कि डिवाइस के निलंबित होने पर, सभी वेक सोर्स बंद हों.
- पक्का करें कि ऐप्लिकेशन जल्दी बंद हो जाएं, ताकि बंद करने की प्रोसेस को अनलिमिटेड तौर पर बंद न किया जाए.
- पक्का करें कि बीएसपी, पावर नीति के हिसाब से डिवाइस के कॉम्पोनेंट को चालू (या बंद) करे, ताकि डिवाइस को निलंबित या हाइबरनेट होने से रोका जा सके
Kernel इंटरफ़ेस: /sys/power/state
जब कोई ऐप्लिकेशन या सेवा, /sys/power/state
में मौजूद किसी फ़ाइल में, रैम में निलंबित करने के लिए mem
या डिस्क में निलंबित करने के लिए disk
लिखती है, तो AAOS डिवाइस को निलंबित मोड में डाल देता है. इंटिग्रेटर को एक ऐसा फ़ंक्शन उपलब्ध कराना होगा जो इस फ़ाइल को मॉनिटर करता है और Linux को पावर सस्पेंड मोड में डालता है. यह फ़ंक्शन, VMCU को एक जीपीआईओ भेज सकता है, ताकि VMCU को यह सूचना दी जा सके कि डिवाइस पूरी तरह बंद हो गया है. इंटिग्रेटर यह भी पक्का करता है कि VHAL से VMCU को आखिरी मैसेज भेजने और सिस्टम के निलंबित या बंद होने के बीच, कोई भी रेस कंडीशन न हो.
VHAL की ज़िम्मेदारी
VHAL, वाहन के नेटवर्क और Android के बीच इंटरफ़ेस उपलब्ध कराता है. VHAL:
- कार से Android पर, निलंबित या बंद करने की प्रोसेस शुरू करने की जानकारी भेजता है.
- Android से कार को, 'बंद करने के लिए तैयार है' मैसेज भेजता है.
- Linux kernel इंटरफ़ेस की मदद से, Android को बंद या निलंबित करता है.
जब सीपीएमएस, वीएचएएल को बताता है कि वह शट डाउन होने के लिए तैयार है, तो वीएचएएल, वीएमसीयू को शट डाउन के लिए तैयार होने का मैसेज भेजता है. आम तौर पर, UART, SPI, और यूएसबी जैसे ऑन-चिप डिवाइस, मैसेज भेजते हैं. मैसेज भेजने के बाद, सीपीएमएस, डिवाइस को निलंबित या बंद करने के लिए, कर्नेल कमांड को कॉल करता है. ऐसा करने से पहले, VHAL या BSP, VMCU को यह निर्देश देने के लिए किसी जीपीआईओ को टॉगल कर सकता है कि डिवाइस से पावर हटाना सुरक्षित है.
VHAL में ये प्रॉपर्टी काम करनी चाहिए, जो VHAL के ज़रिए पावर मैनेजमेंट को कंट्रोल करती हैं:
नाम | जानकारी |
---|---|
AP_POWER_STATE_REPORT | Android, इस प्रॉपर्टी की मदद से VMCU को स्टेटस ट्रांज़िशन की जानकारी देता है. इसके लिए, वह VehicleApPowerStateReport की वैल्यू का इस्तेमाल करता है. |
AP_POWER_STATE_REQ | VMCU, इस प्रॉपर्टी का इस्तेमाल करके 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 | एपी शुरू हो रहा है और उसे वीएचएएल के साथ संपर्क करना है. | |
DEEP_SLEEP_ENTRY | एपी, गहरी नींद की स्थिति में जा रहा है. दूसरी वैल्यू में बताए गए समय के बाद, VMCU को एपी को फिर से चालू करना चाहिए. | सेट होना चाहिए |
DEEP_SLEEP_EXIT | एपी, गहरी नींद की स्थिति से बाहर निकल रहा है. | |
HIBERNATION_ENTRY | एपी, हाइबरनेट मोड में जा रहा है. दूसरी वैल्यू में बताए गए समय के बाद, VMCU को एपी को फिर से चालू करना चाहिए. | सेट होना चाहिए |
HIBERNATION_EXIT | एपी, हाइबरनेशन मोड से बाहर निकल रहा है. | |
SHUTDOWN_POSTPONE | Android शट डाउन होने के लिए तैयार नहीं है. एपी को बंद करने से पहले, वीएमसीयू को दूसरी वैल्यू में बताए गए समय तक इंतज़ार करना चाहिए. Android, SHUTDOWN_POSTPONE रिपोर्ट जारी करके, डिवाइस बंद होने की प्रक्रिया को कुछ और समय के लिए रोकने का अनुरोध कर सकता है. | सेट होना चाहिए |
SHUTDOWN_PREPARE | Android बंद होने वाला है. | सेट होना चाहिए |
SHUTDOWN_START | एपीपी बंद होने के लिए तैयार है. दूसरी वैल्यू में बताए गए समय के बाद, VMCU को एपी को फिर से चालू करना चाहिए. (वीएमसीयू के लिए, तय समय पर चालू होने की सुविधा काम नहीं करती.) | सेट होना चाहिए |
SHUTDOWN_CANCELLED | Android, शट डाउन की तैयारी बंद कर रहा है और WAIT_FOR_VHAL पर आगे बढ़ेगा. | |
चालू है | Android सामान्य रूप से काम कर रहा हो. |
स्थिति को अपने-आप सेट किया जा सकता है या VMCU के ज़रिए अनुरोध के जवाब में सेट किया जा सकता है.
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 | एपी, गहरी नींद में जा सकता है. हालांकि, उसे तुरंत नींद में जाना चाहिए या बंद हो जाना चाहिए. इसे पोस्टपोन करने की अनुमति नहीं है. |
HIBERNATE_IMMEDIATELY | एपी, डिस्क पर निलंबित होने की सुविधा का इस्तेमाल कर सकता है. हालांकि, उसे तुरंत हाइबरनेट या बंद होना चाहिए. इसे पोस्टपोन करने की अनुमति नहीं है. |
SHUTDOWN_IMMEDIATELY | एपी को तुरंत बंद कर देना चाहिए. अपॉइंटमेंट को पोस्टपोन नहीं किया जा सकता. डिवाइस को गहरी नींद में नहीं भेजा जा सकता. |
डिवाइस को चालू करने के सोर्स
डिवाइस के स्लीप मोड में होने पर, इंटिग्रेटर को डिवाइस को जगाने के लिए इस्तेमाल होने वाले सही सोर्स बंद करने होंगे. डिवाइस को चालू करने के सामान्य सोर्स में, दिल की धड़कन, मॉडेम, वाई-फ़ाई, और ब्लूटूथ शामिल हैं. SoC को चालू करने के लिए, VMCU से मिलने वाला इंटरप्ट ही एकमात्र मान्य सोर्स होना चाहिए. इससे यह माना जाता है कि VMCU, रिमोट वॉकअप इवेंट (जैसे, रिमोट इंजन स्टार्ट) के लिए मॉडेम को सुन सकता है. अगर यह सुविधा एपी पर भेजी जाती है, तो मोडेम को सेवा देने के लिए, कोई दूसरा वेक सोर्स जोड़ना होगा.
ऐप्लिकेशन
OEM को ऐप्लिकेशन लिखते समय सावधानी बरतनी चाहिए, ताकि उन्हें तुरंत बंद किया जा सके और इस प्रोसेस को कभी भी स्थगित न किया जाए.
अन्य जानकारी
सोर्स कोड ट्री में डायरेक्ट्री
कॉन्टेंट | डायरेक्ट्री |
---|---|
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 क्लास और इंटरफ़ेस दिखाए गए हैं:
चौथी इमेज. पावर क्लास का डायग्राम.
ऑब्जेक्ट का संबंध
पांचवें चित्र में दिखाया गया है कि किन ऑब्जेक्ट में दूसरे ऑब्जेक्ट के रेफ़रंस हैं. एज का मतलब है कि सोर्स ऑब्जेक्ट में टारगेट ऑब्जेक्ट का रेफ़रंस होता है. उदाहरण के लिए, VehicleHAL में PropertyHalService ऑब्जेक्ट का रेफ़रंस है.
पांचवीं इमेज. ऑब्जेक्ट का रेफ़रंस डायग्राम.