亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hamaro_pwrscan.c

?? QPSK Tuner details, for conexant chipset.
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* hamaro_pwrscan.c */
/*+++ *******************************************************************\
*
*  Abstract:
*
*       Hamaro Power Scan FSM implementation.
*
*  Created: 12/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_pwrscan.c, 1, 12/15/2005 1:43:00 PM, Amar Puttur$
*
*     Copyright (c) 2005, 2006 Conexant Systems, Inc. 
*     All rights reserved. 
*
\******************************************************************* ---*/
#include <stdlib.h> /* ANSI Standard */
#include <time.h> 

#include "hamaro_sts.h"

#if HAMARO_SCAN_THE_SKY

#include "hamaro_pwrscan.h"
#include "hamaro_fsm.h"
#include "kal.h"

#define  PWRSCAN_USE_EXTERNAL_POWER_SPECTRUM_FILE       0
#define  STS_ENABLE_VERBOSE_LOG                         0

#if PWRSCAN_USE_EXTERNAL_POWER_SPECTRUM_FILE
#include <stdio.h>
#endif /* PWRSCAN_USE_EXTERNAL_POWER_SPECTRUM_FILE */


#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_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_START_TIMER()               /* Expands to nothing */

#endif /* HAMARO_WIN_DEBUG */

extern unsigned long sts_fsm_coding; 
FSM pwr_scan_fsm = {&sts_fsm_coding, 0xF0000000, 0, 0, 0, 0}; 

extern void STS_ParsePowerDataInMainBuffer();
extern void STS_CheckCandidateWithStitcheddata();

static HAMARO_PWRSCAN_DATA s_power_scan_data;

static unsigned short* p_power_reading = 0;
static unsigned long*  p_freq_reading = 0;
static signed   char*  p_agcacc = 0;
static unsigned short* p_filled_buffer_length = 0;
static unsigned short* p_max_pwr_reading = 0;

//extern HAMARO_STS_POWER_SPECTRUM_DATA  s_power_spectrum_data;
//extern HAMARO_STS_POWER_SPECTRUM_DATA  *s_power_spectrum_data_base;
#define s_power_spectrum_data_base HWBUF_DEC_BUF0_ADDR
#define s_power_spectrum_data  (*(HAMARO_STS_POWER_SPECTRUM_DATA *)s_power_spectrum_data_base)


/* static */ HAMARO_PWRSCAN_BUFFER_INFO s_pwrscan_buffer_info[STS_MAX_NUM_OF_SCAN_SEGMENTS];
static unsigned short s_buffer_info_index;
static unsigned short s_scaled_max_power_reading = 0;

static BOOL s_aagc_filter = True;
static BOOL s_continue_scan = False;
static BOOL s_stop = False;
static long  fsample = PWRSCAN_SAMPLE_RATE;

/*****************************************************************************/
/*                          POWER SCAN FSM                                   */
/*****************************************************************************/
/* Function prototypes */
/* Power scan: Reset state */
static void   PWRSCAN_ResetEnter();

static BOOL   PWRSCAN_Reset2TuneCriterion();
static STATE* PWRSCAN_Reset2Tune();

static BOOL   PWRSCAN_Reset2AbortCriterion();
static STATE* PWRSCAN_Reset2Abort();

/* Power scan: Tune state */
static void   PWRSCAN_TuneEnter();

static BOOL   PWRSCAN_Tune2StartCriterion(); 
static STATE* PWRSCAN_Tune2Start();
static BOOL   PWRSCAN_Tune2AbortCriterion();
static STATE* PWRSCAN_Tune2Abort();

/* Power scan: Start state */
static void   PWRSCAN_StartEnter();

static BOOL   PWRSCAN_Start2StepCriterion();
static STATE* PWRSCAN_Start2Step();

static BOOL   PWRSCAN_Start2AbortCriterion();
static STATE* PWRSCAN_Start2Abort();

/* Power scan: Step state */
static void   PWRSCAN_StepEnter();
static void   PWRSCAN_Step();

static BOOL   PWRSCAN_Step2StopCriterion();
static STATE* PWRSCAN_Step2Stop();

static BOOL   PWRSCAN_Step2AbortCriterion();
static STATE* PWRSCAN_Step2Abort();

/* Power scan: Stop state */
static void   PWRSCAN_StopEnter();

static BOOL   PWRSCAN_Stop2ReadyCriterion();
static STATE* PWRSCAN_Stop2Ready();
static BOOL   PWRSCAN_Stop2TuneCriterion();
static STATE* PWRSCAN_Stop2Tune();

/* Power scan: Abort state */
static void   PWRSCAN_AbortEnter();

/* Power scan: Ready state */
static void   PWRSCAN_ReadyEnter();


/* State tables */
STATE pwrscan_reset_state = /* PWRSCAN FSM, RESET state */
{
	PWRSCAN_ResetEnter, /* Entry task */
   	{
      	{PWRSCAN_Reset2TuneCriterion,  PWRSCAN_Reset2Tune},      
        {PWRSCAN_Reset2AbortCriterion, PWRSCAN_Reset2Abort},
      	{0,0} /* End of Criterion/Exit task */
   	},
   	0, /* Regular/Routine task */
   	0, /* No counter */
   	PWRSCAN_RESET_STATE /* state code */	
};


STATE pwrscan_tune_state = /* PWRSCAN FSM, TUNE state */
{
	PWRSCAN_TuneEnter, /* Entry task */
   	{
        {PWRSCAN_Tune2AbortCriterion, PWRSCAN_Tune2Abort},   /* higher priority */
      	{PWRSCAN_Tune2StartCriterion, PWRSCAN_Tune2Start},   
      	{0,0} /* End of Criterion/Exit task */
   	},
   	0, /* Regular/Routine task */
   	0, /* No counter */
   	PWRSCAN_TUNE_STATE /* state code */	
};


STATE pwrscan_start_state = /* PWRSCAN FSM, START state */
{
    PWRSCAN_StartEnter, /* Entry task */
    {
        {PWRSCAN_Start2AbortCriterion, PWRSCAN_Start2Abort}, /* higher priority */
        {PWRSCAN_Start2StepCriterion,  PWRSCAN_Start2Step},
        {0,0} 
    },
    0, /* Regular task */
    0,
    PWRSCAN_START_STATE
};


STATE pwrscan_step_state = /* PWRSCAN FSM, STEP state */
{
    PWRSCAN_StepEnter, /* Entry task */
    {
        {PWRSCAN_Step2AbortCriterion, PWRSCAN_Step2Abort},   /* higher priority */
        {PWRSCAN_Step2StopCriterion,  PWRSCAN_Step2Stop},
        {0,0} 
    },
    PWRSCAN_Step,      /* Regular task */
    0,
    PWRSCAN_STEP_STATE
};


STATE pwrscan_stop_state = /* PWRSCAN FSM, STOP state */
{
	PWRSCAN_StopEnter, /* Entry task */
   	{
        {PWRSCAN_Stop2ReadyCriterion, PWRSCAN_Stop2Ready},
        {PWRSCAN_Stop2TuneCriterion,  PWRSCAN_Stop2Tune},
   		{0,0} /* End of Criterion/Exit task */
   	},
   	0, /* Regular/Routine task */
   	0, /* No counter */
   	PWRSCAN_STOP_STATE 
};


STATE pwrscan_ready_state = /* PWRSCAN FSM, READY state */
{
	PWRSCAN_ReadyEnter, /* Entry task */
   	{
   		{0,0} /* End of Criterion/Exit task */
   	},
   	0, /* Regular/Routine task */
   	0, /* No counter */
   	PWRSCAN_READY_STATE /* state code (uses bits [11:8] position) */	
};


STATE pwrscan_abort_state = /* PWRSCAN FSM, ABORT state */
{
	PWRSCAN_AbortEnter, /* Entry task */
   	{
   		{0,0} /* End of Criterion/Exit task */
   	},
   	0, /* Regular/Routine task */
   	0, /* No counter */
   	PWRSCAN_ABORT_STATE /* state code (uses bits [11:8] position) */	
};

/*****************************************************************************/

/*****************************************************************************/
/* PWRSCAN_Start() */
/* Main FSM function  */
/*****************************************************************************/
void 
PWRSCAN_Start(FSM *fsm, HAMARO_PWRSCAN_INPUT* p_power_scan_input)
{
    if (p_power_scan_input == 0)
    {
        return;
    }

    memcpy(&s_power_scan_data.power_scan_input, p_power_scan_input, sizeof(HAMARO_PWRSCAN_INPUT));

    fsm->p_curr = &pwrscan_reset_state; 
}


/*****************************************************************************/
/* PWRSCAN_ResetBuffers() */
/*****************************************************************************/
static BOOL
PWRSCAN_ResetBuffers()
{
    if (STS_GetUseMainBuffer() == True)
    {
        memset(&s_power_spectrum_data.power[0],   0, sizeof(unsigned short)*(STS_MAX_INDEX-1));
        memset(&s_power_spectrum_data.abs_freq[0],0, sizeof(unsigned long)*(STS_MAX_INDEX-1));
        memset(&s_pwrscan_buffer_info, 0, sizeof(HAMARO_PWRSCAN_BUFFER_INFO) * STS_MAX_NUM_OF_SCAN_SEGMENTS);
        s_power_spectrum_data.filled_buffer_len = 0;
        s_power_spectrum_data.agcacc = 0;
        s_buffer_info_index = 0;
    }
    else
    {
        memset(&s_power_spectrum_data.sub_power[0],   0, sizeof(unsigned short)*(STS_MAX_SUB_INDEX-1));
        memset(&s_power_spectrum_data.sub_abs_freq[0],0, sizeof(unsigned long)*(STS_MAX_SUB_INDEX-1));
        s_power_spectrum_data.filled_sub_buffer_len = 0;
        s_power_spectrum_data.sub_agcacc = 0;
    }        
    return (True);
}

void
PWRSCAN_SetAAGCFilter(BOOL value) /* True = apply filter; False = do not apply filter */
{
    if (value == True)
    {
        STSDBG_WR_STR("PWRSCAN_SetAAGCFilter::AAGC FILTER IS ON", True);
    }
    else
    {
        STSDBG_WR_STR("PWRSCAN_SetAAGCFilter::AAGC FILTER IS OFF", True);
    }
    s_aagc_filter = value;
}

static BOOL
PWRSCAN_IsAAGCFilter() /* True = apply filter; False = do not apply filter */
{
    return (s_aagc_filter);
}

/* MUST BE USED ONLY IN THE SCAN_THE_SKY MODULE */
BOOL
PWRSCAN_AAGCControl(BOOL freeze)
{
    if (freeze == True)
    {
        (hamaro_nim_list.nim[0]->SBWrite)(hamaro_nim_list.nim[0]->demod_handle, 0x72, 0x01, &hamaro_nim_list.nim[0]->iostatus);
        if (hamaro_nim_list.nim[0]->iostatus != 0UL)  return(False);
    }
    else
    {
        (hamaro_nim_list.nim[0]->SBWrite)(hamaro_nim_list.nim[0]->demod_handle, 0x72, 0xFF, &hamaro_nim_list.nim[0]->iostatus);
        if (hamaro_nim_list.nim[0]->iostatus != 0UL)  return(False);
        (hamaro_nim_list.nim[0]->SBWrite)(hamaro_nim_list.nim[0]->demod_handle, 0x72, 0x00, &hamaro_nim_list.nim[0]->iostatus);
        if (hamaro_nim_list.nim[0]->iostatus != 0UL)  return(False);
    }
    return True;
}

BOOL
PWRSCAN_BTLAccClear()
{   /* Main Accum = 0x02, Sub Accum = 0x00 */
    (hamaro_nim_list.nim[0]->SBWrite)(hamaro_nim_list.nim[0]->demod_handle, 0x3A, 0x08, &hamaro_nim_list.nim[0]->iostatus);
    if (hamaro_nim_list.nim[0]->iostatus != 0UL)  return(False);

    (hamaro_nim_list.nim[0]->SBWrite)(hamaro_nim_list.nim[0]->demod_handle, 0x3B, 0x00, &hamaro_nim_list.nim[0]->iostatus);
    if (hamaro_nim_list.nim[0]->iostatus != 0UL)  return(False);

    return True;
}

/* END OF - MUST BE USED ONLY IN THE SCAN_THE_SKY MODULE - */

BOOL
PWRSCAN_IsBufferEmpty()
{
    if (STS_GetUseMainBuffer() == True)
    {
        if (s_power_spectrum_data.filled_buffer_len == 0)
        {
            return (True);
        }
    }
    else
    {
        if (s_power_spectrum_data.filled_sub_buffer_len == 0)
        {
            return (True);
        }
    }
    return (False);
}

/*****************************************************************************/
/* PWRSCAN_GetMaxNumberSets() */
/*****************************************************************************/
static unsigned short
PWRSCAN_GetMaxNumberSets(unsigned char search_span_mhz, unsigned short number_freq_cnt, unsigned long step_size_hz)
{
    return ( (unsigned short) ( (((unsigned long)search_span_mhz * 1000000UL) + 500000UL) / ((unsigned long)number_freq_cnt * step_size_hz) ) );
}

static unsigned short
PWRSCAN_GetNumFreqCount(unsigned char match_filter_clk_mhz, unsigned short desired_step_size_khz)
{
    unsigned long constraint1, constraint2;

    STSDBG_WR_INT_LN("match_filter_clk_hz = ", match_filter_clk_mhz);
    STSDBG_WR_INT_LN("desired_step_size_khz = ", desired_step_size_khz);

    constraint1 = STS_MATCH_FILTER_CONSTANT/match_filter_clk_mhz;
    STSDBG_WR_INT_LN("constraint1 = ", constraint1);

    /* (((0.25 * mfclk_mhz) * 2)/step_size) + 1 */
    constraint2 = ((((250 * (match_filter_clk_mhz*1000)) * 2) / desired_step_size_khz)/1000) + 1;
    STSDBG_WR_INT_LN("constraint2 = ", constraint2);
#if HAMARO_WIN_DEBUG
    WINDBG_FileWriteNewLine();
#endif /* HAMARO_WIN_DEBUG */   

    if (constraint1 < constraint2)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费精品视频在线| 欧美人狂配大交3d怪物一区| 风间由美一区二区av101 | 欧美午夜一区二区三区免费大片| 91国产免费观看| 精品少妇一区二区三区免费观看| 国产精品色哟哟网站| 美女爽到高潮91| 色综合久久久网| 久久精品网站免费观看| 亚洲线精品一区二区三区八戒| 久久精品国产成人一区二区三区 | 国产欧美一区二区精品婷婷| 午夜电影网一区| av在线播放一区二区三区| 91精品国产入口| 亚洲国产精品嫩草影院| 丁香网亚洲国际| 2019国产精品| 狠狠网亚洲精品| 91精品午夜视频| 亚洲成a人片在线观看中文| 成人av在线影院| 国产午夜精品久久| 精品一区二区免费视频| 欧美日本在线视频| 亚洲小说春色综合另类电影| 成人av片在线观看| 中文字幕一区在线观看视频| 国产不卡在线一区| 国产精品久久久久久久久免费樱桃| 国内外成人在线视频| 日韩欧美国产一区二区三区 | 美女一区二区三区在线观看| 在线视频你懂得一区| 亚洲精品视频免费观看| av中文字幕在线不卡| 中文字幕中文字幕在线一区| 丰满岳乱妇一区二区三区| 久久久久久久久久久久久女国产乱| 久久99精品一区二区三区三区| 精品国产乱码久久久久久图片| 久久er99精品| 久久精品夜夜夜夜久久| 国产成a人亚洲| 亚洲婷婷综合久久一本伊一区| 成人av在线网| 亚洲在线免费播放| 欧美欧美欧美欧美首页| 久久精品免费看| 国产亚洲欧美日韩在线一区| 成人在线综合网| 亚洲视频一区二区免费在线观看| 在线日韩av片| 裸体一区二区三区| 国产色91在线| 91丨porny丨蝌蚪视频| 亚洲区小说区图片区qvod| 欧美日韩精品三区| 狠狠色丁香久久婷婷综合_中| 国产亚洲精品7777| 91天堂素人约啪| 首页国产欧美久久| 久久久久久黄色| 日本精品一区二区三区四区的功能| 亚洲国产精品影院| 久久久久久久综合色一本| 91麻豆精品秘密| 日韩精品一卡二卡三卡四卡无卡| 精品日韩在线观看| 91在线视频播放| 麻豆精品在线观看| 国产精品国产三级国产aⅴ无密码| 欧美日韩国产美女| 国产福利91精品一区二区三区| 亚洲欧美成aⅴ人在线观看| 337p亚洲精品色噜噜| 成人激情av网| 蜜臀av一区二区| 亚洲人成网站在线| 日韩欧美中文字幕一区| 99re成人精品视频| 精品一区二区三区影院在线午夜 | 久久综合国产精品| 精品视频全国免费看| 精品一区精品二区高清| 亚洲美女偷拍久久| 久久久亚洲精品石原莉奈 | 成人av网站免费| 麻豆成人91精品二区三区| 亚洲人成电影网站色mp4| 欧美精品一区二区三区蜜臀| 在线观看亚洲成人| 成人免费视频视频在线观看免费 | 亚洲精品写真福利| 久久精品亚洲一区二区三区浴池| 欧美精品日日鲁夜夜添| 91浏览器打开| 99免费精品在线观看| 久久丁香综合五月国产三级网站| 一个色在线综合| 亚洲色欲色欲www在线观看| 久久久久久久国产精品影院| 日韩三级电影网址| 欧美精品1区2区3区| 欧美综合色免费| 99re6这里只有精品视频在线观看| 久久精品国产亚洲一区二区三区| 一区二区三区四区激情| 亚洲女人****多毛耸耸8| 亚洲欧洲av一区二区三区久久| 久久久久久久网| 日本一区免费视频| 久久蜜桃av一区二区天堂| 久久这里都是精品| 久久尤物电影视频在线观看| 日韩午夜中文字幕| 日韩视频在线你懂得| 欧美一区二区三区性视频| 91精品国产综合久久香蕉麻豆| 91精品国产麻豆国产自产在线| 欧美熟乱第一页| 欧美日韩在线观看一区二区 | 亚洲国产视频在线| 亚洲一级二级在线| 亚洲伊人伊色伊影伊综合网| 亚洲一区在线播放| 视频一区欧美日韩| 美女看a上一区| 国内精品国产成人| 国产成人午夜电影网| 不卡的电影网站| 一本高清dvd不卡在线观看| 在线日韩国产精品| 4438x成人网最大色成网站| 欧美一区二区在线免费观看| 欧美成人艳星乳罩| 日本一区二区三区四区在线视频| 亚洲日本青草视频在线怡红院| 亚洲国产精品视频| 精品无人区卡一卡二卡三乱码免费卡| 黄色日韩网站视频| 91在线视频播放地址| 欧美久久高跟鞋激| 欧美国产乱子伦| 樱桃国产成人精品视频| 日韩中文字幕不卡| 国产成人亚洲综合a∨婷婷图片| 白白色 亚洲乱淫| 欧美美女直播网站| 精品国内二区三区| 成人免费小视频| 日本不卡一区二区三区高清视频| 精品夜夜嗨av一区二区三区| av一区二区不卡| 日韩一级大片在线观看| 亚洲国产精品成人综合色在线婷婷| 亚洲黄色av一区| 国产一区视频在线看| 色综合天天综合给合国产| 日韩一区二区在线播放| 国产精品福利电影一区二区三区四区| 日韩精品国产欧美| 97精品久久久久中文字幕 | 日韩专区在线视频| 成人免费看视频| 91精品国产综合久久福利| 国产亚洲午夜高清国产拍精品| 亚洲一级二级在线| 99久久国产免费看| 久久综合一区二区| 亚洲成人免费视| 成人免费av资源| 日韩女同互慰一区二区| 亚洲精品国产a| 粉嫩在线一区二区三区视频| 欧美精品乱人伦久久久久久| 亚洲免费在线看| 国产成人aaa| 欧美videos大乳护士334| 亚洲最大成人综合| 成人综合婷婷国产精品久久蜜臀 | 99精品视频在线播放观看| 91精品国产全国免费观看| 亚洲激情成人在线| 99精品国产热久久91蜜凸| 国产亚洲一区二区在线观看| 久久国产三级精品| 欧美精品乱码久久久久久| 一区二区三区在线观看网站| 国产精品亚洲第一| 久久久99精品久久| 国产成人在线免费| 久久久综合视频| 国内精品久久久久影院薰衣草| 欧美一区永久视频免费观看| 亚洲午夜精品久久久久久久久| 色欧美乱欧美15图片| 综合久久久久久| 97国产精品videossex|