2015-04-16 17 views
12

sto lavorando su un Minix NEO X8-H (media center Android, 4.4.2) e devo inviare il comando HDMI-CEC alla TV: quando la mia app riceve una chiamata che voglio cambiare automaticamente la Sorgente TV sulla sorgente Minix hdmi.Android - invia comandi HDMI CEC a TV - minix - libCEC

In realtà il Minix offre alcune opzioni per abilitare HDMI-CEC e il software del centro multimediale XBMC è segnalato per supportare CEC. Ma solo in "modalità di ricezione" credo: l'utente può comandare il dispositivo Android utilizzando il telecomando TV. Voglio lavorare in modo opposto. Scorro il codice sorgente di XBMC e ho trovato codice molto interessante ma non so se può essermi utile.

Ho trovato il dispositivo seriale ottenere comandi di input HDMI-CEC

/dev/input/event7 

Il kernel riferimenti sono posti: "/ sys/devices/virtuale/ingresso/input7 /"

# cat /sys/devices/virtual/input/input7/name 
cec_input 

questa è una parte di log 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 

che dimostra l'effettiva presenza del supporto integrato HDMI-CEC.

Ho trovato libCEC e sono riuscito a eseguire la cross-compilazione utilizzando la toolchain di Android NDK e sono stato in grado di installare "libcec.so" e un client demo binario "cec-client" sul Minix.

Queste sono le opzioni di generazione:

[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 

So che libcec funziona con un controller HDMI-CEC esterno o, se costruire con funzione di supporto lampone si può gira senza problemi su un Raspi, utilizzando il suo controller video integrato .

Se può funzionare su raspi, deve essere in grado di funzionare su un Minix, credo.

CEC-cliente era un client demo, sviluppato per comunicare con un'interfaccia seriale e in realtà non può comunicare con/dev/input/evet7 a causa di alcuni errori:

[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 

Ma per quanto ne so HDMI-CEC utilizzare un protocollo di comunicazione seriale usando il pin 13 del connettore HDMI, quindi anche se "cec-client" è un client demo, deve essere in grado di funzionare correttamente! Come vedi, c'è un problema nel bloccare il dispositivo o qualcosa di simile.

Problemi:

  • è possibile inviare il comando CEC tramite Android utilizzando Java?
  • se no, qualcuno sa come adattare libCEC/cec-client a lavorare su Minix?

Se modo Java non è possibile non ci sono problemi: la mia app è costruito utilizzando Qt e in realtà sto già usando un paio di Librare condivisa nativa ".so"

Qualcuno ha suggerimenti? Come può farlo?

+0

Come sei andato d'accordo? È qualcosa che devo esaminare molto presto per un progetto su cui sto lavorando. Sono riuscito a farlo funzionare con Linux incorporato ma non ancora per Android. Un rapido ficcanaso e ho trovato questo: http://0x1c3.blogspot.co.uk/2015/09/libcec-compilation-for-android-example.html – WLGfx

+0

@Matt puoi aiutarmi come hai integrato libCEC in Android – PankajAndroid

+0

@Matt Hai trovato una soluzione per controllare il televisore tramite l'hardware Minix? –

risposta

1

Prima di tutto, un lavoro di ingegneria inversa davvero impressionante!

In secondo luogo, sto affrontando un problema simile (ma con un prodotto non Minix). Hai provato l'aggiornamento a un firmware più recente, come questa:

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

sto suggerendo questo come una soluzione possibile, perché uno dei problemi che consente di risolvere è questo:

fisso HDMI-CEC problemi con più dispositivi

Ciò significa che il dispositivo non è solo uno "slave", ma anche un "master" (cioè può inviare comandi ad altri dispositivi hdmi).

Si prega di notare che come indicato nel link, non è inteso per la versione plus.

Buona fortuna!

+0

grazie per i suggerimenti, ma dopo quasi 3 anni non ho trovato alcuna soluzione a questo problema! – Matt

Problemi correlati