📄 demo.cpp
字号:
}
else
{
// _make_input();
_make_input2();
}
#endif
_add_tx_corr();
_add_rx_corr();
if (_Control.iReplaceRx)
{
for (k = 0; k < IGAEC_FR_SZ; k++)
{
_asRx[k] = 0;
}
_add_reflections();
iReflectionAdded = TRUE;
}
else if (_Control.iAddReflections)
{
_add_reflections();
iReflectionAdded = TRUE;
}
_add_pink_noise();
if (!iReflectionAdded)
_add_tx_delay();
_add_rx_delay();
_add_rx_trx_txt();
}
/*-------------------------------------------------------------------------*/
S16 dbs
/*-------------------------------------------------------------------------*/
(
double dB
)
{
return (S16)(dB*170.1);
}
/*-------------------------------------------------------------------------*/
void _set_wav
/*-------------------------------------------------------------------------*/
(
)
{
_WavHdr.acRiff[0] = 'R';
_WavHdr.acRiff[1] = 'I';
_WavHdr.acRiff[2] = 'F';
_WavHdr.acRiff[3] = 'F';
_WavHdr.ulLen1 = 36;
_WavHdr.acWave[0] = 'W';
_WavHdr.acWave[1] = 'A';
_WavHdr.acWave[2] = 'V';
_WavHdr.acWave[3] = 'E';
_WavHdr.acFmt[0] = 'f';
_WavHdr.acFmt[1] = 'm';
_WavHdr.acFmt[2] = 't';
_WavHdr.acFmt[3] = ' ';
_WavHdr.ulLen2 = 16;
_WavHdr.uMode = 1;
_WavHdr.uNumber = 1;
_WavHdr.ulFs = 8000;
_WavHdr.ulBps = 16000;
_WavHdr.uBytes = 2;
_WavHdr.uBits = 16;
_WavHdr.acData[0] = 'd';
_WavHdr.acData[1] = 'a';
_WavHdr.acData[2] = 't';
_WavHdr.acData[3] = 'a';
_WavHdr.ulLen3 = 0;
fwrite(&_WavHdr, 1, sizeof(_WavHdr), _Control.pNlpWavFile);
fwrite(&_WavHdr, 1, sizeof(_WavHdr), _Control.pCnlWavFile);
fwrite(&_WavHdr, 1, sizeof(_WavHdr), _Control.pTxWavFile);
fwrite(&_WavHdr, 1, sizeof(_WavHdr), _Control.pTxOutWavFile);
fwrite(&_WavHdr, 1, sizeof(_WavHdr), _Control.pRxWavFile);
}
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
/* C O N F I G U R A T I O N */
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
int str_cmp
/*-------------------------------------------------------------------------*/
(
const char *pBasis,
char **ppArg
)
{
if (_strnicmp(pBasis, *ppArg, strlen(pBasis)) == 0)
{
*ppArg += strlen(pBasis);
return 0;
}
else
{
return -1;
}
}
/*-------------------------------------------------------------------------*/
int get_cfg_line
/*-------------------------------------------------------------------------*/
(
char *pArg
)
/* returns :
0 - no errs
1 - file err
2 - arg scanf err
3 - switch err
*/
{
int Rc = 0;
float fTmp;
int iTmp;
if ( *pArg == '-' || *pArg == '/')
{
pArg++;
if (str_cmp("ADF", &pArg) == 0)
{
_Control.pAdfFile = fopen("adf.f", "w");
if ( _Control.pAdfFile == NULL )
{
Rc = 1;
} /* end-of-if */
}
else if (str_cmp("WAV", &pArg) == 0)
{
_Control.pNlpWavFile = fopen("nlp.wav", "wb");
_Control.pCnlWavFile = fopen("cnl.wav", "wb");
_Control.pTxWavFile = fopen("tx.wav", "wb");
_Control.pTxOutWavFile = fopen("txo.wav", "wb");
_Control.pRxWavFile = fopen("rx.wav", "wb");
if ((_Control.pNlpWavFile == NULL ) ||
(_Control.pCnlWavFile == NULL ) ||
(_Control.pTxWavFile == NULL ) ||
(_Control.pTxOutWavFile == NULL ) ||
(_Control.pRxWavFile == NULL ))
{
Rc = 1;
}
else
{
_set_wav();
}/* end-of-if */
}
else if (str_cmp("TMP", &pArg) == 0)
{
_Control.pTmpFile = fopen("tmp.txt", "w");
if ( _Control.pTmpFile == NULL )
{
Rc = 1;
} /* end-of-if */
}
else if (str_cmp("BYPASS", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Control.fBypass = fTmp;
}
}
else if (str_cmp("GRMODE", &pArg) == 0)
{
if (sscanf(pArg, "%x", &_Control.iGmode) != 1)
{
Rc = 2;
}
}
else if (str_cmp("STEPMODE", &pArg) == 0)
{
if (sscanf(pArg, "%d", &iTmp) != 1)
{
Rc = 2;
}
else
{
DEMO_StepMode = iTmp;
}
}
else if (str_cmp("ADD_RX_CORR", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Control.fAddRxCorr = pow(10., fTmp/20.);
}
}
else if (str_cmp("ADD_RX_DELAY", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Control.iAddRxDelay = int(fTmp*200.0 + 0.5);
}
}
else if (str_cmp("ADD_RX_BYPASS", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Control.iAddRxBypass = int(fTmp*8000.0 + 0.5);;
}
}
else if (str_cmp("ADD_RX_TRX_FILE", &pArg) == 0)
{
_Control.pAddRxTrxFile = fopen(pArg+1, "r");
if ( _Control.pAddRxTrxFile == NULL )
{
Rc = 1;
} /* end-of-if */
else
{
if (_Control.iAddRxBypass > 0)
{
for (long i = 0; i < _Control.iAddRxBypass; i++)
{
S16 x, y;
fscanf(_Control.pAddRxTrxFile, "%d %d", &x, &y);
if (i%8000 == 0)
{
val_out(0,0, WHITE, "second %ld ", (i+1)/8000);
}
}
}
}
}
else if (str_cmp("ADD_RX_TX_FILE", &pArg) == 0)
{
_Control.pAddRxTxFile = fopen(pArg+1, "r");
if ( _Control.pAddRxTxFile == NULL )
{
Rc = 1;
} /* end-of-if */
}
else if (str_cmp("TRX_FILE", &pArg) == 0)
{
_Control.pInTrxFile = fopen(pArg+1, "r");
if ( _Control.pInTrxFile == NULL )
{
Rc = 1;
} /* end-of-if */
else
{
if (_Control.fBypass > 0)
{
for (long i = 0; i < _Control.fBypass * 8000; i++)
{
S16 x, y;
fscanf(_Control.pInTrxFile, "%d %d", &x, &y);
if (i%8000 == 0)
{
val_out(0,0, WHITE, "second %ld ", (i+1)/8000);
}
}
}
}
}
else if (str_cmp("TX_FILE", &pArg) == 0)
{
_Control.pInTxFile = fopen(pArg+1, "r");
if ( _Control.pInTxFile == NULL )
{
Rc = 1;
} /* end-of-if */
else
{
if (_Control.fBypass > 0)
{
for (long i = 0; i < _Control.fBypass * 8000; i++)
{
S16 x;
fscanf(_Control.pInTxFile, "%d", &x);
if (i%8000 == 0)
{
val_out(0,0, WHITE, "second %ld ", (i+1)/8000);
}
}
}
}
}
else if (str_cmp("RX_FILE", &pArg) == 0)
{
_Control.pInRxFile = fopen(pArg+1, "r");
if ( _Control.pInRxFile == NULL )
{
Rc = 1;
} /* end-of-if */
else
{
if (_Control.fBypass > 0)
{
for (long i = 0; i < _Control.fBypass * 8000; i++)
{
S16 x;
fscanf(_Control.pInRxFile, "%d", &x);
if (i%8000 == 0)
{
val_out(0,0, WHITE, "second %ld ", (i+1)/8000);
}
}
}
}
}
else if (str_cmp("TX_BIN", &pArg) == 0)
{
_Control.pInTxBinFile = fopen(pArg+1, "rb");
if ( _Control.pInTxBinFile == NULL )
{
Rc = 1;
} /* end-of-if */
else
{
if (_Control.fBypass > 0)
{
for (long i = 0; i < _Control.fBypass * 8000; i++)
{
S16 x;
fread(&x, sizeof(S16), 1, _Control.pInTxBinFile);
if (i%8000 == 0)
{
val_out(0,0, WHITE, "second %ld ", (i+1)/8000);
}
}
}
}
}
else if (str_cmp("RX_BIN", &pArg) == 0)
{
_Control.pInRxBinFile = fopen(pArg+1, "rb");
if ( _Control.pInRxBinFile == NULL )
{
Rc = 1;
} /* end-of-if */
else
{
if (_Control.fBypass > 0)
{
for (long i = 0; i < _Control.fBypass * 8000; i++)
{
S16 x;
fread(&x, sizeof(S16), 1, _Control.pInRxBinFile);
if (i%8000 == 0)
{
val_out(0,0, WHITE, "second %ld ", (i+1)/8000);
}
}
}
}
}
else if (str_cmp("ECHO_FILE", &pArg) == 0)
{
#define __DELAY (0)
FILE *pFile = fopen(pArg+1, "r");
if ( pFile == NULL )
{
Rc = 10;
}
else
{
int i;
for (i = 0; i < 80; i++) fscanf(pFile, "%f", &fTmp);
for (i = 0; i < ECHO_SZ-__DELAY; i++)
{
if (fscanf(pFile, "%f", &fTmp) == 1)
{
_afEcho[i+__DELAY] = fTmp;
}
else
{
break;
}
}
fclose(pFile);
} /* end-of-if */
}
else if (str_cmp("SBADF", &pArg) == 0)
{
FILE *pFile = fopen(pArg+1, "r");
if ( pFile == NULL )
{
Rc = 10;
}
else
{
int idx;
for (idx = 0; idx < GAEC_ADF_SZ; idx++)
{
int band;
for (band = 0; band < GAEC_BANDS*2; band++)
{
if (fscanf(pFile, "%f", &fTmp) == 1)
{
// _SbecDb.aasAdf[band][idx] = fTmp;
_aasAdf[band][idx] = fTmp;
}
else
{
// _SbecDb.aasAdf[band][idx] = 0.1;
}
}
}
fclose(pFile);
} /* end-of-if */
}
else if (str_cmp("REPLACE_RX", &pArg) == 0)
{
if (sscanf(pArg, "%d", &iTmp) != 1)
{
Rc = 2;
}
else
{
_Control.iReplaceRx = iTmp;
}
}
else if (str_cmp("ADD_REFLECTIONS", &pArg) == 0)
{
if (sscanf(pArg, "%d", &iTmp) != 1)
{
Rc = 2;
}
else
{
_Control.iAddReflections = iTmp;
}
}
else if (str_cmp("ADD_PINK_NOISE", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Control.fAddPinkNoise = 4096.* pow(10., fTmp/20.);
}
}
else if (str_cmp("ADD_TX_QNOISE", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Control.fAddTxQNoise = fTmp;
}
}
else if (str_cmp("ADD_RX_QNOISE", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Control.fAddRxQNoise = fTmp;
}
}
else if (str_cmp("TX_CORR", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Control.fTxCorr = pow(10., fTmp/20.);
}
}
else if (str_cmp("RX_CORR", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Control.fRxCorr = pow(10., fTmp/20.);
}
}
else if (str_cmp("TX_DELAY", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Control.iTxDelay = int(fTmp*8 + 0.5);
}
}
else if (str_cmp("GTXSIGNAL", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Gen.fTxLevel = LEV0 * pow (10.0, fTmp/20.0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -