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

📄 hamaro_sts.h

📁 机顶盒Hamaro解调器驱动。包含自动搜台
💻 H
📖 第 1 页 / 共 2 页
字号:
    /* 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 + -