32 lines
771 B
C
32 lines
771 B
C
/* This function wraps around the fixed 8-bit decoder, performing the
|
|
* basis transformations necessary to meet the CCSDS standard
|
|
*
|
|
* Copyright 2002, Phil Karn, KA9Q
|
|
* May be used under the terms of the GNU Lesser General Public License (LGPL)
|
|
*/
|
|
#include "ccsds.h"
|
|
#include "fec.h"
|
|
|
|
#include <satnogs/api.h>
|
|
|
|
SATNOGS_API int decode_rs_ccsds(data_t *data, int *eras_pos, int no_eras, int pad)
|
|
{
|
|
int i, r;
|
|
data_t cdata[NN];
|
|
|
|
/* Convert data from dual basis to conventional */
|
|
for (i = 0; i < NN - pad; i++) {
|
|
cdata[i] = Tal1tab[data[i]];
|
|
}
|
|
|
|
r = decode_rs_8(cdata, eras_pos, no_eras, pad);
|
|
|
|
if (r > 0) {
|
|
/* Convert from conventional to dual basis */
|
|
for (i = 0; i < NN - pad; i++) {
|
|
data[i] = Taltab[cdata[i]];
|
|
}
|
|
}
|
|
return r;
|
|
}
|