📄 fmradiosrc.c
字号:
*****************************************************************************/
void GetNameBuffer(U8 *buffer, U16 index)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (index < 0 || index > NUM_OF_CHANNELS)
{
return;
}
if (g_fmrdo.channel_list.name[index])
{
if (g_fmrdo.channel_list.name_dcs[index])
{
pfnUnicodeStrcpy((PS8) buffer, (PS8) g_fmrdo.channel_list.name[index]);
}
else
{
AnsiiToUnicodeString((S8*) buffer, (S8*) g_fmrdo.channel_list.name[index]);
}
}
else
{
buffer[0] = buffer[1] = '\0';
}
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_channel_rename_LSK
* DESCRIPTION
* Saves the Name in to Channel List
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_fmrdo_channel_rename_LSK(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U16 TempLen = 0;
pBOOL temp = FALSE;
S16 error = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
temp = GetUCS2Flag(channel_name_buff);
if (temp)
{
memset((void*)g_fmrdo.channel_list.name[highlighted_item], '\0', MAX_NAME_INPUT_LEN + 1);
g_fmrdo.channel_list.name_dcs[highlighted_item] = 1;
pfnUnicodeStrcpy((PS8) g_fmrdo.channel_list.name[highlighted_item], (PS8) channel_name_buff);
}
else
{
memset((void*)g_fmrdo.channel_list.name[highlighted_item], '\0', MAX_NAME_INPUT_LEN + 1);
g_fmrdo.channel_list.name_dcs[highlighted_item] = 0;
UnicodeToAnsii((PS8) g_fmrdo.channel_list.name[highlighted_item], (PS8) channel_name_buff);
}
WriteRecord(NVRAM_EF_FM_RADIO_LID, 1, (void*)&g_fmrdo.channel_list, NVRAM_EF_FM_RADIO_SIZE, &error);
DisplayPopup((PU8) GetString(STR_GLOBAL_DONE), IMG_GLOBAL_WARNING, 1, 2000, (U8) WARNING_TONE);
DeleteScreenIfPresent(SCR_ID_FMRDO_CHANNEL_NAME_RENAME);
DeleteScreenIfPresent(SCR_ID_FMRDO_CHANNEL_OPTION);
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_highlight_preset_auto_search
* DESCRIPTION
* Highlight Handler for Preset Auto Search
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_fmrdo_highlight_preset_auto_search(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
mmi_fmrdo_common_LSK_RSK_hdlr(
STR_GLOBAL_OK,
IMG_GLOBAL_OK,
STR_GLOBAL_BACK,
IMG_GLOBAL_BACK,
mmi_fmrdo_preset_auto_search,
GoBackHistory);
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_preset_auto_search
* DESCRIPTION
* Query Screen for Preset Auto Search
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_fmrdo_preset_auto_search(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U8 *guiBuffer;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
EntryNewScreen(SCR_ID_FMRDO_PRESET_LIST_CONFIRM, NULL, NULL, NULL);
guiBuffer = GetCurrGuiBuffer(SCR_ID_FMRDO_PRESET_LIST_CONFIRM);
ShowCategory164Screen(
STR_GLOBAL_YES,
IMG_GLOBAL_YES,
STR_GLOBAL_NO,
IMG_GLOBAL_NO,
STR_ID_FMRDO_PRESET_LIST,
IMG_GLOBAL_QUESTION,
guiBuffer);
SetLeftSoftkeyFunction(mmi_fmrdo_preset_auto_search_confirm_LSK, KEY_EVENT_UP);
SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
playRequestedTone(WARNING_TONE);
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_preset_auto_search_confirm_LSK
* DESCRIPTION
* Start Searching the Frequency if the FM Power is ON.
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_fmrdo_preset_auto_search_confirm_LSK(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (!g_fmrdo.is_power_on)
{
mmi_fmrdo_power_on_before_preset_auto_search();
}
if (g_fmrdo.is_power_on) /* if audio is block, power won't be turned on */
{
mmi_fmrdo_entry_searching();
mmi_fmrdo_search_all_channels_start(mmi_fmrdo_preset_list_done);
}
else
{
DisplayPopup((U8*) GetString(STR_ID_FMRDO_POWER_ON_FIRST), IMG_GLOBAL_WARNING, 1, 1000, (U8) WARNING_TONE);
DeleteUptoScrID(SCR_ID_FMRDO_MAIN_OPTION);
}
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_preset_list_done
* DESCRIPTION
* Save the Frequency in to channel List with the Strongest signal with in each Sub Band
* PARAMETERS
* signal_band [?]
* RETURNS
* void
*****************************************************************************/
void mmi_fmrdo_preset_list_done(U8 *signal_band)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U16 i, j;
S16 error;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
g_fmrdo.state = FMRDO_STATE_READY;
/* memset( g_fmrdo.channel_list.freq, 0, NUM_OF_CHANNELS*2 ); */
for (i = 0; i < NUM_OF_CHANNELS; i++)
{
g_fmrdo.channel_list.freq[i] = 875;
}
for (i = 0; i < NUM_OF_CHANNELS; i++)
{
pfnUnicodeStrcpy((S8*) g_fmrdo.channel_list.name[i], (S8*) L"");
}
for (i = j = 0; i < FM_BANDWIDTH; i++)
{
if (FM_SIG_MARK(signal_band[i])) /* temp sachin fo preset */
/* if((signal_band[i])!=0 ) */
{
mmi_fmrdo_set_channel(
j++,
(U16) (i + MIN_FM_FREQUENCY),
(UI_string_type) GetString(STR_ID_FMRDO_NEW_CHANNEL));
if (j >= NUM_OF_CHANNELS)
{
break;
}
}
}
WriteRecord(NVRAM_EF_FM_RADIO_LID, 1, (void*)&g_fmrdo.channel_list, NVRAM_EF_FM_RADIO_SIZE, &error);
g_fmrdo.channel_index = mmi_fmrdo_match_channel_list(g_fmrdo.frequency);
WriteValue(NVRAM_FMRDO_LAST_PLAYED_CHANNEL, &g_fmrdo.channel_index, DS_BYTE, &error);
DisplayPopup((PU8) GetString(STR_GLOBAL_DONE), IMG_GLOBAL_ACTIVATED, 1, 1000, (U8) SUCCESS_TONE);
TurnOnBacklight(1);
DeleteScreenIfPresent(SCR_ID_FMRDO_SEARCHING);
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_set_channel
* DESCRIPTION
* Saves the channel Information in to Channel List
* PARAMETERS
* channel_index [IN]
* freq [IN]
* name [IN]
* a(?) [IN] Channel_index
* c(?) [IN/OUT] Name
* b(?) [IN] Freq
* RETURNS
* void
*****************************************************************************/
void mmi_fmrdo_set_channel(S16 channel_index, U16 freq, UI_string_type name)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* g_fmrdo.channel_list.name_dcs[channel_index]=0; */
if (GetStringDCS((PS8) name) == DCS_ASCII)
{
g_fmrdo.channel_list.name_dcs[channel_index] = 0;
UnicodeToAnsii((PS8) g_fmrdo.channel_list.name[channel_index], (PS8) name);
}
else
{
g_fmrdo.channel_list.name_dcs[channel_index] = 1;
pfnUnicodeStrcpy((PS8) g_fmrdo.channel_list.name[channel_index], (PS8) name);
}
/* UnicodeToAnsii((PS8)g_fmrdo.channel_list.name[channel_index],(PS8)name); */
g_fmrdo.channel_list.freq[channel_index] = freq;
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_match_channel_list
* DESCRIPTION
* Return the channel Index for the matched frequency.
* PARAMETERS
* frequency [IN]
* a(?) [IN] Frequency
* RETURNS
* TRUE
*****************************************************************************/
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 < NUM_OF_CHANNELS; i++)
if (g_fmrdo.channel_list.freq[i] == frequency)
{
return i;
}
return -1;
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_entry_searching
* DESCRIPTION
* Shows the Preset Auto Searching Screen
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_fmrdo_entry_searching(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U8 *str;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
EntryNewScreen(SCR_ID_FMRDO_SEARCHING, mmi_fmrdo_entry_searching_exit, NULL, NULL);
SetKeyHandler(NULL, KEY_END, KEY_EVENT_UP);
str = (U8*) GetString(STR_ID_FMRDO_SEARCHING);
ShowCategory66Screen(
STR_ID_FMRDO_PRESET_AUTO_SEARCH,
0,
0,
0,
STR_GLOBAL_ABORT,
0,
str,
IMG_IDLE_NETWORK_SRCH_SCR,
NULL);
SetRightSoftkeyFunction(mmi_fmrdo_searching_abort, KEY_EVENT_UP);
SetKeyHandler(mmi_fmrdo_searching_abort, KEY_END, KEY_EVENT_DOWN);
}
/*****************************************************************************
* FUNCTION
* mmi_fmrdo_entry_searching_exit
* DESCRIPTION
* Exit for Preset Auto Search Screen
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_fmrdo_entry_searching_exit(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
S16 nHistory = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (g_fmrdo.state == FMRDO_STATE_SEARCH_ALL)
{
history currHistory;
currHistory.scrnID = SCR_ID_FMRDO_SEARCHING;
currHistory.entryFuncPtr = mmi_fmrdo_entry_searching;
pfnUnicodeStrcpy((S8*) currHistory.inputBuffer, (S8*) & nHistory);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -