66 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								// qra64_subs.c
							 | 
						||
| 
								 | 
							
								// Fortran interface routines for QRA64
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "qra64.h"
							 | 
						||
| 
								 | 
							
								#include <stdio.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								static qra64codec *pqra64codec = NULL;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void qra64_enc_(int x[], int y[])
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  if (pqra64codec==NULL) pqra64codec = qra64_init(QRA_USERAP);  
							 | 
						||
| 
								 | 
							
								  qra64_encode(pqra64codec, y, x);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void qra64_dec_(float r[], int* nc1, int* nc2, int* ng2, int* APtype, 
							 | 
						||
| 
								 | 
							
										int* iset, int* ns0, float* b0, int* nf0,
							 | 
						||
| 
								 | 
							
										int xdec[], float* snr, int* rc)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								  APtype:                         AP
							 | 
						||
| 
								 | 
							
								-----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								     -1                            0     (no AP information)
							 | 
						||
| 
								 | 
							
								      0    [CQ/QRZ    ?      ? ]  25/37
							 | 
						||
| 
								 | 
							
								      1    [MyCall    ?      ? ]  25/37
							 | 
						||
| 
								 | 
							
								      2    [  ?    HisCall   ? ]  25/37
							 | 
						||
| 
								 | 
							
								      3    [MyCall HisCall   ? ]  49/68
							 | 
						||
| 
								 | 
							
								      4    [MyCall HisCall grid]  68
							 | 
						||
| 
								 | 
							
								      5    [CQ/QRZ HisCall   ? ]  49/68
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								     rc    Message format         AP APTYPE Comments
							 | 
						||
| 
								 | 
							
								------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								    -16                                     Failed sanity check
							 | 
						||
| 
								 | 
							
								     -2                                     Decoded but CRC failed
							 | 
						||
| 
								 | 
							
								     -1                                     No decode
							 | 
						||
| 
								 | 
							
								      0    [   ?      ?      ? ]   0   -1   Decode with no AP info
							 | 
						||
| 
								 | 
							
								      1    [CQ/QRZ    ?      ? ]  25    0
							 | 
						||
| 
								 | 
							
								      2    [CQ/QRZ    ?      _ ]  37    0
							 | 
						||
| 
								 | 
							
								      3    [MyCall    ?      ? ]  25    1
							 | 
						||
| 
								 | 
							
								      4    [MyCall    ?      _ ]  37    1
							 | 
						||
| 
								 | 
							
								      5    [MyCall HisCall   ? ]  49    3
							 | 
						||
| 
								 | 
							
								      6    [   ?   HisCall   ? ]  25    2   Optional
							 | 
						||
| 
								 | 
							
								      7    [   ?   HisCall   _ ]  37    2   Optional
							 | 
						||
| 
								 | 
							
								      8    [MyCall HisCall Grid]  68    4
							 | 
						||
| 
								 | 
							
								      9    [CQ/QRZ HisCall   ? ]  49    5   Optional (not needed?)
							 | 
						||
| 
								 | 
							
								     10    [CQ/QRZ HisCall   _ ]  68    5   Optional
							 | 
						||
| 
								 | 
							
								     11    [CQ/QRZ HisCall Grid]  68    ?   Optional
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  float EbNodBEstimated;
							 | 
						||
| 
								 | 
							
								  int err=0;
							 | 
						||
| 
								 | 
							
								  int nSubmode=*ns0;
							 | 
						||
| 
								 | 
							
								  float b90=*b0;
							 | 
						||
| 
								 | 
							
								  int nFadingModel=*nf0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if(pqra64codec==NULL) pqra64codec = qra64_init(QRA_USERAP);
							 | 
						||
| 
								 | 
							
								  err=qra64_apset(pqra64codec,*nc1,*nc2,*ng2,*APtype);
							 | 
						||
| 
								 | 
							
								  if(err<0) printf("ERROR: qra64_apset returned %d\n",err);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if(*iset==0) {
							 | 
						||
| 
								 | 
							
								    *rc = qra64_decode_fastfading(pqra64codec,&EbNodBEstimated,xdec,r,
							 | 
						||
| 
								 | 
							
								    				  nSubmode,b90,nFadingModel);
							 | 
						||
| 
								 | 
							
								    *snr = EbNodBEstimated - 31.0;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |