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

يتيح معيار HDMI-CEC (High-Definition Multimedia Interface Consumer Electronics Control) لمنتجات المستهلك المتعدّدة الوسائط التواصل مع بعضها البعض وتبادل المعلومات. تتيح تقنية HDMI-CEC العديد من الميزات، مثل إرسال إشارة جهاز التحكّم عن بُعد والتحكّم في صوت النظام، ولكن من بين الميزات الأكثر رواجًا هي ميزة One Touch Play. تسمح ميزة 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 أبحاثًا دقيقة حول مشاكل التوافق التي يتم رصدها في المنتجات، ويجمع نصائح مفيدة من خبراء تكنولوجيا تطبيقات الأجهزة. تم تصميم خدمة التحكم بالأجهزة الإلكترونية الاستهلاكية للحفاظ على توازن صحي بين المعيار والتعديلات على هذا المعيار حتى تعمل مع المنتجات التي يستخدمها الأشخاص بالفعل.

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

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

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

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

الشكل 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. يجب إيقافه أو إزالته. تأتي المتطلبات الشائعة لذلك من الحاجة إلى التعامل مع الأوامر الخاصة بالشركة المصنعة. يجب دمج معالِج الأوامر الخاص بالشركة المصنّعة في الخدمة من خلال تمديدها أو تعديلها. ويتم ترك هذا العمل للشركة المصنعة للجهاز ولم يحدده Android. يُرجى العِلم أنّ أي تغيير يتم إجراؤه في الخدمة على الأوامر الخاصة بالشركة المصنّعة يجب ألا يتداخل مع طريقة التعامل مع الأوامر العادية، وإلا لن يكون الجهاز متوافقًا مع 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 وأحداث التوصيل السريع. 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 التي يرسلها جهاز التشغيل للتلفزيون فقط
إلى التلفزيون ونظام الصوت
البث
لا ينطبق

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