Separate calls to q65_intrinsics_ff() and q65_dec().

This commit is contained in:
Joe Taylor 2020-10-28 09:28:50 -04:00
parent fca76a5730
commit 347fb06382
2 changed files with 22 additions and 11 deletions

View File

@ -68,9 +68,10 @@ subroutine q65_loops(c00,npts2,nsps,mode,mode64,nsubmode,nFadingModel, &
! if(b90.lt.0.15*width) exit ! if(b90.lt.0.15*width) exit
ncall=ncall+1 ncall=ncall+1
call timer('qra64_de',0) call timer('qra64_de',0)
call q65_intrinsics_ff(s3,nsubmode,b90,nFadingModel,s3prob)
APmask=0 APmask=0
APsymbols=0 APsymbols=0
call q65_dec(s3,APmask,APsymbols,nsubmode,b90,nFadingModel,s3prob,snr2,dat4,irc) call q65_dec(s3,s3prob,APmask,APsymbols,snr2,dat4,irc)
! irc > 0 ==> number of iterations required to decode ! irc > 0 ==> number of iterations required to decode
! -1 = invalid params ! -1 = invalid params
! -2 = decode failed ! -2 = decode failed

View File

@ -46,26 +46,18 @@ void q65_enc_(int x[], int y[])
q65_encode(&codec,y,x); q65_encode(&codec,y,x);
} }
void q65_dec_(float s3[], int APmask[], int APsymbols[], int* submode, void q65_intrinsics_ff_(float s3[], int* submode, float* B90,
float* B90, int* fadingModel, float s3prob[], int* fadingModel, float s3prob[])
float* snr2500, int xdec[], int* rc0)
{ {
/* Input: s3[LL,NN] Received energies /* Input: s3[LL,NN] Received energies
* APmask[13] AP information to be used in decoding
* APsymbols[13] Available AP informtion
* submode 0=A, 4=E * submode 0=A, 4=E
* B90 Spread bandwidth, 90% fractional energy * B90 Spread bandwidth, 90% fractional energy
* fadingModel 0=Gaussian, 1=Lorentzian * fadingModel 0=Gaussian, 1=Lorentzian
* Output: s3prob[LL,NN] Symbol-value intrinsic probabilities * Output: s3prob[LL,NN] Symbol-value intrinsic probabilities
* snr2500 SNR_2500 of decoded signal, or lower limit
* xdec[13] Decoded 78-bit message as 13 six-bit integers
* rc0 Return code from q65_decode()
*/ */
int rc; int rc;
int ydec[63];
float esnodb;
static int first=1; static int first=1;
if (first) { if (first) {
@ -82,6 +74,24 @@ void q65_dec_(float s3[], int APmask[], int APsymbols[], int* submode,
printf("error in q65_intrinsics()\n"); printf("error in q65_intrinsics()\n");
exit(0); exit(0);
} }
}
void q65_dec_(float s3[], float s3prob[], int APmask[], int APsymbols[],
float* snr2500, int xdec[], int* rc0)
{
/* Input: s3prob[LL,NN] Symbol-value intrinsic probabilities
* APmask[13] AP information to be used in decoding
* APsymbols[13] Available AP informtion
* Output:
* snr2500 SNR_2500 of decoded signal, or lower limit
* xdec[13] Decoded 78-bit message as 13 six-bit integers
* rc0 Return code from q65_decode()
*/
int rc;
int ydec[63];
float esnodb;
rc = q65_decode(&codec,ydec,xdec,s3prob,APmask,APsymbols); rc = q65_decode(&codec,ydec,xdec,s3prob,APmask,APsymbols);
*rc0=rc; *rc0=rc;