Guardando velocemente i sorgenti incuriosito, ho un paio di suggerimenti da fare: - non userei l'#include di un sorgente C: che motivo hai di farlo? Sebbe sia a volte utile, generalmente impedisce l'ottimizzazione della compilazione, rendendola monolitica anziché modulare: chiaro che se si tratta di tre file sorgente in tutto fa poca differenza, ma partire col piede giusto aiuta! - in un paio di posti noto l'istruzione pkt[size++] = checksum(pkt, size) che è oltremodo criptica, oltre che di dubbia correttezza: alla funzione checksum arriverà (size+1) o (size)? Già se devi pensare una manciata di secondi per stabilirlo, è troppo! Anche quando, per un buon allenamento, fossi in grado di rispondere esattamente e subito, forse tra un anno no, o magari il tuo collaboratore... - usare una struct piuttosto che tutti quei "u8 buf[2]": strutturando il tuo codice attorno ad una struttura del tutto equivalente tipo struct atomic_packet { u8 command; u8 data; } lo rendi al contempo più chiaro ed estensibile nel tempo: un domani potrai più agevolmente modificare quella struttura per spedire qc di più, tipo struct atomic_packet { u8 command; u8 length u8 data[0]; } con minime modifiche alle funzioni di contorno... - forse chiamarla (alla lettera :-) "trsmissione dati con correzzione errore" è po' presuntuosetto!! Sarebbe già buono un "controllo" degli errori 8-) ciao, lele. PS: g'avevo bisogn de sgranchirme i dei, dopo na giornada de installaziom NeXTSTEP :-) -- nickname: Lele Gaifax | Quando vivro' di quello che ho pensato ieri real: Emanuele Gaifas | comincero' ad aver paura di chi mi copia. email: lele@xxxxxxxxxx | -- Fortunato Depero, 1929. -- Per iscriversi (o disiscriversi), basta spedire un messaggio con SOGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx