📄 hamaro_sts.h
字号:
/* current step size */
unsigned short step;
} HAMARO_STS_SAMPLE;
typedef struct _hamaro_sts_power_spectrum_
{
/* main buffer */
unsigned short power[STS_MAX_INDEX];
unsigned long abs_freq[STS_MAX_INDEX];
signed char agcacc;
unsigned short filled_buffer_len;
/* fine scan used in binary search fsm */
unsigned short sub_power[STS_MAX_SUB_INDEX];
unsigned long sub_abs_freq[STS_MAX_SUB_INDEX];
signed char sub_agcacc;
unsigned short filled_sub_buffer_len;
/* buffer select */
BOOL b_use_main;
/* Sample used for analysis */
HAMARO_STS_SAMPLE s_sts_sample;
unsigned short last_power_level;
} HAMARO_STS_POWER_SPECTRUM_DATA;
/* curvature points */
typedef struct _hamaro_sts_curvature_points_hz_
{
unsigned long concave; /* Hz */
unsigned long convex; /* Hz */
} HAMARO_STS_CURVATURE_POINTS;
/* channel parameters extracted */
typedef struct _hamaro_sts_channel_info_
{
unsigned long carrier_freq_hz;
unsigned long symbol_rate_hz;
HAMARO_CODERATE code_rate;
HAMARO_SPECINV spec_inv;
HAMARO_MODTYPE mod_type; /* HAMARO_MOD_QPSK */
HAMARO_LNBPOL lnb_pol; /* HAMARO_LNB_HIGH */
HAMARO_LNBTONE lnb_tone; /* HAMARO_LNBTONE_OFF */
HAMARO_TRANSPEC tran_spec; /* HAMARO_SPEC_DVB */
HAMARO_AGCACC aagc;
BOOL good_channel;
} HAMARO_STS_CHANNEL_INFO;
/* STS module data */
typedef struct _hamaro_sts_data_
{
HAMARO_READ_SB p_read;
HAMARO_WRITE_SB p_write;
} HAMARO_STSDATA;
BOOL STS_Init (HAMARO_READ_SB p_sb_read, HAMARO_WRITE_SB p_sb_write);
BOOL STS_Release ();
BOOL STS_RegRead (unsigned char page,
unsigned short address,
unsigned short offset,
unsigned char start_bit,
unsigned char num_bit,
unsigned short* p_data);
BOOL STS_RegWrite (unsigned char page,
unsigned short address,
unsigned short offset,
unsigned char start_bit,
unsigned char num_bit,
BOOL rmw,
unsigned char access,
unsigned short data);
#define HAMARO_GET_PAGE(options) ((unsigned char)((options >> 12) & 0x0F))
#define HAMARO_GET_ADDR(options) ((unsigned short)(options & 0x0FFF))
#define HAMARO_GET_START_BIT(options) ((unsigned char)((options >> 16) & 0x0F))
#define HAMARO_GET_NUM_BIT(options) ((unsigned char)((options >> 24) & 0x1F))
#define HAMARO_GET_RMW(options) ( (BOOL) ( ((options & STS_MAP_RMW) >> 23) & 0x01) )
#define HAMARO_GET_WO(options) ((BOOL)((options & STS_MAP_WRITEABLE) && !(options & STS_MAP_READABLE)))
#define HAMARO_GET_RO(options) ((BOOL)((options & STS_MAP_READABLE) && !(options & STS_MAP_WRITEABLE)))
#define HAMARO_GET_RW(options) ((BOOL)((options & STS_MAP_RW) == (STS_MAP_RW)))
#define HAMARO_GET_REGACCESS(options) ((unsigned char)((options >> 21) & 0x07))
#define HAMARO_GET_NUM_BYTES_TO_READ(options) ((unsigned char)((options >> 29) & 0x07))
/* High-level STS register read/write macros */
#define STS_READ(hwreg, data) STS_RegRead(HAMARO_GET_PAGE(hwreg##_BITMAP), \
HAMARO_GET_ADDR(hwreg##_BITMAP), \
0, \
HAMARO_GET_START_BIT(hwreg##_BITMAP), \
HAMARO_GET_NUM_BIT(hwreg##_BITMAP), \
data)
#define STS_WRITE(hwreg, value) STS_RegWrite(HAMARO_GET_PAGE(hwreg##_BITMAP), \
HAMARO_GET_ADDR(hwreg##_BITMAP), \
0, \
HAMARO_GET_START_BIT(hwreg##_BITMAP), \
HAMARO_GET_NUM_BIT(hwreg##_BITMAP), \
HAMARO_GET_RMW(hwreg##_BITMAP), \
HAMARO_GET_REGACCESS(hwreg##_BITMAP), \
value)
/* High-level STS register read/write with offset macros - helps in looping */
#define STS_READ_OFFSET(hwreg, offset, data) STS_RegRead(HAMARO_GET_PAGE(hwreg##_BITMAP), \
HAMARO_GET_ADDR(hwreg##_BITMAP), \
offset, \
HAMARO_GET_START_BIT(hwreg##_BITMAP), \
HAMARO_GET_NUM_BIT(hwreg##_BITMAP), \
data)
#define STS_WRITE_OFFSET(hwreg, offset, value) STS_RegWrite(HAMARO_GET_PAGE(hwreg##_BITMAP), \
HAMARO_GET_ADDR(hwreg##_BITMAP), \
offset, \
HAMARO_GET_START_BIT(hwreg##_BITMAP), \
HAMARO_GET_NUM_BIT(hwreg##_BITMAP), \
HAMARO_GET_RMW(hwreg##_BITMAP), \
HAMARO_GET_REGACCESS(hwreg##_BITMAP), \
value)
/* DEBUG MACROS */
#if (0)
#if HAMARO_WIN_DEBUG
#define STSDBG_WR_INT_LN(str, val) (WINDBG_WriteIntegerLn((char*)(str), val))
#define STSDBG_WR_INT(str, val) (WINDBG_WriteInteger((char*)(str), val))
#define STSDBG_WR_HEX(str, val) (WINDBG_WriteHex((char*)(str), val))
#define STSDBG_WR_UNSIGNED_LN(str, val) (WINDBG_WriteUnsignedLn((char*)(str), val))
#define STSDBG_WR_UNSIGNED(str, val) (WINDBG_WriteUnsigned((char*)(str), val))
#define STSDBG_WR_STR(str, nl) (WINDBG_WriteString((char*)(str), nl))
#define STSDBG_WR_ELAPSED_TIME() (WINDBG_FileWriteDuration())
#define STSDBG_WR_ELAPSED_TIME_MSEC() (WINDBG_FileWriteDurationMilliSec())
#define STSDBG_START_TIMER() (WINDBG_SetTimer()) /* used for time measurements */
#else // HAMARO_WIN_DEBUG
#define STSDBG_WR_INT_LN(str, val) /* Expands to nothing */
#define STSDBG_WR_INT(str, val) /* Expands to nothing */
#define STSDBG_WR_UNSIGNED_LN(str, val) /* Expands to nothing */
#define STSDBG_WR_UNSIGNED(str, val) /* Expands to nothing */
#define STSDBG_WR_STR(str, nl) /* Expands to nothing */
#define STSDBG_WR_ELAPSED_TIME() /* Expands to nothing */
#define STSDBG_WR_ELAPSED_TIME_MSEC() /* Expands to nothing */
#define STSDBG_START_TIMER() /* Expands to nothing */
#endif /* HAMARO_WIN_DEBUG */
#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* FSM */
extern FSM sts_fsm;
/* Measurement */
extern BOOL STS_ScanStart(unsigned long lower_freq_limit_hz, unsigned long upper_freq_limit_hz);
extern BOOL STS_ScanMonitor(BOOL* p_done);
extern BOOL STS_ScanStop();
extern BOOL STS_GetStatus(HAMARO_STS_STATUS* p_status);
extern BOOL STS_UpdateProgress(HAMARO_STS_PROGRESS state_value);
extern BOOL STS_UpdateState(HAMARO_STS_MODULE_STATE value);
extern BOOL STS_GetLastFreq(unsigned long* p_last_freq);
extern BOOL STS_GetFirstFreq(unsigned long* p_first_freq);
extern BOOL STS_GetFilledBufferLength(unsigned short* p_buffer_length);
extern void STS_AdjustFilledBufferLengthToPower2();
extern BOOL STS_GetBuffers(unsigned short* p_power_reading,
unsigned long* p_abs_freq_reading,
unsigned short buffer_length);
extern BOOL STS_GetAGC(signed char* p_agcacc);
extern void STS_LogPowerSpectrum(); /* this is DEBUG only */
extern void STS_SetPowerSpectrumLogFormat(unsigned char format);
/* Init */
extern void STS_SetUseMainBuffer(BOOL b_use_main);
extern BOOL STS_MeasurementIterInit(unsigned short start_index);
/* Filters */
extern unsigned short STS_IIRFilter(unsigned short curr_power_reading);
extern unsigned short STS_MovingAverageFilter(unsigned short curr_power_reading);
/* Analysis */
extern HAMARO_STS_PATTERN STS_PatternTest (unsigned short power_sample_left,
unsigned short power_sample_middle,
unsigned short power_sample_right,
signed short delta);
extern HAMARO_STS_CURVATURE STS_CurvatureTest(unsigned short power_sample_left,
unsigned short power_sample_middle,
unsigned short power_sample_right,
signed short threshold);
extern HAMARO_STS_CURVATURE STS_BinSearchCurvatureTest(unsigned short power_sample_left,
unsigned short power_sample_middle,
unsigned short power_sample_right,
signed short threshold);
extern unsigned short STS_GetPatternDelta();
extern void STS_ResetCurvaturePoints(HAMARO_STS_CURVATURE_POINTS* p_findrange_curvature, unsigned short edge);
extern void STS_UpdateRiseCurvaturePoints(HAMARO_STS_CURVATURE_POINTS* p_findrange_curvature,
HAMARO_STS_CURVATURE curvature);
extern void STS_UpdateFallCurvaturePoints(HAMARO_STS_CURVATURE_POINTS* p_findrange_curvature,
HAMARO_STS_CURVATURE curvature);
/* Iterators */
extern BOOL STS_MeasurementIterNext(unsigned short step);
extern BOOL STS_MeasurementIterPrev(unsigned short step);
extern void STS_MoveExInit(unsigned short max_buffer_length);
extern void STS_StartAllOver(unsigned short step, unsigned short start_index);
extern BOOL STS_JumpToPowerLevel(unsigned short start_point_power, unsigned short start_point_index, unsigned short* p_index);
extern unsigned short STS_GetIndexFromFreq(unsigned long freq);
extern unsigned short STS_GetPowerFromIndex(unsigned short index);
extern unsigned short STS_GetSampleIndexEx(unsigned char selection);
extern void STS_MoveLeft();
extern BOOL STS_MoveLeftEx();
extern void STS_MoveRight();
extern BOOL STS_MoveRightEx();
extern BOOL STS_StepForward();
extern BOOL STS_StepBackward();
extern void STS_SetStep(unsigned short step);
extern HAMARO_STS_SAMPLE* STS_GetSamples();
extern void STS_SetNoDoubleStep();
extern void STS_ResetNoDoubleStep();
extern BOOL STS_GetNoDoubleStep();
extern unsigned long STS_GetLeftInflectionPoint();
extern unsigned long STS_GetRightInflectionPoint();
extern unsigned short STS_GetMaxMainBufferLength();
extern BOOL STS_GetUseMainBuffer();
extern unsigned long STS_GetLastCarrierFreqHz();
/* Edge detection */
extern unsigned short STS_GetEdge();
extern void STS_SetEdge(unsigned short edge);
/* Channel parameter extraction */
extern unsigned short STS_GetMaxChannels();
extern BOOL STS_GetChannel(unsigned short index, HAMARO_STS_CHANNEL_INFO* p_channel_info);
extern BOOL STS_SetChannel(HAMARO_STS_CHANNEL_INFO channel_info, unsigned short index);
extern BOOL STS_ChangeChannel(HAMARO_CHANOBJ* p_channel_object);
extern BOOL STS_GetLockIndicators(HAMARO_LOCKIND* p_lockinds);
extern BOOL STS_ProgramAFC(unsigned long afc_val);
extern BOOL STS_GetBTL(long* p_btl);
extern BOOL STS_BTLAccumClearSelect(unsigned char selection);
extern BOOL STS_GetViterbiRate(HAMARO_CODERATE* p_coderate);
extern BOOL STS_GetAcquisitionOffset(long* p_acq_offset);
extern BOOL STS_GetSpectralInversion(HAMARO_SPECINV* p_specinv);
/* added by sunbey */
extern void STS_setBTLLockThdAndGain(unsigned long threshold, unsigned long gain);
extern void STS_setBTLLockIncDec(unsigned long inc, unsigned long dec);
extern void STS_BTLLockInitReg();
extern BOOL STS_GetBTLLockIndicator( unsigned char *Indicator );
extern void STS_BTLLockClear( void );
/* Debug */
extern void STS_LogMainPowerSpectrum();
#ifdef __cplusplus
}
#endif
#endif /* HAMARO_SCAN_THE_SKY */
#endif /* _HAMARO_STS_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -