libCEC e plugin-remote

Tutto quello che ha a che fare con i plugins.

Moderatori: ragno, tapino, alez, zulu, davidea

Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: libCEC e plugin-remote

Messaggio da ragno »

Ho provato ad installare il tutto:

la libreria libCEC si puo' instalare dal repository pulse-eight semplicemente lanciando uno script. Altrimenti c'e' la possibilita' di installare i sorgenti della versione 2.0.3. per yavdr: ho provato entrambe le cose.

Quello che non sono riuscito a compilare e' libcec-daemon, anche con la patch di morfsta la compilazione genera decine di errori. Al momento sono arenato e passo.

Comunque da quello che ho capito XBMC gestisce il CEC tramite libCEC in modo nativo, linkandola all'uopo. Per vdr e' necessario compilare ed utilizzare libcec-daemon che s'aggancia a lircd come irmp.

ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: libCEC e plugin-remote

Messaggio da ragno »

Ma c'e' qualcuno che sia riuscito a compilare libcec-daemon?

ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
unixer
Messaggi: 205
Iscritto il: 07 dic 2009, 23:21

Re: libCEC e plugin-remote

Messaggio da unixer »

ragno ha scritto:Ma c'e' qualcuno che sia riuscito a compilare libcec-daemon?

ciao
Io si e fatte anche qualche prova
ma senza dispositivo cec non mi restituisce nessun comando :(

EDIT:
hai installato liblog4cplus-dev ??
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: libCEC e plugin-remote

Messaggio da ragno »

@unixer: build da tar ball perche' sotto natty non esiste il pacchetto.

Per il resto ho vari errori nella compilazione dei sorgenti:

Codice: Seleziona tutto

src/libcec.cpp: In constructor ‘Cec::Cec(const char*, CecCallback*)’:
src/libcec.cpp:132:13: error: no match for ‘operator==’ in ‘((Cec*)this)->Cec::cec == 0’
src/libcec.cpp:132:13: note: candidates are: operator==(int, int) <built-in>
/usr/include/c++/4.5/bits/random.h:3360:3: note:                 bool std::operator==(const std::bernoulli_distribution&, const std::bernoulli_distribution&)
src/libcec.cpp: In member function ‘void Cec::open()’:
src/libcec.cpp:144:2: error: no match for ‘operator!=’ in ‘((Cec*)this)->Cec::cec != 0’
src/libcec.cpp:144:2: note: candidates are: operator!=(int, int) <built-in>
/usr/include/c++/4.5/bits/random.h:3369:3: note:                 bool std::operator!=(const std::bernoulli_distribution&, const std::bernoulli_distribution&)
make: *** [src/libcec.o] Errore 1
La sintassi del C++ e' abbastanza ostica rispetto al C, e non mi sbatto piu' di tanto. Forse non ho applicato correttamente la patch di Morfsta.

ciao

p.s. gcc 4.5.2
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
unixer
Messaggi: 205
Iscritto il: 07 dic 2009, 23:21

Re: libCEC e plugin-remote

Messaggio da unixer »

ragno ha scritto:@unixer: build da tar ball perche' sotto natty non esiste il pacchetto.

Per il resto ho vari errori nella compilazione dei sorgenti:

Codice: Seleziona tutto

src/libcec.cpp: In constructor ‘Cec::Cec(const char*, CecCallback*)’:
src/libcec.cpp:132:13: error: no match for ‘operator==’ in ‘((Cec*)this)->Cec::cec == 0’
src/libcec.cpp:132:13: note: candidates are: operator==(int, int) <built-in>
/usr/include/c++/4.5/bits/random.h:3360:3: note:                 bool std::operator==(const std::bernoulli_distribution&, const std::bernoulli_distribution&)
src/libcec.cpp: In member function ‘void Cec::open()’:
src/libcec.cpp:144:2: error: no match for ‘operator!=’ in ‘((Cec*)this)->Cec::cec != 0’
src/libcec.cpp:144:2: note: candidates are: operator!=(int, int) <built-in>
/usr/include/c++/4.5/bits/random.h:3369:3: note:                 bool std::operator!=(const std::bernoulli_distribution&, const std::bernoulli_distribution&)
make: *** [src/libcec.o] Errore 1
La sintassi del C++ e' abbastanza ostica rispetto al C, e non mi sbatto piu' di tanto. Forse non ho applicato correttamente la patch di Morfsta.

ciao

p.s. gcc 4.5.2
Mi daresti il link della patch
grazie
per il resto io lo faccio con la sifbox
gcc 4.7.2
prima di compilare il daemon
compilo i pacchetti necessari
log4cplus boost libcec

Della libcec metto le 2.0.5
di log4cplus 1.1.0

su Linux Mint 13.0 il pacchetto c'è
liblog4cplus-dev - C++ logging API modeled after the Java log4j API - development library

Magari su natty ha un altro nome
o magari prova a compilarti prima quel pacchetto
:)

Edit
ho provato questa
http://forums.pulse-eight.com/yaf_posts ... x#post5050
ma mi da errore nell'applicazione

Codice: Seleziona tutto

patch: **** malformed patch at line 5: // Map of control codes to Strings
domani magari prova a farla a mano
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: libCEC e plugin-remote

Messaggio da ragno »

unixer ha scritto:
Mi daresti il link della patch
grazie
per il resto io lo faccio con la sifbox
gcc 4.7.2
prima di compilare il daemon
compilo i pacchetti necessari
log4cplus boost libcec

Della libcec metto le 2.0.5
di log4cplus 1.1.0

su Linux Mint 13.0 il pacchetto c'è
liblog4cplus-dev - C++ logging API modeled after the Java log4j API - development library

Magari su natty ha un altro nome
o magari prova a compilarti prima quel pacchetto
:)

Edit
ho provato questa
http://forums.pulse-eight.com/yaf_posts ... x#post5050
ma mi da errore nell'applicazione

Codice: Seleziona tutto

patch: **** malformed patch at line 5: // Map of control codes to Strings
domani magari prova a farla a mano
Vedo che l'hai trovata :)
Anch'io con la patch ho avuto lo stesso errore qundi l'ho applicata a mano... :nonso:

Riguardo la compilazione:

libcec installata da repository pulse-eight tramite script (sempre nel thread segnalato).
lliblog4cplus-dev compilata ed installata da tarball perche il pacchetto sotto natty non esiste.

Tentando la compilazione di libcec-daemon ottengo sempre quegli orrori (errori).

ciao e grazie
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
unixer
Messaggi: 205
Iscritto il: 07 dic 2009, 23:21

Re: libCEC e plugin-remote

Messaggio da unixer »

E senza la patch ti compila ???

EDIT:
se applico la patch a manoo
ecco
gli errori

Codice: Seleziona tutto

/root/openbricks/build/build.i386.eglibc/toolchain/bin/i686-openbricks-linux-gnu-g++ -c -std=c++0x -g -Wall src/main.cpp -o src/main.o
/root/openbricks/build/build.i386.eglibc/toolchain/bin/i686-openbricks-linux-gnu-g++ -c -std=c++0x -g -Wall src/uinput.cpp -o src/uinput.o
/root/openbricks/build/build.i386.eglibc/toolchain/bin/i686-openbricks-linux-gnu-g++ -c -std=c++0x -g -Wall src/libcec.cpp -o src/libcec.o
src/libcec.cpp: In function 'int (* cecCommand(void*, const cec_command&))(void*, CEC::cec_command)':
src/libcec.cpp:58:50: error: 'key' was not declared in this scope
src/libcec.cpp: In function 'int (* cecConfigurationChanged(void*, const libcec_configuration&))(void*, CEC::libcec_configuration)':
src/libcec.cpp:66:49: error: 'command' was not declared in this scope
src/libcec.cpp: In function 'int cecConfigurationChanged(void*, CEC::libcec_configuration)':
src/libcec.cpp:73:75: error: invalid conversion from 'CEC::CBCecConfigurationChangedType {aka int (*)(void*, CEC::libcec_configuration)}' to 'int' [-fpermissive]
src/libcec.cpp: In member function 'CEC::ICECAdapter* Cec::CecInit(const char*, CecCallback*)':
src/libcec.cpp:125:54: error: '::cecKeyPress' has not been declared
make: *** [src/libcec.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from src/main.cpp:9:0:
src/main.h:28:7: error: conflicting return type specified for 'virtual int Main::onCecLogMessage(const cec_log_message&)'
In file included from src/main.h:2:0,
                 from src/main.cpp:9:
src/libcec.h:16:36: error:   overriding 'virtual int (* CecCallback::onCecLogMessage(const cec_log_message&))(void*, CEC::cec_log_message)'
In file included from src/main.cpp:9:0:
src/main.h:29:7: error: conflicting return type specified for 'virtual int Main::onCecKeyPress(const cec_keypress&)'
In file included from src/main.h:2:0,
                 from src/main.cpp:9:
src/libcec.h:17:34: error:   overriding 'virtual int (* CecCallback::onCecKeyPress(const cec_keypress&))(void*, CEC::cec_keypress)'
In file included from src/main.cpp:9:0:
src/main.h:30:7: error: conflicting return type specified for 'virtual int Main::onCecCommand(const cec_command&)'
In file included from src/main.h:2:0,
                 from src/main.cpp:9:
src/libcec.h:18:33: error:   overriding 'virtual int (* CecCallback::onCecCommand(const cec_command&))(void*, CEC::cec_command)'
In file included from src/main.cpp:9:0:
src/main.h:31:7: error: conflicting return type specified for 'virtual int Main::onCecConfigurationChanged(const libcec_configuration&)'
In file included from src/main.h:2:0,
                 from src/main.cpp:9:
src/libcec.h:19:46: error:   overriding 'virtual int (* CecCallback::onCecConfigurationChanged(const libcec_configuration&))(void*, CEC::libcec_configuration)'
make: *** [src/main.o] Error 1
unixer
Messaggi: 205
Iscritto il: 07 dic 2009, 23:21

Re: libCEC e plugin-remote

Messaggio da unixer »

la patch dovrebbe essere fatta così

Codice: Seleziona tutto

--- libcec-daemon-0.9-rddde2ea0ef/src/libcec.cpp.org	2013-01-18 14:04:35.255384738 +0100
+++ libcec-daemon-0.9-rddde2ea0ef/src/libcec.cpp	2013-01-18 14:08:30.711388780 +0100
@@ -44,21 +44,24 @@
 // Map of control codes to Strings
 const map<enum cec_user_control_code, const char *> Cec::cecUserControlCodeName = Cec::setupUserControlCodeName();
 
-int cecLogMessage(void *cbParam, const cec_log_message message) {
+//int cecLogMessage(void *cbParam, const cec_log_message message) {
+CEC::CBCecLogMessageType cecLogMessage(void *cbParam, const cec_log_message &message) {
 	try {
 		return ((CecCallback*) cbParam)->onCecLogMessage(message);
 	} catch (...) {}
 	return 0;
 }
 
-int cecKeyPress(void *cbParam, const cec_keypress key) {
+//int cecKeyPress(void *cbParam, const cec_keypress key) {
+CEC::CBCecCommandType cecCommand(void *cbParam, const cec_command &command) {
 	try {
 		return ((CecCallback*) cbParam)->onCecKeyPress(key);
 	} catch (...) {}
 	return 0;
 }
 
-int cecCommand(void *cbParam, const cec_command command) {
+//int cecCommand(void *cbParam, const cec_command command) {
+CEC::CBCecConfigurationChangedType cecConfigurationChanged(void *cbParam, const libcec_configuration & configuration) {
 	try {
 		return ((CecCallback*) cbParam)->onCecCommand(command);
 	} catch (...) {}
@@ -109,13 +112,19 @@
 
 	config.Clear();
 
-	config.deviceTypes.Add(CEC_DEVICE_TYPE_PLAYBACK_DEVICE);
+	//config.deviceTypes.Add(CEC_DEVICE_TYPE_PLAYBACK_DEVICE);
+	config.deviceTypes.Add(CEC_DEVICE_TYPE_RECORDING_DEVICE);
 	strncpy(config.strDeviceName, name, sizeof(config.strDeviceName));
+	config.iHDMIPort=2;
 
-	callbacks.CBCecLogMessage           = &::cecLogMessage;
-	callbacks.CBCecKeyPress             = &::cecKeyPress;
-	callbacks.CBCecCommand              = &::cecCommand;
-	callbacks.CBCecConfigurationChanged = &::cecConfigurationChanged;
+//	callbacks.CBCecLogMessage           = &::cecLogMessage;
+//	callbacks.CBCecKeyPress             = &::cecKeyPress;
+//	callbacks.CBCecCommand              = &::cecCommand;
+//	callbacks.CBCecConfigurationChanged = &::cecConfigurationChanged;
+	callbacks.CBCecLogMessage = (CEC::CBCecLogMessageType) &::cecLogMessage;
+	callbacks.CBCecKeyPress = (CEC::CBCecKeyPressType) &::cecKeyPress;
+	callbacks.CBCecCommand = (CEC::CBCecCommandType) &::cecCommand;
+	callbacks.CBCecConfigurationChanged = (CEC::CBCecConfigurationChangedType) &::cecConfigurationChanged;
 	config.callbackParam                = callback;
 	config.callbacks                    = &callbacks;
 
--- libcec-daemon-0.9-rddde2ea0ef/src/libcec.h.org	2013-01-18 14:08:43.027388991 +0100
+++ libcec-daemon-0.9-rddde2ea0ef/src/libcec.h	2013-01-18 14:12:39.695393055 +0100
@@ -9,10 +9,14 @@
 		virtual ~CecCallback() {}
 
 		// Virtual methods to handle callbacks
-		virtual int onCecLogMessage(const CEC::cec_log_message & message) = 0;
-		virtual int onCecKeyPress  (const CEC::cec_keypress & key) = 0;
-		virtual int onCecCommand   (const CEC::cec_command & command) = 0;
-		virtual int onCecConfigurationChanged(const CEC::libcec_configuration & configuration) = 0;
+//		virtual int onCecLogMessage(const CEC::cec_log_message & message) = 0;
+//		virtual int onCecKeyPress  (const CEC::cec_keypress & key) = 0;
+//		virtual int onCecCommand   (const CEC::cec_command & command) = 0;
+//		virtual int onCecConfigurationChanged(const CEC::libcec_configuration & configuration) = 0;
+		virtual CEC::CBCecLogMessageType onCecLogMessage(const CEC::cec_log_message & message) = 0;
+		virtual CEC::CBCecKeyPressType onCecKeyPress (const CEC::cec_keypress & key) = 0;
+		virtual CEC::CBCecCommandType onCecCommand (const CEC::cec_command & command) = 0;
+		virtual CEC::CBCecConfigurationChangedType onCecConfigurationChanged(const CEC::libcec_configuration & configuration) = 0;
 };
 
 /**
@@ -56,10 +60,14 @@
 		void close();
 
 	// These are just wrapper functions, to map C callbacks to C++
-	friend int cecLogMessage (void *cbParam, const CEC::cec_log_message &message);
-	friend int cecKeyPress   (void *cbParam, const CEC::cec_keypress &key);
-	friend int cecCommand    (void *cbParam, const CEC::cec_command &command);
-	friend int cecConfigurationChanged (void *cbParam, const CEC::libcec_configuration & configuration);
+	//friend int cecLogMessage (void *cbParam, const CEC::cec_log_message &message);
+	//friend int cecKeyPress   (void *cbParam, const CEC::cec_keypress &key);
+	//friend int cecCommand    (void *cbParam, const CEC::cec_command &command);
+	//friend int cecConfigurationChanged (void *cbParam, const CEC::libcec_configuration & configuration);
+	friend CEC::CBCecLogMessageType cecLogMessage (void *cbParam, const CEC::cec_log_message &message);
+	friend CEC::CBCecKeyPressType cecKeyPress (void *cbParam, const CEC::cec_keypress &key);
+	friend CEC::CBCecCommandType cecCommand (void *cbParam, const CEC::cec_command &command);
+	friend CEC::CBCecConfigurationChangedType cecConfigurationChanged (void *cbParam, const CEC::libcec_configuration & configuration);
 };
 
 
--- libcec-daemon-0.9-rddde2ea0ef/src/uinput.cpp.org	2013-01-18 14:12:51.191393251 +0100
+++ libcec-daemon-0.9-rddde2ea0ef/src/uinput.cpp	2013-01-18 14:14:36.859395062 +0100
@@ -29,6 +29,7 @@
 }
 
 int UInput::open(const char *uinput_path) {
+	//this->fd = ::open(uinput_path, O_WRONLY | O_NONBLOCK);
 	this->fd = ::open(uinput_path, O_WRONLY | O_NONBLOCK);
 	if(this->fd < 0) {
 		return errno;
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: libCEC e plugin-remote

Messaggio da ragno »

@unixer: grazie appena posso "gitto" nuovamente libcec-daemon ed applichero' la patch.

ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
unixer
Messaggi: 205
Iscritto il: 07 dic 2009, 23:21

Re: libCEC e plugin-remote

Messaggio da unixer »

ragno ha scritto:@unixer: grazie appena posso "gitto" nuovamente libcec-daemon ed applichero' la patch.

ciao
Forse hai frainteso il mio messaggio
anche con quella patch mi da errore :(
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: libCEC e plugin-remote

Messaggio da ragno »

unixer ha scritto:
ragno ha scritto:@unixer: grazie appena posso "gitto" nuovamente libcec-daemon ed applichero' la patch.

ciao
Forse hai frainteso il mio messaggio
anche con quella patch mi da errore :(
Non ti preoccupare. Appena ho un po' di tempo ricomincio con le prove.

ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
italoc
Messaggi: 77
Iscritto il: 21 set 2010, 10:53

Re: libCEC e plugin-remote

Messaggio da italoc »

io sono riuscito a compilarlo ed usarlo correttamente sotto yavdr... se serve una mano puoi chiedere
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: libCEC e plugin-remote

Messaggio da ragno »

italoc ha scritto:io sono riuscito a compilarlo ed usarlo correttamente sotto yavdr... se serve una mano puoi chiedere
Posta una guida e spiega per sommi capi quello che hai fatto.

:ciao:
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
ilfabius
Messaggi: 1
Iscritto il: 24 set 2009, 22:28

Re: libCEC e plugin-remote

Messaggio da ilfabius »

Salve,

avete trovato la soluzione per aumentare il numero di tasti sul telecomando?
Rispondi