⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo.cpp

📁 CP detector (CPD) only reports the onset and removal of a tone. The analysis of timing (if required)
💻 CPP
📖 第 1 页 / 共 4 页
字号:
            if (_Gen.iFreqCntr >= 2*(2*_Gen.iFreqSteps+1))
            {
                _Gen.iFreqCntr = 0;
// next tone
                _Gen.iToneCntr += _Gen.iToneInc; 
                if (_Gen.iToneCntr >= 15) DEMO_StepMode = TRUE;

                _Gen.iToneCntr %= 15;
                _Gen.sFLo = _aFreqs[_Gen.iToneCntr].sFLo;
                _Gen.sFHi = _aFreqs[_Gen.iToneCntr].sFHi;

            }

        }
        tg_config();
    }


    sTgState = TG_process(&_RevDb, &_TgScratch, pIn);

    if (sTgState == 0)
    {
        rev_config();
    }

    add_noise(_Gen.iRxNoise, pIn);
}

/*-------------------------------------------------------------------------*/
void                        fill_input
/*-------------------------------------------------------------------------*/
(
S16 *pIn
)
{
	if(_Control.pInFile != NULL && _Frame > 0)
	{
        read_input(pIn);
	}
    else
    {
        gen_input(pIn);
    }
    for(int k=0; k < ICPD_FR_SZ; k++)
    {
        double x = pIn[k]*4;
        if (x >  32767)  x = 32767;
        if (x < -32767) x = -32767;
        pIn[k] = (S16)x;
    }
}

/*-------------------------------------------------------------------------*/
int                     str_cmp
/*-------------------------------------------------------------------------*/
(
const char *pBasis, 
char **ppArg
)
{
    if (_strnicmp(pBasis, *ppArg, strlen(pBasis)) == 0)
    {
        *ppArg += strlen(pBasis);
        return 0;
    }
    else
    {
        return -1;
    }
}
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/

/*                  C O N F I G U R A T I O N                              */

/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/

/*-------------------------------------------------------------------------*/
int                     get_cfg_line
/*-------------------------------------------------------------------------*/
(
char *pArg
)
/* returns :
        0 - no errs
        1 - file err
        2 - arg scanf err
        3 - switch err
        */
{
    int Rc = 0;
    float Tmp;
    int iTmp;
    

    if ( *pArg == '-' || *pArg == '/')
    {
        pArg++;

        if (str_cmp("DBG", &pArg) == 0)
	    {
		    _Control.pDbgFile = fopen("dbg.txt", "w");
		    if ( _Control.pDbgFile == NULL )
		    {
			    Rc = 1;
		    } /* end-of-if */
	    }
	    else if (str_cmp("OUT", &pArg) == 0)
	    {
		    _Control.pOutFile = fopen("out.txt", "w");
		    if ( _Control.pOutFile == NULL )
		    {
			    Rc = 1;
		    } /* 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", &Tmp) != 1)
		    {
                Rc = 2;
		    }
            else
            {
                _Control.fDelay = Tmp;
            }
	    }
	    else if (str_cmp("GRMODE", &pArg) == 0)
	    {
		    if (sscanf(pArg, "%d", &_Control.iGmode) != 1)
            {
                Rc = 2;
            }
	    }
	    else if (str_cmp("CATCH", &pArg) == 0)
	    {
		    if (sscanf(pArg, "%d", &_Control.iCatch) != 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("SERIASTOP", &pArg) == 0)
	    {
		    if (sscanf(pArg, "%d", &iTmp) != 1)
		    {
                Rc = 2;
		    }
            else
            {
    		    _Control.iSeriaStop = iTmp;
            }
	    }
        else if (str_cmp("INPUT", &pArg) == 0)
	    {
		    _Control.pInFile = fopen(pArg+1, "rb");
		    if ( _Control.pInFile == NULL )
		    {
			    Rc  = 1;
		    } /* end-of-if */
            else
            {
				if (_Control.fDelay > 0)
				{
					for (long i = 0; i < _Control.fDelay * 8000; i++)
					{
						S16 x;
						fread(&x, sizeof(S16), 1, _Control.pInFile);
						if (i%8000 == 0)
						{
							val_out(0,0, WHITE, "second %ld   ", (i+1)/8000);
						}
					}
				}

            }
	    }
        else if (str_cmp("INCOR", &pArg) == 0)
	    {
		    if (sscanf(pArg, "%f", &Tmp) != 1)
		    {
                Rc = 2;
		    }
            else
            {
                _Control.fRxCorr = pow(10., Tmp/20.);
            }
        }
        else if (str_cmp("REVLEVEL1", &pArg) == 0)
        {
			if (sscanf(pArg, "%f", &Tmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.Rev.iLevel1 = int(LEV0 * pow (10.0, Tmp/20.0) * 1.41);
            }
		}
        else if (str_cmp("REVLEVEL2", &pArg) == 0)
        {
			if (sscanf(pArg, "%f", &Tmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.Rev.iLevel2 = int(LEV0 * pow (10.0, Tmp/20.0) * 1.41);
            }
		}
        else if (str_cmp("REVFREQ1", &pArg) == 0)
        {
			if (sscanf(pArg, "%d", &iTmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.Rev.iFreq1 = iTmp;
            }
		}
        else if (str_cmp("REVFREQ2", &pArg) == 0)
        {
			if (sscanf(pArg, "%d", &iTmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.Rev.iFreq2 = iTmp;
            }
		}
        else if (str_cmp("REVPRESILENCEDUR", &pArg) == 0)
		{
			if (sscanf(pArg, "%d", &iTmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.Rev.iPreSilenceDuration = iTmp;
            }
		}
        else if (str_cmp("REVSIGNALDUR", &pArg) == 0)
		{
			if (sscanf(pArg, "%d", &iTmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.Rev.iSignalDuration = iTmp;
            }
		}
        else if (str_cmp("REVPOSTSILENCEDUR", &pArg) == 0)
		{
			if (sscanf(pArg, "%d", &iTmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.Rev.iPostSilenceDuration = iTmp;
            }
		}
        else if (str_cmp("HILEVEL", &pArg) == 0)
        {
			if (sscanf(pArg, "%f", &Tmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.iRxHiLevel = int(LEV0 * pow (10.0, Tmp/20.0) * 1.41);
            }
		}
        else if (str_cmp("LOLEVEL", &pArg) == 0)
		{
			if (sscanf(pArg, "%f", &Tmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.iRxLoLevel = int(LEV0 * pow (10.0, Tmp/20.0) * 1.41);
            }
		}
        else if (str_cmp("NOISE", &pArg) == 0)
		{
			if (sscanf(pArg, "%f", &Tmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.iRxNoise = int(LEV0 * pow (10.0, Tmp/20.0));
            }
		}
        else if (str_cmp("PRESILENCEDUR", &pArg) == 0)
		{
			if (sscanf(pArg, "%d", &iTmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.iPreSilenceDuration = iTmp;
            }
		}
        else if (str_cmp("POSTSILENCEDUR", &pArg) == 0)
		{
			if (sscanf(pArg, "%d", &iTmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.iPostSilenceDuration = iTmp;
            }
		}
        else if (str_cmp("SIGNALDUR", &pArg) == 0)
		{
			if (sscanf(pArg, "%d", &iTmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.iSignalDuration = iTmp;
            }
		}
        else if (str_cmp("SAMEMAX", &pArg) == 0)
		{
			if (sscanf(pArg, "%d", &iTmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.iSameCntrMax = iTmp;
            }
		}
        else if (str_cmp("FREQSTEPS", &pArg) == 0)
		{
			if (sscanf(pArg, "%d", &iTmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.iFreqSteps = iTmp;
            }
		}
        else if (str_cmp("TONESTART", &pArg) == 0)
		{
			if (sscanf(pArg, "%d", &iTmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.iToneCntr = iTmp;
                _Gen.iToneCntr %= 15;
                _Gen.sFLo = _aFreqs[_Gen.iToneCntr].sFLo;
                _Gen.sFHi = _aFreqs[_Gen.iToneCntr].sFHi;

            }
		}
        else if (str_cmp("TONEINC", &pArg) == 0)
		{
			if (sscanf(pArg, "%d", &iTmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.iToneInc = iTmp;
            }
		}
        else if (str_cmp("FREQDEV", &pArg) == 0)
		{
			if (sscanf(pArg, "%f", &Tmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_Gen.fFreqDevMax = Tmp;
            }
		}
        else if (str_cmp("DTWISTTHR", &pArg) == 0)
		{
			if (sscanf(pArg, "%f", &Tmp) != 1)
			{
                Rc = 2;
			}
            else
            {
				_CpdCfg.sTwistThr = dbs(Tmp);
            }
		}
        else if (str_cmp("DMINENTHR", &pArg) == 0)
		{
			if (sscanf(pArg, "%f", &Tmp) != 1)
			{
                Rc = 2;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -