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