خدمة التحكّم في HDMI-CEC

يتيح معيار HDMI-CEC (High-Definition Multimedia Interface Consumer Electronics Control) لمنتجات المستهلك المتعدّدة الوسائط التواصل مع بعضها ومشارَكة المعلومات. تتيح تقنية HDMI-CEC العديد من الميزات، مثل إرسال إشارة جهاز التحكّم عن بُعد والتحكّم في صوت النظام، ولكن من بين الميزات الأكثر رواجًا هي ميزة One Touch Play. تتيح ميزة "التشغيل بنقرة واحدة" لجهاز مصدر الوسائط تشغيل التلفزيون وتبديل منفذ الإدخال تلقائيًا، ما يغنيك عن البحث عن جهاز التحكّم عن بُعد بالتلفزيون للتبديل من جهاز Chromecast إلى مشغّل Blu-ray.

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

إنّ توفير ميزة HDMI-CEC اختياري بشكل عام. ومع ذلك، تبنّت معظم الشركات المصنّعة ميزة HDMI-CEC لكي تعمل أجهزتها مع أجهزة الشركات الأخرى. تطبّق كل شركة تصنيع معيار HDMI-CEC بطرق مختلفة، لذلك لا تتوافق الأجهزة مع بعضها دائمًا وتختلف ميزات الأجهزة المتوافقة. بسبب هذا التباين، لا يمكن للمستهلكين افتراض بأمان أنّ المنتجَين اللذَين يُزعَم أنّهما متوافقان مع معيار CEC متوافقان تمامًا.

يساعد توفُّر تقنية HDMI-CEC 2.0 في تحسين التوافق بين أجهزة HDMI إذا كان كل من الجهاز المُرسِل والجهاز المُستلِم يتيحان هذا الإصدار من المعيار.

الحل

مع طرح إطار عمل إدخال Android TV ‏ (TIF)، يجمع معيار HDMI-CEC جميع الأجهزة المتصلة ويقلل من مشاكل التوافق. أنشأ نظام التشغيل Android خدمة نظام تُسمى HdmiControlService بهدف تخفيف هذه المشاكل.

من خلال توفير HdmiControlService كجزء من منظومة Android المتكاملة، نأمل في توفير ما يلي:

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

التصميم العام

يتم ربط HdmiControlService بباقي أجزاء النظام، مثل إطار عمل إدخال التلفزيون (TIF) وخدمة الصوت وخدمة الطاقة، لتنفيذ الميزات المختلفة التي يحدّدها المعيار.

اطّلِع على الرسم البياني التالي للاطّلاع على وصف للتبديل من وحدة تحكّم مخصّصة في تكنولوجيا CEC إلى تنفيذ لطبقة HDMI-CEC المخصّصة لتوفير واجهة برمجة تطبيقات بسيطة للأجهزة (HAL).

مخطّط بياني يوضّح كيفية تنفيذ HDMI-CEC قبل Android 5.0 وبعده

الشكل 1: خدمة التحكّم في HDMI الاستبدال

التنفيذ

اطّلِع على الرسم البياني التالي للحصول على عرض تفصيلي لخدمة التحكّم في HDMI.

صورة توضّح تفاصيل خدمة التحكّم في HDMI

الشكل 2: تفاصيل خدمة التحكّم في HDMI

في ما يلي العناصر الرئيسية لتنفيذ ميزة HDMI-CEC بشكل صحيح على Android:

  • توفّر فئة المدير HdmiControlManager للتطبيقات المميّزة واجهة برمجة التطبيقات. يمكن لخدمات النظام، مثل خدمة "إدارة إدخالات التلفزيون" وخدمة "الصوت"، استخدام الخدمة مباشرةً.
  • تم تصميم الخدمة للسماح باستضافة أكثر من نوع واحد من الأجهزة المنطقية.
  • يتم ربط واجهة HDMI-CEC بالأجهزة من خلال طبقة تجريد الأجهزة (HAL) لتبسيط التعامل مع الاختلافات في البروتوكول وآليات الإرسال بين الأجهزة. يتوفّر تعريف HAL لصنّاع الأجهزة لاستخدامه في تنفيذ طبقة HAL.

ملاحظة: على المصنّعين إضافة السطر التالي إلى PRODUCT_COPY_FILES في device.mk.

PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml

استنادًا إلى ما إذا كان جهازك جهاز استقبال HDMI أو جهاز مصدر HDMI، على الشركات المصنّعة للأجهزة ضبط ro.hdmi.device_type في device.mk لكي يعمل HdmiControlService بشكل صحيح.

بالنسبة إلى أجهزة مصدر HDMI، مثل أجهزة خدمة البث المباشر على الإنترنت (OTT) أو أجهزة فكّ ترميز المحتوى التلفزيوني (STB)، يجب ضبط ما يلي:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4

بالنسبة إلى أجهزة HDMI المُستلِمة، مثل أجهزة التلفزيون المزوّدة بشاشة مسطّحة، اضبط ما يلي:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
  • لا يمكن أن يتوفّر في الجهاز جهاز تحكّم خاص بتكنولوجيا CEC يوفّره المصنّع ويتوافق مع HdmiControlService. يجب إيقافه أو إزالته. تنشأ المتطلبات الشائعة لهذا الإجراء من الحاجة إلى معالجة طلبات متعلقة بالشركة المصنّعة. يجب دمج معالِج الأوامر الخاص بالشركة المصنّعة في الخدمة من خلال تمديدها أو تعديلها. وتترك Google هذا العمل للشركة المصنّعة للجهاز ولا تحدّده. يُرجى ملاحظة أنّ أي تغيير يتم إجراؤه في الخدمة للأوامر الخاصة بالشركة المصنّعة يجب ألا يتداخل مع طريقة التعامل مع الأوامر العادية وإلا لن يكون الجهاز متوافقًا مع Android.
  • يتم تأمين الوصول إلى خدمة HDMI-CEC من خلال مستوى الحماية SignatureOrSystem. لا يمكن سوى لمكوّنات النظام أو التطبيقات المضمّنة في /system/priv-app الوصول إلى الخدمة. ويهدف ذلك إلى حماية الخدمة من إساءة الاستخدام من قِبل التطبيقات التي لها غرض ضار.

يتوافق Android مع النوعَين TV/Display(0) وPlayback device(4) اللذَين يمكنهما إصدار الأمر One Touch Play ليصبحا المصدر النشط، والنوع Audio System (5) الذي يعالج وضع صوت النظام وARC. لا تتوفّر أنواع الأجهزة الأخرى (المحوِّل وجهاز التسجيل) حاليًا.

HDMI-CEC HAL

تتيح واجهة برمجة التطبيقات HDMI-CEC HAL API لجهاز HdmiControlService استخدام موارد الأجهزة لإرسال أو تلقّي أوامر HDMI-CEC وضبط الإعدادات اللازمة، والتواصل (اختياريًا) مع المعالج الدقيق في المنصة الأساسية الذي سيتولى التحكّم في CEC عندما يكون نظام Android في وضع الاستعداد.

الإصدار الميزات ملفات HAL
1 ضبط بيانات HAL (العناوين والميزات) إرسال أوامر HDMI-CEC سجِّل وظيفة ردّ الاتصال لتلقّي أوامر HDMI-CEC وأحداث hotplug. IHdmiCec.hal
IHdmiCecCallback.hal
1.1 أنواع HDMI-CEC 2.0 @1.1::IHdmiCec.hal
@1.1::IHdmiCecCallback.hal

الاختبار

يتم اختبار عمليات تنفيذ ميزة HDMI-CEC في الأجهزة والتحقّق منها من خلال اختبارات CTS وفقًا لملف مستندات CTS الخاصة بميزة HDMI-CEC.

HDMI-CEC 2.0

تتوافق أجهزة Android المصدر (لتشغيل المحتوى) والأجهزة المُستلِمة (لوحة التلفزيون) مع معيار HDMI-CEC 2.0. توفّر تقنية HDMI-CEC 2.0 إمكانية تشغيل تفاعلي أفضل بين أجهزة HDMI، وتحسينات على تقنية "تمرير إشارة التحكّم عن بُعد" واختبارات اعتماد أكثر شمولاً. بشكل عام، تكون تفاعلات HDMI-CEC 2.0 مع الأجهزة الأخرى أكثر فعالية، مما يؤدي إلى تقليل عدد عمليات نقل البيانات عبر HDMI-CEC وزيادة سرعة التفاعلات.

لكي يكون الجهاز متوافقًا مع معيار HDMI-CEC 2.0، يجب أن يكون الجهاز وإعدادات المستخدم مُعدَّة لاستخدام معيار HDMI-CEC 2.0. يجب أن يُبلغ تنفيذ HAL أيضًا عن توافقه مع HDMI-CEC 2.0 في طلبات البيانات المرسَلة إلى IHdmiCec#getCecVersion.

إعدادات ميزة "التحكم في الأجهزة الإلكترونية الاستهلاكية" (CEC)

يمكن ضبط سلوك HDMI-CEC في وقت الإنشاء (من قِبل المصنّعين الأصليّين للأجهزة باستخدام تطبيقات RRO) ووقت التشغيل (من قِبل HdmiControlManager @SystemApi).

أمثلة على إعدادات HDMI-CEC:

الإعدادات Option
ما إذا كانت ميزة HDMI-CEC مفعَّلة أم غير مفعَّلة مفعّلة
غير مفعّلة
نطاق رسائل التحكّم في الطاقة عبر HDMI-CEC التي يرسلها جهاز التشغيل إلى التلفزيون فقط
إلى التلفزيون ونظام الصوت
البث
لا شيء

يمكن للتطبيقات الاستعلام عن كل خيار متاح حاليًا ومسموح به في وقت التشغيل.