कॉन्टेक्स्ट हब रनटाइम एनवायरमेंट (सीएचआरई)

स्मार्टफ़ोन में कई प्रोसेसर होते हैं, हर एक को बेहतर परफ़ॉर्मेंस के लिए ऑप्टिमाइज़ किया जाता है करने में मदद मिलती है. हालांकि, Android सिर्फ़ एक प्रोसेसर पर चलता है: ऐप्लिकेशन प्रोसेसर (AP). AP को शानदार परफ़ॉर्मेंस देने के लिए ट्यून किया गया है गेमिंग जैसे उदाहरणों का इस्तेमाल करते हैं, लेकिन उन सुविधाओं का इस्तेमाल करने में बहुत ज़्यादा क्षमता है हर समय बार-बार प्रोसेसिंग की ज़रूरत हो, भले ही स्क्रीन बंद है. छोटे प्रोसेसर इन वर्कलोड को बेहतर तरीके से संभाल सकते हैं, वे अपने टास्क पूरे कर लेती हैं. इससे बैटरी लाइफ़ पर कोई असर नहीं पड़ता है. हालांकि, कम पावर वाले इन प्रोसेसर में सॉफ़्टवेयर का वातावरण ज़्यादा सीमित होता है. में बहुत बदलाव आया है, जिसकी वजह से क्रॉस-प्लैटफ़ॉर्म डेवलपमेंट मुश्किल हो गया है.

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

खास कॉन्सेप्ट

सीएचआरई एक सॉफ़्टवेयर एनवायरमेंट है. यहां छोटे नेटिव ऐप्लिकेशन को कहा जाता है nanoapps, कम पावर वाले प्रोसेसर पर काम करते हैं और दी गई चीज़ों से इंटरैक्ट करते हैं सिस्टम को सामान्य CHRE API के ज़रिए अपडेट करने में मदद मिलती है. के उचित प्रयोग में तेज़ी लाने के लिए सीएचआरई एपीआई, सीएचआरई के क्रॉस-प्लैटफ़ॉर्म रेफ़रंस इंप्लिमेंटेशन को इसमें शामिल किया गया है एओएसपी. रेफ़रंस के तौर पर लागू होने वाले तरीके में, आम तौर पर होने वाले यह प्लैटफ़ॉर्म ऐब्स्ट्रैक्ट लेयर की सीरीज़ के ज़रिए, हार्डवेयर और सॉफ़्टवेयर के बारे में जानकारी देता है (PAL). Nanoapps, Chrome में चल रहे एक या उससे ज़्यादा क्लाइंट ऐप्लिकेशन से हमेशा जुड़े होते हैं Android, जो सीमित ऐक्सेस की मदद से, CHRE और नैनोऐप्लिकेशन के साथ इंटरैक्ट करता है ContextHubManager सिस्टम API.

हाई लेवल पर, सीएचआरई और सीएचआरई Android के लिए. हालांकि, यहां कुछ महत्वपूर्ण अंतर देखने को मिलते हैं:

  • सीएचआरई सिर्फ़ नेटिव कोड (C या C++); Java का इस्तेमाल नहीं किया जा सकता.
  • संसाधनों की कमी और सुरक्षा की सीमाओं की वजह से, सीएचआरई नहीं खुला है तीसरे पक्ष के आर्बिट्रेरी Android ऐप्लिकेशन के इस्तेमाल के लिए. सिर्फ़ सिस्टम के भरोसेमंद ऐप्लिकेशन उसे ऐक्सेस करें.

सीएचआरई की अवधारणा के बीच भी एक अहम अंतर देखा जा सकता है एक सेंसर हब होगा. आम तौर पर, आम तौर पर एक ही हार्डवेयर का इस्तेमाल करके, सेंसर हब और CHRE, खुद सेंसर की सुविधाएं उपलब्ध नहीं कराते हैं Android सेंसर के लिए ज़रूरी है एचएएल. सीएचआरई इससे जुड़ा है है. साथ ही, यह डिवाइस के हिसाब से बने सेंसर के क्लाइंट के तौर पर काम करता है AP को शामिल किए बिना सेंसर डेटा पाने का फ़्रेमवर्क.

सीएचआरई फ़्रेमवर्क आर्किटेक्चर

पहला डायग्राम. सीएचआरई फ़्रेमवर्क आर्किटेक्चर

कॉन्टेक्स्ट हब एचएएल

कॉन्टेक्स्ट हब हार्डवेयर ऐब्स्ट्रक्शन लेयर (एचएएल), Android फ़्रेमवर्क और डिवाइस का CHRE लागू करना, जिसके बारे में यहां बताया गया है hardware/interfaces/contexthub. कॉन्टेक्स्ट हब एचएएल, उन एपीआई के बारे में बताता है जिनकी मदद से Android फ़्रेमवर्क उपलब्ध कॉन्टेक्स्ट हब और उनके नैनोएप को खोजता है, उनसे इंटरैक्ट करता है नैनोऐप्लिकेशन को मैसेज पास करने की सुविधा देता है, जिससे नैनोऐप्लिकेशन को लोड होने और अनलोड हो गया. कॉन्टेक्स्ट हब एचएएल के रेफ़रंस को लागू करने की प्रोसेस, जो सीएचआरई को लागू करने की जानकारी, यहां उपलब्ध है system/chre/host.

इस दस्तावेज़ और एचएएल डेफ़िनिशन के बीच टकराव होने पर, एचएएल की परिभाषा को प्राथमिकता दी जाती है.

प्रोसेस शुरू करना

जब Android चालू होता है, तो ContextHubService यह तय करने के लिए getHubs() HAL फ़ंक्शन शुरू करता है कि कोई कॉन्टेक्स्ट हब जो डिवाइस पर उपलब्ध है. यह एक बार की जाने वाली कॉल है. इसलिए, इसे पूरा करना ज़रूरी है ताकि बूट में होने वाली देरी से बचा जा सके. साथ ही, यह बिलकुल नई इसके बाद, कॉन्टेक्स्ट हब पेश नहीं किए जा सकते.

नैनोऐप को लोड और अनलोड करें

कॉन्टेक्स्ट हब में नैनोऐप्लिकेशन का एक सेट शामिल हो सकता है जो डिवाइस में मौजूद होता है और CHRE के शुरू होने पर लोड हो जाते हैं. इन्हें पहले से लोड किए गए नैनोऐप्लिकेशन कहा जाता है. इसे queryApps() के पहले जवाब में शामिल किया जाना चाहिए.

कॉन्टेक्स्ट हब एचएएल, नैनोऐप्लिकेशन को डाइनैमिक तौर पर लोड और अनलोड करने के लिए loadNanoApp() और unloadNanoApp() फ़ंक्शन के ज़रिए रनटाइम. नैनोऐप एचएएल को सीएचआरई हार्डवेयर के लिए खास बाइनरी फ़ॉर्मैट में दिए जाते हैं और सॉफ़्टवेयर लागू करने के बारे में जानकारी.

अगर नैनोऐप्लिकेशन को लोड करने की प्रक्रिया में इसे नॉन-वोलेटाइल (नॉन-वोलेटाइल) पर लिखना शामिल है मेमोरी, जैसे CHRE चलाने वाले प्रोसेसर से जुड़ा फ़्लैश मेमोरी के बाद सीएचआरई लागू करने की प्रक्रिया हमेशा इन डाइनैमिक नैनोऐप्लिकेशन के साथ चालू होनी चाहिए बंद है. इसका मतलब है कि नैनोऐप का कोई भी कोड तब तक एक्ज़ीक्यूट नहीं किया जाता है, जब तक एचएएल के ज़रिए enableNanoapp() अनुरोध मिला है. पहले से लोड किए गए नैनोऐप्लिकेशन यह कर सकते हैं चालू करने के लिए कहा जा सकता है.

कॉन्टेक्स्ट हब रीस्टार्ट होना

सामान्य कार्रवाई के दौरान सीएचआरई के रीस्टार्ट होने की उम्मीद नहीं है. हालांकि, यह प्रोसेस जारी रहेगी अनचाही परिस्थितियों से उबरने के लिए ज़रूरी हो सकता है, जैसे कि मैप नहीं किए गए मेमोरी पते को ऐक्सेस करने के लिए. इन स्थितियों में, CHRE रीस्टार्ट हो जाता है Android से अलग हैं. एचएएल, Android को RESTARTED इवेंट, जिसे CHRE के फिर से शुरू होने के बाद ही भेजना चाहिए इससे पता चलता है कि वह नए अनुरोधों को स्वीकार कर सकता है, जैसे कि queryApps().

सीएचआरई सिस्टम की खास जानकारी

सीएचआरई को इवेंट-ड्रिवन आर्किटेक्चर के आधार पर डिज़ाइन किया गया है, जिसमें कंप्यूटेशन एक ऐसा इवेंट है जिसे nanoapp के इवेंट हैंडलिंग के एंट्री पॉइंट को भेजा जाता है. हालांकि सीएचआरई फ़्रेमवर्क को मल्टीथ्रेड में इस्तेमाल किया जा सकता है. दिए गए नैनोऐप को कभी भी इससे एक्ज़ीक्यूट नहीं किया जाता साथ में कई थ्रेड हैं. सीएचआरई फ़्रेमवर्क, दिए गए नैनोऐप के साथ इंटरैक्ट करता है तीन नैनोऐप एंट्री पॉइंट में से किसी एक के ज़रिए (nanoappStart(), nanoappHandleEvent() और nanoappEnd()) या कॉलबैक की मदद से, पहले वाला CHRE API कॉल और नैनोऐप, CHRE फ़्रेमवर्क से इंटरैक्ट करते हैं और में मौजूद सिस्टम को CHRE API के ज़रिए डाउनलोड करना शुरू कर देते हैं. CHRE API बेसिक का सेट उपलब्ध कराता है काम के सिग्नल ऐक्सेस करने की सुविधाओं और क्षमताओं के साथ-साथ, सेंसर, GNSS, वाई-फ़ाई, WWAN, और ऑडियो. साथ ही, इन्हें अन्य सिग्नल के साथ वेंडर के लिए खास नैनोऐप्लिकेशन का इस्तेमाल करने की अनुमति.

बिल्ड सिस्टम

हालांकि, कॉन्टेक्स्ट हब एचएएल और एपी-साइड के दूसरे ज़रूरी कॉम्पोनेंट बनाए गए हैं Android के साथ-साथ, CHRE के अंदर चलने वाले कोड की ज़रूरी शर्तें हो सकती हैं. यह Android बिल्ड सिस्टम के साथ काम नहीं करती है. जैसे, किसी खास प्रोजेक्ट के लिए टूलचेन. इसलिए, एओएसपी में सीएचआरई प्रोजेक्ट एक आसान बिल्ड उपलब्ध कराता है GNU Make पर आधारित सिस्टम, जो नैनोऐप्लिकेशन को कंपाइल करता है, और वैकल्पिक रूप से, CHRE लाइब्रेरी में फ़्रेमवर्क भी शामिल है, जिसे सिस्टम के साथ इंटिग्रेट किया जा सकता है. डिवाइस जिन मैन्युफ़ैक्चरर ने सीएचआरई के लिए सहायता जोड़ी है उन्हें बिल्ड सिस्टम की AOSP में बदल जाते हैं.

CHRE API को C99 लैंग्वेज स्टैंडर्ड के हिसाब से लिखा जाता है. साथ ही, लागू करने के लिए C++11 के सीमित सबसेट का इस्तेमाल किया जाता है, जो सीमित संसाधनों के लिए सही है दिखाई देता है.

सीएचआरई एपीआई

CHRE API, C हेडर फ़ाइलों का एक कलेक्शन है जो सॉफ़्टवेयर के बारे में बताता है का इस्तेमाल करता है. इसे नैनोऐप बनाने के लिए डिज़ाइन किया गया है कोड CHRE का समर्थन करने वाले सभी डिवाइस पर संगत होता है, जिसका अर्थ है कि नए डिवाइस से काम करने के लिए, नैनोऐप के सोर्स कोड में बदलाव करने की ज़रूरत नहीं है है, हालांकि इसे लक्ष्य डिवाइस के लिए खास तौर पर फिर से कंपाइल करने की ज़रूरत हो सकती है प्रोसेसर निर्देश सेट या ऐप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) चुनें. सीएचआरई आर्किटेक्चर और एपीआई डिज़ाइन की मदद से यह भी पक्का किया जाता है कि नैनोऐप्लिकेशन बाइनरी से संगत हों के अलग-अलग वर्शन पर काम कर रहे हैं, जिसका मतलब है कि नैनोऐप ऐसी कोई चीज़ नहीं करता को ऐसे सिस्टम पर चलाने के लिए फिर से कंपाइल करने की ज़रूरत होती है, जो CHRE API को टारगेट एपीआई से तुलना करें, जिसके लिए नैनोऐप को कंपाइल किया जाता है. दूसरे शब्दों में, अगर नैनोऐप बाइनरी को ऐसे डिवाइस पर चलाया जाता है जो CHRE API के साथ काम करता है वर्शन 1.3 है और वह डिवाइस CHRE API v1.4, उसी नैनोऐप पर काम करने के लिए अपग्रेड किया गया है बाइनरी लगातार काम कर रही है. इसी तरह, नैनोऐप CHRE API v1.2, साथ ही, रनटाइम के दौरान यह तय कर सकता है कि इसे एपीआई v1.3 की सुविधाओं की ज़रूरत है या नहीं वह अपने इस्तेमाल को हासिल कर सकता है या काम कर सकता है. ऐसा हो सकता है कि वह सुविधा में गिरावट.

Android के साथ-साथ CHRE API के नए वर्शन रिलीज़ किए गए. हालांकि, CHRE के तौर पर लागू करना इसका हिस्सा है वेंडर लागू करना, यह ज़रूरी नहीं है कि किसी डिवाइस पर काम करने वाला CHRE API वर्शन किसी Android वर्शन.

वर्शन की खास जानकारी

पसंद करें Android HIDL वर्शन स्कीम, CHRE API सिमेंटिक वर्शन का पालन करता है. मेजर वर्शन बाइनरी वर्शन के साथ काम करता है, जबकि माइनर वर्शन पुराने सिस्टम के साथ काम करने वाली सुविधाओं के लॉन्च होने पर, आरपीएम में बढ़ोतरी होती है. CHRE API इसमें सोर्स कोड एनोटेशन शामिल होते हैं, ताकि यह पता लगाया जा सके कि किस वर्शन में फ़ंक्शन उपलब्ध कराया गया या पैरामीटर, उदाहरण के लिए @since v1.1.

सीएचआरई लागू करने से, प्लैटफ़ॉर्म के हिसाब से पैच वर्शन भी दिखाया जाता है. इसके लिए, chreGetVersion(), जिससे यह पता चलता है कि गड़बड़ियां ठीक की गईं या मामूली अपडेट कब किए गए लागू करना.

वर्शन 1.0 (Android 7)

इसमें सेंसर और कोर नैनोऐप की सुविधाएं इस्तेमाल की जा सकती हैं. जैसे, इवेंट और टाइमर.

वर्शन 1.1 (Android 8)

GNSS जगह और रॉ मेज़रमेंट की मदद से, जगह की जानकारी की क्षमताओं के बारे में जानकारी देता है, वाई-फ़ाई स्कैनिंग और मोबाइल नेटवर्क की जानकारी. साथ ही, सामान्य सुविधाओं को बेहतर बनाना और अन्य सुधार लागू किए जा सकें.

वर्शन 1.2 (Android 9)

कम पावर वाले माइक्रोफ़ोन, वाई-फ़ाई आरटीटी की रेंज, AP से डेटा इस्तेमाल करने की सुविधा जागने और नींद आने से जुड़ी सूचनाएँ, और अन्य सुधार.

वर्शन 1.3 (Android 10)

यह सुविधा, सेंसर कैलिब्रेशन डेटा से जुड़ी सुविधाओं को बेहतर बनाती है. साथ ही, मांग पर, बैच किए गए सेंसर डेटा को फ़्लश करते हुए, सेंसर टाइप की पहचान करने वाले चरण के बारे में बताता है, और सटीक जानकारी वाले अतिरिक्त फ़ील्ड के साथ, जीएनएसएस की जगह के इवेंट को बढ़ाता है.

वर्शन 1.4 (Android 11)

5G सेल की जानकारी, नैनोऐप डीबग डंप वगैरह के लिए सहायता जोड़ता है सुधार किए गए हैं.

सिस्टम से जुड़ी ज़रूरी सुविधाएं

सेंसर जैसे संदर्भ के हिसाब से मिलने वाले सिग्नल के सोर्स को 'ज़रूरी नहीं' कैटगरी में रखा जाता है कुछ मुख्य फ़ंक्शन शामिल होते हैं, इसलिए सभी CHRE के लिए कुछ मुख्य फ़ंक्शन ज़रूरी होते हैं लागू करना. इसमें कोर सिस्टम एपीआई शामिल हैं, जैसे कि सेटिंग के लिए टाइमर, ऐप्लिकेशन प्रोसेसर पर क्लाइंट को मैसेज भेजना और पाना, लॉगिन किया जा सकता है. पूरी जानकारी के लिए, यह देखें एपीआई हेडर.

CHRE API में कोड की गई मुख्य सिस्टम सुविधाओं के अलावा, कुछ सुविधाएं भी सिस्टम-लेवल की ज़रूरी सुविधाएं, कॉन्टेक्स्ट हब एचएएल लेवल पर तय की जाती हैं. कॉन्टेंट बनाने इनमें से सबसे अहम है, डाइनैमिक तौर पर लोड और अनलोड करने की क्षमता नैनोऐप्लिकेशन.

C/C++ स्टैंडर्ड लाइब्रेरी

मेमोरी के इस्तेमाल और सिस्टम की जटिलता को कम करने के लिए, सीएचआरई को लागू किया जाता है सिर्फ़ स्टैंडर्ड C और C++ लाइब्रेरी के सबसेट के साथ काम करने के लिए ज़रूरी हो और भाषा सुविधाओं के लिए रनटाइम सहायता की ज़रूरत होती है. इन सिद्धांतों का पालन करते हुए, कुछ सुविधाओं को उनकी मेमोरी और बहुत ज़्यादा ओएस-लेवल की वजह से साफ़ तौर पर बाहर रखा जाता है डिपेंडेंसी और अन्य डिपेंडेंसी, क्योंकि वे ज़्यादा बेहतर होती हैं सीएचआरई के लिए खास एपीआई. हालांकि, यह एक पूरी सूची नहीं है, लेकिन यहां दी गई इन क्षमताओं को नैनोऐप्लिकेशन के लिए उपलब्ध नहीं कराया जाना चाहिए:

  • C++ अपवाद और रनटाइम टाइप की जानकारी (RTTI)
  • स्टैंडर्ड लाइब्रेरी में एक से ज़्यादा थ्रेड की सुविधा, जिसमें C+11 हेडर भी शामिल हैं <thread>, <mutex>, <atomic>, और <future>
  • C और C++ स्टैंडर्ड इनपुट/आउटपुट लाइब्रेरी
  • C++ स्टैंडर्ड टेंप्लेट लाइब्रेरी (STL)
  • C++ स्टैंडर्ड रेगुलर एक्सप्रेशन लाइब्रेरी
  • स्टैंडर्ड फ़ंक्शन के ज़रिए डाइनैमिक मेमोरी का ऐलोकेशन (उदाहरण के लिए, malloc, calloc, realloc, free, operator new), और अन्य स्टैंडर्ड लाइब्रेरी फ़ंक्शन जो पहले से ही डाइनैमिक एलोकेशन का इस्तेमाल करते हैं, जैसे कि std::unique_ptr
  • स्थानीय भाषा के अनुसार और यूनिकोड वर्ण की सुविधा
  • तारीख और समय की लाइब्रेरी
  • ऐसे फ़ंक्शन जो सामान्य प्रोग्राम फ़्लो में बदलाव करते हैं. इनमें <setjmp.h>, <signal.h>, abort, और std::terminate
  • होस्ट एनवायरमेंट को ऐक्सेस करना. इसमें system और getenv भी शामिल हैं
  • POSIX और अन्य लाइब्रेरी, जो C99 या C++11 भाषा में शामिल नहीं हैं स्टैंडर्ड

कई मामलों में, CHRE API फ़ंक्शन से मिलती-जुलती सुविधाएं उपलब्ध होती हैं यूटिलिटी लाइब्रेरी शामिल हैं. उदाहरण के लिए, chreLog का इस्तेमाल डीबग लॉग करने के लिए किया जा सकता है लॉगकैट सिस्टम के लिए टारगेट किया जाता है, जहां एक ज़्यादा परंपरागत प्रोग्राम printf या std::cout का इस्तेमाल करें.

इसके उलट, लाइब्रेरी में मौजूद कुछ सामान्य सुविधाओं की ज़रूरत होती है. यह तय करना कि इन्हें शामिल करने के लिए स्टैटिक लाइब्रेरी के ज़रिए, इन्हें सार्वजनिक करने के लिए प्लैटफ़ॉर्म को लागू किया गया है का इस्तेमाल किया जा सकता है. यह इसमें ये शामिल हैं, लेकिन इनके अलावा, और भी चीज़ें शामिल हो सकती हैं:

  • स्ट्रिंग और अरे यूटिलिटी: memcmp, memcpy, memmove, memset, strlen
  • मैथ लाइब्रेरी: आम तौर पर, सिंगल-प्रीसिज़न फ़्लोटिंग-पॉइंट फ़ंक्शन:

    • सामान्य कार्रवाइयां: ceilf, fabsf, floorf, fmaxf, fminf, fmodf, roundf, lroundf, और remainderf
    • घातांकीय और पावर फ़ंक्शन: expf, log2f, powf, sqrtf
    • त्रिकोणमितीय और हाइपरबोलिक फ़ंक्शन: sinf, cosf, tanf, asinf, acosf, atan2f, और tanhf

वहीं, कुछ प्लैटफ़ॉर्म में दूसरी सुविधाएं भी काम करती हैं, लेकिन नैनोऐप का इस्तेमाल करके को CHRE लागू करने के दौरान पोर्टेबल नहीं माना जाता है. ऐसा तब तक नहीं किया जाता, जब तक कि वह CHRE API फ़ंक्शन और मंज़ूरी पा चुकी स्टैंडर्ड लाइब्रेरी के लिए बाहरी डिपेंडेंसी फ़ंक्शन.

वैकल्पिक सुविधाएं

हार्डवेयर और सॉफ़्टवेयर को बढ़ावा देने के लिए, CHRE API को अलग-अलग फ़ीचर एरिया में बांटा गया है. जो एपीआई के नज़रिए से ज़रूरी नहीं माने जाते हैं. हालांकि, इन सुविधाओं को यह मुमकिन है कि सीएचआरई को लागू करने के लिए उसकी ज़रूरत न पड़े. हालांकि, ऐसा हो सकता है कि किसी खास नैनोऐप को सपोर्ट करने के लिए ज़रूरी है. भले ही, कोई प्लैटफ़ॉर्म अगर एपीआई का सेट दिया गया है, तो ऐसे नैनोऐप्लिकेशन जो इन फ़ंक्शन का रेफ़रंस देते हैं, उन्हें बनाने की क्षमता होनी चाहिए और लोड करना.

सेंसर

CHRE API सेंसर से डेटा का अनुरोध करने की सुविधा देता है, जैसे कि एक्सलरोमीटर, जाइरोस्कोप, मैग्नेटोमीटर, स्क्रीन की रोशनी को अपने-आप घटाने-बढ़ाने वाला सेंसर, और प्रॉक्सिमिटी. इन एपीआई का मकसद, Android सेंसर से मिलता-जुलता सुविधा सेट उपलब्ध कराना है एपीआई, जिनमें ऊर्जा की खपत को कम करने के लिए, सेंसर के सैंपल तैयार करने की सुविधा शामिल है. सीएचआरई में मौजूद सेंसर डेटा को प्रोसेस करने से, बैटरी कम चार्ज होती है और इंतज़ार का समय भी कम होता है AP पर चलने की तुलना में मोशन सिग्नल की प्रोसेसिंग.

जीएनएसएस

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

वाई-फ़ाई

CHRE, वाई-फ़ाई चिप के साथ इंटरैक्ट करने की सुविधा देता है. खास तौर पर, जगह की जानकारी इस्तेमाल करने की अनुमति. हालांकि GNSS, आउटडोर लोकेशन के लिए अच्छी तरह से काम करता है, लेकिन इससे मिलने वाले नतीजे वाई-फ़ाई स्कैन की मदद से, किसी भी जगह के अंदर और बेहतर तरीके से जगह की सटीक जानकारी हासिल की जा सकती है क्षेत्र. AP को स्कैन करने में खर्चा नहीं करना होता. इसके अलावा, सीएचआरई वाई-फ़ाई के ज़रिए किए गए वाई-फ़ाई स्कैन के नतीजे सुनें ये फ़र्मवेयर, कनेक्टिविटी के मकसद से बनाए जाते हैं. इन्हें आम तौर पर AP को नहीं भेजा जाता की बहुत ज़्यादा संभावना है. ज़रूरत के हिसाब से कनेक्टिविटी स्कैन की सुविधा इस्तेमाल करने से मदद मिलती है इससे बैटरी की बचत होती है. इससे, वाई-फ़ाई स्कैन की कुल संख्या कम की जा सकती है.

CHRE API v1.1 में वाई-फ़ाई की सुविधा जोड़ दी गई है. इसमें, निगरानी करने की सुविधा भी शामिल है इससे आपको नतीजों को स्कैन करने और ज़रूरत पड़ने पर स्कैन करने की सुविधा मिलती है. इन क्षमताओं को तब तक बढ़ाया गया था, जब v1.2, जिसमें परफ़ॉर्म करने की क्षमता हो दोतरफ़ा यात्रा का समय (आरटीटी) इस सुविधा के साथ काम करने वाले ऐक्सेस पॉइंट के लिए मेज़रमेंट की मदद से, सटीक सापेक्ष स्थिति का पता लगाने की सुविधा.

डब्ल्यूडब्ल्यूएएन

CHRE API से सेल की पहचान की जानकारी वापस पाई जा सकती है के लिए लगाया गया है, जिसका उपयोग आमतौर पर अनुमानित जगह की जानकारी.

ऑडियो

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

रेफ़रंस फ़ाइल को लागू करना

सीएचआरई फ़्रेमवर्क के लिए रेफ़रंस कोड को system/chre में एओएसपी में शामिल किया जाता है प्रोजेक्ट को C++11 में लागू किया गया है. हालांकि, यह ज़रूरी नहीं है, लेकिन हमारा सुझाव है कि आप सभी सीएचआरई को इस कोड बेस के आधार पर लागू किया जाना चाहिए. इससे यह पक्का करने में मदद मिलेगी कि लगातार होने और नई सुविधाओं को अपनाने में तेज़ी लाने के लिए. इस कोड को देखा जा सकता है कोर Android फ़्रेमवर्क के एनालॉग के तौर पर, यह एक ओपन सोर्स उन एपीआई को लागू करना जिनका इस्तेमाल ऐप्लिकेशन, बेसलाइन और स्टैंडर्ड के तौर पर करते हैं देखें. इसे ज़रूरत के हिसाब से बनाया जा सकता है और वेंडर के हिसाब से बढ़ाया जा सकता है है, तो हमारा सुझाव है कि सामान्य कोड को संदर्भ दिया हो. Android के HAL की तरह, CHRE रेफ़रंस लागू करने के लिए अलग-अलग प्लैटफ़ॉर्म के ऐब्स्ट्रैक्ट का इस्तेमाल किया जाता है, ताकि उसे कोई भी डिवाइस जो ज़रूरी शर्तें पूरी करता हो.

तकनीकी जानकारी और पोर्ट करने से जुड़ी गाइड के लिए, रीडमी system/chre प्रोजेक्ट में शामिल है.