#include <stdio.h>
#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<len;i+=16) 
    {
      fprintf(stderr,"  %04x :",i);
      for(j=0;j<16&&(i+j)<len;j++) fprintf(stderr," %02x",addr[i+j]);
      for(;j<16;j++) fprintf(stderr,"   ");
      fprintf(stderr,"    ");
      for(j=0;j<16&&(i+j)<len;j++) fprintf(stderr,"%c",addr[i+j]>=' '&&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; 
	
}