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

📄 fmradiomsghdlr.c

📁 mtk平台的调频收音机的mmi部分,新的代码更新! 可以了解mtk调频收音机的用户界面!
💻 C
📖 第 1 页 / 共 2 页
字号:
 *  RETURNS      void(?)
 *  GLOBALS AFFECTED   fmrdo_search_one(?)
 *****************************************************************************/
void mmi_fmrdo_search_frequency_start(U16 start_freq, BOOL is_step_up)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    mdi_audio_set_mute(AUD_VOLUME_FMR, TRUE);
	
	/*pmt00083, 090606,MAUI00015677 Start*/
	mdi_fmr_evaluate_threshold();
	/*pmt00083, 090606,MAUI00015677 End*/

    fmrdo_search_one.freq = start_freq;
    if (is_step_up)
    {
        if (start_freq > MIN_FM_FREQUENCY)
        {
            fmrdo_search_one.stop_freq = start_freq - 1;
        }
        else
        {
            start_freq = MAX_FM_FREQUENCY;
        }
    }
    else
    {
        if (start_freq < MAX_FM_FREQUENCY)
        {
            fmrdo_search_one.stop_freq = start_freq + 1;
        }
        else
        {
            start_freq = MIN_FM_FREQUENCY;
        }
    }
    fmrdo_search_one.is_step_up = is_step_up;
    g_fmrdo.state = FMRDO_STATE_SEARCH_ONE;
    mdi_fmr_check_is_valid_stop(start_freq, is_step_up, mmi_fmrdo_search_frequency);
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_search_frequency
 *  is_valid        [IN]        
 *  RETURNS      void(?)
 *  GLOBALS AFFECTED   g_fmrdo(?)
 *****************************************************************************/
void mmi_fmrdo_search_frequency(BOOL is_valid)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (g_fmrdo.state != FMRDO_STATE_SEARCH_ONE)
    {
        return;
    }
    if (!is_valid && fmrdo_search_one.freq != fmrdo_search_one.stop_freq)
        /* #else
           if( (is_valid!=100) && fmrdo_search_one.freq != fmrdo_search_one.stop_freq ) */
    {
        // #endif
        if (fmrdo_search_one.is_step_up)
        {
            if (fmrdo_search_one.freq < MAX_FM_FREQUENCY)
            {
                fmrdo_search_one.freq++;
            }
            else
            {
                fmrdo_search_one.freq = MIN_FM_FREQUENCY;
            }
        }
        else
        {
            if (fmrdo_search_one.freq > MIN_FM_FREQUENCY)
            {
                fmrdo_search_one.freq--;
            }
            else
            {
                fmrdo_search_one.freq = MAX_FM_FREQUENCY;
            }
        }
        show_update_freq(fmrdo_search_one.freq);
        mdi_fmr_check_is_valid_stop(fmrdo_search_one.freq, fmrdo_search_one.is_step_up, mmi_fmrdo_search_frequency);
        /* #else
           is_valid++;
           mmi_fmrdo_search_frequency(is_valid );
           #endif */

    }
    else
    {
        g_fmrdo.state = FMRDO_STATE_READY;
        mmi_fmrdo_set_frequency(fmrdo_search_one.freq);
        mdi_audio_set_volume(AUD_VOLUME_FMR, g_fmrdo.volume);
        if (g_fmrdo.is_playing_screen)
        {
            show_update_freq(g_fmrdo.frequency);
        }
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_search_frequency_stop
 *  void
 *  RETURNS      void(?)
 *  GLOBALS AFFECTED   g_fmrdo(?)
 *****************************************************************************/
void mmi_fmrdo_search_frequency_stop(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (g_fmrdo.is_ready && g_fmrdo.state == FMRDO_STATE_SEARCH_ONE)
    {
        mdi_fmr_cancel_checking_is_valid_stop();
        g_fmrdo.state = FMRDO_STATE_READY;
        mmi_fmrdo_set_frequency(fmrdo_search_one.freq);
        mdi_audio_set_volume(AUD_VOLUME_FMR, g_fmrdo.volume);
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_find_best_frequency_in_sub_band
 * RETURNS      TRUE
 *  sub_band        [?]     
 *****************************************************************************/
S16 mmi_fmrdo_find_best_frequency_in_sub_band(U8 *sub_band)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U8 signal_level;
    U8 max_signal_level = 1;
    S16 i;
    S16 index = -1;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    for (i = 0; i < FM_SUB_BANDWIDTH; i++)
    {
        if (!FM_SIG_MARK(sub_band[i]))
        {
            signal_level = FM_SIG_LVL(sub_band[i]);
            if (signal_level >= max_signal_level)
            {
                index = i;
                max_signal_level = signal_level;
            }
        }
    }

    return index;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_search_all_channels_start
 * PARAMETERS
 *  callback_func       [IN]        
 *  RETURNS      void(?)
 *  GLOBALS AFFECTED   g_fmrdo, fmrdo_search_all(?)
 *****************************************************************************/
void mmi_fmrdo_search_all_channels_start(void (*callback_func) (U8 *signal_band))
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    mdi_audio_set_mute(AUD_VOLUME_FMR, TRUE);

	/*pmt00083, 090606,MAUI00015677 Start*/
	mdi_fmr_evaluate_threshold();
	/*pmt00083, 090606,MAUI00015677 End*/

    search_all_channels_callback_func = callback_func;
    g_fmrdo.state = FMRDO_STATE_SEARCH_ALL;
    memset(&fmrdo_search_all, 0, sizeof(mmi_fmrdo_search_all_struct));
    /*pmt00083, 090606,MAUI00015677 Start*/
    /*fmrdo_search_all.signal_band = OslMalloc(FM_BANDWIDTH + 1);*/
    /*memset(fmrdo_search_all.signal_band, '\0', FM_BANDWIDTH + 1);*/
    /*pmt00083, 090606,MAUI00015677 End*/
    mdi_fmr_get_signal_level(MIN_FM_FREQUENCY, 1, mmi_fmrdo_search_all_channels);
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_search_all_channels
 *  signal_level        [IN]        
 *  RETURNS      void(?)
 *  GLOBALS AFFECTED   fmrdo_search_all(?)
 *****************************************************************************/
void mmi_fmrdo_search_all_channels(U8 signal_level)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U16 i, j, offset;
    U16 avaliable_sub_band_count;
    mmi_fmrdo_search_all_struct *search_p = &fmrdo_search_all;
    /*pmt00083, 090606,MAUI00015677 Start*/
    U8 level, max_signal_level;
    S16 index;
    /*pmt00083, 090606,MAUI00015677 End*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (g_fmrdo.state != FMRDO_STATE_SEARCH_ALL)
    {
        return;
    }

    search_p->signal_band[search_p->get_signal_count++] = signal_level;
    if (search_p->get_signal_count < FM_BANDWIDTH)
    {
        mdi_fmr_get_signal_level((U16) (MIN_FM_FREQUENCY + search_p->get_signal_count), 1, mmi_fmrdo_search_all_channels);      /* temp */
    }
    else
    {
        /* search until no available frequency or FM_SUB_BAND_NUM frequencies are found */
	/*pmt00083, 090606,MAUI00015677 Start*/
       /* avaliable_sub_band_count = FM_SUB_BAND_NUM;
       	//pmt00083, 090606,MAUI00015677 End
        do
        {
            S16 index;

            for (offset = i = 0; i < FM_SUB_BAND_NUM; i++)
            {
                if (!FM_SUB_MARK(search_p->sub_band_mask, i))
                {
                    index = mmi_fmrdo_find_best_frequency_in_sub_band(&search_p->signal_band[offset]);
                    if (index >= 0)
                    {
                        j = offset + index;
                        FM_MARK_SIG(search_p->signal_band[j]);
                        search_p->select_count++;
                        if (search_p->select_count == FM_SUB_BAND_NUM)
                        {
                            goto finished;
                        }
                    }
                    else
                    {
                        //FM_MARK_SUB(search_p->sub_band_mask, i);
                        avaliable_sub_band_count--;
                    }
                }
                offset += FM_SUB_BANDWIDTH;
            }
          //pmt00083, 090606,MAUI00015677 Start
        } while (avaliable_sub_band_count > 0); */
         /*pmt00083, 090606,MAUI00015677 End*/
		/*pmt00083, 090606,MAUI00015677 Start*/
		offset=0;
		for (i = 0; i < FM_SUB_BAND_NUM; i++)
        {
            max_signal_level = 0;
            index = -1;
            
            for(j = 0; j < FM_SUB_BANDWIDTH; j++)
            {
				level = search_p->signal_band[offset + j];
                 if (level > max_signal_level)
                   {
                        index = j;
                        max_signal_level = level;
                    }
                
            }

            if((index)  > 0)
            {
                FM_MARK_SIG(search_p->signal_band[index+offset]);
            }
			offset += FM_SUB_BANDWIDTH;
            /*else
            {
                goto finished;
            }*/
        }
		/*pmt00083, 090606,MAUI00015677 End*/
		/*pmt00083, 090606,MAUI00015677 Start*/
      //finished:
		/*pmt00083, 090606,MAUI00015677 End*/
        if (search_all_channels_callback_func != NULL)
        {
            search_all_channels_callback_func(search_p->signal_band);
            g_fmrdo.frequency = g_fmrdo.channel_list.freq[0];
            mdi_fmr_set_freq(g_fmrdo.frequency);
            mdi_audio_set_volume(AUD_VOLUME_FMR, g_fmrdo.volume);
            search_all_channels_callback_func = NULL;
		/*pmt00083, 090606,MAUI00015677 Start*/
         /*   OslMfree(fmrdo_search_all.signal_band);*/
		/*pmt00083, 090606,MAUI00015677 End*/

        }
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_search_all_channels_stop
 *  void
 *  RETURNS      void(?)
 *****************************************************************************/
void mmi_fmrdo_search_all_channels_stop(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (g_fmrdo.is_ready && g_fmrdo.state == FMRDO_STATE_SEARCH_ALL)
    {
        mdi_fmr_set_freq(g_fmrdo.frequency);
        mdi_audio_set_volume(AUD_VOLUME_FMR, g_fmrdo.volume);
        search_all_channels_callback_func = NULL;
        mdi_fmr_cancel_getting_signal_level();
        g_fmrdo.state = FMRDO_STATE_READY;
       /*pmt00083, 090606,MAUI00015677 Start*/
        /*OslMfree(fmrdo_search_all.signal_band);*/
       /*pmt00083, 090606,MAUI00015677 End*/
		/*pmt00083, 27/10/2006,MAUI_00017497 Start*/
		DisplayPopup((PU8) GetString(STR_BDL_NOT_READY), IMG_GLOBAL_UNFINISHED, 1, ST_NOTIFYDURATION, ERROR_TONE);
		/*pmt00083, 27/10/2006,MAUI_00017497 End*/
        DeleteScreenIfPresent(SCR_ID_FMRDO_SEARCHING);

    }
}

#endif /* __MMI_FM_RADIO__ */ 

⌨️ 快捷键说明

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