प्रसंग हब रनटाइम पर्यावरण (सीएचआरई)

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

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

महत्वपूर्ण अवधारणाएं

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

उच्च स्तर पर, समग्र रूप से सीएचआरई और एंड्रॉइड की वास्तुकला के बीच समानताएं खींची जा सकती हैं। हालाँकि, कुछ महत्वपूर्ण अंतर हैं:

  • सीएचआरई केवल मूल कोड (सी या सी++) में विकसित नैनोएप्स चलाने का समर्थन करता है; जावा समर्थित नहीं है.
  • संसाधन बाधाओं और सुरक्षा सीमाओं के कारण, CHRE मनमाने ढंग से तृतीय-पक्ष एंड्रॉइड ऐप्स द्वारा उपयोग के लिए खुला नहीं है। केवल सिस्टम-विश्वसनीय ऐप्स ही इसे एक्सेस कर सकते हैं।

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

सीएचआरई ढांचा वास्तुकला

चित्र 1. सीएचआरई ढांचा वास्तुकला

प्रसंग हब एचएएल

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

इस दस्तावेज़ और एचएएल परिभाषा के बीच विरोध की स्थिति में, एचएएल परिभाषा को प्राथमिकता दी जाती है।

प्रारंभ

जब एंड्रॉइड बूट होता है, तो ContextHubService यह निर्धारित करने के लिए getHubs() HAL फ़ंक्शन को आमंत्रित करता है कि डिवाइस पर कोई संदर्भ हब उपलब्ध है या नहीं। यह एक ब्लॉकिंग, वन-टाइम कॉल है, इसलिए बूट में देरी से बचने के लिए इसे जल्दी से पूरा करना होगा, और इसे एक सटीक परिणाम देना होगा, क्योंकि नए संदर्भ हब को बाद में पेश नहीं किया जा सकता है।

नैनोएप्स को लोड और अनलोड करना

एक संदर्भ हब में नैनोएप्स का एक सेट शामिल हो सकता है जो डिवाइस छवि में शामिल होता है और सीएचआरई शुरू होने पर लोड होता है। इन्हें प्रीलोडेड नैनोएप्स के रूप में जाना जाता है, और queryApps() की पहली संभावित प्रतिक्रिया में शामिल किया जाना चाहिए।

कॉन्टेक्स्ट हब HAL loadNanoApp() और unloadNanoApp() फ़ंक्शंस के माध्यम से रनटाइम पर गतिशील रूप से नैनोएप्स को लोड करने और अनलोड करने का भी समर्थन करता है। डिवाइस के सीएचआरई हार्डवेयर और सॉफ्टवेयर कार्यान्वयन के लिए विशिष्ट बाइनरी प्रारूप में एचएएल को नैनोएप्स प्रदान किए जाते हैं।

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

प्रसंग हब पुनः आरंभ होता है

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

सीएचआरई प्रणाली सिंहावलोकन

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

सिस्टम बनाएं

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

सीएचआरई एपीआई सी99 भाषा मानक पर लिखा गया है, और संदर्भ कार्यान्वयन संसाधन-सीमित अनुप्रयोगों के लिए उपयुक्त सी++11 के एक प्रतिबंधित उपसमूह का उपयोग करता है।

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

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

सीएचआरई एपीआई के नए संस्करण एंड्रॉइड के साथ जारी किए गए हैं, हालांकि सीएचआरई कार्यान्वयन विक्रेता कार्यान्वयन का हिस्सा है, किसी डिवाइस पर समर्थित सीएचआरई एपीआई संस्करण जरूरी नहीं कि एंड्रॉइड संस्करण से जुड़ा हो।

संस्करण सारांश

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

सीएचआरई कार्यान्वयन chreGetVersion() के माध्यम से एक प्लेटफ़ॉर्म-विशिष्ट पैच संस्करण को भी उजागर करता है, जो इंगित करता है कि कार्यान्वयन में बग फिक्स या मामूली अपडेट कब किए जाते हैं।

संस्करण 1.0 (एंड्रॉइड 7)

इसमें सेंसर और कोर नैनोएप कार्यक्षमता जैसे इवेंट और टाइमर के लिए समर्थन शामिल है।

संस्करण 1.1 (एंड्रॉइड 8)

नैनोएप-टू-नैनोएप संचार और अन्य सुधारों को सक्षम करने के लिए सामान्य परिशोधन के साथ-साथ जीएनएसएस स्थान और कच्चे माप, वाई-फाई स्कैनिंग और सेलुलर नेटवर्क जानकारी के माध्यम से स्थान क्षमताओं का परिचय देता है।

संस्करण 1.2 (एंड्रॉइड 9)

कम-शक्ति वाले माइक्रोफ़ोन, वाई-फ़ाई आरटीटी रेंजिंग, एपी वेक/स्लीप नोटिफिकेशन और अन्य सुधारों से डेटा के लिए समर्थन जोड़ता है।

संस्करण 1.3 (एंड्रॉइड 10)

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

संस्करण 1.4 (एंड्रॉइड 11)

5G सेल जानकारी, नैनोएप डिबग डंप और अन्य सुधारों के लिए समर्थन जोड़ता है।

अनिवार्य प्रणाली सुविधाएँ

जबकि सेंसर जैसे प्रासंगिक संकेतों के स्रोतों को वैकल्पिक फीचर क्षेत्रों में वर्गीकृत किया गया है, सभी सीएचआरई कार्यान्वयन में कुछ मुख्य कार्यों की आवश्यकता होती है। इसमें कोर सिस्टम एपीआई शामिल हैं, जैसे टाइमर सेट करने, एप्लिकेशन प्रोसेसर पर क्लाइंट को संदेश भेजने और प्राप्त करने, लॉगिंग और अन्य। पूर्ण विवरण के लिए, एपीआई हेडर देखें।

सीएचआरई एपीआई में संहिताबद्ध मुख्य सिस्टम सुविधाओं के अलावा, कॉन्टेक्स्ट हब एचएएल स्तर पर निर्दिष्ट अनिवार्य सीएचआरई सिस्टम-स्तरीय सुविधाएं भी हैं। इनमें से सबसे महत्वपूर्ण नैनोएप्स को गतिशील रूप से लोड और अनलोड करने की क्षमता है।

सी/सी++ मानक पुस्तकालय

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

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

कई मामलों में, समकक्ष कार्यक्षमता सीएचआरई एपीआई फ़ंक्शंस और/या उपयोगिता पुस्तकालयों से उपलब्ध है। उदाहरण के लिए, 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

जबकि कुछ अंतर्निहित प्लेटफ़ॉर्म अतिरिक्त कार्यक्षमता का समर्थन करते हैं, एक नैनोएप को सीएचआरई कार्यान्वयन में पोर्टेबल नहीं माना जाता है जब तक कि यह अपनी बाहरी निर्भरता को सीएचआरई एपीआई कार्यों और अनुमोदित मानक लाइब्रेरी कार्यों तक सीमित नहीं करता है।

वैकल्पिक विशेषताएं

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

सेंसर

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

जीएनएसएस

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

वाईफ़ाई

सीएचआरई मुख्य रूप से स्थान उद्देश्यों के लिए वाई-फाई चिप के साथ बातचीत करने की क्षमता प्रदान करता है। जबकि जीएनएसएस बाहरी स्थानों के लिए अच्छा काम करता है, वाई-फाई स्कैन के परिणाम घर के अंदर और विकसित क्षेत्रों में सटीक स्थान की जानकारी प्रदान कर सकते हैं। स्कैन के लिए एपी को जगाने की लागत से बचने के अलावा, सीएचआरई कनेक्टिविटी उद्देश्यों के लिए वाई-फाई फर्मवेयर द्वारा किए गए वाई-फाई स्कैन के परिणामों को सुन सकता है, जो आमतौर पर बिजली कारणों से एपी को वितरित नहीं किए जाते हैं। प्रासंगिक उद्देश्यों के लिए कनेक्टिविटी स्कैन का लाभ उठाने से बिजली की बचत करते हुए किए गए वाई-फाई स्कैन की कुल संख्या को कम करने में मदद मिलती है।

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

WWAN

सीएचआरई एपीआई सेवारत सेल और उसके पड़ोसियों के लिए सेल पहचान जानकारी पुनर्प्राप्त करने की क्षमता प्रदान करता है, जिसका उपयोग आम तौर पर मोटे-दाने वाले स्थान उद्देश्यों के लिए किया जाता है।

ऑडियो

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

संदर्भ कार्यान्वयन

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

तकनीकी विवरण और पोर्टिंग गाइड के लिए, system/chre प्रोजेक्ट में शामिल रीडमी देखें।