xref: /aosp_15_r20/external/fec/decode_rs_ccsds.c (revision 638691a093b4f9473cd6ee8f3e0139deef159a86)
1*638691a0SAndroid Build Coastguard Worker /* This function wraps around the fixed 8-bit decoder, performing the
2*638691a0SAndroid Build Coastguard Worker  * basis transformations necessary to meet the CCSDS standard
3*638691a0SAndroid Build Coastguard Worker  *
4*638691a0SAndroid Build Coastguard Worker  * Copyright 2002, Phil Karn, KA9Q
5*638691a0SAndroid Build Coastguard Worker  * May be used under the terms of the GNU Lesser General Public License (LGPL)
6*638691a0SAndroid Build Coastguard Worker  */
7*638691a0SAndroid Build Coastguard Worker #include "ccsds.h"
8*638691a0SAndroid Build Coastguard Worker #include "fec.h"
9*638691a0SAndroid Build Coastguard Worker 
decode_rs_ccsds(data_t * data,int * eras_pos,int no_eras,int pad)10*638691a0SAndroid Build Coastguard Worker int decode_rs_ccsds(data_t *data,int *eras_pos,int no_eras,int pad){
11*638691a0SAndroid Build Coastguard Worker   int i,r;
12*638691a0SAndroid Build Coastguard Worker   data_t cdata[NN];
13*638691a0SAndroid Build Coastguard Worker 
14*638691a0SAndroid Build Coastguard Worker   /* Convert data from dual basis to conventional */
15*638691a0SAndroid Build Coastguard Worker   for(i=0;i<NN-pad;i++)
16*638691a0SAndroid Build Coastguard Worker     cdata[i] = Tal1tab[data[i]];
17*638691a0SAndroid Build Coastguard Worker 
18*638691a0SAndroid Build Coastguard Worker   r = decode_rs_8(cdata,eras_pos,no_eras,pad);
19*638691a0SAndroid Build Coastguard Worker 
20*638691a0SAndroid Build Coastguard Worker   if(r > 0){
21*638691a0SAndroid Build Coastguard Worker     /* Convert from conventional to dual basis */
22*638691a0SAndroid Build Coastguard Worker     for(i=0;i<NN-pad;i++)
23*638691a0SAndroid Build Coastguard Worker       data[i] = Taltab[cdata[i]];
24*638691a0SAndroid Build Coastguard Worker   }
25*638691a0SAndroid Build Coastguard Worker   return r;
26*638691a0SAndroid Build Coastguard Worker }
27