soundmodem/newqpsk/fec.h
2018-06-18 18:46:45 +10:00

56 lines
1.2 KiB
C

#ifndef _FEC_H
#define _FEC_H
/* --------------------------------------------------------------------- */
struct fecstate {
int feclevel;
int bitbatchlen;
int inlv;
unsigned inlvpipe[MaxInlv * DataCarriers];
unsigned inlvptr;
};
/* --------------------------------------------------------------------- */
static inline void init_fec(struct fecstate *f)
{
switch (f->feclevel) {
case 0:
f->bitbatchlen = 15;
break;
case 1:
f->bitbatchlen = 11;
break;
case 2:
f->bitbatchlen = 7;
break;
case 3:
f->bitbatchlen = 5;
break;
}
}
/* --------------------------------------------------------------------- */
static inline void init_inlv(struct fecstate *f)
{
int i;
for (i = 0; i < f->inlv * DataCarriers; i++)
f->inlvpipe[i] = 0;
f->inlvptr = 0;
}
/* --------------------------------------------------------------------- */
extern unsigned deinlv(struct fecstate *, unsigned);
extern unsigned inlv(struct fecstate *, unsigned);
extern unsigned fecencode(struct fecstate *, unsigned);
extern unsigned fecdecode(struct fecstate *, unsigned, unsigned *);
/* --------------------------------------------------------------------- */
#endif