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

📄 hamaro_sts.c

📁 机顶盒Hamaro解调器驱动。包含自动搜台
💻 C
📖 第 1 页 / 共 5 页
字号:
    }

    if (s_iter <= *p_filled_buffer_length-1)
    {
        return p_freq_reading[s_iter];
    }
    return 0;
}

/*****************************************************************************/
/* STS_GetRightFreqMeasurement()  */
/*****************************************************************************/
unsigned long 
STS_GetRightFreqMeasurement(unsigned short step)
{
    unsigned long* p_freq_reading = 0;
    unsigned short* p_filled_buffer_length = 0;

    if (STS_GetUseMainBuffer() == True)
    {
        p_freq_reading = &s_power_spectrum_data.abs_freq[0]; 
        p_filled_buffer_length = &s_power_spectrum_data.filled_buffer_len;
    }
    else
    {
        p_freq_reading = &s_power_spectrum_data.sub_abs_freq[0]; 
        p_filled_buffer_length = &s_power_spectrum_data.filled_sub_buffer_len;
    }

    if ((s_iter+step) <= (*p_filled_buffer_length-1))
    {
        return p_freq_reading[s_iter+step];
    }
    return 0;
}


/*****************************************************************************/
/* STS_GetLeftPowerMeasurement()  */
/*****************************************************************************/
unsigned short 
STS_GetLeftPowerMeasurement(unsigned short step)
{
    unsigned short* p_power_reading = 0;

    if (STS_GetUseMainBuffer() == True)
    {
        p_power_reading = &s_power_spectrum_data.power[0]; 
    }
    else
    {
        p_power_reading = &s_power_spectrum_data.sub_power[0]; 
    }

    if (s_iter >= step)
    {
        return p_power_reading[s_iter-step];
    }
    return 0;
}

/*****************************************************************************/
/* STS_GetMiddlePowerMeasurement()  */
/*****************************************************************************/
unsigned short 
STS_GetMiddlePowerMeasurement()
{
    unsigned short* p_power_reading = 0;
    unsigned short* p_filled_buffer_length = 0;

    if (STS_GetUseMainBuffer() == True)
    {
        p_power_reading = &s_power_spectrum_data.power[0]; 
        p_filled_buffer_length = &s_power_spectrum_data.filled_buffer_len;
    }
    else
    {
        p_power_reading = &s_power_spectrum_data.sub_power[0]; 
        p_filled_buffer_length = &s_power_spectrum_data.filled_sub_buffer_len;
    }

    if (s_iter <= *p_filled_buffer_length-1)
    {
        return p_power_reading[s_iter];
    }
    return 0;
}

/*****************************************************************************/
/* STS_GetRightPowerMeasurement()  */
/*****************************************************************************/
unsigned short 
STS_GetRightPowerMeasurement(unsigned short step)
{
    unsigned short* p_power_reading = 0;
    unsigned short* p_filled_buffer_length = 0;

    if (STS_GetUseMainBuffer() == True)
    {
        p_power_reading = &s_power_spectrum_data.power[0]; 
        p_filled_buffer_length = &s_power_spectrum_data.filled_buffer_len;
    }
    else
    {
        p_power_reading = &s_power_spectrum_data.sub_power[0]; 
        p_filled_buffer_length = &s_power_spectrum_data.filled_sub_buffer_len;
    }

    if ((s_iter+step) <= (*p_filled_buffer_length-1))
    {
        return p_power_reading[s_iter+step];
    }
    return 0;
}

/*****************************************************************************/
/*****************************************************************************/
/* STS_PrintSamples */
/*  */
/*****************************************************************************/
static void
STS_PrintSamples(char* function_name)
{
    if (function_name == 0)
    {
        return;
    }

    STSDBG_WR_STR(function_name, True);

    STSDBG_WR_INT_LN("step = ", s_power_spectrum_data.s_sts_sample.step);
    STSDBG_WR_UNSIGNED("f0 = ", *s_power_spectrum_data.s_sts_sample.p_freq[0]);
    STSDBG_WR_UNSIGNED("f1 = ", *s_power_spectrum_data.s_sts_sample.p_freq[1]);
    STSDBG_WR_UNSIGNED_LN("f2 = ", *s_power_spectrum_data.s_sts_sample.p_freq[2]);

    STSDBG_WR_INT  ("p0 = ", *s_power_spectrum_data.s_sts_sample.p_power[0]);
    STSDBG_WR_INT  ("p1 = ", *s_power_spectrum_data.s_sts_sample.p_power[1]);
    STSDBG_WR_INT_LN("p2 = ", *s_power_spectrum_data.s_sts_sample.p_power[2]);
    STSDBG_WR_STR("-----------------", True);
}

/*****************************************************************************/
/* STS_GetSamples */
/*  */
/*****************************************************************************/
HAMARO_STS_SAMPLE*
STS_GetSamples()
{
    STS_PrintSamples("STS_GetSamples");
    return &s_power_spectrum_data.s_sts_sample;
}

/*****************************************************************************/
/* STS_StartAllOver */
/* If start index = 0xFFFF, point to first sample in the buffer */
/*****************************************************************************/
void
STS_StartAllOver(unsigned short step, unsigned short start_index)
{
    unsigned short* p_power_reading = 0;
    unsigned long*  p_freq_reading = 0;

    if (STS_GetUseMainBuffer() == True)
    {
        p_power_reading = &s_power_spectrum_data.power[0]; 
        p_freq_reading = &s_power_spectrum_data.abs_freq[0]; 
    }
    else
    {
        p_power_reading = &s_power_spectrum_data.sub_power[0]; 
        p_freq_reading = &s_power_spectrum_data.sub_abs_freq[0]; 
    }

    STS_MeasurementIterInit(start_index);
    s_power_spectrum_data.s_sts_sample.step = step;

    s_power_spectrum_data.s_sts_sample.p_freq[0] = &p_freq_reading[s_iter];
    s_power_spectrum_data.s_sts_sample.p_freq[1] = &p_freq_reading[s_iter-step];    
    s_power_spectrum_data.s_sts_sample.p_freq[2] = &p_freq_reading[s_iter-step*2];

    s_power_spectrum_data.s_sts_sample.p_power[0] = &p_power_reading[s_iter];
    s_power_spectrum_data.s_sts_sample.p_power[1] = &p_power_reading[s_iter-step];
    s_power_spectrum_data.s_sts_sample.p_power[2] = &p_power_reading[s_iter-step*2];
    
    STS_ResetNoDoubleStep();

    STS_PrintSamples("--STS_StartAllOver");
}

/*****************************************************************************/
/* STS_SetDoubleStep */
/*  */
/*****************************************************************************/
BOOL s_no_double_step = False;
void
STS_SetNoDoubleStep()
{
    s_no_double_step = True;
}

/*****************************************************************************/
/* STS_ResetDoubleStep */
/*  */
/*****************************************************************************/
void
STS_ResetNoDoubleStep()
{
    s_no_double_step = False;
}

/*****************************************************************************/
/* STS_IsDoubleStep */
/*  */
/*****************************************************************************/
BOOL STS_GetNoDoubleStep()
{
    return(s_no_double_step);
}

/*****************************************************************************/
/* STS_SetStep */
/*  */
/*****************************************************************************/
void
STS_SetStep(unsigned short step)
{
    s_power_spectrum_data.s_sts_sample.step = step;
}

/*****************************************************************************/
/* STS_MoveLeft */
/* f2 = f1; f1 = (f0 + f1)/2; f0 remains same */
/*****************************************************************************/
void 
STS_MoveLeft()
{
    unsigned short* p_power_reading = 0;
    unsigned long*  p_freq_reading = 0;

    STS_PrintSamples("STS_MoveLeft--");

    if (STS_GetUseMainBuffer() == True)
    {
        p_power_reading = &s_power_spectrum_data.power[0]; 
        p_freq_reading = &s_power_spectrum_data.abs_freq[0]; 
    }
    else
    {
        p_power_reading = &s_power_spectrum_data.sub_power[0]; 
        p_freq_reading = &s_power_spectrum_data.sub_abs_freq[0]; 
    }

    s_power_spectrum_data.s_sts_sample.p_freq[2] = &p_freq_reading[s_iter-s_power_spectrum_data.s_sts_sample.step];
    s_power_spectrum_data.s_sts_sample.p_freq[1] = &p_freq_reading[s_iter-(s_power_spectrum_data.s_sts_sample.step/2)];
    s_power_spectrum_data.s_sts_sample.p_freq[0] = &p_freq_reading[s_iter];

    s_power_spectrum_data.s_sts_sample.p_power[2] = &p_power_reading[s_iter-s_power_spectrum_data.s_sts_sample.step];
    s_power_spectrum_data.s_sts_sample.p_power[1] = &p_power_reading[s_iter-(s_power_spectrum_data.s_sts_sample.step/2)];
    s_power_spectrum_data.s_sts_sample.p_power[0] = &p_power_reading[s_iter];

    STS_PrintSamples("--STS_MoveLeft");
}

/*****************************************************************************/
/* STS_MoveRight */
/* f0 = f1; f1 = (f1 + f2)/2; f2 remains same */
/*****************************************************************************/
void 
STS_MoveRight()
{
    unsigned short* p_power_reading = 0;
    unsigned long*  p_freq_reading = 0;

    STS_PrintSamples("STS_MoveRight--");

    if (STS_GetUseMainBuffer() == True)
    {
        p_power_reading = &s_power_spectrum_data.power[0]; 
        p_freq_reading = &s_power_spectrum_data.abs_freq[0]; 
    }
    else
    {
        p_power_reading = &s_power_spectrum_data.sub_power[0]; 
        p_freq_reading = &s_power_spectrum_data.sub_abs_freq[0]; 
    }

    s_power_spectrum_data.s_sts_sample.p_freq[0] = &p_freq_reading[s_iter-s_power_spectrum_data.s_sts_sample.step];
    s_power_spectrum_data.s_sts_sample.p_freq[1] = &p_freq_reading[s_iter-s_power_spectrum_data.s_sts_sample.step-(s_power_spectrum_data.s_sts_sample.step/2)];
    s_power_spectrum_data.s_sts_sample.p_freq[2] = &p_freq_reading[s_iter-s_power_spectrum_data.s_sts_sample.step*2];

    s_power_spectrum_data.s_sts_sample.p_power[0] = &p_power_reading[s_iter-s_power_spectrum_data.s_sts_sample.step];
    s_power_spectrum_data.s_sts_sample.p_power[1] = &p_power_reading[s_iter-s_power_spectrum_data.s_sts_sample.step-(s_power_spectrum_data.s_sts_sample.step/2)];
    s_power_spectrum_data.s_sts_sample.p_power[2] = &p_power_reading[s_iter-s_power_spectrum_data.s_sts_sample.step*2];

    STS_PrintSamples("--STS_MoveRight");
}

/*****************************************************************************/
/* STS_JumpToPowerLevel                                                      */
/* Locates the next specified power level point and returns the index        */
/* retuns False if we run out of buffer.                                     */ 
/*****************************************************************************/
BOOL
STS_JumpToPowerLevel(unsigned short  start_point_power, 
                     unsigned short  start_point_index, 
                     unsigned short* p_index)
{
    unsigned short* p_power_reading = 0;
    unsigned short* p_filled_buffer_length = 0;
    short loop;

    if (p_index == 0)
    {
        return (False);
    }

    if (STS_GetUseMainBuffer() == True)
    {
        p_power_reading = &s_power_spectrum_data.power[0]; 
        p_filled_buffer_length = &s_power_spectrum_data.filled_buffer_len;
    }
    else
    {
        p_power_reading = &s_power_spectrum_data.sub_power[0]; 
        p_filled_buffer_length = &s_power_spectrum_data.filled_sub_buffer_len;
    }

    if (start_point_index > *p_filled_buffer_length)
    {
        return (False);
    }

    loop = start_point_index-1;
    for (; loop >= 0; loop--)
    {
        if (p_power_reading[loop] <= start_point_power)
        {
            *p_index = loop;
            return (True);
        }
    }

    return(True);
}


BOOL
STS_CheckCompleteSpectrum(unsigned short power_thresh, unsigned short power_thresh_index)
{
    unsigned short* p_power_reading = 0;
    unsigned short* p_filled_buffer_length = 0;
    short loop;

    if (STS_GetUseMainBuffer() == True)
    {
        p_power_reading = &s_power_spectrum_data.power[0]; 
        p_filled_buffer_length = &s_power_spectrum_data.filled_buffer_len;
    }
    else
    {
        p_power_reading = &s_power_spectrum_data.sub_power[0]; 
        p_filled_buffer_length = &s_power_spectrum_data.filled_sub_buffer_len;
    }

    loop = power_thresh_index-1;
    for (; loop >= 0; loop--)
    {
        if (p_power_reading[loop] <= power_thresh)
        {
            return (True);
        }
    }
    return (True);
}

/*****************************************************************************/
/* STS_MoveExInit */
/*****************************************************************************/
static unsigned short s_index0;
static unsigned short s_move_step;
static unsigned short s_f0_index, s_f1_index, s_f2_index;
void STS_MoveExInit(unsigned short max_buffer_length) 
{
    unsigned short* p_power_reading = 0;
    unsigned long*  p_freq_reading = 0;

    if (STS_GetUseMainBuffer() == True)
    {
        p_power_reading = &s_power_spectrum_data.power[0]; 
        p_freq_reading  = &s_power_spectrum_data.abs_freq[0]; 
    }
    else
    {
        p_power_reading = &s_power_spectrum_data.sub_power[0]; 
        p_freq_reading  = &s_power_spectrum_data.sub_abs_freq[0]; 
    }

    //s_index0 = s_iter;
    //s_index1 = s_iter << 1;
    //s_index2 = 0;
    s_index0    = max_buffer_length;
    s_move_step = max_buffer_length >> 1;

    s_f0_index = s_index0;
    s_f1_index = s_move_step;//s_index0-s_move_step-1;
    s_f2_index = 0;//(s_index0-s_move_step*2)-1;

    s_power_spectrum_data.s_sts_sample.p_freq[0] = &p_freq_reading[s_f0_index];
    s_power_spectrum_data.s_sts_sample.p_freq[1] = &p_freq_reading[s_f1_index];    
    s_power_spectrum_data.s_sts_sample.p_freq[2] = &p_freq_reading[s_f2_index];

    s_power_spectrum_data.s_sts_sample.p_power[0] = &p_power_reading[s_f0_index];
    s_power_spectrum_data.s_sts_sample.p_power[1] = &p_power_reading[s_f1_index];
    s_power_spectrum_data.s_sts_sample.p_power[2] = &p_power_reading[s_f2_index];

    STSDBG_WR_INT_LN("STS_MoveExInit s_index0 = ",    s_index0);
    STSDBG_WR_INT_LN("STS_MoveExInit s_move_step = ", s_move_step);
}

/*****************************************************************************/
/* STS_GetSampleIndexEx */
/*  */
/********************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -