📄 hamaro_sts.h
字号:
/* hamaro_sts.h */
/*+++ *******************************************************************\
*
* Abstract:
*
* Hamaro Scan-the-sky Main FSM header.
*
* Created: 07/15/2005
*
*
* Copyright and Disclaimer:
*
* ---------------------------------------------------------------
* This software is provided "AS IS" without warranty of any kind,
* either expressed or implied, including but not limited to the
* implied warranties of noninfringement, merchantability and/or
* fitness for a particular purpose.
* ---------------------------------------------------------------
*
* Author: Amar Puttur
*
* Module Revision Id:
*
* $Header: hamaro_sts.h, 7, 2006-10-20 7:15:10, Sunbey (VSS Migration)$
*
* Copyright (c) 2005 Conexant Systems, Inc.
* All rights reserved.
*
\******************************************************************* ---*/
#ifndef _HAMARO_STS_H_
#define _HAMARO_STS_H_
#include "hamaro.h"
#include "hamaro_defs.h"
#include "hamaro_fsm.h"
#if HAMARO_WIN_DEBUG
#include "hamaro_windbg.h" /* debug */
#endif /* HAMARO_WIN_DEBUG*/
#if HAMARO_SCAN_THE_SKY
#define STS_MAX_NUM_OF_SCAN_SEGMENTS 32
#define STS_MAX_INDEX (450 * STS_MAX_NUM_OF_SCAN_SEGMENTS)
#define STS_MAX_SCAN_REFRESH_CYCLES 10
#define STS_MAX_SUB_INDEX 500
#define STS_MAX_SYMBOL_RATE_MHZ 45
#define STS_MIN_SYMBOL_RATE_MHZ 1
/* match filter */
#define STS_MATCH_FILTER_CONSTANT 80
#define STS_MAX_MATCH_FILTER_CLK_MHZ 45
#define STS_MIN_MATCH_FILTER_CLK_MHZ 1
#define STS_MATCH_FILTER_CLK_MAIN (4) //30 /* main buffer */
#define STS_MATCH_FILTER_CLK_SUB 4 /* sub buffer */
/* scan parameters for main buffer */
#define STS_STEP_SIZE_KHZ_MAIN 100
#define STS_SEARCH_SPAN_MHZ_MAIN 38
#define STS_START_FREQ_HZ 950000000
/* scan parameters for sub buffer */
#define STS_STEP_SIZE_KHZ_SUB 10
#define STS_SEARCH_SPAN_MHZ_SUB 2
#define STS_NARROW_TUNER_BW_SYMB_RATE 10
/* scan parameters for fine scan */
#define STS_STEP_SIZE_KHZ_FINE 50
#define STS_SEARCH_SPAN_MHZ_FINE 2
#define STS_NARROW_TUNER_BW_SYMB_RATE_FINE 10
/* scan */
#define STS_MIN_STEP_SIZE_KHZ 10
#define STS_MAX_STEP_SIZE_KHZ 1000
#define STS_PLL_MULT 59
#define STS_MAX_SPAN_MHZ 45
#define STS_MAX_FREQ_MEM_REGISTERS 96
#define STS_MIN_FREQ_STEP_KHZ 10
#define STS_MAX_FREQ_STEP_KHZ 1000
#define STS_MAX_SCAN_CHANNELS 200
#define STS_MAX_SCAN_CANDIDATES 200
#define STS_FINDRISE_DEFAULT_STEP_SIZE 6//4
#define STS_FINDFALL_DEFAULT_STEP_SIZE 6//4
#define STS_FALLEDGE_START_INDEX_OFFSET 0//30
#define STS_OBSERVATION_WINDOW_2POW24 (unsigned short)(15) /* 2^(24) */
#define STS_OBSERVATION_WINDOW_2POW23 (unsigned short)(14) /* 2^(23) */
#define STS_OBSERVATION_WINDOW_2POW22 (unsigned short)(13) /* 2^(22) */
#define STS_OBSERVATION_WINDOW_2POW21 (unsigned short)(12) /* 2^(21) */
#define STS_OBSERVATION_WINDOW_2POW20 (unsigned short)(11) /* 2^(20) */
#define STS_OBSERVATION_WINDOW_2POW19 (unsigned short)(10) /* 2^(19) */
#define STS_OBSERVATION_WINDOW_2POW18 (unsigned short)(9) /* 2^(9+9) */
#define STS_OBSERVATION_WINDOW_2POW17 (unsigned short)(8) /* 2^(9+8) */
#define STS_OBSERVATION_WINDOW_2POW16 (unsigned short)(7) /* 2^(9+7) */
#define STS_OBSERVATION_WINDOW_2POW15 (unsigned short)(6) /* 2^(9+6) */
#define STS_OBSERVATION_WINDOW_2POW14 (unsigned short)(5) /* 2^(9+5) */
#define STS_OBSERVATION_WINDOW_2POW13 (unsigned short)(4) /* 2^(9+4) */
#define STS_OBSERVATION_WINDOW_2POW12 (unsigned short)(3) /* 2^(9+3) */
#define STS_OBSERVATION_WINDOW_2POW11 (unsigned short)(2) /* 2^(9+2) */
#define STS_OBSERVATION_WINDOW_2POW10 (unsigned short)(1) /* 2^(9+1) */
#define STS_OBSERVATION_WINDOW_2POW09 (unsigned short)(0) /* 2^(9+0) */
#define STS_MAX_OBSERVATION_WINDOW_INDEX (16)
#define STS_OBERVATION_WINDOW_MAIN (STS_OBSERVATION_WINDOW_2POW18)
#define STS_OBERVATION_WINDOW_SUB (STS_OBSERVATION_WINDOW_2POW18)
/* Timeouts */
#define STS_WAIT_FOR_MEASUREMENT_TIMEOUT (10)
/* selection */
#define STS_SAMPLE_LEFT (unsigned char)0
#define STS_SAMPLE_MIDDLE (unsigned char)1
#define STS_SAMPLE_RIGHT (unsigned char)2
/* limits */
#define TUNER_LOW_LIMIT 950000000UL
#define TUNER_HIGH_LIMIT 2150000000UL
#define SCAN_LOW_LIMIT 940000000UL
#define SCAN_HIGH_LIMIT 2160000000UL
/* constants */
#define STS_PATTERN_TEST_DELTA (short)(0)
#define STS_PATTERN_DELTA_CONSTANT (unsigned short)(128)
#define STS_POWER_THRESH (int)1500
#define STS_METRIC_THRESH (int)200000
#define STS_MIN_PATTERN_DELTA (unsigned short)(75)
#define STS_CURVATURE_TEST_THRESH 0
#define STS_RIGHT_INFLECTION_POWER_THRESH 2000 /* left inflection point plus this constant */
/* register map */
#define STS_BASE_ADDRESS 0x304E1000
#define HAMARO_BASE_ADDRESS 0x304E0000
#define STS_PAGE_MASK 0x00000300
#define STS_ADDR_MASK 0x0000007F
#define STS_PAGE_0_SEL 0x00000000 /* STS registers */
#define STS_PAGE_1_SEL 0x00000100 /* Frequency memory */
#define STS_PAGE_2_SEL 0x00000200 /* Power memory */
#define STS_PAGE_3_SEL 0x00000300 /* pdmf data memory */
/* Bit check */
#define STS_REG_READABLE 0x01
#define STS_REG_WRITEABLE 0x02
/* Bitfield positions */
#define STS_MAP_READABLE 0x00200000
#define STS_MAP_WRITEABLE 0x00400000
#define STS_MAP_RW 0x00600000
#define STS_MAP_RMW 0x00800000
/* demod handle bitfields defined for SBRead/SBWrite calls */
#define STS_APPLY_BASE_ADDRESS 0x00000400 /* Specifies the host SW to use STS base address and do a STS IO */
#define STS_PAGE_NUMBER_SHIFT 11UL
/* -- Register map -- */
/* Bit positions and meaning:
* 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
* B B B N N N N N RMW W R E S S S S P P P P A A A A A A A A A A A A
*
* A = address, P = page, S = start_bit, R = Readable, W = Writable, RMW = Read-Modify-Write, N = number_of_bits, x = reserved.
* B = number of units to read [0 = default/native unit (For STS = 2 bytes), 1 = 1 byte, 2 = 2 bytes, 3 = 3 bytes and 4 = 4 bytes.].
* E = Endianism; 0 = little (0x12345678), 1 = big (0x78563412)
*/
/* - STS registers : Page0 - */
/* address = 0 */
#define STS_ENABLE_BITMAP (0x01000000|STS_MAP_RW) /* N=0x01 S=0x0 [P,A]=[0x0,0x000]; */
#define STS_FIFO_ERR_BITMAP (0x01010000|STS_MAP_READABLE) /* N=0x01 S=0x1 [P,A]=[0x0,0x000]; */
#define STS_FSM_ERR_BITMAP (0x01020000|STS_MAP_READABLE) /* N=0x01 S=0x2 [P,A]=[0x0,0x000]; */
/* address = 1 */
#define STS_CENTER_FREQ_BITMAP (0x10000001|STS_MAP_RW) /* N=0x10 S=0x0 [P,A]=[0x0,0x001]; */
/* address = 2 */
#define STS_VERSION_BITMAP (0x04000002|STS_MAP_READABLE) /* N=0x04 S=0x0 [P,A]=[0x0,0x002]; */
#define STS_TEST_MODE_BITMAP (0x01040002|STS_MAP_RW|STS_MAP_RMW) /* N=0x01 S=0x4 [P,A]=[0x0,0x002]; */
/* address = 3 */
#define STS_LEN_SEL_BITMAP (0x04000003|STS_MAP_RW|STS_MAP_RMW) /* N=0x04 S=0x0 [P,A]=[0x0,0x003]; */
#define STS_LEN_BITMAP (0x04040003|STS_MAP_READABLE) /* N=0x04 S=0x4 [P,A]=[0x0,0x003]; */
#define STS_FIFO_FILLED_4RD_BITMAP (0x01080003|STS_MAP_READABLE) /* N=0x01 S=0x8 [P,A]=[0x0,0x003]; */
/* address = 4 */
#define STS_FREQ_CNT_BITMAP (0x07000004|STS_MAP_RW) /* N=0x07 S=0x0 [P,A]=[0x0,0x004]; */
/* address = 5 */
#define STS_CLR_BITMAP (0x10000005|STS_MAP_RW) /* N=0x10 S=0x0 [P,A]=[0x0,0x005]; */
#define STS_READY_BITMAP (0x01000005|STS_MAP_READABLE) /* N=0x01 S=0x0 [P,A]=[0x0,0x005]; */
#define STS_BUSY_BITMAP (0x01010005|STS_MAP_READABLE) /* N=0x01 S=0x1 [P,A]=[0x0,0x005]; */
#define STS_AUTO_MODE_BITMAP (0x01040005|STS_MAP_RW|STS_MAP_RMW) /* N=0x01 S=0x4 [P,A]=[0x0,0x005]; */
/* address = 6 */
#define STS_READY_CLR_BITMAP (0x01000006|STS_MAP_WRITEABLE) /* N=0x01 S=0x0 [P,A]=[0x0,0x006]; */
#define STS_ERR_CLR_BITMAP (0x01010006|STS_MAP_WRITEABLE) /* N=0x01 S=0x1 [P,A]=[0x0,0x006]; */
/* - STS frequency memory registers : Page1 - */
#define STS_FREQ_MEM0_BITMAP (0x0C001000|STS_MAP_RW) /* N=0x0C S=0x0 [P,A]=[0x1,0x000]; */
/* - STS power memory registers : Page2 - */
#define STS_POWER_ACCUM_SCALED_BITMAP (0x10002000|STS_MAP_READABLE) /* N=0x10 S=0x0 [P,A]=[0x2,0x000]; */
/* Patterns */
typedef enum _pattern
{
PATTERN_UNKNOWN=0,
PATTERN_UPHILL,
PATTERN_DOWNHILL,
PATTERN_FLAT,
PATTERN_PEAK,
PATTERN_TROUGH
} HAMARO_STS_PATTERN;
/*******************************************************************************************************/
/* HAMARO_STS_PROGRESS */
/*******************************************************************************************************/
typedef enum _hamaro_sts_progress { /* Scan-the-sky progress */
HAMARO_STS_POWER_METER_SCAN=1, /* Get power spectrum for 950-2150MHz span */
HAMARO_STS_PROCESSING_BUFFER, /* Processing power spectrum buffer data */
HAMARO_STS_CHANNEL_SENSING, /* Spectrum analysis to get coarse channel parameters - CF and SR */
HAMARO_STS_CHANNEL_EXTRACTION, /* Symbol rate binning to get all channel parameters - fine CF, fine SR, CR, SI, etc */
HAMARO_STS_COMPLETE, /* Scan-the-sky complete */
HAMARO_STS_PROGRESS_UNDEF=0
} HAMARO_STS_PROGRESS;
/*******************************************************************************************************/
/* HAMARO_STS_MODULE_STATE */
/*******************************************************************************************************/
typedef enum _hamaro_sts_module_state {
HAMARO_STS_MODULE_OFF=1, /* Scan-the-sky is disabled (demod can be operated) */
HAMARO_STS_MODULE_ON, /* Scan-the-sky is enabled (demod cannot be operated) */
HAMARO_STS_MODULE_UNDEF=0
} HAMARO_STS_MODULE_STATE;
/* Curvatures */
typedef enum _curvature
{
CURVATURE_UNKNOWN=0,
CURVATURE_CONCAVE,
CURVATURE_CONVEX,
CURVATURE_STRAIGHT
} HAMARO_STS_CURVATURE;
typedef struct _hamaro_sts_status_
{
HAMARO_STS_PROGRESS progress;
HAMARO_STS_MODULE_STATE module_state;
} HAMARO_STS_STATUS;
/* STS sample data */
typedef struct _hamaro_sts_sample_
{ /* freq (left, mid, right) */
unsigned long* p_freq[3];
/* power (left, mid, right) */
unsigned short* p_power[3];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -