Я работаю над Minix NEO X8-H (Android media center, 4.4.2), и мне нужно отправить команду HDMI-CEC на телевизор: когда мое приложение получает звонок, я хочу автоматически изменить источник ТВ источник Minix hdmi.
Фактически Minix предлагает некоторые опции для включения HDMI-CEC и программного обеспечения медиацентра XBMC, как сообщается, для поддержки CEC. Но только в "режиме приема", я думаю: пользователь может управлять устройством Android с помощью пульта дистанционного управления. Я хочу работать наоборот. Я просматриваю исходный код XBMC, и я нашел очень интересный код, но не знаю, может ли он быть полезным для меня.
Я нашел последовательное устройство, которое получает команды ввода HDMI-CEC
/dev/input/event7
Ссылки на ядро размещаются по адресу: "/sys/devices/virtual/input/input7/"
# cat /sys/devices/virtual/input/input7/name
cec_input
Это часть журнала dmesg:
<5>[ [email protected]] Kernel command line: init=/init console=ttyS0,115200n8 no_console_suspend storage=5 cvbsdrv=0 vdaccfg=0xa007 logo=osd1,loaded,0x15100000,4k2ksmpte,full hdmimode=4k2ksmpte cvbsmode=576cvbs androidboot.firstboot=0 hdmitx=cec0
<4>[ [email protected]] kernel get hdmimode form uboot is 4k2ksmpte
<4>[ [email protected]] hdmitx: cec: Function List: disable, , ,
<4>[ [email protected]] hdmitx: cec: HDMI aml_read_reg32(P_AO_DEBUG_REG0):0x0
<4>[ [email protected]] hdmitx: cec: HDMI hdmi_cec_func_config:0x0
<4>[ [email protected]] hdmitx: cec: CEC not ready
<4>[ [email protected]] hdmitx: cec: CEC init
<4>[ [email protected]] hdmitx: cec: CEC task process
<4>[ [email protected]] hdmitx: cec: hdmitx_device->cec_init_ready:0x1
что доказывает эффективное присутствие встроенной поддержки HDMI-CEC.
Я нашел libCEC, и мне удалось перекрестно скомпилировать его с помощью инструментальной привязки Android NDK, и я смог установить "libcec.so" и двоичный файл демо-клиента "cec-client" на Minix.
Это варианты сборки:
[email protected]:~/Desktop/libcec/libcec-master/build$ cmake ..
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
-- Could NOT find SWIG (missing: SWIG_EXECUTABLE SWIG_DIR)
-- Configured features:
-- Pulse-Eight CEC Adapter: no
-- Pulse-Eight CEC Adapter detection: no
-- lockdev support: no
-- xrandr support: no
-- Raspberry Pi support: no
-- TDA995x support: no
-- Exynos support: no
-- Python support: no
-- lib info: compiled on Linux-3.13.0-35-generic, features: P8_USB
-- Configuring done
-- Generating done
-- Build files have been written to: /home/asd/Desktop/libcec/libcec-master/build
Я знаю, что libcec работает с внешним контроллером hdmi-cec или, если он поддерживает функцию поддержки малины, он может работать плавно на raspi, используя встроенный видеоконтроллер.
Если он может работать на raspi, он должен иметь возможность запускать Minix, я думаю.
Клиент cec был демонстрационным клиентом, разработанным для связи с последовательным интерфейсом, и на самом деле он не может связываться с /dev/input/evet 7 из-за некоторых ошибок:
[email protected]:/data # cec-client -t p -p 4 /dev/input/event7
== using device type 'playback device'
using HDMI port '4'
CEC Parser created - libCEC version 3.0.0
opening a connection to the CEC adapter...
DEBUG: [ 7] Broadcast (F): osd name set to 'Broadcast'
ERROR: [ 3520] error opening serial port '/dev/input/event7': Invalid argument
ERROR: [ 3521] could not open a connection (try 1)
ERROR: [ 6355] error opening serial port '/dev/input/event7': Too many open files
ERROR: [ 6355] could not open a connection (try 2)
ERROR: [ 8243] error opening serial port '/dev/input/event7': Too many open files
ERROR: [ 8243] could not open a connection (try 3)
ERROR: [ 9501] error opening serial port '/dev/input/event7': Too many open files
ERROR: [ 9501] could not open a connection (try 4)
unable to open the device on port /dev/input/event7
NOTICE: [ 10506] connection opened
Но AFAIK Hdmi-CEC использует протокол последовательной связи, используя контакт 13 разъема HDMI, поэтому даже если "cec-client" является демо-клиентом, он должен быть способен работать правильно! Как видите, есть проблема с блокировкой устройства или чем-то подобным.
Проблемы:
- можно отправить команду CEC через Android с помощью Java?
- Если нет, кто-нибудь знает, как настроить libCEC/cec-client для работы с Minix?
Если Java-путь невозможен, проблем нет: мое собственное приложение построено с использованием Qt, и на самом деле я уже использую пару родных общих librare.so "
У кого есть советы? Как это можно сделать?