📄 cpdi.h
字号:
/*---------------------------------------------------------------------*
* *
* THIS IS AN UNPUBLISHED WORK CONTAINING CONFIDENTIAL AND PROPRIETARY *
* INFORMATION. IF PUBLICATION OCCURS, THE FOLLOWING NOTICE APPLIES: *
* "COPYRIGHT 2001 MICHAEL TSIROULNIKOV, ALL RIGHTS RESERVED" *
* *
*---------------------------------------------------------------------*/
#ifndef _cpdi_h
#define _cpdi_h
#include "stddefs.h"
#include "cpd_miket.h"
/*--------------------- local defs ------------------------------------*/
#define CPD_ST_IDLE (0)
#define CPD_ST_MAYBE (1)
#define CPD_ST_TONE (2)
#define CPD_ST_GOOD_TONE (3)
#define CPD_ST_ABORT (4)
#define CPD_ST_MAX (5)
/* bandpass filtering */
#define CPD_BP_DR (10)
#define CPD_BP_FSZ (60)
#define CPD_BP_HSZ (CPD_BP_FSZ/2)
#define CPD_BP_SSZ (CPD_BP_FSZ-CPD_BP_DR)
#define CPD_BP_ASZ (CPD_BP_SSZ+ICPD_FR_SZ)
//#define CPD_DR (20) /* decimation ratio */
//#define CPD_2KDR (2)
//#define CPD_BPDR (10)
/* periodogram analysis */
#define CPD_PG_DR (4)
#define CPD_PG_FSZ (56)
#define CPD_PG_HSZ (CPD_PG_FSZ/2)
#define CPD_PG_SSZ (CPD_PG_FSZ-ICPD_FR_SZ/CPD_BP_DR)
#define CPD_PG_ASZ (CPD_PG_FSZ)
#define CPD_EN_SZ (8)
#define CPD_MASK_DUAL (1<<0)
#define CPD_MASK_MAX_EN (1<<1)
#define CPD_MASK_RS_EDGE (1<<2)
#define CPD_MASK_FL_EDGE (1<<3)
#define CPD_MASK_LO_STABLE (1<<4)
#define CPD_MASK_HI_STABLE (1<<5)
#define CPD_MASK_TWIST (1<<6)
#define CPD_MASK_CLEAN (1<<7)
#define CPD_MASK_LO_OK (1<<8)
#define CPD_MASK_HI_OK (1<<9)
#define CPD_MASK_SAME_DGT (1<<10)
#define CPD_MASK_CLEAN_MB (1<<11)
#define CPD_MASK_SINGLE (1<<12)
#define CPD_MASK_SINGLE_MB (1<<13)
#define CPD_EN_BP ((S16)(170*5.0))
#define CPD_EN_PG ((S16)(170*7.5))
#define CPD_FREQS (5)
/* statistics */
typedef struct CPD_tStts {
Int sLoEn; /* average energy in dBm*170, for low freq comp */
Int sLoErr; /* average frequency deviation in Hz *170, for low freq comp */
Int sHiEn;
Int sHiErr;
} CPD_tStts;
typedef struct CPD_tElem {
S16 sCpred;
S16 sSpred;
S16 sDist;
S16 sErr;
S16 sEn;
} CPD_tElem;
typedef struct CPD_tOutSav {
S16 sC;
S16 sS;
} CPD_tOutSav;
typedef struct CPD_tOut {
S16 sC;
S16 sS;
S32 slEn;
} CPD_tOut;
typedef struct CPD_tSc {
CPD_tOut aOut[CPD_FREQS];
S32 aslEnSort[CPD_FREQS];
S32 slBpEn;
CPD_tElem Lo;
CPD_tElem Hi;
S16 sBpEn;
S16 sSumEn;
S16 asBpData[CPD_BP_ASZ];
S16 asPgIData[CPD_PG_ASZ];
S16 asPgQData[CPD_PG_ASZ];
/* Sum shall be followed by Dif */
S16 asPgISum[CPD_PG_HSZ];
S16 asPgIDif[CPD_PG_HSZ];
S16 asPgQSum[CPD_PG_HSZ];
S16 asPgQDif[CPD_PG_HSZ];
S16 sMaxIdx;
S16 sNextIdx;
S16 sRestIdx;
S16 sMaxEn;
S16 sNextEn;
S16 sRestEn;
S16 sLoIdx;
S16 sHiIdx;
S16 sTestFailed;
S16 sDigit;
} CPD_tSc;
typedef struct CPD_tDbv
{
S16 sState;
S16 sDigit;
S16 sFrCntr;
S16 sAvrEn;
// S16 sLastFrEn;
// S16 sPrevFrEn;
S16 asSumEn[CPD_EN_SZ]; /* 6w frame energy history */
} CPD_tDbv; /* words */
typedef struct CPD_tDb /* words */
{
const ICPD_tCfg *pCfg; /* 2 */
CPD_tOutSav aOutSav[CPD_FREQS]; /* 12 */
S16 asBpDataSav[CPD_BP_SSZ]; /* 70 */
S16 asPgIDataSav[CPD_PG_SSZ]; /* 12 */
S16 asPgQDataSav[CPD_PG_SSZ]; /* 12 */
CPD_tStts Stts; /* 4 */
CPD_tDbv v; /* 12 */
S16 sIsOn; /* 1 */
} CPD_tDb;
/*--------------------- public vars- ----------------------------------*/
/*--------------------- local vars ------------------------------------*/
extern const S16 CPD_aaDigit[5][6];
/*--------------------- local functions -------------------------------*/
extern S16 cpd_en2log(S32 slEn, S16 sCorr);
extern void cpd_avrg(S16 *psOld, S16 sNew, S16 sCoef);
extern void cpd_move_data_in (CPD_tDb *pDb, CPD_tSc *pSc, S16 *psIn);
extern void cpd_filter_bp (CPD_tSc *pSc);
extern void cpd_sum_sub (CPD_tSc *pSc);
extern void cpd_filter_pg (CPD_tSc *pSc);
extern void cpd_sort_freqs (CPD_tSc *pSc);
extern void cpd_get_lohi (CPD_tDb *pDb, CPD_tSc *pSc);
extern void cpd_get_elem_data(CPD_tDb *pDb, CPD_tSc *pSc,
CPD_tElem *pElem,
S16 sIdx);
extern void cpd_test (CPD_tDb *pDb, CPD_tSc *pSc);
extern void cpd_move_data_out(CPD_tDb *pDb, CPD_tSc *pSc);
extern void cpd_update_statistics(CPD_tDb *pDb, CPD_tSc *pSc);
/*--------------------- public functions -----------------------------*/
/*---------------------------------------------------------------------*/
#endif /* _cpd_h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -