capire come funziona lirc e il C
Inviato: 17 nov 2010, 17:48
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
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
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??
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;
}
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??