FreeCalypso > hg > fc-tourmaline
diff src/ui/mfw/mfw_midi.c @ 3:67bfe9f274f6
src/ui: import of src/ui3 from Magnetite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:33:10 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ui/mfw/mfw_midi.c Fri Oct 16 06:33:10 2020 +0000 @@ -0,0 +1,943 @@ +/* ++--------------------------------------------------------------------+ +| PROJECT: MMI-Framework (8417) $Workfile:: mfw_midi.c $| +| $Author:: NDH $Revision:: 1 $| +| CREATED: 21.05.04 $Modtime:: 21.05.04 14:58 $| +| STATE : code | ++--------------------------------------------------------------------+ + + MODULE : MFW_MIDI + + PURPOSE : This module contains Midi Riveria Interface functions. + + HISTORY : + + Aug 27, 2007 REF:DRT OMAPS00137370 x0045876 + Description: MM: MIDI/IMY file is not played correctly after listening a + MP3 in the Browse Midi list. + Solution: Param Voice_Limit is changed when MP3 or AAC file is played. So before + playing MP3 or AAC file, Voice_Limit should be saved. + Apr 10, 2007 DRT: OMAPS00125309 x0039928 + Description: MM - Mono option does not work => MMI changes required + Solution: Selected Output channel from the settings menu is set for all the players. + + Mar 20, 2007 REF:DRT OMAPS00120135 x0039928 + Description: Midi/MP3/AAC Ringer alert failed with N5.23 pre release + Solution: The parameter to as_deduce_player_type is corrected. + + Jun 06, 2006 REF:ER OMAPS00080844 xdeepadh + Description: duplication of midi files in ffs area + Solution: The code to create and load the midi files from FFS to LFS is + removed. + + Nov 21, 2005 REF:ER OMAPS00057430 nekkareb + Description: AAC Ringer Implementation + Solution: The Midi Ringer application has been enhanced to support AAC as ringer. + + Nov 23, 2005 REF : DR OMAPS00057378 x0039928 + Bug: All MIDI files are not displayed in MMI in locosto-lite + Fix: Buffer memory allocated to copy the file contents is freed + properly and copying file from FFS to LFS is not terminated if error is + returned for just any one file, instead it tries to copy other files. + + Nov 09, 2005 REF:DR OMAPS00049167 x0039928 + Description: The midi files cannot be heard if the audio channel selected is 'Mono' + Solution: Midi Player params are made global so that settings are retained across. + + Nov 04, 2005 REF:DRT OMAPS00053737 xdeepadh + Description: MIDI Ringer Linear Flash Support. + Solution: The Midi Ringer application has been enhanced to loadand play the midi files from LFS. + + Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh + Description: Mp3 Ringer Implementation + Solution: The Midi Ringer application has been enhanced to support mp3 as ringer. + The interface function names have been modified. + + Aug 17, 2005 REF: CHG 33822 xdeepadh + Description: Configuring the Audio path from Midi Test Application Menu + Solution: Loading the audio profile for headset and handheld. + + Aug 05, 2005 xdeepadh + Description: Configuring the audio path for midi + + Apr 05, 2005 REF: ENH 29994 xdeepadh + Description: Implementation of Generic Midi Ringer and Modification of existing Midi Test Application + Solution: Generic Midi Ringer and Midi Test Application were implemented. + +*/ + +#define ENTITY_MFW +/* +** Include Files +*/ + +#include "rv_swe.h" + +/* includes */ +#include <string.h> +#include "typedefs.h" +#include "mfw_midi.h" +#include "mfw_mfw.h" +#include "mfw_sys.h" +#ifdef FF_MMI_AUDIO_PROFILE +#include "mfw_mme.h" +#endif +//Nov 04, 2005 REF:DRT OMAPS00053737 xdeepadh +#ifdef FF_MIDI_LOAD_FROM_LFS +#include "ffs/ffs_api.h" +#endif //FF_MIDI_LOAD_FROM_LFS + + + +/*Local defines*/ + +#define MIDI_FIRST_FILE_INDEX 0 +#define MIDI_MAX_FILES 10 +/// Maximum length of the audio data filename (excluded EOS character). + +/* +** Local Variable Definitions +*/ +static T_RV_RETURN_PATH midi_return_path; + +/* Global variables*/ +INT16 player_channel = MIDI_CHANNEL_STEREO; +int mfw_player_currently_playing_idx=-1; +UBYTE mfw_player_exit_flag=PLAYER_EXIT_FLAG_TRUE; +UBYTE mfw_player_playback_loop_flag=FALSE; +//Aug 05, 2005 xdeepadh +#ifdef FF_MMI_AUDIO_PROFILE +//Flag to indicate whether audio media is being played. +extern UBYTE mfwAudPlay; +extern void mfw_audio_set_device(int type); +#endif //FF_MMI_AUDIO_PROFILE + +// Nov 09, 2005 REF:DR OMAPS00049167 x0039928 +// Fix : Declare player_para as global variable. +#ifdef FF_MMI_TEST_MIDI +T_AS_PLAYER_PARAMS player_para; +#endif + +/* Aug 27, 2007 DRT: OMAPS00137370 x0045876 */ +/* Voice Limit parameter should be saved to a temp var before playing + MP3 or AAC file */ +static INT16 temp_voice_limit = FF_MIDI_VOICE_LIMIT; +/* +** Public function Definitions +*/ + +/******************************************************************************* + + $Function: mfw_player_init + + $Description: initialize global variables + + $Returns: + + $Arguments: + +*******************************************************************************/ +void mfw_player_init(void) +{ + // Nov 09, 2005 REF:DR OMAPS00049167 x0039928 + // Fix : Initialize the player parameter to the default values. + #ifdef FF_MMI_TEST_MIDI + TRACE_FUNCTION("mfw_player_init"); + player_para.midi.output_channels = MIDI_CHANNEL_MONO; + player_para.midi.voice_limit = FF_MIDI_VOICE_LIMIT; + as_player_set_params(AS_PLAYER_TYPE_MIDI,&player_para); + #endif + } + +/* +** Public function Definitions +*/ + +/******************************************************************************* + + $Function: mfw_player_set_loop_on + + $Description: Sets the playback of the midi file in loop on mode(repeat). + + $Returns: MFW_PLAYER_TEST_OK + + $Arguments: None + +*******************************************************************************/ +SHORT mfw_player_set_loop_on(void) +{ + TRACE_FUNCTION("mfw_player_set_loop_on"); + mfw_player_playback_loop_flag = TRUE; + return MFW_PLAYER_TEST_OK; +} + + +/******************************************************************************* + + $Function: mfw_player_set_loop_off + + $Description: Sets the playback of the midi file in loop off mode(once) + + $Returns: MFW_PLAYER_TEST_OK + + $Arguments: None + +*******************************************************************************/ +SHORT mfw_player_set_loop_off(void) +{ + TRACE_FUNCTION("mfw_player_set_loop_off"); + mfw_player_playback_loop_flag = FALSE; + return MFW_PLAYER_TEST_OK; +} + + + +/******************************************************************************* + + $Function: mfw_player_set_channel_mono + + $Description:Sets the channel to mono + + $Returns: MFW_PLAYER_TEST_OK + + $Arguments: None + +*******************************************************************************/ +SHORT mfw_player_set_channel_mono(void) +{ +#ifdef FF_MMI_TEST_MIDI + TRACE_EVENT("mfw_player_set_channel_mono"); +/* Apr 10, 2007 DRT: OMAPS00125309 x0039928 */ + player_channel = MIDI_CHANNEL_MONO; + return MFW_PLAYER_TEST_OK; +#else + return MFW_PLAYER_TEST_OK; +#endif +} + + +/******************************************************************************* + + $Function: mfw_player_set_channel_stereo + + $Description:Sets channel to stereo + + $Returns: MFW_PLAYER_TEST_OK + + $Arguments: None + +*******************************************************************************/ +SHORT mfw_player_set_channel_stereo(void) +{ +#ifdef FF_MMI_TEST_MIDI + TRACE_EVENT("mfw_player_set_channel_stereo"); +/* Apr 10, 2007 DRT: OMAPS00125309 x0039928 */ + player_channel = MIDI_CHANNEL_STEREO; + return MFW_PLAYER_TEST_OK; +#else + return MFW_PLAYER_TEST_OK; +#endif +} + +/* Aug 27, 2007 DRT: OMAPS00137370 x0045876 */ +/* Voice Limit parameter should be saved to a temp var before playing + MP3 or AAC file */ +/******************************************************************************* + + $Function: mfw_player_midi_get_voice_limit + + $Description: gets the voicelimit + + $Returns: Value of Voice Limit between 0 & 32 + + $Arguments: None + +*******************************************************************************/ +INT16 mfw_player_midi_get_voice_limit(void) +{ + return temp_voice_limit; +} + +/******************************************************************************* + + $Function: mfw_player_set_voice_limit + + $Description: sets the voicelimit + + $Returns: None + + $Arguments: voice_limit:The voice limit to be set + +*******************************************************************************/ +void mfw_player_set_voice_limit(INT16 voice_lmt) +{ + temp_voice_limit = voice_lmt; +} + +/******************************************************************************* + + $Function: mfw_player_midi_set_voice_limit + + $Description: Sets the voicelimit + + $Returns: MFW_PLAYER_TEST_OK + + $Arguments: voice_limit:The voice limit to be set + +*******************************************************************************/ +SHORT mfw_player_midi_set_voice_limit(int voice_limit) + { +#ifdef FF_MMI_TEST_MIDI + T_AS_RET player_return; + TRACE_EVENT_P1("mfw_player_midi_set_voice_limit is %d",voice_limit); + player_para.midi.voice_limit=voice_limit; + + /* Aug 27, 2007 DRT: OMAPS00137370 x0045876 */ + /* Voice Limit parameter should be saved to a temp var before playing + MP3 or AAC file */ + mfw_player_set_voice_limit(voice_limit); + TRACE_EVENT_P1("Temp Voice Limit %d", temp_voice_limit); + + player_return=as_player_set_params(AS_PLAYER_TYPE_MIDI,&player_para); + if(player_return==AS_OK) + return MFW_PLAYER_TEST_OK; + else + return MFW_PLAYER_TEST_ERROR; +#else + return MFW_PLAYER_TEST_OK; +#endif +} + +/******************************************************************************* + + $Function: mfw_player_save_selected_file_idx + + $Description: save index of file which have been selected + + $Returns: MFW_PLAYER_TEST_OK + + $Arguments: index: index to be saved + +*******************************************************************************/ +SHORT mfw_player_save_selected_file_idx(int index) + { + //default index is set to 0 and inputFileName to NULL at global initialisation + //save current index of selected file + TRACE_EVENT_P1("mfw_player_save_selected_file_idx is %d",index); + mfw_player_currently_playing_idx = index; + return MFW_PLAYER_TEST_OK; + +} + +/******************************************************************************* + + $Function: mfw_player_set_speaker + + $Description:Sets the player_device to Speaker + + + $Returns: MFW_PLAYER_TEST_OK + + $Arguments: None + +*******************************************************************************/ + SHORT mfw_player_set_speaker() +{ +#ifdef FF_MMI_TEST_MIDI + // Aug 17, 2005 REF: CHG 33822 xdeepadh + //Load the profile for the Handheld. +#ifdef FF_MMI_AUDIO_PROFILE + mfw_audio_set_device(MFW_AUD_HANDHELD); + return MFW_PLAYER_TEST_OK ; +#else + T_AS_RET player_return; + TRACE_EVENT("mfw_player_set_speaker"); + player_para.common.output_device=AS_DEVICE_SPEAKER; + player_return=as_player_set_params(AS_PLAYER_TYPE_COMMON,&player_para); + if(player_return==AS_OK) + return MFW_PLAYER_TEST_OK ; + +#endif //FF_MMI_AUDIO_PROFILE + +#else + return MFW_PLAYER_TEST_OK; + +#endif //FF_MMI_TEST_MIDI +} +/******************************************************************************* + + $Function: mfw_player_set_headset + + $Description:Sets the player_device to Headset + + $Returns: MFW_PLAYER_TEST_OK + + $Arguments: None + +*******************************************************************************/ + SHORT mfw_player_set_headset() + { +#ifdef FF_MMI_TEST_MIDI +// Aug 17, 2005 REF: CHG 33822 xdeepadh +//Load the profile for the Headset. +#ifdef FF_MMI_AUDIO_PROFILE + mfw_audio_set_device(MFW_AUD_HEADSET); + return MFW_PLAYER_TEST_OK ; +#else + T_AS_RET player_return; + TRACE_EVENT("mfw_player_set_headset"); + player_para.common.output_device=AS_DEVICE_HEADSET; + player_return=as_player_set_params(AS_PLAYER_TYPE_COMMON,&player_para); + if(player_return==AS_OK) + return MFW_PLAYER_TEST_OK ; +#endif //FF_MMI_AUDIO_PROFILE +#else + return MFW_PLAYER_TEST_OK; + +#endif //FF_MMI_TEST_MIDI +} + +#ifdef FF_MIDI_RINGER +//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh +//The function names have been modified to be generic +/******************************************************************************* + + $Function: mfw_ringer_set_audiopath + + $Description:Sets the player_device to Speaker + + + $Returns: MFW_PLAYER_TEST_OK + + $Arguments: None + +*******************************************************************************/ + SHORT mfw_ringer_set_audiopath() + { +#ifdef FF_MMI_TEST_MIDI + T_AS_RET player_return; + TRACE_EVENT("mfw_ringer_set_audiopath"); + player_para.common.output_device=AS_DEVICE_SPEAKER; + player_return=as_player_set_params(AS_PLAYER_TYPE_COMMON,&player_para); + if(player_return==AS_OK) + return MFW_PLAYER_TEST_OK ; + else + return MFW_PLAYER_TEST_ERROR; +#else + return MFW_PLAYER_TEST_OK; + + #endif +} +/******************************************************************************* + + $Function: mfw_ringer_set_memory + + $Description:Set the ringer memory address for the given ringer mode. + + $Returns: + AS_OK The call is successful. + AS_INVALID_PARAM The player_type,ringer_mode parameter value is invalid. + AS_INTERNAL_ERROR Not able to send the message request. + + $Arguments: player_type:Type of the player based on the file. + ringer_mode: ringer mode + memory_pointer:pointer to midi file location + size:size of the midi file + +*******************************************************************************/ + +SHORT mfw_ringer_set_memory(T_AS_PLAYER_TYPE player_type,T_AS_RINGER_MODE ringer_mode,UINT32 *memory_pointer,UINT32 size) +{ + T_AS_RET ringer_return; + TRACE_FUNCTION("mfw_ringer_set_memory"); + TRACE_EVENT_P1("player_type is %d",player_type); + ringer_return=as_ringer_set_memory(ringer_mode,player_type,memory_pointer, size); + return ringer_return; +} + +/******************************************************************************* + + $Function: mfw_ringer_set_file + + $Description:Set the ringer filename for the given ringer mode. + + $Returns: + AS_OK The call is successful. + AS_INVALID_PARAM The player_type or ringer_mode parameter value is invalid. + AS_INTERNAL_ERROR Not able to send the message request. + + $Arguments: + player_type:Type of the player based on the file. + ringer_mode: ringer mode + filename:Name of the midi file + +*******************************************************************************/ +SHORT mfw_ringer_set_file(T_AS_PLAYER_TYPE player_type,T_AS_RINGER_MODE ringer_mode, const char* filename) +{ + T_AS_RET ringer_return; + char temp_file_name[FILENAME_MAX_LEN]; +#ifdef FF_MMI_FILEMANAGER + UINT16 temp_file_name_uc[FILENAME_MAX_LEN]; +#endif + TRACE_FUNCTION("mfw_ringer_set_file"); + + //Nov 04, 2005 REF:DRT OMAPS00053737 xdeepadh +#ifdef FF_MIDI_LOAD_FROM_LFS //Set the linear file for Ringer + + //Provide the complete path of the file + strcpy(temp_file_name, LFS_CONTENT_DIR); + strcat(temp_file_name, filename ); + TRACE_EVENT_P1(" linear temp_filename %s",temp_file_name); + ringer_return=as_ringer_set_linear_file(ringer_mode,player_type,temp_file_name); + +#else //Set the FFS file for Ringer + //Provide the complete path of the file + strcpy(temp_file_name, "/FFS"); + strcat(temp_file_name, RINGER_CONTENT_DIR); + strcat(temp_file_name, "/"); + strcat(temp_file_name, filename ); + TRACE_EVENT_P1(" ffs temp_filename %s",temp_file_name); +#ifdef FF_MMI_FILEMANAGER + convert_u8_to_unicode(temp_file_name, temp_file_name_uc); + ringer_return=as_ringer_set_file(ringer_mode,player_type,temp_file_name_uc); +#else + ringer_return=as_ringer_set_file(ringer_mode,player_type,temp_file_name); +#endif +#endif //FF_MIDI_LOAD_FROM_LFS + return ringer_return; +} + +/******************************************************************************* + + $Function: mfw_ringer_set_volume + + $Description:Set the ringer volume for the given ringer mode. + + $Returns: + AS_OK The call is successful. + AS_INVALID_PARAM The ringer_mode or volume parameter value is invalid. + AS_INTERNAL_ERROR Not able to send the message request. + + $Arguments: ringer_mode: ringer mode + volume:Volume which has to be set for the given ringer mode + +*******************************************************************************/ + +SHORT mfw_ringer_set_volume(T_AS_RINGER_MODE ringer_mode,T_AS_VOLUME volume) +{ + T_AS_RET ringer_return; + TRACE_FUNCTION("mfw_ringer_set_volume"); + TRACE_EVENT_P1("the volume to be set is %d",volume); + ringer_return=as_ringer_set_volume(ringer_mode,volume); + return ringer_return; +} + +/******************************************************************************* + + $Function: mfw_ringer_start + + $Description: Play a particular ringer file + + $Returns: + AS_OK The call is successful. + AS_INVALID_PARAM The ringer_mode parameter value is invalid. + AS_INTERNAL_ERROR Not able to send the message request. + + $Arguments: + ringer_mode: ringer mode + loop:playback in loop + callback_fn:callback function + +*******************************************************************************/ + +SHORT mfw_ringer_start(T_AS_RINGER_MODE ringer_mode,BOOLEAN loop,void (*callback_fn)(void *)) +{ + T_AS_RET ringer_return; + TRACE_EVENT("mfw_ringer_start"); + //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 //FF_MMI_AUDIO_PROFILE + mfw_ringer_configure_callback_fn(callback_fn); + ringer_return=as_ring(ringer_mode,loop,&midi_return_path); + return ringer_return; +} + +/******************************************************************************* + + $Function: mfw_ringer_stop + + $Description:Stop the current ringer melody playback. + + $Returns: + AS_OK The call is successful. + AS_INTERNAL_ERROR Not able to send the message request. + + $Arguments: callback_fn:callback function + +*******************************************************************************/ + +SHORT mfw_ringer_stop(void (*callback_fn)(void *)) + { + T_AS_RET ringer_return; + TRACE_EVENT("mfw_ringer_stop"); + mfw_ringer_configure_callback_fn(callback_fn); + ringer_return=as_stop(&midi_return_path); + return ringer_return; +} + +/******************************************************************************* + + $Function: mfw_ringer_get_info + + $Description: Gets the ringer information for the given ringer mode. + + $Returns: + pointer to T_AS_RINGER_INFO + $Arguments: ringer_mode: ringer mode + ringer_info: The ringer details will be stored here. + +*******************************************************************************/ +T_AS_RINGER_INFO* mfw_ringer_get_info(T_AS_RINGER_MODE ringer_mode,const T_AS_RINGER_INFO* ringer_info) +{ + T_AS_RET ringer_return; + TRACE_FUNCTION("mfw_ringer_get_info"); + ringer_return=as_ringer_get(ringer_mode,&ringer_info); + TRACE_EVENT_P1("ringer_info volume is %d",ringer_info->volume); + TRACE_EVENT_P1("ringer info name is %s",ringer_info->data.filename); + if(ringer_return==AS_OK) + return (T_AS_RINGER_INFO*)ringer_info; + else + return NULL; +} + +/******************************************************************************* + + $Function: mfw_ringer_configure_callback_fn + + $Description: Configure the Riviera Return Path + + $Returns:None + + $Arguments: Callback function + +*******************************************************************************/ + +static void mfw_ringer_configure_callback_fn(void (*callback_fn)(void *)) +{ + + TRACE_EVENT("mfw_ringer_configure_callback_fn"); + midi_return_path.addr_id = 0; + midi_return_path.callback_func = callback_fn; + + return; +} + +/******************************************************************************* + + $Function: mfw_player_start_memory + + $Description:Start the playback melody stored in the given memory location according to the given player type. + + $Returns: + AS_OK The call is successful. + AS_INVALID_PARAM The player_type or volume parameter value is invalid. + AS_INTERNAL_ERROR Not able to send the message request. + + $Arguments: player_type:Type of the player based on the file. + address:pointer to midi file location to be played + size:size of the midi file + volume:Volume with which to play the midi file + loop:playback in loop + callback_fn:callback function + +*******************************************************************************/ + +SHORT mfw_player_start_memory(T_AS_PLAYER_TYPE player_type,const UINT32 * address, UINT32 size,T_AS_VOLUME volume,BOOLEAN loop,void (*callback_fn)(void *)) + { + T_AS_RET player_return; + TRACE_EVENT("mfw_player_start_memory"); + //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 //FF_MMI_AUDIO_PROFILE + mfw_ringer_configure_callback_fn(callback_fn); + player_return=as_play_memory(player_type,address,size,volume,loop,&midi_return_path); + return player_return; + +} + +/******************************************************************************* + + $Function: mfw_player_start_file + + $Description:Start the playback melody stored in the given file according to the given player type. + + $Returns: + AS_OK The call is successful. + AS_INVALID_PARAM The player_type or volume parameter value is invalid. + AS_FILE_ERROR The melody file can not be accessed, or contain unrecognized data. + AS_INTERNAL_ERROR Not able to send the message request. + + + $Arguments: player_type:Type of the player based on the file. + filename:Name of the midi file to be played + volume:Volume with which to play the midi file + loop:playback in loop + callback_fn:callback function + +*******************************************************************************/ + +#ifdef FF_MMI_FILEMANAGER +SHORT mfw_player_start_file(T_AS_PLAYER_TYPE player_type, UINT16 * filename,T_AS_VOLUME volume, BOOLEAN loop,void (*callback_fn)(void *)) +#else +SHORT mfw_player_start_file(T_AS_PLAYER_TYPE player_type,const char * filename,T_AS_VOLUME volume, BOOLEAN loop,void (*callback_fn)(void *)) +#endif +{ + T_AS_RET player_return; + char temp_file_name[FILENAME_MAX_LEN]; +#ifdef FF_MMI_FILEMANAGER + char filename_ascii[FILENAME_MAX_LEN]; +#endif + TRACE_EVENT("mfw_player_start_file"); + //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 //FF_MMI_AUDIO_PROFILE + mfw_ringer_configure_callback_fn(callback_fn); + +//Nov 04, 2005 REF:DRT OMAPS00053737 xdeepadh +#ifdef FF_MIDI_LOAD_FROM_LFS //Play the linear file for Player + + //Since, the file can be with or without the full path , + //Verify the file for full path , else provide the complete path. + strcpy(temp_file_name, LFS_CONTENT_DIR); + + //The complete path is provided + if(strncmp(filename,temp_file_name,strlen(temp_file_name))==0) + { + player_return=as_play_linear_file(player_type,filename,volume,loop,&midi_return_path); + } + //Provide the complete path + else + { + strcat(temp_file_name, filename ); + player_return=as_play_linear_file(player_type,temp_file_name,volume,loop,&midi_return_path); + } + +#else //Play the FFS file for Player + + //Since, the file can be with or without the full path , + //Verify the file for full path , else provide the complete path. + //The complete path is provided +#ifdef FF_MMI_FILEMANAGER + strcpy(temp_file_name, "/FFS"); + strcat(temp_file_name, RINGER_CONTENT_DIR); + convert_unicode_to_u8(filename, filename_ascii); + if(strncmp(filename_ascii,temp_file_name,strlen(temp_file_name))==0) +#else + strcpy(temp_file_name, RINGER_CONTENT_DIR); + if(strncmp(filename,temp_file_name,strlen(temp_file_name))==0) +#endif + { +#ifdef FF_MMI_FILEMANAGER + player_return=as_play_file(player_type,filename,volume,loop,0,&midi_return_path); +#else + player_return=as_play_file(player_type,filename,volume,loop,&midi_return_path); +#endif + } + //Provide the complete path + else + { + strcat(temp_file_name, "/"); +#ifdef FF_MMI_FILEMANAGER + strcat(temp_file_name, filename_ascii); + convert_u8_to_unicode(temp_file_name, filename); + player_return=as_play_file(player_type,filename,volume,loop,0,&midi_return_path); +#else + strcat(temp_file_name, filename ); + player_return=as_play_file(player_type,temp_file_name,volume,loop,&midi_return_path); +#endif + } +#endif //FF_MIDI_LOAD_FROM_LFS + + return player_return; +} + +/******************************************************************************* + + $Function: mfw_ringer_deduce_player_type + + $Description: Deduces the player type + + $Returns: T_AS_PLAYER_TYPE + + + $Arguments: filename:Name of the midi file + +*******************************************************************************/ + +T_AS_PLAYER_TYPE mfw_ringer_deduce_player_type(const char * filename) +{ + T_AS_PLAYER_TYPE player_type; +#ifdef FF_MMI_FILEMANAGER + char temp_file_name[FILENAME_MAX_LEN]; + UINT16 * filename_uc; +/* Mar 20, 2007 REF:DRT OMAPS00120135 x0039928 */ +/* Fix: filename_uc is a pointer now instead of array */ + filename_uc = (UINT16 *)mfwAlloc(sizeof(UINT16) * FILENAME_MAX_LEN); + strcpy(temp_file_name, "/FFS"); + strcat(temp_file_name, RINGER_CONTENT_DIR); + strcat(temp_file_name, "/"); + strcat(temp_file_name, filename ); + convert_u8_to_unicode(temp_file_name, filename_uc); + as_deduce_player_type(filename_uc,&player_type); + mfwFree((U8 *) filename_uc, sizeof(UINT16) * FILENAME_MAX_LEN); +#else + as_deduce_player_type(filename,&player_type); +#endif + TRACE_EVENT("mfw_ringer_deduce_player_type"); + return player_type; +} + + +/******************************************************************************* + + $Function: mfw_player_stop + + $Description:Stop the current melody player + + $Returns: + AS_OK The call is successful. + AS_INTERNAL_ERROR Not able to send the message request. + + + $Arguments: callback_fn:callback function + +*******************************************************************************/ + +SHORT mfw_player_stop(void (*callback_fn)(void *)) +{ + T_AS_RET player_return; + TRACE_EVENT("mfw_player_stop"); + mfw_ringer_configure_callback_fn(callback_fn); + player_return=as_stop(&midi_return_path); + return player_return; +} + +/******************************************************************************* + + $Function: mfw_player_midi_set_params + + $Description:Set the specific parameters for the player of given player_type. + + $Returns: AS_OK if call is succesfull. + AS_INVALID_PARAM if the player_type parameter value is invalid. + + $Arguments: Voicelimit:Voice limit to be set + channel:channel to be set + +*******************************************************************************/ + +SHORT mfw_player_midi_set_params(INT16 voicelimit,INT16 channel) +{ + T_AS_PLAYER_PARAMS player_para; + T_AS_RET player_return; + TRACE_FUNCTION("mfw_player_midi_set_params"); + //Set the Voice limit and channel for Idle mode + player_para.midi.voice_limit=voicelimit ; + player_para.midi.output_channels=channel; + player_return=as_player_set_params(AS_PLAYER_TYPE_MIDI,&player_para); + return player_return; +} + +/******************************************************************************* + + $Function: mfw_player_mp3_set_params + + $Description:Set the specific parameters for the player of given player_type.(mp3) + + $Returns: AS_OK if call is succesfull. + AS_INVALID_PARAM if the player_type parameter value is invalid. + + $Arguments: size_file_start:size of the file where the melody must start + mono_stereo:channel to be set + +*******************************************************************************/ +#ifdef FF_MP3_RINGER +SHORT mfw_player_mp3_set_params(UINT32 size_file_start,BOOLEAN mono_stereo) +{ + T_AS_PLAYER_PARAMS player_para; + T_AS_RET player_return; + TRACE_FUNCTION("mfw_player_mp3_set_params"); + //Set the Voice limit and channel for Idle mode + player_para.mp3.mono_stereo = mono_stereo ; + player_para.mp3.size_file_start = size_file_start; + player_return=as_player_set_params(AS_PLAYER_TYPE_MP3,&player_para); + return player_return; +} +#endif //FF_MP3_RINGER + + +//Nov 22, 2005 ER: OMAPS00057430, AAC Ringer support, nekkareb +/******************************************************************************* + + $Function: mfw_player_aac_set_params + + $Description:Set the specific parameters for the player of given player_type.(aac) + + $Returns: AS_OK if call is succesfull. + AS_INVALID_PARAM if the player_type parameter value is invalid. + + $Arguments: size_file_start:size of the file where the melody must start + mono_stereo:channel to be set + +*******************************************************************************/ +#ifdef FF_AAC_RINGER +SHORT mfw_player_aac_set_params(UINT32 size_file_start,BOOLEAN mono_stereo) +{ + T_AS_PLAYER_PARAMS player_para; + T_AS_RET player_return; + + TRACE_FUNCTION("mfw_player_aac_set_params"); + + //Set the Voice limit and channel for Idle mode + player_para.aac.mono_stereo = mono_stereo ; + player_para.aac.size_file_start = size_file_start; + + player_return=as_player_set_params(AS_PLAYER_TYPE_AAC,&player_para); + return player_return; +} +#endif //FF_AAC_RINGER + + + /******************************************************************************* + + $Function: mfw_player_get_params + + $Description:gets the specific parametersfor the player of given player_type. + + $Returns: AS_OK if call is succesfull. + AS_INVALID_PARAM if the player_type parameter value is invalid. + + $Arguments: player_type:Type of the player based on the file. + player_para:The structure containing current parameters for the player type + +*******************************************************************************/ + +SHORT mfw_player_get_params(T_AS_PLAYER_TYPE player_type,const T_AS_PLAYER_PARAMS* player_para) +{ + T_AS_RET player_return; + TRACE_FUNCTION("mfw_player_get_params"); + player_return=as_player_get_params(player_type,&player_para); + return player_return; +} + + +#endif