FreeCalypso > hg > fc-magnetite
view src/ui3/bmi/mmiMP3Test.c @ 597:f18b29e27be5
First attempt at MCSI voice path automatic switching
The function is implemented at the ACI level in both aci2 and aci3,
successfully avoids triggering the DSP bug on the first call,
but the shutdown of MCSI upon call completion is not working properly yet
in either version.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 27 Mar 2019 22:18:35 +0000 |
parents | 6a4d9f47793e |
children |
line wrap: on
line source
/******************************************************************************* Texas Instruments ******************************************************************************** This software product is the property of Texas Instruments and may not be disclosed to any third party without the express permission of the owner. ******************************************************************************** $Project name: MMI Application to test the different Audio file formats. $Module: Test Audio Player $File: MmiMp3Test.c $Revision: 1.0 $Author: Elsa Armanet-Said Texas Instruments Nice $Date: 17/05/04 ******************************************************************************** Description: This provides the MP3 Test Application interface. ******************************************************************************** $History: MmiMp3Test.c Sep 11, 2006 DR: OMAPS00094182 xrashmic Description: midi and mp3 files is not being populated on accessing corresponding menu, but only during bootup Solution: Populate files on accessing the "browse files" list Jun 06, 2006 REF: ERT OMAPS00070659 x0039928 Bug:MP3 RWD and FWD function - MOT Fix: Forward and Rewind functionalities are handled. Jun 02,2006 REF: DR OMAPS00079746 x0039928 Bug:MMI displays 'Playing' when trying to play a wrong file Fix: MP3 playback error is handled. Nov 16,2005 REF: DR OMAPS00049192 x0039928 Bug:MP3: The screen is not refreshed after the mp3 file completes playing Fix: The window is destroyed in mmi_mp3_test_start_cb() after AUDIO_OK event is received in the mfw callback. 17/05/04 Sep 29,2005 REF: SPR 34407 xdeepadh Bug:Back soft key takes more time to return to the previous screen in MP3 application Fix:The list creation for MP3 files has been modified Sep 27,2005 REF: SPR 34402 xdeepadh Bug:Mono option is always highlighted even when Stereo is selected Fix:The channel setting will be saved in the FFS, which will be retrieved later and the selected channel will be higlighted. Jul 18, 2005 REF: SPR 31695 xdeepadh Bug:Problems with MP3 test application Fix:The window handling of MP3 Test Application has been done properly. $End *******************************************************************************/ /******************************************************************************* Include files *******************************************************************************/ #define ENTITY_MFW /* includes */ #include <string.h> #include <stdio.h> #include <stdlib.h> #include "typedefs.h" #include "vsi.h" #include "pei.h" #include "custom.h" #if defined (NEW_FRAME) #include "typedefs.h" #include "vsi.h" #include "pei.h" #include "custom.h" #include "gsm.h" #include "prim.h" #else #include "STDDEFS.H" #include "custom.h" #include "gsm.h" #include "vsi.h" #endif #include "message.h" /* included for aci_cmh.h .... */ #include "aci_cmh.h" /* included for mfw_sat.h, included for MmiDummy.h, included for MmiMenu.h */ #include "mfw_mfw.h" #include "mfw_win.h" #include "mfw_icn.h" /* included for mfw_mnu.h */ #include "mfw_mnu.h" #include "mfw_tim.h" #include "mfw_kbd.h" #include "mfw_sat.h" /* included for MmiDummy.h, included for MmiMenu.h */ #include "mfw_mp3test.h" #include "MmiBlkLangDB.h" #include "mmiColours.h" #include "MmiDialogs.h" #include "MmiDummy.h" /* included for MmiMenu.h */ #include "MmiLists.h" #include "MmiMenu.h" #include "MmiSoftKeys.h" #include "MmiMP3Test.h" #include "MmiMain.h" #include "Mmiicons.h" #include "Icons\IcnDefs.h" //Sep 27,2005 REF: SPR 34402 xdeepadh #include "MmiBookShared.h" #include "mfw_ffs.h" /******************************************************************************* internal data *******************************************************************************/ /* * Internal events */ // E_INIT event definition #define E_INIT 1 #if (BOARD == 71) #define MP3_INIT 1 #define MP3_RETURN 2 #endif //Sep 27,2005 REF: SPR 34402 xdeepadh //defines for channels #define PLAYER_CHANNEL_MONO 0 #define PLAYER_CHANNEL_STEREO 1 //Jul 18, 2005 REF: SPR 31695 xdeepadh //Defines for Player events #define PLAYER_INIT 500 #define PLAYER_DESTROY 501 #define PLAYER_PLAY 502 /*local defines*/ #define PLAYER_INFO_SCRN_TIMEOUT 1500 #if (BOARD == 71) #define MP3_FORWARD_REWIND_TIME 10 #endif typedef struct { T_MMI_CONTROL mmi_control; MfwHnd win; MfwHnd info_win; //Jul 18, 2005 REF: SPR 31695 xdeepadh MfwHnd parent_win;//Jul 18, 2005 REF: SPR 31695 xdeepadh MfwHnd mfwwin; MfwHnd callwin; MfwHnd kbd; #if (BOARD == 71) MfwHnd menu; #endif } T_MMI_Player_Win_data; /*menu data structure definition*/ typedef struct { T_MMI_CONTROL mmi_control; T_MFW_HND win; T_MFW_HND parent; //Jul 18, 2005 REF: SPR 31695 xdeepadh T_MFW_HND kbd; T_MFW_HND kbd_long; T_MFW_HND player_menu; T_VOID_FUNC func_cb; UBYTE player_num_file; UBYTE player_file_count; ListCbFunc player_list_cb; UBYTE player_list_idx; ListMenuData * menu_list_data; //Sep 29,2005 REF: SPR 34407 xdeepadh }T_player_menu; // Nov 16,2005 REF: DR OMAPS00049192 x0039928 // Global variable that holds the mmi return path and is found in mfw_mp3test.c extern MMI_RETURN_PATH mmi_audio_player_return_path; /*global menu data*/ T_player_menu player_menu_data = {0}; /*Boolean to check whether file being played is paused.*/ BOOL IsPaused = FALSE; //UBYTE IsMfwInit = 0; extern char* inputFileName; // input file extern UBYTE IsMP3On; extern int audio_player_currently_playing_idx ; #if (BOARD == 71) static T_MFW_HND optionwin; #endif /******************************************************************************* Local prototypes *******************************************************************************/ static void mmi_audio_player_menu_list_listmnu_cb(T_MFW_HND Parent, ListMenuData * ListData); static MfwHnd mmi_audio_player_show_info(T_MFW_HND parent, int str1, int str2, T_VOID_FUNC callback); //Sep 29,2005 REF: SPR 34407 xdeepadh static T_MFW_HND mmi_audio_player_build_player_Menu( MfwHnd parent_window); /*default static menu*/ static MfwMnuAttr menuPlayerSearchListAttr = { &menuArea, MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */ (U8)-1, /* use default font */ NULL, /* with these items (filled in later) */ 0, /* number of items (filled in leter) */ COLOUR_LIST_XX, /* Colour */ TxtNull, /* Hdr Id */ NULL, /* Background */ MNUATTRSPARE /* unused */ }; #if (BOARD == 71) static const MfwMnuItem Mmi_mp3_OPTItems [] = { {0,0,0,(char *)TxtPlayerPause,0,(MenuFunc)M_exePause,item_flag_none}, {0,0,0,(char *)TxtPlayerForward,0,(MenuFunc)M_exeForward,item_flag_none}, {0,0,0,(char *)TxtPlayerRewind,0,(MenuFunc)M_exeRewind,item_flag_none} }; static const MfwMnuAttr Mmi_mp3_OPTAttrib = { &SmsSend_R_OPTArea, MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */ (U8)-1, /* use default font */ (MfwMnuItem*)Mmi_mp3_OPTItems, /* with these items */ sizeof(Mmi_mp3_OPTItems)/sizeof(MfwMnuItem), /* number of items */ COLOUR_LIST_SMS, TxtNull, NULL, MNUATTRSPARE }; /******************************************************************************* $Function: mmi_mp3_test_opt_win_cb $Description: $Returns: MFW_EVENT_CONSUMED $Arguments: event - window handle event win - Camera window *******************************************************************************/ int mmi_mp3_test_opt_win_cb (MfwEvt evt, MfwHnd win) { switch (evt) { case MfwWinVisible: /* window is visible */ displaySoftKeys(TxtSoftSelect,TxtSoftBack); break; case MfwWinFocussed: /* input focus / selected */ case MfwWinDelete: /* window will be deleted */ default: return MFW_EVENT_REJECTED; } return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: mmi_mp3_test_opt_kbd_cb $Description: $Returns: execution status $Arguments: e - event id k - keyboard info *******************************************************************************/ static int mmi_mp3_test_opt_kbd_cb (MfwEvt e, MfwKbd *k) { T_MFW_HND win = mfwParent(mfw_header()); T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; T_MMI_Player_Win_data * data = (T_MMI_Player_Win_data *)win_data->user; if (e & KEY_LONG) { switch (k->code) { case KCD_HUP: /* back to previous menu */ mnuEscape(data->menu); break; case KCD_RIGHT: /* Power Down */ return MFW_EVENT_REJECTED; /* handled by idle */ default: /* no response to all other keys */ return MFW_EVENT_CONSUMED; } } else { switch (k->code) { case KCD_MNUUP: /* highlight previous entry */ mnuUp(data->menu); break; case KCD_MNUDOWN: /* highlight next entry */ mnuDown(data->menu); break; case KCD_MNUSELECT: case KCD_LEFT: /* activate this entry */ mnuSelect(data->menu); break; case KCD_HUP: /* back to previous menu */ case KCD_RIGHT: /* back to previous menu */ mnuEscape(data->menu); break; default: /* no response to all other keys */ return MFW_EVENT_CONSUMED; } } return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: mmi_mp3_test_opt_mnu_cb $Description: Menu callback function for the Option window $Returns: Execution status $Arguments: e - event id m - menu handle *******************************************************************************/ static int mmi_mp3_test_opt_mnu_cb (MfwEvt e, MfwMnu *m) { switch (e) { case E_MNU_ESCAPE: /* back to previous menu */ TRACE_EVENT("E_MNU_ESCAPE"); SEND_EVENT (optionwin, MP3_RETURN, NULL, NULL); break; default: /* in mnuCreate() only E_MNU_ESCAPE has been enabled! */ return MFW_EVENT_REJECTED; } return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: mmi_mp3_test_opt_destroy $Description: Destroy the Camera Option window $Returns: mfw window handle $Arguments: own_window - current window *******************************************************************************/ static void mmi_mp3_test_opt_destroy(MfwHnd own_window) { T_MFW_WIN * win_data; T_MMI_Player_Win_data * data; if (own_window) { win_data = ((T_MFW_HDR *)own_window)->data; data = (T_MMI_Player_Win_data *)win_data->user; if (data) { /* ** Failed to start : Free Memory, and exit */ if(data->kbd != NULL) { kbdDelete (data->kbd); } if(data->menu!= NULL) { mnuDelete(data->menu); } // Delete WIN handler win_delete (data->win); // Free Memory FREE_MEMORY ((void *)data, sizeof (T_MMI_Player_Win_data)); } else { TRACE_EVENT ("mmi_mp3_test_opt_destroy() called twice"); } } } /******************************************************************************* $Function: mmi_mp3_test_opt_exec_cb $Description: $Returns: None $Arguments: win : The pointer to the window handler, so the function can reference the dynamic user data, if any. event : The incoming event value : Generic incoming Parameter, it will be 'event' dependant parameter : Generic incoming Parameter, it will be 'event' dependant *******************************************************************************/ void mmi_mp3_test_opt_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter) { T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; T_MMI_Player_Win_data * data = (T_MMI_Player_Win_data *)win_data->user; TRACE_FUNCTION ("mmi_mp3_test_opt_exec_cb()"); switch (event) { case MP3_INIT: /* initialization of administrative data */ data->kbd = kbdCreate(data->win,KEY_ALL, (MfwCb)mmi_mp3_test_opt_kbd_cb); data->menu = mnuCreate(data->win,(MfwMnuAttr *)&Mmi_mp3_OPTAttrib, E_MNU_ESCAPE, (MfwCb)mmi_mp3_test_opt_mnu_cb); mnuLang(data->menu,mainMmiLng); /* put the (new) dialog window on top of the window stack */ mnuUnhide(data->menu); winShow(data->win); break; case MP3_RETURN: mmi_mp3_test_opt_destroy(optionwin); optionwin = NULL; dspl_ClearAll(); ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerResume); displaySoftKeys(TxtSoftOptions, TxtStop); break; default: return; } } /******************************************************************************* $Function: mmi_mp3_test_opt_win_create $Description: $Returns: $Arguments: parent : pointer to the parent window. *******************************************************************************/ T_MFW_HND mmi_mp3_test_opt_create(T_MFW_HND parent) { T_MMI_Player_Win_data * data = (T_MMI_Player_Win_data *)ALLOC_MEMORY (sizeof (T_MMI_Player_Win_data)); T_MFW_WIN * win; TRACE_FUNCTION ("mmi_mp3_test_opt_create()"); /* * Create window handler */ data->win = win_create (parent, 0, E_WIN_VISIBLE, (T_MFW_CB)mmi_mp3_test_opt_win_cb); if (data->win EQ NULL) { return NULL; } /* * connect the dialog data to the MFW-window */ data->mmi_control.dialog = (T_DIALOG_FUNC)mmi_mp3_test_opt_exec_cb; data->mmi_control.data = data; win = ((T_MFW_HDR *)data->win)->data; win->user = (void *)data; data->parent_win = parent; /* * return window handle */ return data->win; } /******************************************************************************* $Function: mmi_mp3_test_opt_start $Description: $Returns: $Arguments: parent_window -parent window handle menuAttr - Menu attributes. *******************************************************************************/ T_MFW_HND mmi_mp3_test_opt_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr) { // T_MFW_HND win; TRACE_FUNCTION ("mmi_mp3_test_opt_start()"); optionwin = (T_MFW_HND)mmi_mp3_test_opt_create (parent_window); if (optionwin NEQ NULL) { SEND_EVENT (optionwin, MP3_INIT, NULL, (void *)menuAttr); } return optionwin; } #endif /******************************************************************************* $Function: mmi_audio_player_menu_destroy $Description: destroy menu window $Returns: $Arguments: *******************************************************************************/ static void mmi_audio_player_menu_destroy(MfwHnd window) { T_MFW_WIN * win_data = ((T_MFW_HDR *)window)->data; T_player_menu * data = (T_player_menu *)win_data->user; TRACE_FUNCTION ("mmi_audio_player_menu_destroy()"); if (window == NULL) { return; } if (data) { win_delete(data->win); /* ** Free Memory */ mfwFree((void *)data, sizeof (T_player_menu)); } } //Sep 29,2005 REF: SPR 34407 xdeepadh /******************************************************************************* $Function: mmi_audio_player_menu_list_listmnu_cb $Description: destroy lists and menu in case of back softkey or menu exit $Returns: $Arguments: *******************************************************************************/ static void mmi_audio_player_menu_list_listmnu_cb(T_MFW_HND Parent, ListMenuData * ListData) { T_MFW_WIN *win_data = ((T_MFW_HDR *)Parent)->data; T_player_menu *data = (T_player_menu *)win_data->user; char *fileExt; TRACE_FUNCTION ("mmi_audio_player_menu_list_listmnu_cb()"); if ((ListData->Reason EQ LISTS_REASON_BACK) || (ListData->Reason EQ LISTS_REASON_CLEAR) || (ListData->Reason EQ LISTS_REASON_HANGUP)) { /* ** Destroy the window --- Not sure if this is required! ... leave it out for now */ listsDestroy(ListData->win); /* ** Free the memory set aside for ALL the devices to be listed. */ if (data->menu_list_data != NULL) { FREE_MEMORY ((void *)data->menu_list_data->List, (U16)(data->player_num_file* sizeof (T_MFW_MNU_ITEM))); FREE_MEMORY ((void *)data->menu_list_data, sizeof (ListMenuData)); } mmi_audio_player_menu_destroy(data->win); } //Sep 29,2005 REF: SPR 34407 xdeepadh else if(ListData->Reason EQ LISTS_REASON_SELECT) { TRACE_EVENT_P1("list position is %d",ListData->ListPosition); //call mfw to save selected index mfw_audio_player_save_selected_file_idx(ListData->ListPosition); fileExt =(char*) mfw_audio_player_GetExtension(inputFileName); //Decide whether to play Mp3 or AAC if ( (strcmp(fileExt, "mp3") == 0)) { IsMP3On = MFW_PLAYER_MP3; } #ifdef FF_MMI_TEST_AAC else if ( (strcmp(fileExt, "aac") == 0)) { IsMP3On = MFW_PLAYER_AAC; } #endif data->player_list_idx = ListData->ListPosition; mmi_audio_player_show_info(0, TxtPlayerFileSelected, TxtNull, NULL); } return; } /******************************************************************************* $Function: mmi_audio_player_files_win_cb $Description: Window event handler $Returns: MFW_EVENT_REJECTED: MFW_EVENT_CONSUMED: $Arguments: *******************************************************************************/ static int mmi_audio_player_files_win_cb (MfwEvt e, MfwWin *w) { TRACE_FUNCTION ("mmi_audio_player_files_win_cb()"); switch (e) { case MfwWinVisible: /* window is visible */ break; case MfwWinFocussed: /* input focus / selected */ case MfwWinDelete: /* window will be deleted */ default: return MFW_EVENT_REJECTED; } return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: mmi_audio_player_files_exec_cb $Description: Call back function $Returns: none $Arguments: *******************************************************************************/ void mmi_audio_player_files_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter) { T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; T_player_menu * data = (T_player_menu *)win_data->user; int max_file_number; int i; TRACE_FUNCTION ("mmi_audio_player_files_exec_cb"); switch (event) { case E_INIT: TRACE_EVENT(">>>> mmi_audio_player_files_exec_cb() Event:E_INIT"); /* initialization of administrative data */ data->menu_list_data = (ListMenuData *)ALLOC_MEMORY(sizeof(ListMenuData)); if(data->menu_list_data == 0) { TRACE_EVENT("Failed memory alloc 1 "); return; } max_file_number = mfw_audio_player_return_file_number(); //In case no files have been loaded display info message //In case no files have been loaded return info message if(max_file_number == 0) { mmi_audio_player_show_info(0, TxtPlayerFileNotLoaded, TxtNull, NULL); return; } data->menu_list_data->List = (T_MFW_MNU_ITEM *)ALLOC_MEMORY( max_file_number * sizeof(T_MFW_MNU_ITEM) ); if(data->menu_list_data->List == 0) { TRACE_EVENT("Failed memory alloc 2"); return; } //Sep 29,2005 REF: SPR 34407 xdeepadh for (i = 0; i < max_file_number ; i++) { mnuInitDataItem(&data->menu_list_data->List[i]); data->menu_list_data->List[i].flagFunc = item_flag_none; //Display the Player file names in the list data->menu_list_data->List[i].str = (char *)mfw_audio_player_return_file_name(data->player_file_count++); } data->menu_list_data->ListLength =max_file_number; data->menu_list_data->ListPosition = 1; data->menu_list_data->CursorPosition = 1; data->menu_list_data->SnapshotSize = max_file_number; data->menu_list_data->Font = 0; data->menu_list_data->LeftSoftKey = TxtSoftSelect; data->menu_list_data->RightSoftKey = TxtSoftBack; data->menu_list_data->KeyEvents = KEY_ALL; data->menu_list_data->Reason = 0; data->menu_list_data->Strings = TRUE; data->menu_list_data->Attr = (MfwMnuAttr*)&menuPlayerSearchListAttr; //Apr 05, 2005 REF: ENH 29994 xdeepadh data->menu_list_data->Attr->hdrId = TxtPlayerTest; data->menu_list_data->autoDestroy = FALSE; listDisplayListMenu(win, data->menu_list_data,(ListCbFunc)mmi_audio_player_menu_list_listmnu_cb,0); break; default: break; } } /******************************************************************************* $Function: mmi_audio_player_files_browse $Description: This function is called when the user selects "Browse Player Files" option $Returns: MFW_EVENT_CONSUMED $Arguments: *******************************************************************************/ GLOBAL int mmi_audio_player_files_browse( MfwMnu *m, MfwMnuItem *i ) { T_MFW_HND win; T_MFW_HND parent_win = mfw_parent(mfw_header()); int numberOfMelodies=0; TRACE_FUNCTION ("mmi_audio_player_files_browse"); //Sep 11, 2006 DR: OMAPS00094182 xrashmic mfw_audio_player_init(); numberOfMelodies = mfw_audio_player_return_file_number(); TRACE_EVENT_P1("numberOfMelodies is %d",numberOfMelodies); if(numberOfMelodies <= 0) { mmi_audio_player_show_info(0, TxtPlayerFileNotLoaded, TxtNull, NULL); } else { win = mmi_audio_player_build_player_Menu(parent_win); if (win NEQ NULL) { SEND_EVENT (win, E_INIT, 0, 0); } } return MFW_EVENT_CONSUMED; } //Sep 29,2005 REF: SPR 34407 xdeepadh /******************************************************************************* $Function: mmi_audio_player_build_player_Menu $Description: To hold list window $Returns: Window handle $Arguments: *******************************************************************************/ static T_MFW_HND mmi_audio_player_build_player_Menu( MfwHnd parent_window) { T_player_menu * data = (T_player_menu *)mfwAlloc(sizeof (T_player_menu)); T_MFW_WIN * win; TRACE_FUNCTION ("mmi_audio_player_build_player_Menu"); /* * Create window handler */ data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)mmi_audio_player_files_win_cb); if (data->win EQ NULL) { return NULL; } TRACE_EVENT("list holder window created: " ); /* * connect the dialog data to the MFW-window */ data->mmi_control.dialog = (T_DIALOG_FUNC)mmi_audio_player_files_exec_cb; data->mmi_control.data = data; win = ((T_MFW_HDR *)data->win)->data; win->user = (void *)data; data->parent = parent_window; winShow(data->win); /* * return window handle */ return data->win; } //Sep 27,2005 REF: SPR 34402 xdeepadh /******************************************************************************* $Function: mmi_audio_player_set_cur_selected_channels $Description: The Menu for Player channels will be displayed, by highlighting the selected menu item. $Returns:None $Arguments:None *******************************************************************************/ void mmi_audio_player_set_cur_selected_channels(void) { UBYTE CurSel; T_MFW_HND setting_win; T_MFW_HND win = mfw_parent(mfw_header()); setting_win =(T_MFW_HND) bookMenuStart(win, (MfwMnuAttr*)PlayerChannelAttributes(), 0); CurSel = FFS_flashData.player_channel_state; SEND_EVENT(setting_win, DEFAULT_OPTION, NULL, &CurSel); } #if (BOARD == 71) /******************************************************************************* $Function: mmi_audio_player_pause $Description: set player to pause $Returns: $Arguments: *******************************************************************************/ int M_exePause (MfwMnu* m, MfwMnuItem* i) { mfw_audio_player_pause(); IsPaused=TRUE; mmi_mp3_test_opt_destroy(optionwin); optionwin = NULL; dspl_ClearAll(); ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerPause); displaySoftKeys(TxtPlayerResume, TxtStop); return 1; } /******************************************************************************* $Function: mmi_audio_player_forward $Description: set player to forward $Returns: $Arguments: *******************************************************************************/ int M_exeForward (MfwMnu* m, MfwMnuItem* i) { mmi_mp3_test_opt_destroy(optionwin); optionwin = NULL; dspl_ClearAll(); ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerResume); displaySoftKeys(TxtSoftOptions, TxtStop); mfw_audio_player_forward(MP3_FORWARD_REWIND_TIME); mmi_audio_player_show_info(0, TxtPlayerForwarding, TxtNull, NULL); return 1; } /******************************************************************************* $Function: mmi_audio_player_rewind $Description: set player to rewind $Returns: $Arguments: *******************************************************************************/ int M_exeRewind (MfwMnu* m, MfwMnuItem* i) { mmi_mp3_test_opt_destroy(optionwin); optionwin = NULL; dspl_ClearAll(); ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerResume); displaySoftKeys(TxtSoftOptions, TxtStop); mfw_audio_player_rewind(MP3_FORWARD_REWIND_TIME); mmi_audio_player_show_info(0, TxtPlayerRewinding, TxtNull, NULL); return 1; } #endif /******************************************************************************* $Function: mmi_audio_player_set_channel_mono $Description: set channels to mono $Returns: $Arguments: *******************************************************************************/ GLOBAL int mmi_audio_player_set_channel_mono (MfwMnu* m, MfwMnuItem* i) { SHORT mfw_audio_player_retVal; TRACE_FUNCTION ("mmi_audio_player_set_channel_mono()"); mfw_audio_player_retVal = mfw_audio_player_set_channel_mono(); if(mfw_audio_player_retVal != MFW_PLAYER_TEST_OK) { TRACE_FUNCTION ("mmi_audio_player_set_channel_mono(): Riviera Failed"); mmi_audio_player_show_info(0, TxtPlayerTest, TxtNull, NULL); } else { // Sep 27,2005 REF: SPR 34402 xdeepadh // The channel state will be written into the flash. FFS_flashData.player_channel_state = PLAYER_CHANNEL_MONO ; flash_write(); mmi_audio_player_show_info(0, TxtPlayerMonoChannel, TxtNull, NULL); } return 1; } /******************************************************************************* $Function: mmi_audio_player_set_channel_stereo $Description: set channels to stereo $Returns: $Arguments: *******************************************************************************/ GLOBAL int mmi_audio_player_set_channel_stereo (MfwMnu* m, MfwMnuItem* i) { SHORT mfw_audio_player_retVal; TRACE_FUNCTION ("mmi_audio_player_set_channel_stereo()"); mfw_audio_player_retVal = mfw_audio_player_set_channel_stereo(); if(mfw_audio_player_retVal != MFW_PLAYER_TEST_OK) { TRACE_FUNCTION ("mmi_audio_player_set_channel_stereo(): Riviera Failed"); mmi_audio_player_show_info(0, TxtPlayerTest, TxtNull, NULL); } else { // Sep 27,2005 REF: SPR 34402 xdeepadh // The channel state will be written into the flash. FFS_flashData.player_channel_state = PLAYER_CHANNEL_STEREO; flash_write(); mmi_audio_player_show_info(0, TxtPlayerStereoChannel, TxtNull, NULL); } return 1; } /******************************************************************************* $Function: mmi_audio_player_show_info $Description: $Returns: $Arguments: *******************************************************************************/ static MfwHnd mmi_audio_player_show_info(T_MFW_HND parent, int str1, int str2, T_VOID_FUNC callback) { T_DISPLAY_DATA display_info; TRACE_FUNCTION ("mmi_audio_player_show_info()"); /* ** Create a timed dialog to display the Message "Failed" */ dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, str1, str2, COLOUR_STATUS); dlg_initDisplayData_events( &display_info, callback, PLAYER_INFO_SCRN_TIMEOUT, KEY_LEFT | KEY_CLEAR | KEY_HUP); return info_dialog(parent, &display_info); } //Jul 18, 2005 REF: SPR 31695 xdeepadh /******************************************************************************* $Function: mmi_audio_player_play_destroy $Description: Destruction of an dialog $Returns: void $Arguments: win *******************************************************************************/ void mmi_audio_player_play_destroy (T_MFW_HND own_window) { T_MFW_WIN * win = ((T_MFW_HDR *)own_window)->data; T_MMI_Player_Win_data * data = (T_MMI_Player_Win_data *)win->user; TRACE_FUNCTION ("mmi_audio_player_play_destroy()"); if (own_window == NULL) { TRACE_EVENT ("Error : Called with NULL Pointer"); return; } if (data) { /* * Exit KEYBOARD Handle */ kbd_delete (data->kbd); /* * Delete WIN Handler */ win_delete (data->info_win); /* * Free Memory */ FREE_MEMORY ((void *)data, sizeof (T_MMI_Player_Win_data)); } } //Jul 18, 2005 REF: SPR 31695 xdeepadh /******************************************************************************* $Function: mmi_audio_player_play_kbd_cb $Description: Keyboard event handler $Returns: status int $Arguments: window handle event, keyboard control block *******************************************************************************/ static int mmi_audio_player_play_kbd_cb (T_MFW_EVENT event, T_MFW_KBD *keyboard) { T_MFW_HND win = mfw_parent (mfw_header()); T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data; T_MMI_Player_Win_data *data = (T_MMI_Player_Win_data *)win_data->user; TRACE_FUNCTION("mmi_audio_player_play_kbd_cb"); switch (keyboard->code) { case KCD_LEFT: if(IsPaused == FALSE) { #if (BOARD == 71) if(IsMP3On == MFW_PLAYER_AAC) { #endif mfw_audio_player_pause(); /* * Clear Screen */ dspl_ClearAll(); /* * Print the information screen */ ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerPause); /* * Print softkeys */ displaySoftKeys(TxtPlayerResume, TxtStop); IsPaused=TRUE; #if (BOARD == 71) } else { mmi_mp3_test_opt_start(data->win,(MfwMnuAttr*)&Mmi_mp3_OPTAttrib); } #endif } else { /* * Clear Screen */ dspl_ClearAll(); mfw_audio_player_resume(); /* * Print the information screen */ ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerResume); /* * Print softkeys */ #if (BOARD == 71) if(IsMP3On == MFW_PLAYER_AAC) #endif displaySoftKeys(TxtPlayerPause, TxtStop); #if (BOARD == 71) else displaySoftKeys(TxtSoftOptions, TxtStop); #endif IsPaused = FALSE; } break; case KCD_HUP: case KCD_RIGHT: mfw_audio_player_stop(); IsPaused = FALSE;/*a0393213 warnings removal- == made =*/ //go back to the previous dialog SEND_EVENT (win, PLAYER_DESTROY, 0, 0); break; default: break; } return MFW_EVENT_CONSUMED; } //Nov 16,2005 REF: DR OMAPS00049192 x0039928 /******************************************************************************* $Function: mmi_audio_player_start_cb $Description: Mmi callback function for mp3 test application $Returns: void $Arguments: win, window handle *******************************************************************************/ void mmi_audio_player_start_cb(T_MFW_HND win, SHORT value) { // Jun 02,2006 REF: DR OMAPS00079746 x0039928 // Fix: MP3 playback error is handled. if (value < 0) mmi_audio_player_show_info(0, TxtError, TxtNull, NULL); #if (BOARD == 71) if(optionwin != NULL) { mmi_mp3_test_opt_destroy(optionwin); optionwin = NULL; } #endif IsPaused = FALSE;/*a0393213 warnings removal- '==' made '='*/ mmi_audio_player_play_destroy(win); dspl_Enable(TRUE); } //Nov 16,2005 REF: DR OMAPS00049192 x0039928 /******************************************************************************* $Function: mmi_audio_player_callback_init $Description: Initializes the mmi return callback path. $Returns: void $Arguments: window handle, callback function *******************************************************************************/ //Nov 16,2005 REF: DR OMAPS00049192 x0039928 static void mmi_audio_player_callback_init(T_MFW_HND win, void (*callback)(T_MFW_HND, SHORT )) { mmi_audio_player_return_path.focus_win = win; mmi_audio_player_return_path.callback = callback; } //Jul 18, 2005 REF: SPR 31695 xdeepadh /******************************************************************************* $Function: mmi_audio_player_play_exec_cb $Description: Dialog function for Player test app dialog $Returns: void $Arguments: win, window handle event, value, parameter *******************************************************************************/ void mmi_audio_player_play_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter) { T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; T_MMI_Player_Win_data * data = (T_MMI_Player_Win_data *)win_data->user; TRACE_FUNCTION ("mmi_audio_player_play_exec_cb()"); switch (event) { case PLAYER_INIT: TRACE_EVENT ("PLAYER_INIT()"); // Nov 16,2005 REF: DR OMAPS00049192 x0039928 // Initialize the callback function to the return path. mmi_audio_player_callback_init(win, mmi_audio_player_start_cb); // Initialize dialog //Create keyboard handler data->kbd = kbd_create (win, KEY_ALL, (T_MFW_CB)mmi_audio_player_play_kbd_cb); if (value EQ PLAYER_PLAY) { TRACE_EVENT ("PLAYER_PLAY()"); mfw_audio_player_play(); win_show (win); } break; case PLAYER_DESTROY: mmi_audio_player_play_destroy(win); break; } } //Jul 18, 2005 REF: SPR 31695 xdeepadh /******************************************************************************* $Function: mmi_audio_player_play_win_cb $Description: Callback function for information dialog $Returns: void $Arguments: window handle event, win *******************************************************************************/ static int mmi_audio_player_play_win_cb (T_MFW_EVENT event, T_MFW_WIN * win) { T_MMI_Player_Win_data * data = (T_MMI_Player_Win_data *)win->user; TRACE_FUNCTION ("mmi_audio_player_play_win_cb()"); if (data EQ NULL) return NULL; switch (event) { case E_WIN_VISIBLE: if (win->flags & E_WIN_VISIBLE) { /* * Clear Screen */ dspl_ClearAll(); /* * Print the information screen */ ALIGNED_PROMPT(LEFT,Mmi_layout_line(1),0, TxtPlayerPlaying); /* * Print softkeys */ #if (BOARD == 71) if(IsMP3On == MFW_PLAYER_AAC) #endif displaySoftKeys(TxtPlayerPause, TxtStop); #if (BOARD == 71) else displaySoftKeys(TxtSoftOptions,TxtStop ); #endif } break; default: return 0; } return 1; } //Jul 18, 2005 REF: SPR 31695 xdeepadh /******************************************************************************* $Function: mmi_audio_player_play_create $Description: Creation of window $Returns: Dialogue info win $Arguments: parent win *******************************************************************************/ static T_MFW_HND mmi_audio_player_play_create (T_MFW_HND parent_win) { T_MFW_WIN * win_data; T_MMI_Player_Win_data * data = (T_MMI_Player_Win_data *)ALLOC_MEMORY (sizeof (T_MMI_Player_Win_data)); TRACE_FUNCTION ("mmi_audio_player_play_create()"); data->info_win = win_create (parent_win, 0, E_WIN_VISIBLE, (T_MFW_CB)mmi_audio_player_play_win_cb); if (data->info_win EQ NULL) return NULL; /* * Create window handler */ data->mmi_control.dialog = (T_DIALOG_FUNC)mmi_audio_player_play_exec_cb; data->mmi_control.data = data; data->parent_win = parent_win; win_data = ((T_MFW_HDR *)data->info_win)->data; win_data->user = (void *)data; /* * return window handle */ return data->info_win; } //Jul 18, 2005 REF: SPR 31695 xdeepadh /******************************************************************************* $Function: mmi_audio_player_play_start $Description: create a new voicememo dialog $Returns: Dialogue info win $Arguments: parent win, display info *******************************************************************************/ T_MFW_HND mmi_audio_player_play_start (T_MFW_HND parent_win, SHORT ID) { T_MFW_HND win; win = mmi_audio_player_play_create (parent_win); if (win NEQ NULL) { SEND_EVENT (win, PLAYER_INIT, ID, 0); } return win; } //Jul 18, 2005 REF: SPR 31695 xdeepadh /******************************************************************************* $Function: mmi_audio_player_play $Description: $Returns: $Arguments: *******************************************************************************/ GLOBAL int mmi_audio_player_play (MfwMnu* m, MfwMnuItem* i) { T_MFW_HND win = mfw_parent(mfw_header()); int max_file_number; TRACE_FUNCTION ("mmi_audio_player_play()"); //If no file is selected inform the user //retrieve from MFW number of files loaded max_file_number = mfw_audio_player_return_file_number(); //In case no files have been loaded return info message if(max_file_number == 0) { mmi_audio_player_show_info(0, TxtPlayerFileNotLoaded, TxtNull, NULL); } //If no file is selected inform the user else if(audio_player_currently_playing_idx < 0) { mmi_audio_player_show_info(0, TxtPlayerSelectFile, TxtNull, NULL); } else { //create a new Player playing screen mmi_audio_player_play_start (win, PLAYER_PLAY); } return 1; } //Sep 11, 2006 DR: OMAPS00094182 xrashmic /******************************************************************************* $Function: mmi_audio_player_Application_cb $Description: Callback function called on exiting the audio player appilcation $Returns: None $Arguments: parent_win : Parent window identifier : reason: *******************************************************************************/ static void mmi_audio_player_Application_cb(T_MFW_HND parent_win, UBYTE identifier, UBYTE reason) { TRACE_FUNCTION("mmi_audio_player_Application_cb"); mfw_audio_player_unpopulate_files(); } /******************************************************************************* $Function: mmi_audio_player_Application $Description: Launcing the audio player application menu $Returns: $Arguments: m : pointer to the mnu data for the menu which caused this function to be called. i : pointer to the item data from the menu. *******************************************************************************/ GLOBAL int mmi_audio_player_Application (MfwMnu* m, MfwMnuItem* i) { T_MFW_HND win; T_MFW_HND parent_win = mfw_parent(mfw_header()); TRACE_FUNCTION("mmi_audio_player_Application"); win=bookMenuStart(parent_win, AudioPlayerAppMenuAttributes(),0); SEND_EVENT(win, ADD_CALLBACK, NULL, (void *)mmi_audio_player_Application_cb); return MFW_EVENT_CONSUMED; }