Android - отправка команд HDMI CEC на TV - minix - libCEC

Я работаю над 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:

http://pastebin.com/raw.php?i=A5dE3qLu

<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 "

У кого есть советы? Как это можно сделать?

Ответ 1

Прежде всего, очень впечатляющая обратная инженерная работа!

Во-вторых, я столкнулся с аналогичной проблемой (но с продуктом non Minix). Вы пробовали перейти на новую прошивку, такую ​​как:

http://minixforum.com/threads/x8-x8-plus-x8-h-official-firmware-004a-not-for-x8-h-plus.5567/

Я предлагаю это как возможное решение, потому что одна из проблем, которые он исправляет, такова:

Исправлены проблемы с несколькими устройствами HDMI-CEC

Это означает, что устройство является не только "подчиненным", но и "ведущим" (то есть может отправлять команды другим устройствам hdmi).

Обратите внимание, что, как указано в ссылке, оно не предназначено для дополнительной версии.

Удачи!