📄 fmradiosrc.c
字号:
* void
*****************************************************************************/
void mmi_fmrdo_run_app(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#ifdef __MMI_AUDIO_PLAYER__
mmi_audply_stop_playing();
#endif
if (!g_fmrdo.is_ready)
{
S16 error;
/* read channel list from nvram */
ReadRecord(NVRAM_EF_FM_RADIO_LID, 1, (void*)&g_fmrdo.channel_list, NVRAM_EF_FM_RADIO_SIZE, &error);
if(g_fmrdo.channel_list.name[0][0] == 0xFFFF)
{
memset(&g_fmrdo.channel_list, 0, sizeof(mmi_fmrdo_channel_list_struct));
}
#ifdef MMI_ON_HARDWARE_P
/* read settings from nvram */
ReadValue(NVRAM_FMRDO_BACKGROUND_PLAY, &g_fmrdo.is_background_play, DS_BYTE, &error);
#ifdef __MMI_FM_SLIM_SKIN__
g_fmrdo.skin_index = 0; /* only 1 skin in silm skin version */
#else
ReadValue(NVRAM_FMRDO_SKIN, &g_fmrdo.skin_index, DS_BYTE, &error);
#endif /* #ifdef __MMI_FM_SLIM_SKIN__ */
ReadValue(NVRAM_FMRDO_VOLUME, &g_fmrdo.volume, DS_BYTE, &error);
#if defined(__MMI_FM_RADIO_LOUD_SPEAK__)
ReadValue(NVRAM_FMRDO_SPEAKER_STATUS, &g_fmrdo.loud_speaker_on, DS_BYTE, &error);
if(g_fmrdo.loud_speaker_on != 0 && g_fmrdo.loud_speaker_on != 1)
{
g_fmrdo.loud_speaker_on = 1;
WriteValue(NVRAM_FMRDO_SPEAKER_STATUS, &g_fmrdo.loud_speaker_on, DS_BYTE, &error);
}
#endif
#if defined(__MMI_FM_RADIO_RECORD__)
ReadValue(NVRAM_FMRDO_RECORD_FORMAT, &g_fmrdo.rec.format, DS_BYTE, &error);
ReadValue(NVRAM_FMRDO_RECORD_STORAGE, &g_fmrdo.rec.drive, DS_BYTE, &error);
if (g_fmrdo.rec.format >= FM_REC_FORMAT_NUM)
{
g_fmrdo.rec.format = 0;
}
/* Restore to default drive if hardware not exists */
#if defined(__MMI_FMGR_APP_STORAGE__)
if ( FS_GetDevStatus(g_fmrdo.rec.drive, FS_MOUNT_STATE_ENUM) != FS_NO_ERROR)
#endif
{
g_fmrdo.rec.drive = (U8)MMI_PUBLIC_DRV;
}
#endif /* defined(__MMI_FM_RADIO_RECORD__) */
ReadValue(NVRAM_FMRDO_LAST_CHANNEL, &g_fmrdo.frequency, DS_SHORT, &error);
/* default frequency value */
if(g_fmrdo.frequency > MAX_FM_FREQUENCY || g_fmrdo.frequency < MIN_FM_FREQUENCY)
{
g_fmrdo.frequency = DEFAULT_FREQUENCY;
}
#else /* MMI_ON_HARDWARE_P */
g_fmrdo.is_background_play = 1;
g_fmrdo.skin_index = 0;
g_fmrdo.volume = 4;
#if defined(__MMI_FM_RADIO_LOUD_SPEAK__)
g_fmrdo.loud_speaker_on = 1;
#endif
#if defined(__MMI_FM_RADIO_RECORD__)
g_fmrdo.rec.format = 0;
g_fmrdo.rec.drive = MMI_PUBLIC_DRV;
#endif /* defined(__MMI_FM_RADIO_RECORD__) */
/* default frequency value */
g_fmrdo.frequency = DEFAULT_FREQUENCY;
#endif /* MMI_ON_HARDWARE_P */
/* reset channel index */
g_fmrdo.channel_index = -1;
/* search & power states */
g_fmrdo.is_search_on = FALSE;
g_fmrdo.is_power_on = FALSE;
mdi_audio_set_background_handler(MDI_BACKGROUND_APP_FMR, (mdi_bg_callback) mmi_fmrdo_continued);
g_fmrdo.is_ready = TRUE;
}
/* power on */
#ifdef __MMI_FM_RADIO_BIND_EARPHONE__
if (isEarphonePlugged)
#endif
mmi_fmrdo_power_on(TRUE);
mmi_fmrdo_entry_main();
#ifdef __MMI_FM_RADIO_BIND_EARPHONE__
if (!isEarphonePlugged)
{
DisplayPopup(
(PU8) GetString(STR_ID_FMRDO_PLEASE_PLUG_IN_EARPHONE),
IMG_GLOBAL_WARNING,
1,
2000,
(U8) WARNING_TONE);
}
#endif /* __MMI_FM_RADIO_BIND_EARPHONE__ */
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_highlight_menu
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_fmrdo_highlight_menu(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
ChangeLeftSoftkey(STR_GLOBAL_OK, 0);
ChangeRightSoftkey(STR_GLOBAL_BACK, 0);
SetLeftSoftkeyFunction(mmi_fmrdo_run_app, KEY_EVENT_UP);
SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
SetKeyHandler(mmi_fmrdo_run_app, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
SetKeyHandler(GoBackHistory, KEY_LEFT_ARROW, KEY_EVENT_DOWN);
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_match_channel_list
* DESCRIPTION
*
* PARAMETERS
* frequency [IN]
* RETURNS
* S16
*****************************************************************************/
S16 mmi_fmrdo_match_channel_list(U16 frequency)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
S16 i;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* try matching current frequency first */
if (g_fmrdo.channel_index >= 0 && g_fmrdo.channel_list.freq[g_fmrdo.channel_index] == frequency)
{
return g_fmrdo.channel_index;
}
for (i = 0; i < FM_RADIO_CHANNEL_NUM; i++)
if (g_fmrdo.channel_list.freq[i] == frequency)
{
return i;
}
return -1;
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_press_step_down_button
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_fmrdo_press_step_down_button(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (g_fmrdo.is_button_down)
{
return;
}
g_fmrdo.selected_button = FMRDO_BUTTON_STEP_DOWN;
g_fmrdo.is_button_down = TRUE;
g_fmrdo.normal_repeat_step_count = 0;
mmi_fmrdo_redraw_main_push_button(g_fmrdo.selected_button, g_fmrdo.is_button_down);
mmi_fmrdo_search_frequency_stop();
g_fmrdo.step_freq = g_fmrdo.frequency;
StartTimer(FMRDO_REPEAT_STEP_TIMER, NORMAL_REAPEAT_STEP_PERIOD, mmi_fmrdo_step_down_timer);
/* stop previous twinkle frequency if necessary */
mmi_fmrdo_stop_twinkle_frequency(TRUE);
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_release_step_down_button
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_fmrdo_release_step_down_button(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U16 freq;
BOOL is_freq_changed = (g_fmrdo.normal_repeat_step_count != 0);
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (g_fmrdo.is_button_down && g_fmrdo.selected_button == FMRDO_BUTTON_STEP_DOWN)
{
StopTimer(FMRDO_REPEAT_STEP_TIMER);
g_fmrdo.is_button_down = FALSE;
mmi_fmrdo_redraw_main_push_button(g_fmrdo.selected_button, g_fmrdo.is_button_down);
if (is_freq_changed)
{
freq = g_fmrdo.step_freq; /* frequency is changed so we don't need to decrease it again */
}
else
{
/* frequency is not changed during button press down so we need to decrease it */
if (g_fmrdo.frequency > MIN_FM_FREQUENCY)
{
freq = g_fmrdo.frequency - 1;
}
else
{
freq = MAX_FM_FREQUENCY;
}
}
if (g_fmrdo.is_power_on && g_fmrdo.is_search_on)
{
mmi_fmrdo_redraw_main_channel_name((UI_string_type) GetString(STR_ID_FMRDO_SEARCHING)); /* show searching text */
mmi_fmrdo_search_frequency_start(freq, FALSE); /* do search in non-blocking mode */
}
else
{
mmi_fmrdo_set_frequency(freq);
}
g_fmrdo.normal_repeat_step_count = 0;
g_fmrdo.selected_button = FMRDO_BUTTON_NONE;
}
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_press_step_up_button
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_fmrdo_press_step_up_button(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (g_fmrdo.is_button_down)
{
return;
}
g_fmrdo.selected_button = FMRDO_BUTTON_STEP_UP;
g_fmrdo.is_button_down = TRUE;
g_fmrdo.normal_repeat_step_count = 0;
mmi_fmrdo_redraw_main_push_button(g_fmrdo.selected_button, g_fmrdo.is_button_down);
mmi_fmrdo_search_frequency_stop();
g_fmrdo.step_freq = g_fmrdo.frequency;
StartTimer(FMRDO_REPEAT_STEP_TIMER, NORMAL_REAPEAT_STEP_PERIOD, mmi_fmrdo_step_up_timer);
/* stop previous twinkle frequency if necessary */
mmi_fmrdo_stop_twinkle_frequency(TRUE);
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_release_step_up_button
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_fmrdo_release_step_up_button(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U16 freq;
BOOL is_freq_changed = (g_fmrdo.normal_repeat_step_count != 0);
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (g_fmrdo.is_button_down && g_fmrdo.selected_button == FMRDO_BUTTON_STEP_UP)
{
StopTimer(FMRDO_REPEAT_STEP_TIMER);
g_fmrdo.is_button_down = FALSE;
mmi_fmrdo_redraw_main_push_button(g_fmrdo.selected_button, g_fmrdo.is_button_down);
if (is_freq_changed)
{
freq = g_fmrdo.step_freq; /* frequency is changed so we don't need to increase it again */
}
else
{
/* frequency is not changed during button press down so we need to increase it */
if (g_fmrdo.frequency < MAX_FM_FREQUENCY)
{
freq = g_fmrdo.frequency + 1;
}
else
{
freq = MIN_FM_FREQUENCY;
}
}
if (g_fmrdo.is_power_on && g_fmrdo.is_search_on)
{
mmi_fmrdo_redraw_main_channel_name((UI_string_type) GetString(STR_ID_FMRDO_SEARCHING)); /* show searching text */
mmi_fmrdo_search_frequency_start(freq, TRUE); /* do search in non-blocking mode */
}
else
{
mmi_fmrdo_set_frequency(freq);
}
g_fmrdo.normal_repeat_step_count = 0;
g_fmrdo.selected_button = FMRDO_BUTTON_NONE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -