📄 fmradiomsghdlr.c
字号:
* 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 + -