تحتوي الهواتف الذكية على عدد من المعالِجات، كل منها محسّن لتنفيذ مهام مختلفة. ومع ذلك، لا يعمل Android إلا على معالج واحد: معالج التطبيقات (AP). تم ضبط معالج التطبيقات لتقديم أداء رائع في حالات الاستخدام التي تكون فيها الشاشة قيد التشغيل، مثل الألعاب، ولكنّه يستهلك الكثير من الطاقة لدعم الميزات التي تتطلّب معالجة متكررة وقصيرة طوال الوقت، حتى عندما تكون الشاشة متوقفة. يمكن للمعالِجات الأصغر حجمًا التعامل مع أحجام العمل هذه بكفاءة أكبر، وإكمال مهامها بدون التأثير بشكل ملحوظ على عمر البطارية. ومع ذلك، فإنّ بيئات البرامج في هذه المعالِجات منخفضة الطاقة أكثر محدودية ويمكن أن تختلف بشكل كبير، ما يجعل عملية التطوير على منصات متعددة أمرًا صعبًا.
توفّر بيئة وقت تشغيل Context Hub (CHRE) منصة شائعة لتشغيل التطبيقات على معالج منخفض الطاقة، مع واجهة برمجة تطبيقات بسيطة وموحّدة وسهلة الاستخدام في الأجهزة المضمّنة. تسهّل بيئة وقت تشغيل Context Hub على مصنّعي الأجهزة الأصليين وشركائهم الموثوق بهم نقل عملية المعالجة من معالج التطبيقات، لتوفير البطارية وتحسين جوانب مختلفة من تجربة المستخدم، وتفعيل فئة من الميزات التي تكون قيد التشغيل دائمًا وتستند إلى السياق، خاصةً تلك التي تتضمّن تطبيق تعلُّم الآلة على الاستشعار المحيطي.
المفاهيم الرئيسية
بيئة وقت تشغيل Context Hub هي بيئة البرامج التي يتم فيها تنفيذ تطبيقات أصلية صغيرة، تُعرف باسم
التطبيقات المصغّرة، على معالج منخفض الطاقة والتفاعل مع النظام الأساسي
من خلال واجهة برمجة تطبيقات Context Hub الشائعة. لتسريع عملية التنفيذ السليم لواجهات برمجة تطبيقات Context Hub، يتم تضمين تنفيذ مرجعي لبيئة وقت تشغيل Context Hub من عدّة منصات في مشروع Android مفتوح المصدر (AOSP). يتضمّن التنفيذ المرجعي رمزًا وعمليات تجريد شائعة للأجهزة والبرامج الأساسية من خلال سلسلة من طبقات تجريد المنصة (PAL). ترتبط التطبيقات المصغّرة دائمًا بتطبيق واحد أو أكثر من تطبيقات العميل التي تعمل على
Android، والتي تتفاعل مع بيئة وقت تشغيل Context Hub والتطبيقات المصغّرة من خلال واجهات برمجة تطبيقات
ContextHubManager
النظام التي لا يمكن الوصول إليها إلا من خلال أذونات محدودة.
على مستوى عالٍ، يمكن إجراء مقارنات بين بنية بيئة وقت تشغيل Context Hub وAndroid ككل. ومع ذلك، هناك بعض الاختلافات المهمة:
- تتيح بيئة وقت تشغيل Context Hub تشغيل التطبيقات المصغّرة التي تم تطويرها في رموز برمجية أصلية (C أو C++) فقط، ولا تتوافق مع Java.
- بسبب قيود الموارد والقيود الأمنية، لا يمكن لتطبيقات Android الخارجية العشوائية استخدام بيئة وقت تشغيل Context Hub. لا يمكن الوصول إليها إلا من خلال التطبيقات الموثوق بها على مستوى النظام.
هناك أيضًا فرق مهم بين مفهوم بيئة وقت تشغيل Context Hub ومركز أجهزة الاستشعار. على الرغم من أنّه من الشائع استخدام الأجهزة نفسها لتنفيذ مركز أجهزة الاستشعار وبيئة وقت تشغيل Context Hub، فإنّ بيئة وقت تشغيل Context Hub نفسها لا توفّر إمكانات أجهزة الاستشعار التي تتطلبها واجهة Android Sensors HAL. ترتبط بيئة وقت تشغيل Context Hub بواجهة Context Hub HAL، وتعمل كعميل لإطار عمل أجهزة استشعار خاص بالجهاز لتلقّي بيانات أجهزة الاستشعار بدون إشراك معالج التطبيقات.
الشكل 1: بنية إطار عمل بيئة وقت تشغيل Context Hub
واجهة Context Hub HAL
طبقة تجريد الأجهزة (HAL) في Context Hub هي الواجهة بين إطار عمل Android وتنفيذ بيئة وقت تشغيل Context Hub على الجهاز، ويتم تحديدها في
hardware/interfaces/contexthub.
تحدّد واجهة Context Hub HAL واجهات برمجة التطبيقات التي يكتشف من خلالها إطار عمل Android مراكز السياق المتاحة وتطبيقاتها المصغّرة، ويتفاعل مع هذه التطبيقات المصغّرة من خلال تمرير الرسائل، ويسمح بتحميل التطبيقات المصغّرة وإلغاء تحميلها. يتوفّر تنفيذ مرجعي لواجهة Context Hub HAL يعمل مع الـ
تنفيذ المرجعي لبيئة وقت تشغيل Context Hub في
system/chre/host.
في حال وجود تعارض بين هذه المستندات وتعريف واجهة HAL، تكون الأولوية لتعريف واجهة HAL.
الإعداد
عند بدء تشغيل Android، تستدعي
خدمة ContextHubService
دالة getHubs() في واجهة HAL لتحديد ما إذا كانت أي مراكز سياق
متاحة على الجهاز. هذا الإجراء هو استدعاء لمرة واحدة يحظر تنفيذ أي إجراء آخر حتى اكتماله، لذا يجب إكماله بسرعة لتجنُّب تأخير عملية بدء التشغيل، ويجب أن يعرض نتيجة دقيقة، لأنّه لا يمكن إضافة مراكز سياق جديدة بعد ذلك.
تحميل التطبيقات المصغّرة وإلغاء تحميلها
يمكن أن يتضمّن مركز السياق مجموعة من التطبيقات المصغّرة المضمّنة في صورة الجهاز والتي يتم تحميلها عند بدء تشغيل بيئة وقت تشغيل Context Hub. تُعرف هذه التطبيقات باسم التطبيقات المصغّرة المحمّلة مسبقًا، ويجب تضمينها في أول ردّ ممكن على queryApps().
تتيح واجهة Context Hub HAL أيضًا تحميل التطبيقات المصغّرة وإلغاء تحميلها ديناميكيًا في وقت التشغيل، من خلال الدالتَين loadNanoApp() وunloadNanoApp(). يتم توفير التطبيقات المصغّرة لطبقة تجريد الأجهزة (HAL) بتنسيق برنامج ثنائي خاص بتنفيذ أجهزة بيئة وقت تشغيل Context Hub وبرامجها على الأجهزة.
إذا كان تنفيذ تحميل تطبيق مصغّر يتضمّن كتابته في ذاكرة غير متطايرة، مثل ذاكرة فلاش متصلة بالمعالج الذي يشغّل بيئة وقت تشغيل Context Hub، يجب أن تبدأ بيئة وقت تشغيل Context Hub دائمًا تشغيل هذه التطبيقات المصغّرة الديناميكية في حالة الإيقاف. وهذا يعني أنّه لا يتم تنفيذ أي من رموز التطبيق المصغّر إلى أن يتم تلقّي طلب enableNanoapp() من خلال واجهة HAL. يمكن أن تبدأ التطبيقات المصغّرة المحمّلة مسبقًا تشغيلها في حالة التفعيل.
إعادة تشغيل Context Hub
على الرغم من أنّه من غير المتوقّع إعادة تشغيل بيئة وقت تشغيل Context Hub أثناء التشغيل العادي، قد يكون من الضروري استرداد البيانات من الظروف غير المتوقّعة، مثل محاولة الوصول إلى عنوان ذاكرة غير مُحدّد. في هذه الحالات، تتم إعادة تشغيل بيئة وقت تشغيل Context Hub بشكل مستقل عن Android. تُعلم واجهة HAL نظام Android بذلك من خلال حدث RESTARTED، الذي يجب إرساله فقط بعد إعادة تهيئة بيئة وقت تشغيل Context Hub إلى النقطة التي يمكنها فيها قبول طلبات جديدة، مثل queryApps().
نظرة عامة على نظام بيئة وقت تشغيل Context Hub
تم تصميم بيئة وقت تشغيل Context Hub حول بنية مستندة إلى الأحداث، حيث أنّ الوحدة الأساسية للحساب هي حدث يتم تمريره إلى نقطة معالجة الأحداث في التطبيق المصغّر. على الرغم من أنّ إطار عمل بيئة وقت تشغيل Context Hub يمكن أن يكون متعدد مؤشرات الترابط، لا يتم تنفيذ تطبيق مصغّر معيّن مطلقًا من مؤشرات ترابط متعددة بالتوازي. يتفاعل إطار عمل بيئة وقت تشغيل Context Hub مع تطبيق مصغّر معيّن من خلال إحدى نقاط الدخول الثلاث للتطبيق المصغّر (nanoappStart() وnanoappHandleEvent() وnanoappEnd()) أو من خلال ردّ يتم تقديمه في استدعاء سابق لواجهة برمجة تطبيقات Context Hub، وتتفاعل التطبيقات المصغّرة مع إطار عمل بيئة وقت تشغيل Context Hub والنظام الأساسي من خلال واجهة برمجة تطبيقات Context Hub. توفّر واجهة برمجة تطبيقات Context Hub مجموعة من الإمكانات الأساسية بالإضافة إلى إمكانات الوصول إلى الإشارات المستندة إلى السياق، بما في ذلك أجهزة الاستشعار وGNSS وWi-Fi وWWAN والصوت، ويمكن توسيعها بإمكانات إضافية خاصة بالمورّد لاستخدامها من قِبل التطبيقات المصغّرة الخاصة بالمورّد.
نظام التصميم
على الرغم من أنّ واجهة Context Hub HAL والمكوّنات الأخرى الضرورية على جانب معالج التطبيقات يتم تصميمها جنبًا إلى جنب مع Android، يمكن أن يكون للرمز الذي يتم تشغيله داخل بيئة وقت تشغيل Context Hub متطلبات تجعله غير متوافق مع نظام تصميم Android، مثل الحاجة إلى سلسلة أدوات متخصّصة. لذلك، يوفّر مشروع بيئة وقت تشغيل Context Hub في مشروع Android مفتوح المصدر نظام تصميم مبسطًا يستند إلى GNU Make لتجميع التطبيقات المصغّرة، وإطار عمل بيئة وقت تشغيل Context Hub اختياريًا في مكتبات يمكن دمجها مع النظام. يجب على مصنّعي الأجهزة الذين يضيفون دعمًا لبيئة وقت تشغيل Context Hub دمج دعم نظام التصميم لأجهزتهم المستهدَفة في مشروع Android مفتوح المصدر.
تمت كتابة واجهة برمجة تطبيقات Context Hub وفقًا لمعيار لغة C99، ويستخدم التنفيذ المرجعي مجموعة فرعية محدودة من C++11 مناسبة للتطبيقات التي تستهلك موارد محدودة.
واجهة برمجة تطبيقات Context Hub
واجهة برمجة تطبيقات Context Hub هي مجموعة من ملفات الرأس بلغة C التي تحدّد واجهة البرامج بين التطبيق المصغّر والنظام. تم تصميمها لجعل رمز التطبيقات المصغّرة متوافقًا مع جميع الأجهزة التي تتيح بيئة وقت تشغيل Context Hub، ما يعني أنّه لا يلزم تعديل رمز المصدر لتطبيق مصغّر لدعم نوع جهاز جديد، على الرغم من أنّه قد يلزم إعادة تجميعه خصيصًا لمجموعة تعليمات المعالج أو واجهة التطبيق الثنائية (ABI) للجهاز المستهدَف. تضمن بنية بيئة وقت تشغيل Context Hub وتصميم واجهة برمجة التطبيقات أيضًا أنّ التطبيقات المصغّرة متوافقة ثنائيًا مع إصدارات مختلفة من واجهة برمجة تطبيقات Context Hub، ما يعني أنّه لا يلزم إعادة تجميع تطبيق مصغّر لتشغيله على نظام يطبّق إصدارًا مختلفًا من واجهة برمجة تطبيقات Context Hub مقارنةً بواجهة برمجة التطبيقات المستهدَفة التي يتم تجميع التطبيق المصغّر عليها. بعبارة أخرى، إذا كان برنامج ثنائي لتطبيق مصغّر يعمل على جهاز يتيح واجهة برمجة تطبيقات Context Hub الإصدار 1.3، وتمت ترقية هذا الجهاز ليتيح واجهة برمجة تطبيقات Context Hub الإصدار 1.4، سيستمر البرنامج الثنائي نفسه للتطبيق المصغّر في العمل. وبالمثل، يمكن تشغيل التطبيق المصغّر على واجهة برمجة تطبيقات Context Hub الإصدار 1.2، ويمكنه تحديد ما إذا كان يتطلّب إمكانات من واجهة برمجة التطبيقات الإصدار 1.3 لتحقيق الاستخدام المقصود، أو ما إذا كان بإمكانه العمل، ربما مع انخفاض مستوى أداء الميزات.
ملخّص الإصدار
على غرار نظام تحديد إصدارات Android HIDL، تتبع واجهة برمجة تطبيقات Context Hub تحديد الإصدارات الدلالية.
يشير الإصدار الرئيسي إلى التوافق الثنائي، بينما يتم زيادة الإصدار الثانوي عند تقديم ميزات متوافقة مع الإصدارات السابقة. تتضمّن واجهة برمجة تطبيقات Context Hub تعليقات توضيحية لرمز المصدر لتحديد الإصدار الذي قدّم دالة أو مَعلمة، على سبيل المثال @since v1.1.
يعرض تنفيذ بيئة وقت تشغيل Context Hub أيضًا إصدار تصحيح خاصًا بالمنصة من خلال chreGetVersion()، ما يشير إلى وقت إجراء إصلاحات الأخطاء أو التحديثات الثانوية في التنفيذ.
للاطّلاع على ملخّصات كل إصدار، يُرجى الرجوع إلى version.h.
ميزات النظام الإلزامية
على الرغم من أنّ مصادر الإشارات المستندة إلى السياق، مثل أجهزة الاستشعار، يتم تصنيفها في مجالات ميزات اختيارية، فإنّ بعض الوظائف الأساسية مطلوبة في جميع عمليات تنفيذ بيئة وقت تشغيل Context Hub. ويشمل ذلك واجهات برمجة تطبيقات النظام الأساسية، مثل تلك الخاصة بضبط المؤقتات وإرسال الرسائل وتلقّيها من العملاء على معالج التطبيقات، والتسجيل، وغيرها. للاطّلاع على التفاصيل الكاملة، يُرجى الرجوع إلى رؤوس واجهة برمجة التطبيقات.
بالإضافة إلى ميزات النظام الأساسية المحدّدة في واجهة برمجة تطبيقات Context Hub، هناك أيضًا ميزات إلزامية على مستوى نظام بيئة وقت تشغيل Context Hub يتم تحديدها على مستوى واجهة Context Hub HAL. أهم هذه الميزات هي إمكانية تحميل التطبيقات المصغّرة وإلغاء تحميلها ديناميكيًا.
المكتبة العادية بلغتَي C/C++
لتقليل استخدام الذاكرة وتعقيد النظام، يجب أن تتيح عمليات تنفيذ بيئة وقت تشغيل Context Hub مجموعة فرعية فقط من المكتبات العادية بلغتَي C وC++ وميزات اللغة التي تتطلّب دعمًا في وقت التشغيل. باتّباع هذه المبادئ، يتم استبعاد بعض الميزات بشكل صريح بسبب اعتمادها على الذاكرة وعلى نطاق واسع على نظام التشغيل، ويتم استبعاد ميزات أخرى لأنّها يتم استبدالها بواجهات برمجة تطبيقات أكثر ملاءمة خاصة ببيئة وقت تشغيل Context Hub. على الرغم من أنّ القائمة التالية ليست شاملة، فإنّه ليس من المفترض إتاحة الإمكانات التالية للتطبيقات المصغّرة:
- استثناءات C++ ومعلومات نوع وقت التشغيل (RTTI)
- دعم مؤشرات الترابط المتعددة في المكتبة العادية، بما في ذلك رؤوس C++11
<thread>و<mutex>و<atomic>و<future> - مكتبات الإدخال/الإخراج العادية بلغتَي C وC++
- مكتبة النماذج العادية بلغة C++ (STL)
- مكتبة التعبيرات العادية العادية بلغة C++
- تخصيص الذاكرة الديناميكية من خلال الدوال العادية (على سبيل المثال،
mallocوcallocوreallocوfreeوoperator new)، ودوال المكتبة العادية الأخرى التي تستخدم بشكل أساسي التخصيص الديناميكي، مثلstd::unique_ptr - دعم التوطين وأحرف Unicode
- مكتبات التاريخ والوقت
- الدوال التي تعدّل تدفق البرنامج العادي، بما في ذلك
<setjmp.h><signal.h>وabortوstd::terminate - الوصول إلى بيئة المضيف، بما في ذلك
systemوgetenv - مكتبات POSIX والمكتبات الأخرى غير المضمّنة في معيارَي لغة C99 أو C++11
في كثير من الحالات، تتوفّر إمكانات مكافئة من دوال واجهة برمجة تطبيقات Context Hub ومكتبات الأدوات المساعدة. على سبيل المثال، يمكن استخدام chreLog لتسجيل الأخطاء في نظام logcat على Android، بينما قد يستخدم برنامج أكثر تقليدية 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
- العمليات الأساسية:
على الرغم من أنّ بعض المنصات الأساسية تتيح إمكانات إضافية، لا يُعتبر التطبيق المصغّر قابلاً للنقل بين عمليات تنفيذ بيئة وقت تشغيل Context Hub إلا إذا كان يقيّد تبعياته الخارجية على دوال واجهة برمجة تطبيقات Context Hub ودوال المكتبة العادية المعتمدة.
ميزات اختيارية
لتعزيز الأجهزة والبرامج، يتم تقسيم واجهة برمجة تطبيقات Context Hub إلى مجالات ميزات، تُعتبر اختيارية من منظور واجهة برمجة التطبيقات. على الرغم من أنّ هذه الميزات قد لا تكون مطلوبة لدعم تنفيذ متوافق لبيئة وقت تشغيل Context Hub، قد تكون مطلوبة لدعم تطبيق مصغّر معيّن. حتى إذا كانت المنصة لا تتيح مجموعة معيّنة من واجهات برمجة التطبيقات، يجب أن يكون بإمكان التطبيقات المصغّرة التي تشير إلى هذه الدوال إنشاءها وتحميلها.
أجهزة الاستشعار
توفّر واجهة برمجة تطبيقات Context Hub إمكانية طلب بيانات من أجهزة الاستشعار، بما في ذلك مقياس التسارع والجيروسكوب ومقياس المغناطيسية وأداة استشعار الضوء المحيط ومستشعر التقارب. تهدف واجهات برمجة التطبيقات هذه إلى توفير مجموعة الخصائص مشابهة لواجهات برمجة تطبيقات Android Sensors، بما في ذلك دعم تجميع عيّنات أجهزة الاستشعار لتقليل استهلاك الطاقة. تتيح معالجة بيانات أجهزة الاستشعار داخل بيئة وقت تشغيل Context Hub معالجة إشارات الحركة باستهلاك أقل بكثير للطاقة وبزمن انتقال أقل مقارنةً بالتشغيل على معالج التطبيقات.
GNSS
توفّر بيئة وقت تشغيل Context Hub واجهات برمجة تطبيقات لطلب بيانات الموقع الجغرافي من نظام عالمي للملاحة عبر الأقمار الصناعية (GNSS)، بما في ذلك نظام تحديد المواقع العالمي (GPS) ومجموعات الأقمار الصناعية الأخرى. ويشمل ذلك طلبات تحديد المواضع الدورية، بالإضافة إلى بيانات القياس الأولية، على الرغم من أنّ كلتيهما إمكانات مستقلة. بما أنّ بيئة وقت تشغيل Context Hub مرتبطة مباشرةً بالنظام الفرعي GNSS، يتم تقليل استهلاك الطاقة مقارنةً بطلبات GNSS المستندة إلى معالج التطبيقات، لأنّه يمكن أن يظل معالج التطبيقات في وضع السكون طوال دورة حياة جلسة الموقع الجغرافي.
Wi-Fi
توفّر بيئة وقت تشغيل Context Hub إمكانية التفاعل مع شريحة Wi-Fi، بشكل أساسي لأغراض تحديد الموقع الجغرافي. على الرغم من أنّ GNSS يعمل بشكل جيد في المواقع الخارجية، يمكن أن توفّر نتائج عمليات البحث عن شبكات Wi-Fi معلومات دقيقة عن الموقع الجغرافي في الأماكن المغلقة والمناطق المطوّرة. بالإضافة إلى تجنُّب تكلفة تنشيط نقطة الوصول لإجراء عملية بحث، يمكن أن تستمع بيئة وقت تشغيل Context Hub إلى نتائج عمليات البحث عن شبكات Wi-Fi التي يتم إجراؤها من قِبل البرامج الثابتة لشبكة Wi-Fi لأغراض إمكانية الاتصال، والتي لا يتم عادةً تسليمها إلى نقطة الوصول لأسباب متعلّقة بالطاقة. يساعد الاستفادة من عمليات البحث عن الاتصال لأغراض مستندة إلى السياق في تقليل العدد الإجمالي لعمليات البحث عن شبكات Wi-Fi التي يتم إجراؤها، ما يؤدي إلى توفير الطاقة.
تمت إضافة دعم Wi-Fi في واجهة برمجة تطبيقات Context Hub الإصدار 1.1، بما في ذلك إمكانية مراقبة نتائج عمليات البحث وبدء عمليات البحث عند الطلب. تم توسيع نطاق هذه الإمكانات في الإصدار 1.2 مع إمكانية إجراء قياسات وقت الاستجابة (RTT) مقابل نقاط الوصول التي تتيح هذه الميزة، ما يتيح تحديد الموضع النسبي بدقة.
WWAN
توفّر واجهة برمجة تطبيقات Context Hub إمكانية استرداد معلومات تعريف الخلية للخلية التي يتم عرضها والخلايا المجاورة لها، والتي تُستخدم عادةً لأغراض تحديد الموقع الجغرافي بدقة منخفضة.
الصوت
يمكن أن تعالج بيئة وقت تشغيل Context Hub مجموعات من البيانات الصوتية من ميكروفون منخفض الطاقة، والذي يستفيد عادةً من الأجهزة المستخدَمة لتنفيذ واجهة SoundTrigger HAL. يمكن أن تتيح معالجة البيانات الصوتية في بيئة وقت تشغيل Context Hub دمجها مع بيانات أخرى، مثل أجهزة استشعار الحركة.
بلوتوث
توفّر بيئة وقت تشغيل Context Hub واجهات برمجة تطبيقات تتيح مجموعة فرعية من وظائف البلوتوث التي تستفيد من نقل المعالجة إلى معالج منخفض الطاقة. تتيح بيئة وقت تشغيل Context Hub للتطبيقات المصغّرة إجراء عمليات بحث عن البلوتوث المنخفض الطاقة ومراقبة مؤشر قوة الإشارة المستلَمة (RSSI) ومعالجة بيانات إعلانات البلوتوث المنخفض الطاقة بدون تنبيه معالج التطبيقات. بالإضافة إلى ذلك، يمكن نقل ملكية اتصال مقبس البلوتوث الذي تم إنشاؤه إلى نطاق نقل المعالجة، ما يتطلّب طاقة أقل للصيانة ويسمح للتطبيقات المصغّرة بالتواصل عبر اتصال مقبس البلوتوث المنخفض الطاقة الذي تم نقل المعالجة إليه.
التنفيذ المرجعي
يتم تضمين الرمز المرجعي لإطار عمل بيئة وقت تشغيل Context Hub في مشروع Android مفتوح المصدر في مشروع system/chre، الذي تم تنفيذه بلغة C++11. على الرغم من أنّه ليس مطلوبًا بشكل صارم، يُنصح بأن تستند جميع عمليات تنفيذ بيئة وقت تشغيل Context Hub إلى قاعدة الرموز هذه، للمساعدة في ضمان الاتساق وتسريع اعتماد الإمكانات الجديدة. يمكن اعتبار هذا الرمز مشابهًا لإطار عمل Android الأساسي من حيث أنّه تنفيذ مفتوح المصدر لواجهات برمجة التطبيقات التي تستخدمها التطبيقات، ما يمثّل خطًا أساسيًا ومعيارًا للتوافق. على الرغم من أنّه يمكن تخصيصه وتوسيعه بإمكانات خاصة بالمورّد، يُنصح بالحفاظ على الرمز الشائع أقرب ما يمكن إلى المرجع. على غرار واجهات HAL في Android، يستخدم التنفيذ المرجعي لبيئة وقت تشغيل Context Hub عمليات تجريد مختلفة للمنصة لتمكينه من التكيّف مع أي جهاز يستوفي الحد الأدنى من المتطلبات.
للاطّلاع على التفاصيل الفنية ودليل النقل، يُرجى الرجوع إلى
ملف README
المضمّن في مشروع system/chre.