مجموعة أدوات الاستشعار

يوضّح الشكل أدناه مجموعة مستشعرات Android. يتواصل كل مكوّن مع المكوّنات التي تعلوه وتلك التي تليه مباشرةً فقط، على الرغم من أنّ بعض أجهزة الاستشعار يمكنها تجاوز مركز أجهزة الاستشعار عند توفّره. تنتقل عناصر التحكّم من التطبيقات إلى أجهزة الاستشعار، وتنتقل البيانات من أجهزة الاستشعار إلى التطبيقات.

الطبقات والمالكون في حزمة أجهزة الاستشعار على Android

الشكل 1. طبقات مجموعة أجهزة الاستشعار في Android ومالكوها

SDK

تصل التطبيقات إلى أجهزة الاستشعار من خلال واجهة برمجة التطبيقات لحزمة تطوير البرامج (SDK) الخاصة بأجهزة الاستشعار. تحتوي حزمة تطوير البرامج (SDK) على دوال لعرض قائمة بالمستشعرات المتاحة وللتسجيل في أحد المستشعرات.

عند التسجيل في مستشعر، يحدّد التطبيق معدّل أخذ العيّنات المفضّل ومتطلبات وقت الاستجابة.

  • على سبيل المثال، قد يسجّل تطبيق نفسه في مقياس التسارع التلقائي، ويطلب أحداثًا بمعدّل 100 هرتز، ويسمح بالإبلاغ عن الأحداث مع تأخير لمدة ثانية واحدة.
  • سيتلقّى التطبيق أحداثًا من مقياس التسارع بمعدّل 100 هرتز على الأقل، وقد يتأخّر وصولها لمدة تصل إلى ثانية واحدة.

يمكنك الاطّلاع على مستندات المطوّرين للحصول على مزيد من المعلومات حول حزمة SDK.

Framework

يكون إطار العمل مسؤولاً عن ربط التطبيقات المتعددة بطبقة تجريد الأجهزة (HAL). طبقة HAL نفسها هي طبقة أحادية العميل. وبدون حدوث عملية الربط المتعدد هذه على مستوى إطار العمل، لن يتمكّن سوى تطبيق واحد من الوصول إلى كل مستشعر في أي وقت.

  • عندما يسجّل تطبيق لأول مرة في أحد المستشعرات، يرسل إطار العمل طلبًا إلى طبقة تجريد الأجهزة (HAL) لتفعيل المستشعر.
  • عندما تسجّل تطبيقات إضافية في المستشعر نفسه، يأخذ إطار العمل في الاعتبار متطلبات كل تطبيق ويرسل المَعلمات المطلوبة المعدَّلة إلى طبقة HAL.
    • سيكون معدّل أخذ العيّنات هو الحد الأقصى لمعدّلات أخذ العيّنات المطلوبة، ما يعني أنّ بعض التطبيقات ستتلقّى الأحداث بمعدّل أعلى من المعدّل الذي طلبته.
    • سيكون الحد الأقصى لوقت الاستجابة لإعداد التقارير هو الحد الأدنى من القيم المطلوبة. إذا طلب أحد التطبيقات مستشعرًا واحدًا بحد أقصى لوقت استجابة الإبلاغ يبلغ 0، ستتلقّى جميع التطبيقات الأحداث من هذا المستشعر في الوضع المستمر حتى إذا طلب بعضها المستشعر بحد أقصى لوقت استجابة الإبلاغ لا يساوي صفرًا. يمكنك الاطّلاع على التجميع لمزيد من التفاصيل.
  • عندما يتم إلغاء تسجيل آخر تطبيق مسجَّل في أحد المستشعرات، ترسل الأُطر طلبًا إلى طبقة تجريد الأجهزة (HAL) لإيقاف المستشعر كي لا يتم استهلاك الطاقة بدون داعٍ.

تأثير تعدد الإرسال

ويفسّر هذا الاحتياج إلى طبقة تجميع في إطار العمل بعض قرارات التصميم.

  • عندما يطلب تطبيق معدّل تكرار أخذ عيّنات معيّنًا، ليس هناك ما يضمن عدم وصول الأحداث بمعدّل أسرع. إذا طلب تطبيق آخر بيانات المستشعر نفسه بمعدّل أسرع، سيتلقّى التطبيق الأول البيانات أيضًا بالمعدّل السريع.
  • وينطبق عدم الضمان نفسه على الحد الأقصى المطلوب لوقت استجابة إعداد التقارير: قد تتلقّى التطبيقات أحداثًا بوقت استجابة أقل بكثير من المطلوب.
  • وبالإضافة إلى معدّل أخذ العيّنات والحدّ الأقصى لوقت استجابة إعداد التقارير، لا يمكن للتطبيقات ضبط معلَمات أجهزة الاستشعار.
    • على سبيل المثال، تخيَّل مستشعرًا ماديًا يمكنه العمل في وضعَي "الدقة العالية" و"استهلاك الطاقة المنخفض".
    • يمكن استخدام أحد هذين الوضعين فقط على جهاز Android، لأنّه في حال عدم ذلك، يمكن أن يطلب أحد التطبيقات وضع الدقة العالية، ويطلب تطبيق آخر وضع توفير الطاقة، ولن يكون هناك طريقة لإرضاء التطبيقين. يجب أن يكون إطار العمل قادرًا دائمًا على تلبية احتياجات جميع عملائه، وبالتالي لا يمكن استخدام هذا الخيار.
  • لا توجد آلية لإرسال البيانات من التطبيقات إلى أدوات الاستشعار أو برامج التشغيل الخاصة بها. ويضمن ذلك عدم تمكّن أحد التطبيقات من تعديل سلوك أجهزة الاستشعار، ما يؤدي إلى تعطيل التطبيقات الأخرى.

دمج البيانات من أجهزة الاستشعار

يوفّر إطار عمل Android عملية تنفيذ تلقائية لبعض أجهزة الاستشعار المركّبة. عندما يتوفّر جيروسكوب ومقياس تسارع ومقياس مغناطيسي على جهاز، ولكن لا يتوفّر مستشعر متجه الدوران ومستشعر الجاذبية ومستشعر التسارع الخطي، يوفّر إطار العمل هذه المستشعرات حتى تتمكّن التطبيقات من استخدامها.

لا يمكن للتنفيذ التلقائي الوصول إلى جميع البيانات التي يمكن لعمليات التنفيذ الأخرى الوصول إليها، ويجب أن يتم تشغيله على نظام SoC، لذا فهو ليس دقيقًا ولا فعّالاً من حيث استهلاك الطاقة مثل عمليات التنفيذ الأخرى. ويجب على مصنّعي الأجهزة قدر الإمكان تحديد أدوات الاستشعار المدمجة الخاصة بهم (متجه الدوران والجاذبية والتسارع الخطي، بالإضافة إلى أدوات الاستشعار المركّبة الأحدث، مثل متجه دوران الألعاب) بدلاً من الاعتماد على هذا التنفيذ التلقائي. يمكن لمصنّعي الأجهزة أيضًا أن يطلبوا من مورّدي شرائح الاستشعار تزويدهم بعملية التنفيذ.

لا يتم الحفاظ على التنفيذ التلقائي لدمج البيانات من أجهزة الاستشعار، وقد يؤدي ذلك إلى تعذُّر اجتياز الأجهزة التي تعتمد عليه لاختبار CTS.

الخيارات المتقدمة

يتم توفير هذا القسم كمعلومات أساسية للمستخدمين الذين يديرون رمز إطار عمل "مشروع Android المفتوح المصدر" (AOSP). ولا صلة له بمصنّعي الأجهزة.

JNI

يستخدم إطار العمل واجهة Java الأصلية (JNI) المرتبطة بـ android.hardware والموجودة في الدليل frameworks/base/core/jni/. يستدعي هذا الرمز الرموز البرمجية الأصلية ذات المستوى الأدنى للحصول على إذن الوصول إلى أجهزة الاستشعار.

إطار عمل مدمج مع المحتوى

يتم تحديد إطار العمل الأصلي في frameworks/native/، وهو يوفّر مكافئًا أصليًا لحزمة android.hardware. يطلب إطار العمل الأصلي من وكلاء Binder IPC الحصول على إذن الوصول إلى الخدمات الخاصة بأجهزة الاستشعار.

Binder IPC

تسهّل وكلاء Binder IPC التواصل عبر حدود العمليات.

HAL

تمثّل واجهة برمجة التطبيقات (API) الخاصة بطبقة تجريد الأجهزة (HAL) لأجهزة الاستشعار الواجهة بين برامج تشغيل الأجهزة وإطار عمل Android. ويتألف من واجهة HAL واحدة sensors.h وتنفيذ واحد لواجهة HAL يُشار إليه باسم sensors.cpp.

يتم تحديد الواجهة من خلال المساهمين في Android وAOSP، ويتم توفير التنفيذ من خلال الشركة المصنّعة للجهاز.

تتوفّر واجهة HAL الخاصة بأدوات الاستشعار في hardware/libhardware/include/hardware. يمكنك الاطّلاع على sensors.h لمزيد من التفاصيل.

دورة الإصدار

يحدّد تنفيذ طبقة HAL إصدار واجهة HAL التي ينفّذها من خلال ضبط your_poll_device.common.version. يتم تحديد إصدارات واجهة HAL الحالية في sensors.h، وترتبط الوظائف بهذه الإصدارات.

يتوافق إطار عمل Android حاليًا مع الإصدارَين 1.0 و1.3، ولكن لن يكون الإصدار 1.0 متاحًا قريبًا. توضّح هذه المستندات سلوك الإصدار 1.3 الذي يجب أن تتم ترقية جميع الأجهزة إليه. للحصول على تفاصيل حول كيفية الترقية إلى الإصدار 1.3، يُرجى الاطّلاع على إيقاف إصدار HAL نهائيًا.

برنامج تشغيل النواة

تتفاعل برامج تشغيل أجهزة الاستشعار مع الأجهزة المادية. في بعض الحالات، يكون تنفيذ طبقة تجريد الأجهزة وبرامج التشغيل عبارة عن كيان برمجي واحد. في حالات أخرى، يطلب مدمج الأجهزة من الشركات المصنّعة لشرائح الاستشعار توفير برامج التشغيل، ولكنّه هو من يكتب تنفيذ طبقة HAL.

في جميع الحالات، تقع مسؤولية تنفيذ طبقة تجريد الأجهزة (HAL) وبرامج تشغيل النواة على عاتق الشركات المصنّعة للأجهزة، ولا يوفّر نظام التشغيل Android أساليب مفضّلة لكتابتها.

مركز أجهزة الاستشعار

يمكن أن تتضمّن مجموعة أدوات الاستشعار في الجهاز اختياريًا مركزًا لأدوات الاستشعار، وهو مفيد لإجراء بعض العمليات الحسابية المنخفضة المستوى مع استهلاك منخفض للطاقة بينما يمكن أن تكون وحدة النظام على الشريحة في وضع تعليق. على سبيل المثال، يمكن إجراء عملية احتساب الخطوات أو دمج البيانات الحسية على هذه الشرائح. وهي أيضًا مكان مناسب لتنفيذ تجميع بيانات المستشعر، وإضافة قوائم انتظار FIFO للأجهزة لأحداث المستشعر. يمكنك الاطّلاع على التجميع لمزيد من المعلومات.

ملاحظة: لتطوير ميزات جديدة في ContextHub تستخدم أجهزة استشعار أو مصابيح LED جديدة، يمكنك أيضًا استخدام Neonkey SensorHub متصلة بلوحة تطوير Hikey أو Hikey960.

تعتمد طريقة تنفيذ مركز الاستشعار على البنية. ويكون أحيانًا شريحة منفصلة، وأحيانًا مضمّنًا في الشريحة نفسها التي تضمّ نظام التشغيل على الشريحة. ومن الخصائص المهمة لمركز الاستشعار أنّه يجب أن يحتوي على ذاكرة كافية لتجميع البيانات وأن يستهلك القليل جدًا من الطاقة لتفعيل تنفيذ مستشعرات Android التي تستهلك طاقة منخفضة. تحتوي بعض مراكز الاستشعار على وحدة تحكّم دقيق لإجراء عمليات حسابية عامة، بالإضافة إلى أدوات تسريع الأجهزة التي تتيح إجراء عمليات حسابية منخفضة استهلاك الطاقة لأجهزة الاستشعار المنخفضة استهلاك الطاقة.

لا يحدّد نظام التشغيل Android طريقة تصميم مركز المستشعرات وطريقة توافقه مع المستشعرات ومع نظام SoC (ناقل I2C، وناقل SPI، وما إلى ذلك)، ولكن يجب أن يهدف إلى تقليل استهلاك الطاقة بشكل عام.

أحد الخيارات التي يبدو أنّ لها تأثيرًا كبيرًا في تبسيط عملية التنفيذ هو توفير خطّين للمقاطعة ينتقلان من مركز الاستشعار إلى نظام التشغيل على الشريحة (SoC): أحدهما للمقاطعات التي تؤدي إلى التنشيط (لأجهزة الاستشعار التي تؤدي إلى التنشيط)، والآخر للمقاطعات التي لا تؤدي إلى التنشيط (لأجهزة الاستشعار التي لا تؤدي إلى التنشيط).

أجهزة الاستشعار

وهي عبارة عن شرائح MEMs المادية التي تجري القياسات. في كثير من الحالات، تتوفّر عدة أجهزة استشعار فعلية على الشريحة نفسها. على سبيل المثال، تتضمّن بعض الشرائح مقياس تسارع وجيروسكوب ومقياس مغناطيسي. (يُطلق على هذه الشرائح غالبًا اسم شرائح 9 محاور، لأنّ كل جهاز استشعار يوفّر بيانات على 3 محاور).

تحتوي بعض هذه الشرائح أيضًا على بعض المنطق لتنفيذ العمليات الحسابية المعتادة، مثل رصد الحركة ورصد الخطوات ودمج بيانات المستشعر ذي المحاور التسعة.

على الرغم من أنّ متطلبات واقتراحات دقة ومستوى أداء أجهزة استشعار CDD تستهدف أجهزة استشعار Android وليس أجهزة الاستشعار المادية، إلا أنّ هذه المتطلبات تؤثّر في اختيار أجهزة الاستشعار المادية. على سبيل المثال، يؤثر شرط الدقة في متّجه دوران اللعبة في الدقة المطلوبة لجهاز الجيروسكوب الفعلي. ويعود إلى الشركة المصنّعة للجهاز تحديد متطلبات أجهزة الاستشعار المادية.