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

📄 fmradiosrc.c

📁 mtk平台的调频收音机的mmi部分,新的代码更新! 可以了解mtk调频收音机的用户界面!
💻 C
📖 第 1 页 / 共 5 页
字号:
 *****************************************************************************/
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 + -