#include #include "fixed.h" void encode_rs_8(data_t *data, data_t *parity,int pad); int decode_rs_8(data_t *data, int *eras_pos, int no_eras, int pad); int dump(char *name,unsigned char *addr,int len) { int i,j; fprintf(stderr,"Dump of %s\n",name); for(i=0;i=' '&&addr[i+j]<0x7f?addr[i+j]:'.'); fprintf(stderr,"\n"); } return 0; } int main(int argc,char **argv) { unsigned char in[255]; unsigned char out[255]; srandom(getpid()); int i; for(i=0;i<223;i++) in[i]=i; encode_rs_8(&in[0],&in[223],0); bcopy(in,out,255); dump("data with parity",out,255); for(i=0;i<16;i++) out[random()%255]^=0xff; dump("data with errors added",out,255); decode_rs_8(out,NULL,0,0); dump("data after error correction",out,223); return 0; }