FreeCalypso > hg > fc-magnetite
view src/ui3/mfw/mfw_mp3test.c @ 624:012028896cfb
FFS dev.c, Leonardo target: Fujitsu MB84VF5F5F4J2 #if 0'ed out
The FFS code we got from TI/Openmoko had a stanza for "Fujitsu MB84VF5F5F4J2
stacked device", using a fake device ID code that would need to be patched
manually into cfgffs.c (suppressing and overriding autodetection) and using
an FFS base address in the nCS2 bank, indicating that this FFS config was
probably meant for the MCP version of Leonardo which allows for 16 MiB flash
with a second bank on nCS2.
We previously had this FFS config stanza conditionalized under
CONFIG_TARGET_LEONARDO because the base address contained therein is invalid
for other targets, but now that we actually have a Leonardo build target in
FC Magnetite, I realize that the better approach is to #if 0 out this stanza
altogether: it is already non-functional because it uses a fake device ID
code, thus it is does not add support for more Leonardo board variants,
instead it is just noise.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 22 Dec 2019 21:24:29 +0000 |
parents | e8ddbb0837ed |
children |
line wrap: on
line source
/* +--------------------------------------------------------------------+ | PROJECT: MMI-Framework (8417) $Workfile:: mfw_mp3.c $| | $Author:: NDH $Revision:: 1 $| | CREATED: 21.05.04 $Modtime:: 21.05.04 14:58 $| | STATE : code | +--------------------------------------------------------------------+ MODULE : MFW_MP3 PURPOSE : This module contains Audio Interface functions. HISTORY : Nov 07, 2006 ER: OMAPS00102732 x0pleela Description: FFS Support for Intel Sibley Flash - Intel 256+64 non-ADMUX (PF38F4050M0Y0C0Q) Solution: Closing the opened directory if readdir is not successful and the new code is under the compilation flag FF_MMI_RELIANCE_FFS 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 AUDIO_OK event recieved after mp3 file play completes is now handled in mfw_mp3_test_start_cb() Nov 14, 2005 REF: OMAPS00044445 xdeepadh Description: Implementation of Test Menu for AAC Solution: The existing MP3 test Application has been enhanced to support the AAC file testing. The interfaces have been made generic to support both MP3 and AAC files. Nov 24,2005 REF: DR OMAPS00049192 x0039928 Bug:MP3: The screen is not refreshed after the mp3 file completes playing Soln: A variable mfw_mp3_playstate is added to maintain the mfw play state. Nov 16,2005 REF: DR OMAPS00049192 x0039928 Bug:MP3: The screen is not refreshed after the mp3 file completes playing Fix: The AUDIO_OK event recieved after mp3 file play completes is now handled in mfw_mp3_test_start_cb() Aug 05, 2005 xdeepadh Description: Configuring the audio path for midi 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. Apr 06, 2005 REF: ENH 30011 xdeepadh Description: Replacing the Test Application compilation flags with new flags. Solution: Removed the Condition to call mp3 APIs, if L1_MP3 flag is enabled. This file will be compiled only if L1_Mp3 flag is enabled. */ /* ** Include Files */ #define ENTITY_MFW /* includes */ #include <string.h> #include "typedefs.h" #include "rv_swe.h" #include "l1sw.cfg" #include "rvm/rvm_gen.h" /* Generic RVM types and functions. */ #include "rvf/rvf_pool_size.h" /* Stack & Memory Bank sizes definitions */ #include "mfw_mfw.h" #include "mfw_mp3test.h" #include "mfw_sys.h" //Added for Trace functions. Jul 18, 2005 REF: SPR 31695 xdeepadh #include "Audio/audio_api.h" #include "ffs/ffs_api.h" /*Local defines*/ //define maximum number of MP3 files being saved #define PLAYER_MAX_FILES 5 #define PLAYER_DIR "/mmi/mp3" /* ** Local Variable Definitions */ static T_RV_RETURN_PATH audio_player_return_path; char* INPUT_FILES_STRING[PLAYER_MAX_FILES]; int NUM_INPUT_FILES; T_AUDIO_MP3_PARAMETER mp3_parameter; #ifdef FF_MMI_TEST_AAC T_AUDIO_AAC_PARAMETER aac_parameter; #endif #ifdef FF_MMI_AUDIO_PROFILE //Flag to indicate whether audio media is being played. extern UBYTE mfwAudPlay; #endif //Nov 16,2005 REF: DR OMAPS00049192 x0039928 MMI_RETURN_PATH mmi_audio_player_return_path; //Nov 24,2005 REF: DR OMAPS00049192 x0039928 // Declare a variable to maintain the mp3 play state int mfw_mp3_playstate = FALSE; char* inputFileName; // input file char tempFilePath[AUDIO_MP3_PATH_NAME_MAX_SIZE]; int audio_player_currently_playing_idx = -1; //index of file to play UBYTE IsMP3On; //Variable to check the selected file /* Function Prototypes */ static void mfw_audio_player_configure_callback_fn(void (*callback_fn)(void *)); /* ** Public function Definitions */ /******************************************************************************* $Function: mfw_audio_player_populate_files $Description:This function is called in order to retrieve file names from Flash and save them in a table $Returns: Status $Arguments: filenames: table to save file names in max_files_count:number of files in the list to be filled . *******************************************************************************/ int mfw_audio_player_populate_files(char **file_names, int max_files_count) { /*a0393213 compiler warnings removal - variable fd removed*/ char dir_name_p[] = PLAYER_DIR; T_FFS_DIR dir = {0}; char dest_name_p[100] = ""; int i, files_count = 0; char *fileExt; TRACE_FUNCTION("mfw_audio_player_populate_files"); if (ffs_opendir (dir_name_p, &dir) <= 0) { files_count = 0; } //Sep 11, 2006 DR: OMAPS00094182 xrashmic //Release previous allocared memory before allocating again mfw_audio_player_unpopulate_files(); //read maximum of 5 file names for (i = 0; ffs_readdir (&dir, dest_name_p, 100) > 0x0; i++) { (file_names[files_count]) = (char*)mfwAlloc(strlen(dest_name_p) + 1); if(file_names[files_count] != NULL) { // Jul 18, 2005 REF: SPR 31695 xdeepadh //retrieve file extension fileExt =(char*) mfw_audio_player_GetExtension(dest_name_p); //Store only mp3 and aac file names in array if ( strcmp(fileExt, "mp3")== 0 ) { strcpy (file_names[files_count], dest_name_p); files_count++; } #ifdef FF_MMI_TEST_AAC if ( strcmp(fileExt, "aac") == 0) { strcpy (file_names[files_count], dest_name_p); files_count++; } #endif if(files_count >= max_files_count) break; } else { //files_count = 0; } } //x0pleela 07 Nov, 2006 DVT: OMAPS00102732 //Adding the MMI compilation flag FF_MMI_RELIANCE_FFS //x0pleela 31 Oct, 2006 //Closing the directory as per the new FFS logic #ifdef FF_MMI_RELIANCE_FFS ffs_closedir(dir); #endif return files_count; } //Sep 11, 2006 DR: OMAPS00094182 xrashmic /******************************************************************************* $Function: mfw_audio_player_unpopulate_files $Description:Free the allocated player array $Returns: Status $Arguments: None *******************************************************************************/ void mfw_audio_player_unpopulate_files(void) { int i=0; TRACE_FUNCTION("mfw_audio_player_unpopulate_files"); //Release the memory allocated for the file list for (i = 0; i<PLAYER_MAX_FILES; i++) { if(INPUT_FILES_STRING[i]) mfwFree((U8 *)INPUT_FILES_STRING[i],(U16)strlen(INPUT_FILES_STRING[i]) + 1); INPUT_FILES_STRING[i]=NULL; } } /******************************************************************************* $Function: mfw_audio_player_init $Description:Populate the Player array $Returns: Status $Arguments: None *******************************************************************************/ void mfw_audio_player_init(void) { NUM_INPUT_FILES = mfw_audio_player_populate_files(INPUT_FILES_STRING, PLAYER_MAX_FILES); mp3_parameter.mono_stereo = AUDIO_MP3_MONO; #ifdef FF_MMI_TEST_AAC aac_parameter.mono_stereo= AUDIO_AAC_MONO; #endif } /******************************************************************************* $Function: mfw_audio_player_set_channel_mono $Description:set channel to mono $Returns: Status $Arguments: None *******************************************************************************/ SHORT mfw_audio_player_set_channel_mono(void) { TRACE_FUNCTION("mfw_audio_player_set_channel_mono"); switch(IsMP3On) { case MFW_PLAYER_MP3: TRACE_EVENT("MP3"); mp3_parameter.mono_stereo = AUDIO_MP3_MONO; break; #ifdef FF_MMI_TEST_AAC case MFW_PLAYER_AAC: TRACE_EVENT("AAC"); aac_parameter.mono_stereo= AUDIO_AAC_MONO; break; #endif default: break; } return MFW_PLAYER_TEST_OK; } /******************************************************************************* $Function: mfw_audio_player_set_channel_stereo $Description:set channel to stereo $Returns: Status $Arguments: None *******************************************************************************/ SHORT mfw_audio_player_set_channel_stereo(void) { TRACE_FUNCTION("mfw_audio_player_set_channel_stereo"); switch(IsMP3On) { case MFW_PLAYER_MP3: TRACE_EVENT("MP3"); mp3_parameter.mono_stereo = AUDIO_MP3_STEREO; break; #ifdef FF_MMI_TEST_AAC case MFW_PLAYER_AAC: TRACE_EVENT("AAC"); aac_parameter.mono_stereo= AUDIO_AAC_STEREO; break; #endif default: break; } return MFW_PLAYER_TEST_OK; } /******************************************************************************* $Function: mfw_audio_player_mp3_start_cb $Description:callback function for starting mp3 file $Returns: None $Arguments: parameter: callback parameter *******************************************************************************/ static void mfw_audio_player_mp3_start_cb (void *parameter) { //Nov 16,2005 REF: DR OMAPS00049192 x0039928 T_AUDIO_MP3_STATUS *param = (T_AUDIO_MP3_STATUS *)parameter; SHORT event = param->status; UINT32 msg = param->os_hdr.msg_id; #ifdef FF_MMI_AUDIO_PROFILE //configure the audio to voice path mfwAudPlay = FALSE; mfw_unset_stereo_path(mfw_get_current_audioDevice()); #endif switch(event) { // MMI callback function is called to destroy the focus window when AUDIO_OK // event is recieved for mp3 file play complete case AUDIO_OK: if((mfw_mp3_playstate == TRUE) && (msg == AUDIO_MP3_STATUS_MSG)) (* mmi_audio_player_return_path.callback)(mmi_audio_player_return_path.focus_win, AUDIO_OK); break; // Jun 02,2006 REF: DR OMAPS00079746 x0039928 // Fix: MP3 playback error is handled. case AUDIO_ERROR: if((mfw_mp3_playstate == TRUE) && (msg == AUDIO_MP3_STATUS_MSG)) (* mmi_audio_player_return_path.callback)(mmi_audio_player_return_path.focus_win, AUDIO_ERROR); break; default: break; } } /******************************************************************************* $Function: mfw_audio_player_aac_start_cb $Description:callback function for starting aac file $Returns: None $Arguments: parameter: callback parameter *******************************************************************************/ #ifdef FF_MMI_TEST_AAC static void mfw_audio_player_aac_start_cb(void *parameter) { //Nov 16,2005 REF: DR OMAPS00049192 x0039928 T_AUDIO_AAC_STATUS *param = (T_AUDIO_AAC_STATUS *)parameter; SHORT event = param->status; UINT32 msg = param->os_hdr.msg_id; #ifdef FF_MMI_AUDIO_PROFILE //configure the audio to voice path mfwAudPlay = FALSE; mfw_unset_stereo_path(mfw_get_current_audioDevice()); #endif switch(event) { // MMI callback function is called to destroy the focus window when AUDIO_OK // event is recieved for mp3 file play complete case AUDIO_OK: if((mfw_mp3_playstate == TRUE) &&(msg == AUDIO_AAC_STATUS_MSG)) (* mmi_audio_player_return_path.callback)(mmi_audio_player_return_path.focus_win, AUDIO_OK); break; // Jun 02,2006 REF: DR OMAPS00079746 x0039928 // Fix: MP3 playback error is handled. case AUDIO_ERROR: if((mfw_mp3_playstate == TRUE) &&(msg == AUDIO_AAC_STATUS_MSG)) (* mmi_audio_player_return_path.callback)(mmi_audio_player_return_path.focus_win, AUDIO_ERROR); break; default: break; } } #endif /******************************************************************************* $Function: mfw_audio_player_configure_callback_fn $Description:Configure the Riviera Return Path $Returns:None $Arguments: callback function *******************************************************************************/ static void mfw_audio_player_configure_callback_fn(void (*callback_fn)(void *)) { audio_player_return_path.addr_id = 0; audio_player_return_path.callback_func = callback_fn; return; } /******************************************************************************* $Function: mfw_audio_player_play $Description:play the file which was loaded When no file was manually selected, play file located at first index by default $Returns:Status $Arguments: None *******************************************************************************/ SHORT mfw_audio_player_play(void) { SHORT mfw_audio_player_retVal; TRACE_FUNCTION("mfw_audio_player_play"); //Aug 05, 2005 xdeepadh #ifdef FF_MMI_AUDIO_PROFILE //Configure the audio path to current Audio device. mfw_set_stereo_path(mfw_get_current_audioDevice()); mfwAudPlay = TRUE; //File is playing #endif //Nov 24,2005 REF: DR OMAPS00049192 x0039928 // Set mp3 play state to True mfw_mp3_playstate = TRUE; //Based on the file selected, call the respective APIS to start playing switch(IsMP3On) { case MFW_PLAYER_MP3 : #ifdef FF_MMI_FILEMANAGER sprintf(tempFilePath,"/FFS/%s/%s",PLAYER_DIR, inputFileName); convert_u8_to_unicode(tempFilePath,mp3_parameter.mp3_name); #else sprintf(tempFilePath,"%s/%s",PLAYER_DIR, inputFileName); strcpy(mp3_parameter.mp3_name, tempFilePath); #endif mfw_audio_player_configure_callback_fn(mfw_audio_player_mp3_start_cb); if (audio_mp3_start(&mp3_parameter, audio_player_return_path)) { mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; } else { mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; } break; #ifdef FF_MMI_TEST_AAC case MFW_PLAYER_AAC: #ifdef FF_MMI_FILEMANAGER sprintf(tempFilePath,"/FFS/%s/%s",PLAYER_DIR, inputFileName); convert_u8_to_unicode( tempFilePath,aac_parameter.aac_name); #else sprintf(tempFilePath,"%s/%s",PLAYER_DIR, inputFileName); strcpy(aac_parameter.aac_name, tempFilePath); #endif mfw_audio_player_configure_callback_fn(mfw_audio_player_aac_start_cb); if (audio_aac_start(&aac_parameter, audio_player_return_path)) { mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; } else { mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; } break; #endif default: mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; break; } return mfw_audio_player_retVal; } /******************************************************************************* $Function: mfw_audio_player_stop $Description:stop the file which was played $Returns:Status $Arguments: None *******************************************************************************/ SHORT mfw_audio_player_stop(void) { SHORT mfw_audio_player_retVal; UINT32 size_played; // Aug 05, 2005 xdeepadh #ifdef FF_MMI_AUDIO_PROFILE //configure the audio to voice path mfwAudPlay = FALSE; mfw_unset_stereo_path(mfw_get_current_audioDevice()); #endif TRACE_FUNCTION("mfw_audio_player_stop"); // Nov 24, 2005 REF : DR OMAPS00049192 x0039928 // Set mp3 play state to false mfw_mp3_playstate = FALSE; //Based on the file selected, call the respective APIS to stop playing switch(IsMP3On) { case MFW_PLAYER_MP3 : if (audio_mp3_stop(&size_played)) { mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; } else { mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; } break; #ifdef FF_MMI_TEST_AAC case MFW_PLAYER_AAC: if(audio_aac_stop(&size_played)) { mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; } else { mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; } break; #endif default: mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; break; } return mfw_audio_player_retVal; } #if (BOARD == 71) /******************************************************************************* $Function: mfw_audio_player_forward $Description: forward the file which is being played $Returns:Status $Arguments: None *******************************************************************************/ SHORT mfw_audio_player_forward(UINT32 time) { SHORT mfw_audio_player_retVal; if(audio_mp3_forward(time)) mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; else mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; return mfw_audio_player_retVal; } /******************************************************************************* $Function: mfw_audio_player_rewind $Description: rewind the file which is being played $Returns:Status $Arguments: None *******************************************************************************/ SHORT mfw_audio_player_rewind(UINT32 time) { SHORT mfw_audio_player_retVal; if(audio_mp3_rewind(time)) mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; else mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; return mfw_audio_player_retVal; } #endif /******************************************************************************* $Function: mfw_audio_player_pause $Description:pause the file which was played $Returns:Status $Arguments: None *******************************************************************************/ SHORT mfw_audio_player_pause(void) { SHORT mfw_audio_player_retVal; TRACE_FUNCTION("mfw_audio_player_pause"); //Based on the file selected, call the respective APIS to pause playing switch(IsMP3On) { case MFW_PLAYER_MP3 : if (audio_mp3_pause()) { mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; } else { mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; } break; #ifdef FF_MMI_TEST_AAC case MFW_PLAYER_AAC: if (audio_aac_pause()) { mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; } else { mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; } break; #endif default: mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; break; } return mfw_audio_player_retVal; } /******************************************************************************* $Function: mfw_audio_player_resume $Description:resume the file which was played $Returns:Status $Arguments: None *******************************************************************************/ SHORT mfw_audio_player_resume(void) { SHORT mfw_audio_player_retVal; TRACE_FUNCTION("mfw_audio_player_resume"); //Based on the file selected, call the respective APIS to resume playing switch(IsMP3On) { case MFW_PLAYER_MP3 : if (audio_mp3_resume()) { mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; } else { mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; } break; #ifdef FF_MMI_TEST_AAC case MFW_PLAYER_AAC: if (audio_aac_resume()) { mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; } else { mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; } break; #endif default: mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; break; } return mfw_audio_player_retVal; } /******************************************************************************* $Function: mfw_audio_player_return_file_number $Description:resume the file which was played $Returns:Status $Arguments: None *******************************************************************************/ int mfw_audio_player_return_file_number(void) { return NUM_INPUT_FILES; } /******************************************************************************* $Function: mfw_audio_player_return_file_name $Description: return file name given an input index $Returns:file name of the selected index $Arguments: index *******************************************************************************/ char* mfw_audio_player_return_file_name(int index) { return INPUT_FILES_STRING[index]; } /******************************************************************************* $Function: mfw_audio_player_save_selected_file_idx $Description:return file name given an input index $Returns:status $Arguments: index *******************************************************************************/ SHORT mfw_audio_player_save_selected_file_idx(int index) { //default index is set to 0 and inputFileName to NULL at mp3 mfw initialisation //save currently selected file to control block audio_player_currently_playing_idx = index; inputFileName = INPUT_FILES_STRING[index]; return MFW_PLAYER_TEST_OK; } // Jul 18, 2005 REF: SPR 31695 xdeepadh /******************************************************************************* $Function: mfw_audio_player_GetExtension $Description: public function to retrieve the extension of a file $Returns:Extention of the filename $Arguments: scr- Filename *******************************************************************************/ char *mfw_audio_player_GetExtension(char *src) { U8 i; TRACE_FUNCTION("mfw_audio_player_GetExtension"); for(i = 0; i < strlen(src); i++){ if(src[i] == '.'){ return (src+i+1); } } return (src+i); }