📄 demo.cpp
字号:
else if (str_cmp("GTXNOISE", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Gen.fTxNoise = LEV0 * pow (10.0, fTmp/20.0);
}
}
else if (str_cmp("RX_DELAY", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Control.iRxDelay = int(fTmp*8 + 0.5);
}
}
else if (str_cmp("GRXSIGNAL", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Gen.fRxLevel = LEV0 * pow (10.0, fTmp/20.0);
}
}
else if (str_cmp("GRXNOISE", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Gen.fRxNoise = LEV0 * pow (10.0, fTmp/20.0);
}
}
else if (str_cmp("GWORDLEN", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Gen.fWordLen = fTmp;
}
}
else if (str_cmp("GPAUSELEN", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Gen.fPauseLen = fTmp;
}
}
else if (str_cmp("GSENTENCELEN", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Gen.liSentenceLen = long(fTmp);
}
}
else if (str_cmp("GSTATE", &pArg) == 0)
{
if (sscanf(pArg, "%d", &iTmp) != 1)
{
Rc = 2;
}
else
{
_Gen.iState = iTmp;
}
}
else if (str_cmp("GDOUBLETALK", &pArg) == 0)
{
if (sscanf(pArg, "%f", &fTmp) != 1)
{
Rc = 2;
}
else
{
_Gen.fDoubleTalk = fTmp;
}
}
else
{
Rc = 3;
}
} /* end of if */
else
{
// that's a comment
}
return Rc;
}
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
/* O U T P U T */
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
#define DUMP_MODE 4
/* ------------------------------------------------------------------- */
void _dump_vars
/* ------------------------------------------------------------------- */
(
)
{
#if 0
fprintf(_Control.pTmpFile, "%f %f %f %f %f %f\n",
_LecDb.VadTx.sEn/170.1,
_LecSc.sRxEn/170.1,
_LecDb.VadErr.sEn/170.1,
GAEC_pkt_energy(_asRxOut)/170.1,
_LecSc.sErle/170.1,
-(_LecDb.Adf2.sMSE/170.1)
);
#endif
#if (DUMP_MODE == 1)
fprintf(_Control.pTmpFile, "%f\n", _dTCLw);
#elif (DUMP_MODE == 2)
for (int blk = 0; blk < GAEC_BLKS; blk++)
{
int iRcv = GAEC_RCV_SZ-GAEC_BLKS+blk;
fprintf(_Control.pTmpFile, "%d %d \n",
_GaecDb.psRcv[GAEC_RCV_SZ*( 1) + iRcv],
_GaecDb.psRcv[GAEC_RCV_SZ*(GAEC_BANDS+1) + iRcv]);
}
#elif (DUMP_MODE == 3)
fprintf(_Control.pTmpFile, "%f\n", _GaecDb.sEpcXcr/170.1);
#elif (DUMP_MODE == 4)
fprintf(_Control.pTmpFile, "%f %f %f %f %f %f\n",
gaec_utl_pkt_energy(_asTxIn)/170.1,
gaec_utl_pkt_energy(_asRxIn)/170.1,
gaec_utl_pkt_energy(_asCnl)/170.1,
gaec_utl_pkt_energy(_asTxOut)/170.1,
gaec_utl_pkt_energy(_asRxOut)/170.1,
_dTCLw);
#else
#endif
}
/* ------------------------------------------------------------------- */
void _dump_wav
/* ------------------------------------------------------------------- */
(
)
{
static S16 aTmp[IGAEC_FR_SZ];
S16 k;
for (k = 0; k < IGAEC_FR_SZ; k++) aTmp[k] = _asTxIn[k] << 2;
fwrite(aTmp, sizeof(S16), IGAEC_FR_SZ, _Control.pTxWavFile);
for (k = 0; k < IGAEC_FR_SZ; k++) aTmp[k] = _asTxOut[k] << 2;
fwrite(aTmp, sizeof(S16), IGAEC_FR_SZ, _Control.pTxOutWavFile);
for (k = 0; k < IGAEC_FR_SZ; k++) aTmp[k] = _asRxIn[k] << 2;
fwrite(aTmp, sizeof(S16), IGAEC_FR_SZ, _Control.pRxWavFile);
for (k = 0; k < IGAEC_FR_SZ; k++) aTmp[k] = _asCnl[k] << 2;
fwrite(aTmp, sizeof(S16), IGAEC_FR_SZ, _Control.pCnlWavFile);
for (k = 0; k < IGAEC_FR_SZ; k++) aTmp[k] = _asRxOut[k] << 2;
fwrite(aTmp, sizeof(S16), IGAEC_FR_SZ, _Control.pNlpWavFile);
_WavHdr.ulLen1 += 80;
_WavHdr.ulLen3 += 80;
}
/* ------------------------------------------------------------------- */
void _dump_filters
/* ------------------------------------------------------------------- */
(
)
{
rewind(_Control.pAdfFile);
// if (_Frame % 100 == 0)
if (_Frame % 200 == 0)
{
// double fDiv = double(1<<_LecDb.Adf1.sShift);
double fDiv = 1.;//double(1<<_LecDb.Adf2.sShift);
// fprintf(gControl.pDbgFile, "\n--- frame %ld\n", Frame);
for(int i = 0; i < GAEC_ADF_SZ; i++)
{
int k;
for (k = 0; k < GAEC_BANDS; k++)
{
fprintf(_Control.pAdfFile,"%+012.5g ",
_GaecDb.psAdf[k*GAEC_ADF_SZ*2+i*2+0]/32767.);
}
for (k = 0; k < GAEC_BANDS; k++)
{
fprintf(_Control.pAdfFile,"%+012.5g ",
_GaecDb.psAdf[k*GAEC_ADF_SZ*2+i*2+1]/32767.);
}
fprintf(_Control.pAdfFile,"\n");
}
}
}
/* ------------------------------------------------------------------- */
void plot_band
/* ------------------------------------------------------------------- */
(
S16 *p,
int size,
int x,
int y,
int amp,
S16 fMax,
int color
)
{
int t,k;
bar(x, y-amp, x+size, y+amp+10);
cline(x, y,x+size, y, color);
set_color(DARKGRAY);
for (k = 0; k <= (size+1)/IGAEC_FR_SZ; k++)
{
line(k*IGAEC_FR_SZ+x,y-amp,k*IGAEC_FR_SZ+x,y+amp);
}
line(x, y-amp, x+size, y-amp);
line(x, y+amp, x+size, y+amp);
line(x+size, y-amp, x+size, y+amp);
set_color(color);
if (fMax > 0)
{
double f = amp /(fMax + _EPS);
for (k = 0; k < size; k++)
{
t = (int)(f * p[k]);
line(k+x, y, k+x, y-t);
}
}
}
/* ------------------------------------------------------------------- */
void plot_band_adf
/* ------------------------------------------------------------------- */
(
S16 *p,
S16 *psSav,
int x,
int y,
int amp,
int color
)
{
int t,k;
int iMax;
S16 asNew[GAEC_ADF_SZ*2];
iMax = 0;
for (k = 0; k < GAEC_ADF_SZ*2; k++)
{
int x = p[k];
x = (x > 0) ? x : -x;
iMax = (iMax > x) ? iMax : x;
}
if (iMax > 0)
{
U16 uChanged = FALSE;
double f = (amp - 3)/(double(iMax) + _EPS);
for (k = 0; k < GAEC_ADF_SZ*2; k++)
{
t = (int)(f * p[k]);
asNew[k] = (S16)(p[k] * f);
if (asNew[k] != psSav[k])
uChanged = TRUE;
}
if (uChanged)
{
for (k = 0; k < GAEC_ADF_SZ*2; k++)
{
psSav[k] = asNew[k];
}
bar(x, y-amp, x+GAEC_ADF_SZ, y+amp+1);
set_color(DARKGRAY);
line(x, y,x+GAEC_ADF_SZ, y);
for (k = 0; k <= (GAEC_ADF_SZ+1)/IGAEC_FR_SZ; k++)
{
line(k*IGAEC_FR_SZ+x,y-amp,k*IGAEC_FR_SZ+x,y+amp);
}
line(x, y-amp, x+GAEC_ADF_SZ, y-amp);
line(x, y+amp, x+GAEC_ADF_SZ, y+amp);
line(x+GAEC_ADF_SZ, y-amp, x+GAEC_ADF_SZ, y+amp);
set_color(color);
for (k = 0; k < GAEC_ADF_SZ; k++)
{
line(k+x, y-3, k+x, y-psSav[k]-3);
line(k+x, y+3, k+x, y-psSav[GAEC_ADF_SZ*2-1-k]+3);
}
val_out(x+GAEC_ADF_SZ-70, y-amp, color, "%-6d", iMax);
}
}
}
/* ------------------------------------------------------------------- */
int plot_out
/* ------------------------------------------------------------------- */
(
S16 *p,
int size,
int x,
int y,
int amp,
char *pTitle,
int color
)
{
int iMax = 0;
int t;
double f;
for(int k=0; k < size; k++)
{
t = abs(p[k]);
if(t > iMax) iMax = t;
}
bar(x, y-amp, x+size, y+amp+10);
cline(x, y,x+size, y, color);
set_color(DARKGRAY);
for (k = 0; k <= (size+1)/IGAEC_FR_SZ; k++)
{
line(k*IGAEC_FR_SZ+x,y-amp,k*IGAEC_FR_SZ+x,y+amp);
}
line(x, y-amp, x+size, y-amp);
line(x, y+amp, x+size, y+amp);
line(x+size, y-amp, x+size, y+amp);
set_color(color);
f = amp /((double(iMax) + _EPS));
if (iMax > 0)
{
for (k = 0; k < size; k++)
{
t = (int)(f * p[k]);
line(k+x, y, k+x, y-t);
}
}
if (pTitle)
{
val_out(x-70, y-amp, color, "%s %-6d", pTitle, iMax);
}
return iMax;
}
/* ------------------------------------------------------------------- */
int plot_outp
/* ------------------------------------------------------------------- */
(
S16 *p,
int size,
int x,
int y,
int amp,
char *pTitle,
int color
)
{
int iMax = 0;
int t;
double f;
for(int k=0; k < size; k++)
{
t = p[k];
if(t > iMax) iMax = t;
}
bar(x, y-amp, x+size, y+amp+10);
set_color(DARKGRAY);
for (k = 0; k <= (size+1)/IGAEC_FR_SZ; k++)
{
line(k*IGAEC_FR_SZ+x,y-amp,k*IGAEC_FR_SZ+x,y+amp);
}
line(x, y-amp, x+size, y-amp);
line(x, y-amp/2, x+size, y-amp/2);
line(x, y, x+size, y);
line(x, y+amp, x+size, y+amp);
line(x, y+amp/2, x+size, y+amp/2);
line(x+size, y-amp, x+size, y+amp);
set_color(color);
f = 2*amp /((double(iMax) + _EPS));
if (iMax > 0)
{
for (k = 0; k < size; k++)
{
t = (int)(f * p[k]);
line(k+x, y+amp, k+x, y+amp-t);
}
}
if (pTitle)
{
val_out(x-30, y, color, "%-2d", iMax);
}
return iMax;
}
/* ------------------------------------------------------------------- */
int plot_out32
/* ------------------------------------------------------------------- */
(
S32 *p,
int size,
int x,
int y,
int amp,
char *pTitle,
int color
)
{
S32 iMax = 0;
S32 t;
double f;
for(int k=0; k < size; k++)
{
t = abs(p[k]);
if(t > iMax) iMax = t;
}
bar(x, y-amp, x+size, y+amp+10);
val_out(x, y+amp, color, "%s %-6ld", pTitle, iMax);
set_color(DARKGRAY);
for (k = 0; k <= (size+1)/IGAEC_FR_SZ; k++)
{
line(k*IGAEC_FR_SZ+x,y-amp,k*IGAEC_FR_SZ+x,y+amp);
}
set_color(color);
f = amp /((double(iMax) + _EPS));
if (iMax > 0)
{
for (k = 0; k < size; k++)
{
t = (int)(f * p[k]);
line(k+x, y, k+x, y-t);
}
}
return iMax;
}
/* ------------------------------------------------------------------- */
void graphic_init
/* ------------------------------------------------------------------- */
(
int Err
)
{
int k;
float fMax = 0.0;
float fReflection = 0;
set_color(WHITE);
line(X0, YG, XM, YG);
for (k = 0; k < 9; k++)
{
int y = int(YG+(YV/(YDBMAX-YDBMIN))*(10*k+YDBMAX));
val_out(0, y-8, BROWN, "%d", -k*10);
cline(X0, y, XM, y, DARKGRAY);
}
for (k = 0; k < 6; k++)
{
int y = int(YGH+(YVH/(YDHMAX-YDHMIN))*(10*k+YDHMAX));
val_out(0, y-8, BROWN, "%d", -k*10);
cline(X0, y, XM, y, DARKGRAY);
}
for (k = 1; k < 12; k++)
{
val_out(X0+50*k-20, YG+YV+5, DARKGRAY, "%5.2f", k*0.25);
cline(X0+50*k, YG+YV, X0+50*k, YG+YV+10, LIGHTGRAY);
}
for (k = 0; k < ECHO_SZ; k++)
{
if(fabs(_afEcho[k]) > fMax)
{
fMax = float(fabs(_afEcho[k]));
}
fReflection += _afEcho[k]*_afEcho[k];
}
_fReflection = fReflection;
val_out(XADF, 0, RED, "ERL %5.2f", -10.0*log10(fReflection+_EPS));
for(k = 0; k < ECHO_SZ; k++)
{
_asEchoS16[k] = S16(_afEcho[k]*32767.0);
}
plot_out(_asEchoS16, ECHO_SZ, XADF, YADF, YWIN, " ECHO", RED);
val_out(XT0, YT0, WHITE, "ERR %d", Err);
val_out(XT0, YT1, WHITE, "gr_mode %d", _Control.iGmode);
val_out(XT0, YT2, LIGHTRED, "RxCorr %f", _Control.fRxCorr);
val_out(XT0, YT3, LIGHTRED, "TxCorr %f", _Control.fTxCorr);
val_out(XT0, YT4, LIGHTRED, "RxDelay %d", _Control.iRxDelay);
val_out(XT0, YT5, LIGHTRED, "TxDelay %d", _Control.iTxDelay);
val_out(XT0, YT6, LIGHTBLUE, "AddRxDelay %d", _Control.iAddRxDelay);
val_out(XT0, YT7, LIGHTBLUE, "AddRxBypass %d", _Control.iAddRxBypass);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -