capire come funziona lirc e il C

MythTV, Tvtime, Mplayer etc.
Anche programmi o script di conversione tipo
projectx, transcode, vdrconvert, dvdauthor etc.

Moderatori: ragno, tapino, alez, zulu, davidea

Rispondi
davidea
Messaggi: 1279
Iscritto il: 16 ago 2009, 13:32
Località: Palermo
Contatta:

capire come funziona lirc e il C

Messaggio da davidea »

sto provando per ora a capire come lirc, tramite il ricevitore autocostruito, riconosce i segnali del telecomando, ma anche a causa della mia pochissima esperienza col C, non capisco alcune cose.
visto che l' acquisizione viene elaborata tramite irrecord, sono andato a curiosare li, e quindi


in irrecord.c

Codice: Seleziona tutto

while(1)
	{
		data=hw.readdata(10000000);

		if(!data)

		{

			fprintf(stderr,"%s: no data for 10 secs, aborting\n",

				progname);

			retval=0;

			break;

		} 

parte del lavoro viene svolto da hw.readdata che dovrebbe essere una funzione interna ad un' oggetto struttura demonimato hw, di tipo struct hardware visto che in hardware.c

Codice: Seleziona tutto

struct hardware

{

	char *device;

	int fd;

	unsigned long features;

	unsigned long send_mode;

	unsigned long rec_mode;

	unsigned long code_length;

	int (*init_func)(void);

	int (*deinit_func)(void);

	int (*send_func)(struct ir_remote *remote,struct ir_ncode *code);

	char *(*rec_func)(struct ir_remote *remotes);

	int (*decode_func)(struct ir_remote *remote,

			   ir_code *prep,ir_code *codep,ir_code *postp,

			   int *repeat_flag,

			   lirc_t *min_remaining_gapp,

			   lirc_t *max_remaining_gapp);

	int (*ioctl_func)(unsigned int cmd, void *arg);

	lirc_t (*readdata)(lirc_t timeout);


	char *name;

	


	unsigned int resolution;

};


extern struct hardware hw; 



cio' che non riesco a capire, e' cosa in realta faccia

hw.readdata(10000000);

e come si legga

lirc_t (*readdata)(lirc_t timeout);

dovrebbe esser qualcosa che restituisce un valore di tipo lirc_t, effettuando un casting (*readdata) passando come argomento un valore di tipo lirc_t, lo stesso che restituisce....


diciamo tante idee ben confuse?!?!?
ho notato la quasi totale assenza di commenti...... sono superflui visto il codice e sono io che sono ignorante, o se li sono dimenticati??
Avatar utente
zulu
Messaggi: 605
Iscritto il: 27 ott 2007, 09:48

Re: capire come funziona lirc e il C

Messaggio da zulu »

... quello è un puntatore a funzione ...
Un puntatore a funzione si dichiara usando la convenzione di racchiudere tra parentesi il nome della funzione e facendolo precedere da un asterisco, così:

int (*func)(<parametri>)
... fai una ricerca su google con "puntatori funzione c"

saluti :)
zulu
Rispondi