line source
+ − /*******************************************************************************
+ −
+ − CONDAT (UK)
+ −
+ − ********************************************************************************
+ −
+ − This software product is the property of Condat (UK) Ltd and may not be
+ − disclosed to any third party without the express permission of the owner.
+ −
+ − ********************************************************************************
+ −
+ − $Project name: Basic MMI
+ − $Project code: BMI (6349)
+ − $Module: Sounds
+ − $File: MmiSounds.c
+ − $Revision: 1.0
+ −
+ − $Author: Condat(UK)
+ − $Date: 25/10/00
+ −
+ − ********************************************************************************
+ −
+ − Description:
+ −
+ − This provides the implementation of the sounds for the basic MMI
+ −
+ − 1. Playing various system sounds such as the paging ring,
+ − new sms message etc.
+ − 2. The menus used to enable or disable the system sounds
+ − 3. The menu used to select the paging ring tone
+ − 4. The menu used to select the volume.
+ − 5. The menu used to select the key press tone or dtmf
+ −
+ − The mmi should play system sounds by calling soundExec with the appropriate
+ − SoundsXXXX message it is possible to go directly to the audio driver to play
+ − a sound but this will bypass any user settings to turn sounds on or off.
+ −
+ − The MelodySelect and SettingXXXX messages are used to control the key events
+ − during menu handling, entry to the sounds menus is through the soundsXXXX
+ − functions. These display the appropriate menu and handle the keypad events.
+ −
+ − The settings are read from PCM on startup and saved whenever a setting menu
+ − is selected.
+ −
+ − ********************************************************************************
+ − $History: MmiSounds.c
+ −
+ − 25/10/00 Original Condat(UK) BMI version.
+ −
+ − 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 21, 2005 REF:ER OMAPS00057430 nekkareb
+ − Description: AAC Ringer Implementation
+ − Solution: The Midi Ringer application has been enhanced to support AAC as ringer.
+ −
+ − 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.
+ −
+ − Sep 12, 2005 REF: SPR 33977 xdeepadh
+ − Description: Midi Application does not support Mobile XMF file formats
+ − Solution: Mobile XMF format has been supported
+ −
+ − Aug 30, 2005 REF: SPR 34018 xdeepadh
+ − Description: Silent Mode: Silent mode is not activated with the sequence, 'Menu, '#''
+ − Solution: When the silent mode is set through the key sequence, the volume is set to silent.
+ −
+ −
+ − Jul 20, 2005 REF: SPR 30772 xdeepadh
+ − Description: Midi File formats to be supported by different variants of locosto program
+ − Solution: The supported midi file formats for a particular variant will be loaded.
+ −
+ − 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.
+ −
+ − Nov 29, 2004 REF: CRR 25051 xkundadu
+ − Description: INCALL SCREEN – ADJUSTING THE VOLUME
+ − Fix: Added volume level list linked to up/down keys.
+ − User can select the speaker volume among those levels.
+ − Dec 23, 2005 REF: SR13873 x0020906
+ − Description: Selection configurable ring tones. Added for NEPTUNE
+ − Fix: When moving cursor in menu, stop old and play new ringtone.
+ − When press of back / clear / hang up stop playing the ringtone.
+ − Initially when the get into list, start playing first ringtone - As cursor is positioned.
+ −
+ − $End
+ −
+ − *******************************************************************************/
+ −
+ −
+ − /*******************************************************************************
+ −
+ − Include Files
+ −
+ − *******************************************************************************/
+ −
+ − #define ENTITY_MFW
+ −
+ − /* includes */
+ − #include <string.h>
+ − #include <stdio.h>
+ − #include <stdlib.h>
+ −
+ − #if defined (NEW_FRAME)
+ −
+ − #include "typedefs.h"
+ − #include "vsi.h"
+ − #include "pei.h"
+ − #include "custom.h"
+ − #include "gsm.h"
+ −
+ − #else
+ −
+ − #include "STDDEFS.H"
+ − #include "custom.h"
+ − #include "gsm.h"
+ − #include "vsi.h"
+ −
+ − #endif
+ − #include "mfw_sys.h"
+ −
+ − #include "mfw_mfw.h"
+ − #include "mfw_kbd.h"
+ − #include "mfw_tim.h"
+ − #include "mfw_lng.h"
+ − #include "mfw_win.h"
+ − #include "mfw_icn.h"
+ − #include "mfw_sim.h"
+ − #include "mfw_nm.h"
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifndef NEW_EDITOR
+ − #include "mfw_edt.h"
+ − #endif
+ − #include "mfw_mnu.h"
+ − #include "mfw_phb.h"
+ − #include "mfw_sms.h"
+ −
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − #include "mfw_midi.h"
+ − #include "bae/bae_options.h" //Jul 20, 2005 REF: SPR 30772 xdeepadh
+ − #endif
+ −
+ − #include "dspl.h"
+ −
+ −
+ − #include "p_mmi.h"
+ − #include "message.h"
+ − #include "prim.h"
+ − #include "aci_cmh.h"
+ − #include "mfw_mme.h"
+ −
+ − #include "MmiMmi.h"
+ −
+ − #include "Mmiicons.h"
+ − #include "MmiPins.h"
+ − #include "MmiMain.h"
+ − #include "MmiDialogs.h"
+ − #include "MmiIdle.h"
+ − #include "MmiStart.h"
+ − #include "mmiCall.h"
+ − #include "MmiSimToolkit.h"
+ − #include "gdi.h"
+ − #include "audio.h"
+ − #include "MmiLists.h"
+ − #include "MmiSounds.h"
+ − #include "MmiResources.h"
+ − #include "MmiTimeDate.h"
+ −
+ − #include "cus_aci.h"
+ − #include "prim.h"
+ − #ifndef PCM_2_FFS
+ − #include "pcm.h"
+ − #endif
+ −
+ − #include "MmiTimers.h"
+ −
+ − #include "mmiColours.h"
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − #include "mmisamplemidifiles.h"
+ − #endif
+ − extern char* MelodyTable[];
+ − extern T_call call_data;
+ −
+ − // Aug 05, 2005 xdeepadh
+ − #ifdef FF_MMI_AUDIO_PROFILE
+ − extern UBYTE mfwAudPlay;//flag for audio
+ − #endif
+ −
+ − /*******************************************************************************
+ −
+ − Constant Definitions
+ −
+ − *******************************************************************************/
+ −
+ −
+ − /* Control FLUSH mechanism to PCM
+ − */
+ − #define FLUSH 1
+ − #define NO_FLUSH 0
+ −
+ −
+ − /* Timer constants, pretty self explanatory
+ − */
+ − #define TIMHALFSECOND 200
+ − #define TIMSECOND 1000
+ − #define TIM4SECOND 4000
+ −
+ − #define VIBRATOR_TIME 2000 /* two second timer on the vibrator*/
+ −
+ − /* Define a generic trace mechanism
+ − */
+ − #define PTRACE(prn) { char buf[64]; ## prn ## TRACE_EVENT(buf); }
+ −
+ −
+ − /* Define maximum counter for vibrator
+ − */
+ − #define VIBRATOR_COUNTER_MAX 4
+ − #define NOT_VIBRATING 0
+ −
+ − #ifdef NEPTUNE_BOARD
+ − /* RAVI - 20-1-2005 */
+ − /* Volume Control Definition */
+ − #define SILENT_SETTING 0
+ − #define MAX_VOLUME_SETTING 4
+ − /* END - RAVI - 20-1-2005 */
+ − #endif
+ −
+ − #define SILENT_VOLUME 0
+ − #define LOW_VOLUME 5
+ − #define MEDIUM_VOLUME 25
+ − #define HIGH_VOLUME 175
+ − #define INCREASE_VOLUME 5
+ −
+ −
+ − /* define an invalid tone marker
+ − */
+ − #define INVALID_TONE -1
+ −
+ − //Define to indicate the Size of the file where the melody must start
+ − #ifdef FF_MP3_RINGER
+ − #define MP3_PLAY_FROM_START 0
+ − #endif //FF_MP3_RINGER
+ −
+ − //Nov 22, 2005 REF: ENH OMAPS00057430 nekkareb
+ − //Define to indicate the Size of the file where the melody must start
+ − #ifdef FF_AAC_RINGER
+ − #define AAC_PLAY_FROM_START 0
+ − #endif //FF_AAC_RINGER
+ −
+ −
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − UBYTE IsMidiInit = 0;//Flag to enable the Midi file populating once
+ − extern UBYTE mfw_player_exit_flag;//Flag to check the playall option
+ − extern int mfw_player_currently_playing_idx;//The current playing file index
+ − #define MT_INFO_SCRN_TIMEOUT 1500//Timeout for InfoDialog
+ − int selected_tone=0;
+ −
+ − /* ADDED BY RAVI - 28-11-2005 */
+ − int resource_GetListCount(res_ResourceID_type res);
+ − /* END RAVI - 28-11-2005 */
+ −
+ − static int playCurrentMelody( MfwEvt e, MfwTim *tc );
+ − static void soundsPlayMidiPlayer( int melody_id );
+ − void startPlayerTimer();
+ − static void stopPlayerTimer( void );
+ − static int playCurrentVolumeTone( MfwEvt e, MfwTim *tc );
+ − void startVolumeTimer();
+ − void stopVolumeTimer(void);
+ − static void soundsPlayVolumeMelody();
+ − #endif
+ −
+ − /*Defintion for First tone being played - RAVI - 23-12-2005 */
+ − #ifdef NEPTUNE_BOARD
+ − #define FIRST_TONE_PLAYED 1
+ − #endif
+ − /*END RAVI */
+ −
+ − /*******************************************************************************
+ −
+ − Local Function prototypes
+ −
+ − *******************************************************************************/
+ −
+ − static int winEvent( MfwEvt e, MfwWin *w );
+ − static int keyEvent( MfwEvt e, MfwKbd *kc );
+ − static int keyEventLong( MfwEvt e, MfwKbd *kc );
+ −
+ − static void ( *show )( void );
+ −
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifndef FF_MIDI_RINGER
+ − static int playCurrentSound( MfwEvt e, MfwTim *tc );
+ − #endif
+ − static int getCallingMenu( MfwEvt e, MfwTim *tc );
+ − static int setSelection( MfwEvt e, MfwWin *w );
+ −
+ − static void delayThenPlayMelody( void );
+ − static void stopPlayingMelody( void );
+ −
+ − static void readSettingsFromPCM( void );
+ − static void writeSettingsToPCM( UBYTE flush );
+ −
+ − static void soundsCreate( MfwHnd parent );
+ − static int VibratorTimerEvent( MfwEvt e, MfwTim *t );
+ −
+ −
+ − void sounds (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
+ − void sounds_dialog_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
+ − static void sounds_dialog(void);
+ − static int sounds_win_cb (T_MFW_EVENT event, T_MFW_WIN * win);
+ − static int melody_win_cb (MfwEvt e, MfwWin *w);
+ − void melody_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
+ − void sounds_destroy (T_MFW_HND own_window);
+ − T_MFW_HND sounds_create (T_MFW_HND parent_window);
+ − void sounds_Exit (T_MFW_HND own_window);
+ − T_MFW_HND sounds_Init (T_MFW_HND parent_window);
+ − void MelodyList_cb(T_MFW_HND * Parent, ListMenuData * ListData);
+ − static void melody_destroy(MfwHnd own_window);
+ − static MfwHnd sounds_show_info(T_MFW_HND parent, int str1, int str2, T_VOID_FUNC callback);
+ −
+ − #define SHOW_CONFIRM 3
+ − #define ACTIVATE_CONFIRM 4
+ − #define DEACTIVATE_CONFIRM 5
+ −
+ − /*******************************************************************************
+ −
+ − Local typedefs
+ −
+ − *******************************************************************************/
+ −
+ − /* Define the types of volume we cater for
+ − */
+ − typedef enum {
+ − silent = (UBYTE)0,
+ − volLow,
+ − volMedium,
+ − volHigh,
+ − increasing
+ − } VOL_ENUM;
+ −
+ −
+ − /* And the key tones
+ − */
+ − typedef enum
+ − {
+ − KEYTONE_NONE,
+ − KEYTONE_BEEP,
+ − KEYTONE_DTMF
+ − } SoundsKeyTones;
+ −
+ −
+ − /* The following definition provides a structure to control the
+ − ringing operation
+ − */
+ −
+ − typedef struct MMI_CURRENT_RINGER_STRUCT {
+ − /* variable to browse a list */
+ − UBYTE ringer; // index of permanent active tune in soundlist and ringerItem
+ − UBYTE vibrator; // vibrator
+ − UBYTE volumeSetting; // values (0 = silent, 4= loud, 5 = increasing)
+ − UBYTE keypadOn; // on/off values
+ − UBYTE AlarmOn;
+ − UBYTE OrganiserAlert;
+ − UBYTE CreditLow;
+ − UBYTE SMSTone;
+ − UBYTE VoiceTone; /*CQ 10586 - API - 19/06/03 - Add this ID*/
+ − UBYTE SMSBroadcast;
+ − UBYTE battLow;
+ − UBYTE earpiece;
+ − UBYTE language;
+ − UBYTE Equalizer;
+ − } RINGER_STRUCT_BROWSER;
+ −
+ − /* ------------- Variables --------------- */
+ −
+ − static SoundSettingState soundReason=SoundsNone;
+ − // Change behavior of menu scroll up/down, meni item selected on scrolling.
+ − static BOOL scrollSelectMenuItem= FALSE;
+ − static BOOL volumeSetting2Pcm =FALSE;
+ − static RINGER_STRUCT_BROWSER current =
+ − { // default settings.
+ − AUDIO_MEL_TUNES, // ringer
+ − 0, // vibrator - off by default
+ − volMedium, // volumeSetting
+ − 2, // keypadOn dtmf
+ − 1, // AlarmOn
+ − 1, // OrganiserAlert
+ − 1, // CreditLow
+ − 1, // SMSTone
+ − 1, // SMSBroadcast
+ − 1, // battLow
+ − 3, // earpiece
+ − 1, // language
+ − 1 // Equalizer
+ − };
+ −
+ − typedef enum
+ − {
+ − E_INIT = 0x0801,
+ − E_BACK,
+ − E_ABORT,
+ − E_EXIT,
+ − E_RETURN,
+ − E_OK
+ − } e_M_events;
+ −
+ − T_MELODY_INFO sounds_data;
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − Module local variables
+ −
+ − *******************************************************************************/
+ − /* RAVI - 20-1-2006 */
+ − /* Store the volume settings */
+ − #ifdef NEPTUNE_BOARD
+ − static UBYTE lastVolumeSetting;
+ − static UBYTE scrollVolumeSetting;
+ − #endif
+ − /* END RAVI */
+ − static UBYTE oldVolumeSetting; /* Previous setting of the volume */
+ − static MfwHnd win; /* our window */
+ − static MfwHnd kbd; /* our keyboard handler */
+ − static MfwHnd kbdLong; /* our keyboard handler for Long pressed */
+ − static MfwHnd hRingerStartTimer; /* timeout till start of melody */
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − MfwHnd hPlayerStartTimer; /* timeout till start of midi file */
+ − #endif
+ − static MfwHnd hRingerVolSettingTimeOut; /* 4 second timeout for volume setting menu */
+ −
+ − static MfwHnd hWinDispTimer; /* timer to show result windows */
+ −
+ − /* Maintain vibrator state information here
+ − */
+ − static MfwHnd VibratorTimer;
+ − static UBYTE Vibrating = NOT_VIBRATING;
+ − static UBYTE vibrator_counter=0;
+ −
+ − /* General state information
+ − */
+ − static MmiState nextState;
+ − static MfwHnd lastFocus;
+ −
+ −
+ −
+ − /* Tune details
+ − */
+ − static int CurrentTune = 0;
+ − static int LastTune = 0;
+ −
+ − static const MfwMnuAttr melody_menuAttrib =
+ − {
+ − &melody_menuArea,
+ − MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */
+ − -1, /* use default font */
+ − NULL, /* with these items */
+ − 0, /* number of items */
+ − COLOUR_LIST_XX, TxtNull, NULL, MNUATTRSPARE
+ −
+ − };
+ −
+ − /*******************************************************************************
+ −
+ − Private Methods
+ −
+ − *******************************************************************************/
+ −
+ − /******************************************************************************
+ − *$Function: setDefaultSound
+ − *
+ − *$Description: This function will read from Flash during boot up and updated the
+ − * current ringer structure. So after reset the stored tones will get
+ − * played.
+ − *
+ − *$Returns: none
+ − *
+ − *$Arguments: none
+ − *$Author : RAVI - 23-12-2005
+ − ******************************************************************************/
+ − #ifdef NEPTUNE_BOARD
+ − void setDefaultSound()
+ − {
+ − if (flash_read() >= EFFS_OK)
+ − {
+ − /* Assign the current structure with FFS stored value */
+ − current.ringer = FFS_flashData.ringer;
+ − current.SMSTone = FFS_flashData.SMSTone;
+ − current.AlarmOn = FFS_flashData.AlarmOn;
+ − current.volumeSetting = FFS_flashData.volumeSetting;
+ − }
+ − /* RAVI - 20-1-2006 */
+ − /* Store the initial volume settings done by user */
+ − lastVolumeSetting = current.volumeSetting;
+ − scrollVolumeSetting = 0;
+ − /* END RAVI */
+ − }
+ − #endif
+ −
+ − USHORT getSoundsReason(void)
+ − {
+ − return soundReason;
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: setSoundsReason
+ −
+ − $Description: Set the reason why the volume settings was invoked. Called to indicated
+ − that the volume settings is being invoked from Idle or from the incoming
+ − call screens.
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void setSoundsReason(USHORT reason)
+ − {
+ −
+ − switch(reason)
+ − {
+ − case SettingVolume:
+ − soundReason = SettingVolume;
+ − break;
+ − case SoundsNone:
+ − default:
+ − soundReason = SoundsNone;
+ − break;
+ − }
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: volMenuItemSelected
+ −
+ − $Description: A volume menu item has been selected, store the setting into PCM.
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void volMenuItemSelected(void)
+ − {
+ −
+ − TRACE_FUNCTION("volMenuItemSelected");
+ − volumeSetting2Pcm =TRUE;
+ − /* Apr 05, 2005 REF: ENH 29994 xdeepadh */
+ − #ifdef FF_MIDI_RINGER
+ − /* Save the volume for a given ringer mode */
+ − TRACE_EVENT_P1("Volume set is %d",current.volumeSetting);
+ − mfw_ringer_set_volume(get_ringer_mode(),(T_AS_VOLUME)getCurrentVoulmeSettings());
+ − #endif
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: getScrollSelectMenuItem
+ −
+ − $Description: get the scroll/select menu status.
+ −
+ − $Returns: Status
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − BOOL getScrollSelectMenuItem(void)
+ − {
+ − TRACE_FUNCTION("getScrollSelectMenuItem");
+ − if (scrollSelectMenuItem == TRUE)
+ − return TRUE;
+ − else
+ − return FALSE;
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: clearScrollSelectMenuItem
+ −
+ − $Description: Reset the scroll/select menu behavior.
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void clearScrollSelectMenuItem(void)
+ − {
+ − TRACE_FUNCTION("clearScrollSelectMenuItem");
+ − scrollSelectMenuItem=FALSE;
+ − // soundReason = SoundsNone; MZ this flag cleared when user exits the melody/Volume menu.
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − mfw_player_stop(sounds_midi_player_stop_cb);
+ − #else
+ − stopPlayingMelody();
+ − #endif
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsSetVolume
+ −
+ − $Description: Function determines if user is in the Melody/SMS/Alarm ringer menu
+ − and has selected the vloume settings option.
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void soundsSetVolume(void)
+ − {
+ −
+ − TRACE_FUNCTION("soundsSetVolume");
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − //Create 0.5 second ringer delay timer.
+ − hPlayerStartTimer = timCreate( 0, TIMHALFSECOND, (MfwCb)playCurrentVolumeTone);
+ − //Set the audiopath to speaker.
+ − mfw_ringer_set_audiopath();
+ − //Set the voice limit to 32 and channel to stereo in idle mode
+ − mfw_player_midi_set_params(FF_MIDI_VOICE_LIMIT,MIDI_CHANNEL_STEREO);
+ − //Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh
+ − //Set the Mp3 Parameters .Size of the file where the melody must start is set 0(from beginning)
+ − //and channel is set to stereo.
+ − #ifdef FF_MP3_RINGER
+ − mfw_player_mp3_set_params(MP3_PLAY_FROM_START,MP3_CHANNEL_STEREO);
+ − #endif //FF_MP3_RINGER
+ −
+ − //Nov 21, 2005 REF:ER OMAPS00057430 nekkareb
+ − //Set the AAC Parameters .Size of the file where the melody must start is set 0(from beginning)
+ − //and channel is set to stereo.
+ − #ifdef FF_AAC_RINGER
+ − mfw_player_aac_set_params(AAC_PLAY_FROM_START,AAC_CHANNEL_STEREO);
+ − #endif //FF_AAC_RINGER
+ −
+ − #endif
+ −
+ − if(soundReason == MelodySelect || soundReason == SettingSMSTone ||
+ − soundReason == SettingAlarm || soundReason == SettingVolume)
+ − {
+ − // Menu items will be selected on scrolling.
+ − scrollSelectMenuItem = TRUE;
+ − // store the setting to PCM if volume setting is selected.
+ − volumeSetting2Pcm=FALSE;
+ − }
+ − else
+ − {
+ − scrollSelectMenuItem = FALSE;
+ − }
+ −
+ − }
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: IdleScreenVolumeTimer
+ −
+ − $Description: Function creates the volume timer for idle screen.
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ −
+ − void IdleScreenVolumeTimer()
+ − {
+ − TRACE_FUNCTION("IdleScreenVolumeTimer");
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − //Create 0.5 second ringer delay timer.
+ − hPlayerStartTimer = timCreate( 0, TIMHALFSECOND, (MfwCb)playCurrentVolumeTone);
+ − //Set the audiopath to speaker.
+ − mfw_ringer_set_audiopath();
+ − //Set the voice limit to 32 and channel to stereo in idle mode
+ − mfw_player_midi_set_params(FF_MIDI_VOICE_LIMIT,MIDI_CHANNEL_MONO);
+ − //Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh
+ − //Set the Mp3 Parameters .Size of the file where the melody must start is set 0(from beginning)
+ − //and channel is set to Mono.
+ − #ifdef FF_MP3_RINGER
+ − mfw_player_mp3_set_params(MP3_PLAY_FROM_START,MP3_CHANNEL_MONO);
+ − #endif //FF_MP3_RINGER
+ −
+ − //Nov 21, 2005 REF:ER OMAPS00057430 nekkareb
+ − //Set the AAC Parameters .Size of the file where the melody must start is set 0(from beginning)
+ − //and channel is set to Mono.
+ − #ifdef FF_AAC_RINGER
+ − mfw_player_aac_set_params(AAC_PLAY_FROM_START,AAC_CHANNEL_MONO);
+ − #endif //FF_AAC_RINGER
+ −
+ − #endif
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: setSilentModeVolumeOn
+ −
+ − $Description:
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void setSilentModeVolume(void)
+ − {
+ −
+ − // Aug 30, 2005 REF: SPR 34018 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ −
+ − T_AS_RINGER_INFO * ringer_info;
+ − T_AS_RINGER_INFO temp_ringer_info;
+ − TRACE_FUNCTION("setSilentModeVolume");
+ − // Save the volume for incoming call
+ − ringer_info = mfw_ringer_get_info(AS_RINGER_MODE_IC,&temp_ringer_info);
+ − oldVolumeSetting = ringer_info->volume ;
+ − TRACE_EVENT_P1("Volume set in silent mode is %d",oldVolumeSetting);
+ − //Set the volume to silent
+ − current.volumeSetting = (UBYTE)AS_VOLUME_SILENT;
+ − TRACE_EVENT_P1("Volume set is %d",current.volumeSetting);
+ − mfw_ringer_set_volume(AS_RINGER_MODE_IC,(T_AS_VOLUME)getCurrentVoulmeSettings());
+ − #else
+ − stopPlayingMelody();
+ − oldVolumeSetting = current.volumeSetting;
+ − current.volumeSetting = SILENT_VOLUME;
+ − audio_SetAmplf (AUDIO_BUZZER, current.volumeSetting);
+ − #endif
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: setSilentModeVolumeOn
+ −
+ − $Description:
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void restoreSilentModeVolume(void)
+ − {
+ −
+ − TRACE_FUNCTION("restoreSilentModeVolume");
+ − // Aug 30, 2005 REF: SPR 34018 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − //Set the volume back to the old one
+ − TRACE_EVENT_P1("oldVolumeSetting set is %d",oldVolumeSetting);
+ − mfw_ringer_set_volume(AS_RINGER_MODE_IC,(T_AS_VOLUME)oldVolumeSetting);
+ − #else
+ − stopPlayingMelody();
+ − current.volumeSetting =oldVolumeSetting;
+ − audio_SetAmplf (AUDIO_BUZZER, current.volumeSetting);
+ − #endif
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsVolSilent
+ −
+ − $Description: set voulme level to silent.
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void soundsVolSilent(void)
+ − {
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − //Display silent mode in the idle screen only for the incoming call volume.
+ − if(soundReason == MelodySelect || soundReason == SettingVolume)
+ − {
+ − FFS_flashData.settings_status |= SettingsSilentMode;
+ − flash_write();
+ − }
+ − #else
+ − FFS_flashData.settings_status |= SettingsSilentMode;
+ − flash_write();
+ − #endif
+ −
+ − TRACE_EVENT("soundsVolSilent");
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − current.volumeSetting =(UBYTE)AS_VOLUME_SILENT;
+ − stopVolumeTimer();
+ − startVolumeTimer();
+ − #else
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − current.volumeSetting =SILENT_VOLUME;
+ − #endif
+ − /* END - RAVI */
+ − stopPlayingMelody();
+ −
+ − if(volumeSetting2Pcm != TRUE)
+ − {
+ − current.volumeSetting =SILENT_VOLUME;
+ − audio_SetAmplf (AUDIO_BUZZER, current.volumeSetting);
+ −
+ − #ifdef FF_MMI_RINGTONE /* MSL Ring tone play */
+ − audio_PlaySoundID(AUDIO_BUZZER, CALLTONE_SELECT, 0, AUDIO_PLAY_ONCE);
+ − #else
+ −
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − /* Store the currently stored volume content */
+ − audio_PlaySoundID(AUDIO_BUZZER, current.ringer, current.volumeSetting, AUDIO_PLAY_ONCE);
+ − #else
+ − /* API - 04/09/03 - SPR2447 - Remove the call to AUDIO_PLAY_INFINITE and replace with AUDIO_PLAY_ONCE*/
+ − audio_PlaySoundID(AUDIO_BUZZER, current.ringer, 0, AUDIO_PLAY_ONCE);
+ − /* API - 04/09/03 - SPR2447 - END*/
+ − #endif
+ − /* END RAVI */
+ − #endif
+ −
+ − }
+ − else
+ − {
+ − //store setting into PCM
+ − volumeSetting2Pcm=FALSE;
+ − }
+ − #endif
+ −
+ −
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: soundsVolLow
+ −
+ − $Description: set voulme level to low.
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void soundsVolLow(void)
+ − {
+ −
+ − FFS_flashData.settings_status &= ~SettingsSilentMode;
+ − flash_write();
+ − TRACE_EVENT("soundsVolLow");
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − current.volumeSetting =(UBYTE)AS_VOLUME_LOW;
+ − stopVolumeTimer();
+ − startVolumeTimer();
+ − #else
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − current.volumeSetting = LOW_VOLUME;
+ − #endif
+ − /*END RAVI */
+ − stopPlayingMelody();
+ − if(volumeSetting2Pcm != TRUE)
+ − {
+ − current.volumeSetting = LOW_VOLUME;
+ − audio_SetAmplf (AUDIO_BUZZER, current.volumeSetting);
+ −
+ − #ifdef FF_MMI_RINGTONE /* MSL Ring tone play */
+ − audio_PlaySoundID(AUDIO_BUZZER, CALLTONE_SELECT, 0, AUDIO_PLAY_ONCE);
+ − #else
+ −
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − audio_PlaySoundID(AUDIO_BUZZER, current.ringer, current.volumeSetting, AUDIO_PLAY_ONCE);
+ − #else
+ − /* API - 04/09/03 - SPR2447 - Remove the call to AUDIO_PLAY_INFINITE and replace with AUDIO_PLAY_ONCE*/
+ − audio_PlaySoundID(AUDIO_BUZZER, current.ringer, 0, AUDIO_PLAY_ONCE);
+ − /* API - 04/09/03 - SPR2447 - END*/
+ − #endif
+ − /* END RAVI */
+ − #endif
+ −
+ − }
+ − else
+ − {
+ − //store setting into PCM
+ − volumeSetting2Pcm=FALSE;
+ − }
+ − #endif
+ −
+ −
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: soundsVolMedium
+ −
+ − $Description: set voulme level to Medium
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void soundsVolMedium(void)
+ − {
+ −
+ − FFS_flashData.settings_status &= ~SettingsSilentMode;
+ − flash_write();
+ − TRACE_EVENT("soundsVolMedium");
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − current.volumeSetting =(UBYTE)AS_VOLUME_MEDIUM;
+ − stopVolumeTimer();
+ − startVolumeTimer();
+ − #else
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − current.volumeSetting = MEDIUM_VOLUME;
+ − #endif
+ − /* END RAVI */
+ − stopPlayingMelody();
+ − if(volumeSetting2Pcm != TRUE)
+ − {
+ − current.volumeSetting = MEDIUM_VOLUME;
+ − audio_SetAmplf (AUDIO_BUZZER, current.volumeSetting);
+ −
+ − #ifdef FF_MMI_RINGTONE /* MSL Ring Tone Play */
+ − audio_PlaySoundID(AUDIO_BUZZER, CALLTONE_SELECT, 0, AUDIO_PLAY_ONCE);
+ − #else
+ −
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − audio_PlaySoundID(AUDIO_BUZZER, current.ringer, current.volumeSetting, AUDIO_PLAY_ONCE);
+ − #else
+ − /* API - 04/09/03 - SPR2447 - Remove the call to AUDIO_PLAY_INFINITE and replace with AUDIO_PLAY_ONCE*/
+ − audio_PlaySoundID(AUDIO_BUZZER, current.ringer, 0, AUDIO_PLAY_ONCE);
+ − /* API - 04/09/03 - SPR2447 - END*/
+ − #endif
+ − /* END RAVI */
+ − #endif
+ −
+ − }
+ − else
+ − {
+ − //store setting into PCM
+ − volumeSetting2Pcm=FALSE;
+ − }
+ − #endif
+ −
+ −
+ −
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: soundsVolHigh
+ −
+ − $Description: set voulme level to High
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void soundsVolHigh(void)
+ − {
+ −
+ − FFS_flashData.settings_status &= ~SettingsSilentMode;
+ − flash_write();
+ −
+ − TRACE_EVENT("soundsVolHigh");
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − current.volumeSetting =(UBYTE)AS_VOLUME_HIGH;
+ − stopVolumeTimer();
+ − startVolumeTimer();
+ −
+ − #else
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − current.volumeSetting = HIGH_VOLUME;
+ − #endif
+ −
+ − stopPlayingMelody();
+ − if(volumeSetting2Pcm != TRUE)
+ − {
+ − current.volumeSetting =HIGH_VOLUME;
+ − audio_SetAmplf (AUDIO_BUZZER, current.volumeSetting);
+ −
+ − #ifdef FF_MMI_RINGTONE /* MSL Ring Tone Play */
+ − audio_PlaySoundID(AUDIO_BUZZER, CALLTONE_SELECT, 0, AUDIO_PLAY_ONCE);
+ − #else
+ −
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − audio_PlaySoundID(AUDIO_BUZZER, current.ringer, current.volumeSetting, AUDIO_PLAY_ONCE);
+ − #else
+ − /* API - 04/09/03 - SPR2447 - Remove the call to AUDIO_PLAY_INFINITE and replace with AUDIO_PLAY_ONCE*/
+ − audio_PlaySoundID(AUDIO_BUZZER, current.ringer, 0, AUDIO_PLAY_ONCE);
+ − /* API - 04/09/03 - SPR2447 - END*/
+ − #endif
+ − /* END RAVI */
+ − #endif
+ −
+ − }
+ − else
+ − {
+ − //store setting into PCM
+ − volumeSetting2Pcm=FALSE;
+ − }
+ − #endif
+ −
+ −
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: soundsVolInc
+ −
+ − $Description: set voulme level to increasing
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifndef FF_MIDI_RINGER
+ − void soundsVolInc(void)
+ − {
+ − FFS_flashData.settings_status &= ~SettingsSilentMode;
+ − flash_write();
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − current.volumeSetting = INCREASE_VOLUME;
+ − #endif
+ − /* END RAVI */
+ − stopPlayingMelody();
+ − if(volumeSetting2Pcm != TRUE)
+ − {
+ − current.volumeSetting = INCREASE_VOLUME;
+ − audio_SetAmplf (AUDIO_BUZZER, current.volumeSetting);
+ −
+ − #ifdef FF_MMI_RINGTONE /* MSL Ring Tone Play */
+ − audio_PlaySoundID(AUDIO_BUZZER, CALLTONE_SELECT, 0, AUDIO_PLAY_ONCE);
+ − #else
+ −
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − audio_PlaySoundID(AUDIO_BUZZER, current.ringer, current.volumeSetting, AUDIO_PLAY_ONCE);
+ − #else
+ − /* API - 04/09/03 - SPR2447 - Remove the call to AUDIO_PLAY_INFINITE and replace with AUDIO_PLAY_ONCE*/
+ − audio_PlaySoundID(AUDIO_BUZZER, current.ringer, 0, AUDIO_PLAY_ONCE);
+ − /* API - 04/09/03 - SPR2447 - END*/
+ − #endif
+ − /* END RAVI */
+ − #endif
+ −
+ − }
+ − else
+ − {
+ − //store setting into PCM
+ − volumeSetting2Pcm=FALSE;
+ −
+ − }
+ −
+ −
+ − }
+ −
+ − #endif
+ − /*******************************************************************************
+ −
+ − $Function: soundReasonRinger
+ −
+ − $Description: setup the soundReason to be Ringer Melody settings.
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void soundReasonRinger(void)
+ − {
+ − soundReason = MelodySelect;
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: soundReasonSmsTone
+ −
+ − $Description: Setup the soundReason to be SMS tones settings.
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void soundReasonSmsTone(void)
+ − {
+ − soundReason = SettingSMSTone;
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: soundReasonAlarm
+ −
+ − $Description: Setup the soundReason to be Alarm settings.
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void soundReasonAlarm(void)
+ − {
+ − soundReason = SettingAlarm;
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: getcurrentSMSTone
+ −
+ − $Description: Access function for the current SMS Tone.
+ − $Returns: Tone Id
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ − UBYTE getcurrentSMSTone(void)
+ − {
+ − return current.SMSTone;
+ − }/*******************************************************************************
+ −
+ − $Function: getcurrentVoiceTone
+ −
+ − $Description: Access function for the current SMS Tone.
+ − $Returns: Tone Id
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ − /*CQ 10586 - API - 19/06/03 - Add this function to return the curret sound for Voice mail notification*/
+ − UBYTE getcurrentVoiceTone(void)
+ − {
+ − return current.SMSTone; // At present return the SMS tone untill settings have been updated
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: getcurrentSMSTone
+ −
+ − $Description: Access function for the current SMS Tone.
+ − $Returns: Tone Id
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ − UBYTE getcurrentAlarmTone(void)
+ − {
+ − return current.AlarmOn;
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: getCurrentRingerSettings
+ −
+ − $Description: Access function for the current ringer settings data.
+ − $Returns: Ringer Id.
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ − UBYTE getCurrentRingerSettings(void)
+ − {
+ − return current.ringer;
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: getCurrentVoulmeSettings
+ −
+ − $Description: Access function for the current ringer volume settings data.
+ − $Returns: volume
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ − UBYTE getCurrentVoulmeSettings(void)
+ − {
+ − TRACE_EVENT_P1("getCurrentVoulmeSettings is %d",current.volumeSetting);
+ − return current.volumeSetting;
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: getMelodyListStatus
+ −
+ − $Description: Status flag indicating if a melody selection menu is active.
+ − $Returns: status
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ − BOOL getMelodyListStatus(void)
+ − {
+ − if(soundReason == MelodySelect ||
+ − soundReason == SettingSMSTone ||
+ − soundReason == SettingAlarm )
+ − return TRUE;
+ − else
+ − return FALSE;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: stopPlayingMelody
+ −
+ − $Description: stop currently played ringer melody
+ −
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ − static void stopPlayingMelody( void )
+ − {
+ − TRACE_FUNCTION( "stopPlayingMelody" );
+ −
+ − /* If a timer event is running we want to stop that as well,
+ − since we don't really want to turn the tune off and have
+ − it start again when the timer expires
+ − */
+ − if ( hRingerStartTimer != NULL )
+ − timStop( hRingerStartTimer );
+ −
+ − /* Are we playing a tune
+ − */
+ − if ( LastTune )
+ − {
+ − /* To stop playing the previous ring tone - RAVI - 23-12-2005 */
+ − #ifdef NEPTUNE_BOARD
+ − #ifdef FF_MMI_RINGTONE /*MSL Stop */
+ − audio_StopSoundbyID( AUDIO_BUZZER, CALLTONE_SELECT);
+ − #else
+ − audio_StopSoundbyID( AUDIO_BUZZER, LastTune - 1 );
+ − #endif
+ − #else
+ − audio_StopSoundbyID( AUDIO_BUZZER, LastTune );
+ − #endif
+ − }
+ −
+ − /* Need to wait for the tune to stop before trying to
+ − set up the next tune, so wait always
+ − */
+ − vsi_t_sleep( 0, 5 );
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: startPlayingMelody
+ −
+ − $Description: Start played the ringer melody
+ −
+ − $Returns: None
+ −
+ − $Arguments: Melody_id
+ −
+ − *******************************************************************************/
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifndef FF_MIDI_RINGER
+ − static void startPlayingMelody(UBYTE melody_id)
+ − {
+ − #ifdef NEPTUNE_BOARD
+ − BYTE bVolumeSetting;
+ − #endif
+ −
+ − if ( hRingerStartTimer != NULL )
+ − timStop( hRingerStartTimer );
+ −
+ − #ifdef FF_MMI_RINGTONE /* MSL Ring tone play */
+ − audio_PlaySoundID(AUDIO_BUZZER, CALLTONE_SELECT, (BYTE)current.volumeSetting, AUDIO_PLAY_ONCE);
+ − #else
+ −
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − if (soundReason == SettingVolume)
+ − {
+ − switch (scrollVolumeSetting)
+ − {
+ − case 0:
+ − bVolumeSetting = SILENT_VOLUME;
+ − break;
+ − case 1:
+ − bVolumeSetting = LOW_VOLUME;
+ − break;
+ − case 2:
+ − bVolumeSetting = MEDIUM_VOLUME;
+ − break;
+ − case 3:
+ − bVolumeSetting = HIGH_VOLUME;
+ − break;
+ − case 4:
+ − bVolumeSetting = INCREASE_VOLUME;
+ − break;
+ − default:
+ − bVolumeSetting = LOW_VOLUME;
+ − break;
+ − }
+ − audio_PlaySoundID(AUDIO_BUZZER, melody_id, (BYTE)bVolumeSetting,
+ − AUDIO_PLAY_ONCE);
+ − }
+ − else
+ − {
+ − audio_PlaySoundID(AUDIO_BUZZER, melody_id, (BYTE)current.volumeSetting,
+ − AUDIO_PLAY_ONCE);
+ − }
+ − #else
+ − audio_PlaySoundID(AUDIO_BUZZER, melody_id, (BYTE)current.volumeSetting,
+ − AUDIO_PLAY_ONCE);
+ − #endif
+ − /* END - RAVI - 20-1-2006 */
+ − #endif
+ −
+ − }
+ − #endif
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsPlayRinger
+ −
+ − $Description: Play the tune selected by melody_id, stopping any currently
+ − playing tunes if necessary. Remember to take into account the
+ − volume setting and provide a crescendo if requested
+ −
+ − $Returns: None
+ −
+ − $Arguments: melody_id, selects the melody to be played
+ −
+ − *******************************************************************************/
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifndef FF_MIDI_RINGER
+ − static void soundsPlayRinger( int melody_id )
+ − {
+ − CurrentTune = melody_id;
+ − if (LastTune)
+ − {
+ − #ifdef FF_MMI_RINGTONE /*MSL Stop */
+ − audio_StopSoundbyID( AUDIO_BUZZER, CALLTONE_SELECT);
+ − #else
+ − audio_StopSoundbyID (AUDIO_BUZZER,LastTune );
+ − #endif
+ − }
+ − vsi_t_sleep(0, 5);
+ −
+ − if (current.volumeSetting == increasing)
+ − {
+ −
+ − #ifdef FF_MMI_RINGTONE /* MSL Ring Tone Play */
+ − audio_PlaySoundID ( AUDIO_BUZZER, CALLTONE_SELECT, 0 , AUDIO_PLAY_CRESCENDO );
+ − #else
+ −
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − audio_PlaySoundID(AUDIO_BUZZER, CurrentTune, current.volumeSetting, AUDIO_PLAY_ONCE);
+ − #else
+ − audio_PlaySoundID ( AUDIO_BUZZER,CurrentTune, 0 , AUDIO_PLAY_CRESCENDO );
+ − #endif
+ − /* END RAVI */
+ − #endif
+ −
+ − }
+ − else
+ − {
+ −
+ − #ifdef FF_MMI_RINGTONE /* MSL Ring Tone Play */
+ − audio_PlaySoundID ( AUDIO_BUZZER, CALLTONE_SELECT, 0, AUDIO_PLAY_ONCE );
+ − #else
+ −
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − audio_PlaySoundID(AUDIO_BUZZER, CurrentTune, current.volumeSetting, AUDIO_PLAY_ONCE);
+ − #else
+ − audio_PlaySoundID ( AUDIO_BUZZER,CurrentTune, 0, AUDIO_PLAY_ONCE );
+ − #endif
+ − /* END RAVI */
+ − #endif
+ −
+ − }
+ − LastTune = CurrentTune;
+ − }
+ − #endif
+ −
+ − /*******************************************************************************
+ −
+ − $Function: destroyDynaMenu
+ −
+ − $Description: frees the memory allocated to a dynamenu (Refer to the
+ − buildMelodyMenu routine below
+ −
+ − $Returns: None.
+ −
+ − $Arguments: None.
+ −
+ − *******************************************************************************/
+ −
+ − static void destroyDynaMenu( void )
+ − {
+ −
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: buildMelodyMenu
+ −
+ − $Description: Builds the melody menu dynamenu from the melodies supplied
+ − by the resource manager
+ −
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ − static T_MFW_HND buildMelodyMenu( MfwHnd parent_window)
+ − {
+ − T_MELODY_INFO * data = (T_MELODY_INFO *)ALLOC_MEMORY (sizeof (T_MELODY_INFO));
+ − T_MFW_WIN * win;
+ −
+ − TRACE_FUNCTION (">>>> buildMelodyMenu()");
+ −
+ − /*
+ − * Create window handler
+ − */
+ −
+ − data->sounds_win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)melody_win_cb);
+ − if (data->sounds_win EQ NULL)
+ − {
+ − return NULL;
+ − }
+ −
+ − TRACE_EVENT(">>>> Melody window created: " );
+ − /*
+ − * connect the dialog data to the MFW-window
+ − */
+ −
+ − data->mmi_control.dialog = (T_DIALOG_FUNC)melody_exec_cb;
+ − data->mmi_control.data = data;
+ − win = ((T_MFW_HDR *)data->sounds_win)->data;
+ − win->user = (void *)data;
+ − data->parent = parent_window;
+ − winShow(data->sounds_win);
+ − /*
+ − * return window handle
+ − */
+ −
+ − return data->sounds_win;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: melody_exec_cb
+ −
+ − $Description: Exec callback function of the SMS read window (dynamic list of
+ − all the SMS)
+ −
+ − $Returns: none
+ −
+ − $Arguments: win - window handler
+ − event - mfw event
+ − parameter - optional data.
+ −
+ − *******************************************************************************/
+ − void melody_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
+ − {
+ − T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
+ − T_MELODY_INFO * data = (T_MELODY_INFO *)win_data->user;
+ − UBYTE i;
+ − UBYTE numberOfMelodies=0;
+ − #ifdef FF_MIDI_RINGER
+ − UBYTE file_count=0;
+ − #endif
+ − ListWinInfo * mnu_data = (ListWinInfo *)parameter;
+ −
+ − TRACE_FUNCTION (">>>>> melody_exec_cb()");
+ −
+ − switch (event)
+ − {
+ − case E_INIT:
+ −
+ − TRACE_EVENT(">>>> melody_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;
+ − }
+ − /*Apr 05, 2005 REF: ENH 29994 xdeepadh */
+ − #ifdef FF_MIDI_RINGER
+ − numberOfMelodies = sounds_midi_return_file_number();
+ − TRACE_EVENT_P1("numberOfMelodies is %d",numberOfMelodies);
+ − /*In case no files have been loaded display info message */
+ − if(numberOfMelodies <= 0)
+ − {
+ − sounds_show_info(0, TxtMidiFileNotLoaded, TxtNull, NULL);
+ − return;
+ −
+ − }
+ − #else
+ − numberOfMelodies = resource_GetListCount(RES_MELODY);
+ − #endif
+ −
+ − data->menu_list_data->List = (T_MFW_MNU_ITEM *)ALLOC_MEMORY( numberOfMelodies * sizeof(T_MFW_MNU_ITEM) );
+ −
+ − if(data->menu_list_data->List == 0)
+ − {
+ − TRACE_EVENT("Failed memory alloc 2");
+ − return;
+ − }
+ −
+ − for (i = 0; i < numberOfMelodies ; i++)
+ − {
+ − mnuInitDataItem(&data->menu_list_data->List[i]);
+ − data->menu_list_data->List[i].flagFunc = item_flag_none;
+ −
+ − /* Display the midi file names in the list */
+ − /*Apr 05, 2005 REF: ENH 29994 xdeepadh */
+ − #ifdef FF_MIDI_RINGER
+ − data->menu_list_data->List[i].str = (char *)sounds_midi_return_file_name(file_count++);
+ − #else
+ − data->menu_list_data->List[i].str = (char *)MelodyTable[i];
+ − #endif
+ − }
+ −
+ − data->menu_list_data->ListLength =numberOfMelodies;
+ − data->menu_list_data->ListPosition = 1;
+ − data->menu_list_data->CursorPosition = 1;
+ − data->menu_list_data->SnapshotSize = numberOfMelodies;
+ − 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*)&melody_menuAttrib;
+ − /* Apr 05, 2005 REF: ENH 29994 xdeepadh */
+ − #ifdef FF_MIDI_RINGER
+ − data->menu_list_data->Attr->hdrId = TxtMidiFileTitle;
+ − #endif
+ − data->menu_list_data->autoDestroy = FALSE;
+ − listDisplayListMenu(win, data->menu_list_data,(ListCbFunc)MelodyList_cb,0);
+ − /*#ifdef FF_MIDI_RINGER
+ − selected_tone=data->menu_list_data->ListPosition-1;
+ − stopPlayerTimer();
+ − startPlayerTimer();
+ − #endif*/
+ − /* Start playing first ringtone on initial list display - RAVI - 23-12-2005 */
+ − #ifdef NEPTUNE_BOARD
+ − if(getMelodyListStatus()== TRUE)
+ − {
+ − stopPlayingMelody ();
+ − startPlayingMelody(0); /* Play the first menu item which is being selected */
+ − LastTune = FIRST_TONE_PLAYED; /* First Menu Item - Ringer is selected */
+ − }
+ − #endif
+ − /* RAVI - 23-12-2005 */
+ −
+ − break;
+ −
+ − case E_START_MELODY:
+ − /* Apr 05, 2005 REF: ENH 29994 xdeepadh */
+ − /* Play the midi file when the user has scrolled */
+ − #ifdef FF_MIDI_RINGER
+ − selected_tone=mnu_data->MenuData.ListPosition;
+ − stopPlayerTimer();
+ − startPlayerTimer();
+ − #else
+ −
+ − /* When cursor moved - Stop playing old and start playing new - RAVI - 23-12-2005 */
+ − #ifndef NEPTUNE_BOARD
+ − startPlayingMelody(mnu_data->MenuData.ListPosition);
+ − #else
+ − stopPlayingMelody();
+ − startPlayingMelody(mnu_data->MenuData.ListPosition);
+ − LastTune = mnu_data->MenuData.ListPosition+1; /* Store the late tune in global variable */
+ − #endif /* END RAVI */
+ − #endif
+ −
+ − break;
+ −
+ − case E_RETURN:
+ − break;
+ − default:
+ − break;
+ − }
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: MelodyList_cb
+ −
+ − $Description: Callback function for the melody list.
+ −
+ − $Returns: none
+ −
+ − $Arguments: Parent - parent window.
+ − ListData - Menu item list
+ − *******************************************************************************/
+ −
+ − void MelodyList_cb(T_MFW_HND * Parent, ListMenuData * ListData)
+ − {
+ − T_MFW_WIN * win_data = ((T_MFW_HDR *)Parent)->data;
+ − T_MELODY_INFO * data = (T_MELODY_INFO *)win_data->user;
+ − T_MFW_HND * l_parent;
+ − /*Apr 05, 2005 REF: ENH 29994 xdeepadh */
+ − #ifdef FF_MIDI_RINGER
+ − T_DISPLAY_DATA DisplayInfo;
+ − T_AS_PLAYER_TYPE player_type;
+ −
+ − #ifdef FF_MIDI_LOAD_FROM_MEM
+ − T_MELODY memory_pointer;
+ − #else
+ − char * filename;
+ − #endif
+ − #endif
+ −
+ − if ((ListData->Reason EQ LISTS_REASON_BACK) || (ListData->Reason EQ LISTS_REASON_CLEAR)
+ − || (ListData->Reason EQ LISTS_REASON_HANGUP)) /* sbh - added hangup key */
+ − {
+ − l_parent = data->parent;
+ −
+ − /*Stop playing ringtone on press of BACK/ CLEAR/ HANGUP - RAVI - 23-12-2005 - SR 13873 */
+ − #ifdef NEPTUNE_BOARD
+ − stopPlayingMelody();
+ − #endif
+ − /* END RAVI - 23-12-2005 */
+ −
+ − }
+ − else if(ListData->Reason EQ LISTS_REASON_SELECT)
+ − {
+ − switch(soundReason)
+ − {
+ − case MelodySelect:
+ − TRACE_EVENT("selecting file");
+ − #ifdef FF_MIDI_RINGER /*Use Midi Player*/
+ − #ifdef FF_MIDI_LOAD_FROM_MEM/*If Loc ULC */
+ − memory_pointer=sounds_midi_return_memory_location(ListData->ListPosition);
+ − player_type=mfw_ringer_deduce_player_type(memory_pointer.melody_name);
+ − mfw_ringer_set_memory(player_type,AS_RINGER_MODE_IC,(UINT32*)memory_pointer.melody,(UINT32)memory_pointer.melody_size);
+ − #else
+ − filename =sounds_midi_return_file_name(ListData->ListPosition);
+ − player_type=mfw_ringer_deduce_player_type(filename);
+ − mfw_ringer_set_file(player_type,AS_RINGER_MODE_IC,filename);
+ − #endif
+ −
+ − #else //Use Buzzer
+ − stopPlayingMelody();
+ − current.ringer = ListData->ListPosition;
+ − #endif
+ −
+ − break;
+ −
+ − case SettingSMSTone:
+ −
+ − #ifdef FF_MIDI_RINGER //Use Midi Player
+ − #ifdef FF_MIDI_LOAD_FROM_MEM //If ULC
+ − memory_pointer=sounds_midi_return_memory_location(ListData->ListPosition);
+ − player_type=mfw_ringer_deduce_player_type(memory_pointer.melody_name);
+ − mfw_ringer_set_memory(player_type,AS_RINGER_MODE_SMS,(UINT32*)memory_pointer.melody,(UINT32)memory_pointer.melody_size);
+ − #else
+ − filename =sounds_midi_return_file_name(ListData->ListPosition);
+ − player_type=mfw_ringer_deduce_player_type(filename);
+ − mfw_ringer_set_file(player_type,AS_RINGER_MODE_SMS,filename);
+ − #endif
+ − #else/*Use Buzzer*/
+ − stopPlayingMelody();
+ − current.SMSTone = ListData->ListPosition; /* For SMS tones - starting from 40 */
+ − /* Store in FFS - RAVI - 23-12-2005 - SR 13873 */
+ − #ifdef NEPTUNE_BOARD
+ − FFS_flashData.SMSTone= current.SMSTone;
+ − flash_write();
+ − #endif
+ − /* END RAVI - 23-12-2005 */
+ − #endif
+ −
+ − break;
+ −
+ − case SettingAlarm:
+ − #ifdef FF_MIDI_RINGER /* Use Midi Player */
+ − #ifdef FF_MIDI_LOAD_FROM_MEM
+ − memory_pointer=sounds_midi_return_memory_location(ListData->ListPosition);
+ − player_type=mfw_ringer_deduce_player_type(memory_pointer.melody_name);
+ − mfw_ringer_set_memory(player_type,AS_RINGER_MODE_ALARM,(UINT32*)memory_pointer.melody,(UINT32)memory_pointer.melody_size);
+ − #else
+ − filename =sounds_midi_return_file_name(ListData->ListPosition);
+ − player_type=mfw_ringer_deduce_player_type(filename);
+ − mfw_ringer_set_file(player_type,AS_RINGER_MODE_ALARM,filename);
+ − #endif
+ − #else/*Use Buzzer*/
+ − // need to check alarm status MZ.
+ − current.AlarmOn = ListData->ListPosition;
+ − /* Store in FFS - RAVI - 23-12-2005 - SR 13873 */
+ − #ifdef NEPTUNE_BOARD
+ − FFS_flashData.AlarmOn= current.AlarmOn;
+ − flash_write();
+ − #endif
+ − /* END RAVI - 23-12-2005 */
+ − #endif
+ −
+ − default:
+ − break;
+ − }
+ − /* Apr 05, 2005 REF: ENH 29994 xdeepadh */
+ − /* Store selected melody in PCM storage. */
+ − #ifdef FF_MIDI_RINGER
+ − sounds_show_info(0, TxtSelected, TxtNull, NULL);
+ − #endif
+ − }
+ −
+ − #ifdef FF_MIDI_RINGER
+ − stopPlayerTimer();
+ − mfw_player_stop(sounds_midi_player_stop_cb);
+ − #else
+ − stopPlayingMelody();
+ − #endif
+ − listsDestroy(ListData->win);
+ − melody_destroy(data->sounds_win);
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: melody_destroy
+ −
+ − $Description: Destroy the melody window.
+ −
+ − $Returns: none
+ −
+ − $Arguments: own_window- current window
+ − *******************************************************************************/
+ −
+ − static void melody_destroy(MfwHnd own_window)
+ − {
+ − T_MFW_WIN * win_data;
+ − T_MELODY_INFO * data;
+ − UBYTE numberOfMelodies;
+ −
+ − TRACE_FUNCTION ("melody_destroy()");
+ −
+ − if (own_window)
+ − {
+ − win_data = ((T_MFW_HDR *)own_window)->data;
+ − data = (T_MELODY_INFO *)win_data->user;
+ −
+ − if (data)
+ − {
+ − /*
+ − * Delete WIN handler
+ − */
+ − win_delete (data->sounds_win);
+ −
+ − /*
+ − * Free Memory
+ − */
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − numberOfMelodies = sounds_midi_return_file_number();
+ − #else
+ − numberOfMelodies = resource_GetListCount(RES_MELODY);
+ − #endif
+ −
+ − if (data->menu_list_data != NULL)
+ − {
+ − FREE_MEMORY ((void *)data->menu_list_data->List, numberOfMelodies * sizeof (T_MFW_MNU_ITEM));
+ − FREE_MEMORY ((void *)data->menu_list_data, sizeof (ListMenuData));
+ − }
+ − FREE_MEMORY ((void *)data, sizeof (T_MELODY_INFO));
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − //Delete the timer used for scrolling
+ − if(hPlayerStartTimer!=NULL)
+ − timDelete(hPlayerStartTimer);
+ − #endif
+ −
+ − }
+ − else
+ − {
+ − TRACE_EVENT ("melody_destroy() called twice");
+ − }
+ − }
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: melody_win_cb
+ −
+ − $Description: Window callback function for the melody window.
+ −
+ − $Returns: none
+ −
+ − $Arguments: w - mfw window handler
+ − e - mfw event
+ −
+ − *******************************************************************************/
+ −
+ − static int melody_win_cb (MfwEvt e, MfwWin *w) /* yyy window event handler */
+ − {
+ − TRACE_FUNCTION ("melody_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: melody_menu_cb
+ −
+ − $Description: Call back function for the melody menu.
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ − *******************************************************************************/
+ −
+ − static int melody_menu_cb (MfwEvt e, MfwMnu *m){
+ −
+ − /* T_MFW_HND win = mfwParent(mfw_header()); */ /* RAVI */
+ − /* T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; */ /* RAVI */
+ −
+ − switch (e)
+ − {
+ − case E_MNU_ESCAPE:
+ − break;
+ − default:
+ − return 0;
+ − }
+ − return 1;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: resource_GetListCount
+ −
+ − $Description: Returns the number of entries in resource table.
+ −
+ − $Returns: Number of entries in Melody table.
+ −
+ − $Arguments: res - Resource Id.
+ −
+ − *******************************************************************************/
+ − int resource_GetListCount(res_ResourceID_type res)
+ − // Returns the number of the resource type available in the phone.
+ − {
+ − int index=0;
+ − switch (res)
+ − {
+ − case RES_MELODY:
+ − while(MelodyTable[index] !=0)
+ − index++;
+ − return index;
+ − /* break; */ /* RAVI */
+ −
+ − case RES_LANGUAGE:
+ −
+ − break;
+ − case RES_STRING:
+ −
+ − break;
+ − default:
+ −
+ − break;
+ −
+ − }
+ − return index;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: buildOnOffMenu
+ −
+ − $Description: builds an on/off menu and associates it with a context
+ −
+ − $Returns: None
+ −
+ − $Arguments: count, number of elements in menu
+ − id3, prompt string
+ − active, context into which the menu should be associated
+ −
+ − *******************************************************************************/
+ −
+ − static void buildOnOffMenu( int count, int id3, int active )
+ − {
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: buildVolumeMenu
+ −
+ − $Description: builds the volume menu and associates it with the volume
+ − context
+ −
+ − $Returns: None
+ −
+ − $Arguments: volume, the context to be associated with
+ −
+ − *******************************************************************************/
+ −
+ − static void buildVolumeMenu( VOL_ENUM volume )
+ − {
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: displayDynaMenu
+ −
+ − $Description: show one page of the ringer list, determined by item.
+ −
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − static void displayDynamenu( void )
+ − {
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: displayRingerVolume
+ −
+ − $Description: shows the volume setting determined by cVolume
+ −
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − static void displayRingerVolume( void )
+ − {
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: displayOnOffList
+ −
+ − $Description: show the On Off (3rd) list, determined by item.
+ −
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − static void displayOnOffList( void )
+ − {
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: buildLanguageMenu
+ −
+ − $Description: builds the dynamenu for the RES_LANGUAGE resource type
+ −
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − static void buildLanguageMenu(void)
+ − {
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: delayThenPlayMelody
+ −
+ − $Description: play selected ringer melody after short delay
+ −
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − static void delayThenPlayMelody( void )
+ − {
+ −
+ − /* start timer for half a second and on timeout start everlasting play
+ − */
+ − timStart( hRingerStartTimer );
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: playCurrentSound
+ −
+ − $Description: play tune which is temporarily selected, this event handler
+ − is invoked when the hRingerStartTimer event completes
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: e, event, tc timer context
+ −
+ − *******************************************************************************/
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifndef FF_MIDI_RINGER
+ − static int playCurrentSound( MfwEvt e, MfwTim *tc )
+ − {
+ − soundsPlayRinger(current.ringer);
+ −
+ − // stop running timer (One shot mode only)
+ − if (hRingerStartTimer != NULL ) {
+ − timStop(hRingerStartTimer);
+ − }
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ − #endif
+ − /*******************************************************************************
+ −
+ − $Function: setSelection
+ −
+ − $Description: reactivates calling menu after confirming setting
+ −
+ − $Returns: MFW_EVENT_PASSED always
+ −
+ − $Arguments: e, event, m, window handle
+ −
+ − *******************************************************************************/
+ −
+ − static int setSelection( MfwEvt e, MfwWin *m )
+ − {
+ − //int UpdatePCM = 0; // RAVI
+ − // int SoundToPlay = -1; // RAVI
+ −
+ − TRACE_FUNCTION("setSelection");
+ −
+ − /* This implements a state machine, the next setting depends
+ − on the reason we have been invoked
+ −
+ − Note the following is still pending implementation
+ − USSD TONE, SVC TONE, MANPLMN TONE
+ − */
+ − switch (soundReason)
+ − {
+ − case MelodySelect:
+ − {
+ − }
+ − break;
+ −
+ − case SettingVolume:
+ − {
+ − }
+ − break;
+ −
+ − default:
+ − {
+ − /* No action required
+ − */
+ − }
+ − break;
+ − }
+ −
+ −
+ − /* redisplay sub menu showing changed position of active marker.
+ − */
+ − winShow( win );
+ −
+ − return MFW_EVENT_PASSED;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: writeSettingsToPCM
+ −
+ − $Description: writes contents of global vars of sounds to PCM or
+ − sets default values
+ −
+ − $Returns: None
+ −
+ − $Arguments: flush, dictates whether or not flushing should be
+ − performed on the write operation
+ −
+ − *******************************************************************************/
+ − static void writeSettingsToPCM( U8 flush )
+ − {
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: readSettingsFromPCM
+ −
+ − $Description: inits global vars of sounds from PCM or
+ − sets default values
+ −
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − static void readSettingsFromPCM(void)
+ − {
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsCreate
+ −
+ − $Description: Create a sounds context, with a window, keyboards, timers
+ − etc.
+ −
+ − $Returns: None
+ −
+ − $Arguments: parent, handle of the parent window
+ −
+ − *******************************************************************************/
+ −
+ − static void soundsCreate(MfwHnd parent)
+ − {
+ −
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsDestroy
+ −
+ − $Description: cleans up a context
+ −
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − static void soundsDestroy(void)
+ − {
+ −
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: getCallingMenu
+ −
+ − $Description: handles transition to calling menu
+ − a) on timeout,
+ − b) during running timer when Clear, SoftKeyLeft
+ − or SoftKeyRight is pressed
+ −
+ − $Returns: MFW_EVENT_PASSED
+ −
+ − $Arguments: e, event, tc, timer context
+ −
+ − *******************************************************************************/
+ −
+ − static int getCallingMenu(MfwEvt e, MfwTim *tc)
+ − {
+ − TRACE_FUNCTION( "BACK to invocating Menu" );
+ −
+ − return 0;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: winEvent
+ −
+ − $Description: window event handler, only deals with the win visible
+ − event, all others are ignored
+ −
+ − $Returns: MFW_EVENT_PASSED or MFW_EVENT_CONSUMED depending on the
+ − event
+ −
+ − $Arguments: e, event, w, window handle
+ −
+ − *******************************************************************************/
+ −
+ − static int winEvent (MfwEvt e, MfwWin *w)
+ − {
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: keyEventLong
+ −
+ − $Description: keyboard event handler Long press
+ −
+ − $Returns: MFW_EVENT_PASSED or MFW_EVENT_CONSUMED depending on the
+ − event
+ −
+ − $Arguments: e, event, k, keyboard handle
+ −
+ − *******************************************************************************/
+ −
+ − static int keyEventLong (MfwEvt e, MfwKbd *k)
+ − {
+ − PTRACE( sprintf( buf, "keycode in SOUND keyEvtLong %d", (int) k->code ); )
+ − PTRACE( sprintf( buf, "mfwEvt in SOUND Long 0x%10x", e ); )
+ −
+ −
+ − return MFW_EVENT_PASSED; /* give other handlers a chance */
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: keyEvent
+ −
+ − $Description: keyboard event handler
+ −
+ − $Returns: MFW_EVENT_PASSED or MFW_EVENT_CONSUMED depending on the
+ − event
+ −
+ − $Arguments: e, event, k, keyboard handle
+ −
+ − *******************************************************************************/
+ −
+ − static int keyEvent (MfwEvt e, MfwKbd *k)
+ − {
+ −
+ − PTRACE( sprintf( buf, "keycode in SOUND keyEvt %d", (int) k->code ); )
+ − PTRACE( sprintf( buf, "mfwEvt in SOUND 0x%10x", e ); )
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: stepVibrator
+ −
+ − $Description: Changes the state of the vibrator from vibrating to
+ − not vibrating and then restarts the vibration timer
+ −
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − static void stepVibrator( void )
+ − {
+ − TRACE_FUNCTION("Vibrator Ringing");
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: ringVibrator
+ −
+ − $Description: generates the ringing vibrations as configured
+ −
+ − $Returns: New setting of the vibrator counter
+ −
+ − $Arguments: c, pointer to a vibrator counter
+ −
+ − *******************************************************************************/
+ −
+ − static int ringVibrator( UBYTE *c )
+ − {
+ − return 0;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: VibratorTimerEvent
+ −
+ − $Description: Vibrator timer event
+ −
+ − $Returns: Event consumed, always
+ −
+ − $Arguments: e, event, t, timer
+ −
+ − *******************************************************************************/
+ −
+ − static int VibratorTimerEvent ( MfwEvt e, MfwTim *t )
+ − {
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: volumeSettingTimeOut
+ −
+ − $Description: The Ringer volume settings time out has occured and used has not selected
+ − a volume setting.
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: e, event, tc timer context
+ −
+ − *******************************************************************************/
+ − static int volumeSettingTimeOut( MfwEvt e, MfwTim *tc )
+ − {
+ − T_MFW_HND win = mfw_parent(mfw_header());
+ − T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
+ − T_idle * idle_data = (T_idle *)win_data->user;
+ −
+ − TRACE_EVENT(">>>> volumeSettingTimeOut(), Vol Setiing Time out. ");
+ −
+ − // stop running timer.
+ − if (hRingerVolSettingTimeOut != NULL ) {
+ − timStop(hRingerVolSettingTimeOut);
+ − }
+ − //When the timer times out, stop the song and the timer.
+ − #ifdef FF_MIDI_RINGER //Use Midi Player
+ − if(soundReason==SettingVolume)
+ − {
+ − // Are we playing a tune
+ − if ( hPlayerStartTimer!= NULL )
+ − timStop( hPlayerStartTimer );
+ − mfw_player_stop(sounds_midi_player_stop_cb);
+ − }
+ − #endif
+ −
+ − if(call_data.win_menu !=NULL && (call_data.call_direction == MFW_CM_MTC))
+ − {
+ − bookMenuDestroy(call_data.win_menu);
+ − /*
+ − If volume settings dialog timed out while in the incoming call, allow the
+ − ringer to continue ringing. MZ 9/4/01
+ − */
+ − #ifdef FF_MIDI_RINGER
+ − mfw_ringer_start(AS_RINGER_MODE_IC,true,sounds_midi_ringer_start_cb);
+ − #else
+ − /* Volume Setting for Silent */
+ − startPlayingMelody(getCurrentRingerSettings());
+ − #endif
+ −
+ −
+ − }
+ − else if (idle_data->info_win != NULL )
+ − {
+ − bookMenuDestroy(idle_data->info_win);
+ − }
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − Public Methods
+ −
+ − *******************************************************************************/
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − /* ===========================================================*/
+ − /**
+ − * restorePreviousVolumeSetting () will restore the previous volume setting once the menu has
+ − * been scrolled.
+ − *
+ − * @param None.
+ − *
+ − * @return None
+ − *
+ − * @see
+ − */
+ − /* =========================================================== */
+ −
+ − void restorePreviousVolumeSetting()
+ − {
+ − current.volumeSetting = lastVolumeSetting;
+ − }
+ −
+ − /* ===========================================================*/
+ − /**
+ − * volumeMenuScrollUp () when menu button is moved up then this function will get called which
+ − * decrements value for the global variable used to maintain the volume setting while scrolling
+ − * through the menu.
+ − *
+ − * @param None.
+ − *
+ − * @return None
+ − *
+ − * @see
+ − */
+ − /* =========================================================== */
+ − void volumeMenuScrollUp ()
+ − {
+ − /* Decrement Volume setting when scroll up */
+ − scrollVolumeSetting = scrollVolumeSetting - 1 ;
+ −
+ − if (scrollVolumeSetting < SILENT_SETTING)
+ − {
+ − scrollVolumeSetting = MAX_VOLUME_SETTING;
+ − }
+ −
+ − /* current.volumeSetting = scrollVolumeSetting; */
+ − vsi_t_sleep(0,20);
+ − }
+ −
+ −
+ − /* ===========================================================*/
+ − /**
+ − * volumeMenuScrollDown () when menu button is moved down then this function will get called which
+ − * increments value for the global variable used to maintain the volume setting while scrolling
+ − * through the menu.
+ − *
+ − * @param None.
+ − *
+ − * @return None
+ − *
+ − * @see
+ − */
+ − /* =========================================================== */
+ − void volumeMenuScrollDown ()
+ − {
+ − /* Increment Volume setting when scroll down */
+ − scrollVolumeSetting = scrollVolumeSetting + 1;
+ −
+ − if (scrollVolumeSetting > MAX_VOLUME_SETTING)
+ − {
+ − scrollVolumeSetting = SILENT_SETTING;
+ − }
+ −
+ − /* current.volumeSetting = scrollVolumeSetting; */
+ − vsi_t_sleep(0,20);
+ − }
+ −
+ − /* ===========================================================*/
+ − /**
+ − * volumeMenuStartPlaying () Will start playing the default melody with the specified volume
+ − * control.
+ − *
+ − * @param None.
+ − *
+ − * @return None
+ − *
+ − * @see
+ − */
+ − /* =========================================================== */
+ − void volumeMenuStartPlaying()
+ − {
+ − if(soundReason == SettingVolume)
+ − {
+ − stopPlayingMelody ();
+ − startPlayingMelody(current.ringer); /* Play the first menu item which is being selected */
+ − }
+ − }
+ −
+ − /* ===========================================================*/
+ − /**
+ − * volumeMenuStopPlaying () Will stop playing the default melody with the specified volume
+ − * control.
+ − *
+ − * @param None.
+ − *
+ − * @return None
+ − *
+ − * @see
+ − */
+ − /* =========================================================== */
+ − void volumeMenuStopPlaying()
+ − {
+ − if(soundReason == SettingVolume)
+ − {
+ − stopPlayingMelody ();
+ − }
+ − }
+ − #endif
+ − /* END RAVI */
+ −
+ − /*******************************************************************************
+ −
+ − $Function: restartVolSettingInactivityTimer
+ −
+ − $Description: Restart the Volume settings timer.
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void restartVolSettingInactivityTimer(void)
+ − {
+ − if ( hRingerVolSettingTimeOut != NULL )
+ − timStop( hRingerVolSettingTimeOut );
+ −
+ − timStart(hRingerVolSettingTimeOut);
+ −
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: stopRingerVolTimeOut
+ −
+ − $Description: Stop the ringer volume settings timer.
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void stopRingerVolSettingInactivityTimer(void)
+ − {
+ −
+ − if ( hRingerVolSettingTimeOut != NULL )
+ − timStop( hRingerVolSettingTimeOut );
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER //Use Midi Player
+ − //Stop the Timer and stop the song before timeout
+ − if ( hPlayerStartTimer!= NULL )
+ − timStop( hPlayerStartTimer );
+ − mfw_player_stop(sounds_midi_player_stop_cb);
+ − #endif
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: startRingerVolumeSettingTimer
+ −
+ − $Description: Create and start the ringer voulme inactivity timer.
+ −
+ − $Returns: none
+ −
+ − $Arguments: none
+ −
+ − *******************************************************************************/
+ − void startRingerVolSettingInactivityTimer(T_MFW_HND parent_win)
+ − {
+ − T_MFW_HND win = mfw_parent(mfw_header());
+ − T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
+ − T_idle * idle_data = (T_idle *)win_data->user;
+ −
+ − TRACE_FUNCTION(">>>> startRingerVolSettingInactivityTime, Create and Start Vol timer ");
+ − //Create 4 second ringer delay timer.
+ − if(hRingerVolSettingTimeOut == NULL )
+ − {
+ − if(call_data.call_direction == MFW_CM_MTC)
+ − {
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − ; /* do nothing */
+ − #else
+ − hRingerVolSettingTimeOut = timCreate(call_data.win, TIM4SECOND, (MfwCb)volumeSettingTimeOut);
+ − #endif
+ − /* END RAVI */
+ − }
+ − else
+ − {
+ − /* RAVI - 20-1-2006 */
+ − #ifdef NEPTUNE_BOARD
+ − ; /* do nothing */
+ − #else
+ − hRingerVolSettingTimeOut = timCreate(idle_data->win, TIM4SECOND, (MfwCb)volumeSettingTimeOut);
+ − #endif
+ − /* END RAVI */
+ − }
+ − }
+ −
+ − if ( hRingerVolSettingTimeOut != NULL )
+ − timStop( hRingerVolSettingTimeOut );
+ −
+ − #ifdef NEPTUNE_BOARD
+ − /* RAVI - 20-1-2006 */
+ − /* Initialize the scrolling variable - When volume menu is activated */
+ − scrollVolumeSetting = 0;
+ − lastVolumeSetting = current.volumeSetting;
+ − #endif
+ −
+ −
+ − #ifndef NEPTUNE_BOARD
+ − timStart(hRingerVolSettingTimeOut);
+ − #endif
+ − /* END RAVI */
+ −
+ −
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: soundsRinger
+ −
+ − $Description: prepares Ringer setting screen
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: m, menu, i, item
+ −
+ − *******************************************************************************/
+ −
+ − int soundsRinger( MfwMnu *m, MfwMnuItem *i )
+ − {
+ − T_MFW_HND win;
+ − T_MFW_HND parent_win = mfw_parent(mfw_header());
+ − /*Apr 05, 2005 REF: ENH 29994 xdeepadh */
+ − #ifdef FF_MIDI_RINGER
+ − int numberOfMelodies=0;
+ − T_DISPLAY_DATA DisplayInfo;
+ −
+ − TRACE_EVENT("soundsRinger");
+ − if(IsMidiInit==0)
+ − {
+ − TRACE_EVENT("populating files");
+ − sounds_midi_init();
+ − IsMidiInit = 1;
+ − }
+ −
+ − numberOfMelodies = sounds_midi_return_file_number();
+ − TRACE_EVENT_P1("numberOfMelodies is %d",numberOfMelodies);
+ −
+ − if(numberOfMelodies <= 0)
+ − {
+ − sounds_show_info(0, TxtMidiFileNotLoaded, TxtNull, NULL);
+ − return MFW_EVENT_CONSUMED;
+ − }
+ − else
+ − {
+ − //Set the voice limit to 32 and channel to stereo in idle mode
+ − //Set the audiopath to speaker.
+ − mfw_ringer_set_audiopath();
+ − mfw_player_midi_set_params(FF_MIDI_VOICE_LIMIT,MIDI_CHANNEL_STEREO);
+ − //Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh
+ − //Set the Mp3 Parameters .Size of the file where the melody must start is set 0(from beginning)
+ − //and channel is set to stereo.
+ − #ifdef FF_MP3_RINGER
+ − mfw_player_mp3_set_params(MP3_PLAY_FROM_START,MP3_CHANNEL_STEREO);
+ − #endif //FF_MP3_RINGER
+ −
+ − //Nov 21, 2005 REF:ER OMAPS00057430 nekkareb
+ − //Set the AAC Parameters .Size of the file where the melody must start is set 0(from beginning)
+ − //and channel is set to stereo.
+ − #ifdef FF_AAC_RINGER
+ − mfw_player_aac_set_params(AAC_PLAY_FROM_START,AAC_CHANNEL_STEREO);
+ − #endif //FF_AAC_RINGER
+ −
+ −
+ − hPlayerStartTimer = timCreate( 0, TIMHALFSECOND, (MfwCb)playCurrentMelody);
+ − win = buildMelodyMenu(parent_win);
+ −
+ − if (win NEQ NULL)
+ − {
+ − SEND_EVENT (win, E_INIT, 0, 0);
+ − }
+ − return MFW_EVENT_CONSUMED;
+ − }
+ − #else
+ − /*recources_Init (win);*/
+ −
+ − /* Timer not requried for Neptune - RAVI 23-12-2005 */
+ − #ifndef NEPTUNE_BOARD
+ − /* Create 0.5 second ringer delay timer. */
+ − hRingerStartTimer = timCreate( 0, TIMHALFSECOND, (MfwCb)playCurrentSound);
+ − #endif
+ − /* END ADD BY RAVI - 23-12-2005 */
+ −
+ − win = buildMelodyMenu(parent_win);
+ −
+ − if (win NEQ NULL)
+ − {
+ − SEND_EVENT (win, E_INIT, 0, 0);
+ − }
+ −
+ − /* For Neptune Not Required - RAVI - 23-12-2005 */
+ − #ifndef NEPTUNE_BOARD
+ − /* Start the 0.5 second ringer delay timer. */
+ − delayThenPlayMelody();
+ − #endif
+ − /* END ADD BY RAVI - 23-12-2005 */
+ −
+ − return MFW_EVENT_CONSUMED;
+ − #endif
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsVolume
+ −
+ − $Description: prepares Volume setting screen
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: m, menu, i, item
+ −
+ − *******************************************************************************/
+ −
+ − int soundsVolume( MfwMnu *m, MfwMnuItem *i )
+ − {
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: settingsVibrator
+ −
+ − $Description: prepares Vibrator settings screen
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: m, menu, i, item
+ −
+ − *******************************************************************************/
+ −
+ − int settingsVibrator( MfwMnu *m, MfwMnuItem *i )
+ − {
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: settingsLanguages
+ −
+ − $Description: prepares languages screen
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: m, menu, i, item
+ −
+ − *******************************************************************************/
+ −
+ − int settingsLanguages( MfwMnu *m, MfwMnuItem *i )
+ − {
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsNewMessage
+ −
+ − $Description: prepares NewMessage setting screen
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: m, menu, i, item
+ −
+ − *******************************************************************************/
+ −
+ − int soundsNewMessage( MfwMnu *m, MfwMnuItem *i )
+ − {
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsNewBroadcast
+ −
+ − $Description: prepares Broadcast setting screen
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: m, menu, i, item
+ −
+ − *******************************************************************************/
+ −
+ − int soundsNewBroadcast( MfwMnu *m, MfwMnuItem *i )
+ − {
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsBatteryLow
+ −
+ − $Description: prepares BatteryLow setting screen
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: m, menu, i, item
+ −
+ − *******************************************************************************/
+ −
+ − int soundsBatteryLow( MfwMnu *m, MfwMnuItem *i )
+ − {
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsCreditLow
+ −
+ − $Description: prepares Credit setting screen
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: m, menu, i, item
+ −
+ − *******************************************************************************/
+ −
+ − int soundsCreditLow( MfwMnu *m, MfwMnuItem *i )
+ − {
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: soundsOrganiser
+ −
+ − $Description: prepares Organiser setting screen
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: m, menu, i, item
+ −
+ − *******************************************************************************/
+ −
+ − int soundsOrganiser( MfwMnu *m, MfwMnuItem *i )
+ − {
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsAlarm
+ −
+ − $Description: prepares Alarm setting screen
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: m, menu, i, item
+ −
+ − *******************************************************************************/
+ −
+ − int soundsAlarm( MfwMnu *m, MfwMnuItem *i )
+ − {
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundInit
+ −
+ − $Description: init sounds handling
+ −
+ − $Returns: None
+ −
+ − $Arguments: parent, handle of parent window
+ −
+ − *******************************************************************************/
+ −
+ − void soundInit( MfwHnd parent )
+ − {
+ −
+ −
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundExit
+ −
+ − $Description: exit sounds handling
+ −
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − void soundExit (void)
+ − {
+ −
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundExec
+ −
+ − $Description: sends messages to soundExec to get the various melodies to play
+ −
+ − $Returns: None
+ −
+ − $Arguments: reason, for invocation, next, state
+ −
+ − *******************************************************************************/
+ −
+ − void soundExec (int reason, MmiState next)
+ −
+ − {
+ −
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsKeypadSilent
+ −
+ − $Description: prepares KeypadTones setting screen
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: m, menu, i, item
+ −
+ − *******************************************************************************/
+ −
+ − int soundsKeypadSilent(MfwMnu* m, MfwMnuItem* i)
+ − {
+ −
+ − T_MFW_HND win = mfw_parent(mfw_header());
+ −
+ − sounds_Init(win);
+ −
+ − if (FFS_flashData.settings_status & SettingsKeypadClick)
+ − {
+ − FFS_flashData.settings_status &= ~SettingsKeypadClick;
+ − }
+ − else if (FFS_flashData.settings_status & SettingsKeypadDTMF)
+ − {
+ − FFS_flashData.settings_status &= ~SettingsKeypadDTMF;
+ − }
+ − flash_write();
+ − sounds_data.local_status = ACTIVATE_CONFIRM;
+ −
+ − SEND_EVENT (sounds_data.sounds_win, SHOW_CONFIRM, 0, 0);
+ −
+ − return 0;
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: soundsKeypadClick
+ −
+ − $Description: prepares KeypadTones setting screen
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: m, menu, i, item
+ −
+ − *******************************************************************************/
+ − int soundsKeypadClick(MfwMnu* m, MfwMnuItem* i)
+ − {
+ −
+ − T_MFW_HND win = mfw_parent(mfw_header());
+ −
+ − sounds_Init(win);
+ −
+ −
+ −
+ − if (FFS_flashData.settings_status & SettingsKeypadDTMF)
+ − {
+ − FFS_flashData.settings_status &= ~SettingsKeypadDTMF;
+ − }
+ −
+ − FFS_flashData.settings_status |= SettingsKeypadClick;
+ −
+ − /* RAVI - 20-1-2006 */
+ − /* play KeypadClick */
+ − #ifdef NEPTUNE_BOARD
+ − audio_PlaySoundID(0, TONES_KEYBEEP, current.volumeSetting, AUDIO_PLAY_ONCE);
+ − #else
+ − audio_PlaySoundID(0, TONES_KEYBEEP, 5, AUDIO_PLAY_ONCE ); /* GW#2355 /CQ11341 */
+ − #endif
+ − /* END RAVI */
+ −
+ − sounds_data.local_status = ACTIVATE_CONFIRM;
+ −
+ − SEND_EVENT (sounds_data.sounds_win, SHOW_CONFIRM, 0, 0);
+ − flash_write();
+ − return 0;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsKeypadDTMF
+ −
+ − $Description: prepares KeypadTones setting screen
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: m, menu, i, item
+ −
+ − *******************************************************************************/
+ − int soundsKeypadDTMF(MfwMnu* m, MfwMnuItem* i)
+ − {
+ −
+ − T_MFW_HND win = mfw_parent(mfw_header());
+ −
+ − sounds_Init(win);
+ −
+ − if (FFS_flashData.settings_status & SettingsKeypadClick)
+ − {
+ − FFS_flashData.settings_status &= ~SettingsKeypadClick;
+ − }
+ −
+ −
+ −
+ − FFS_flashData.settings_status |= SettingsKeypadDTMF;
+ − flash_write();
+ −
+ − sounds_data.local_status = ACTIVATE_CONFIRM;
+ −
+ − SEND_EVENT (sounds_data.sounds_win, SHOW_CONFIRM, 0, 0);
+ −
+ − return 0;
+ − }
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: sounds_Init
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − T_MFW_HND sounds_Init (T_MFW_HND parent_window)
+ − {
+ − return (sounds_create (parent_window));
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: confirm_Exit
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − void sounds_Exit (T_MFW_HND own_window)
+ − {
+ −
+ − T_MFW_WIN * win_data = ((T_MFW_HDR *)own_window)->data;
+ − T_MELODY_INFO * data = (T_MELODY_INFO *)win_data->user;
+ −
+ − sounds_destroy (data->sounds_win);
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: sounds_create
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − T_MFW_HND sounds_create (T_MFW_HND parent_window)
+ − {
+ − T_MELODY_INFO * data = &sounds_data;
+ − T_MFW_WIN * win;
+ −
+ − TRACE_FUNCTION ("sounds_create()");
+ −
+ − data->sounds_win = win_create (parent_window, 0, 0, (T_MFW_CB)sounds_win_cb);
+ −
+ − if (data->sounds_win EQ 0)
+ − return 0;
+ −
+ − /*
+ − * Create window handler
+ − */
+ − data->mmi_control.dialog = (T_DIALOG_FUNC)sounds;
+ − data->mmi_control.data = data;
+ − win = ((T_MFW_HDR *)data->sounds_win)->data;
+ − win->user = (void *) data;
+ −
+ −
+ − winShow(data->sounds_win);
+ − /*
+ − * return window handle
+ − */
+ − return data->sounds_win;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: sounds_destroy
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − void sounds_destroy (T_MFW_HND own_window)
+ − {
+ − T_MFW_WIN * win;
+ − T_MELODY_INFO * data;
+ −
+ − TRACE_FUNCTION ("sounds_destroy()");
+ −
+ − if (own_window)
+ − {
+ − win = ((T_MFW_HDR *)own_window)->data;
+ − data = (T_MELODY_INFO *)win->user;
+ −
+ − if (data)
+ − {
+ −
+ − /*
+ − * Delete WIN handler
+ − */
+ − win_delete (data->sounds_win);
+ − data->sounds_win = 0;
+ − }
+ − }
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: sounds_win_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − static int sounds_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
+ − {
+ − /*
+ − * Top Window has no output
+ − */
+ − return 1;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: sounds_dialog
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − static void sounds_dialog(void)
+ − {
+ − T_DISPLAY_DATA display_info;
+ −
+ − TRACE_FUNCTION ("sounds_dialog()");
+ −
+ − dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtNull, TxtNull , COLOUR_STATUS);
+ − dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)sounds_dialog_cb, THREE_SECS, KEY_CLEAR | KEY_RIGHT );
+ − if (sounds_data.local_status EQ ACTIVATE_CONFIRM)
+ − {
+ − display_info.TextId = TxtActivated;
+ − }
+ − else
+ − {
+ − display_info.TextId = TxtDeActivated;
+ − }
+ −
+ − /*
+ − * Call Info Screen
+ − */
+ − info_dialog (sounds_data.sounds_win, &display_info);
+ −
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: confirm_dialog_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − void sounds_dialog_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
+ − {
+ − TRACE_FUNCTION ("sounds_dialog_cb()");
+ −
+ − switch (reason)
+ − {
+ − case INFO_TIMEOUT:
+ − /* no break; */
+ − case INFO_KCD_HUP:
+ − /* no break; */
+ − case INFO_KCD_LEFT:
+ − /* no break; */
+ − case INFO_KCD_RIGHT:
+ − /* no break; */
+ − case INFO_KCD_CLEAR:
+ − sounds_Exit(win);
+ − break;
+ − }
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: sounds
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − void sounds (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
+ − {
+ − // T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; // RAVI
+ − // T_MELODY_INFO * data = (T_MELODY_INFO *)win_data->user; // RAVI
+ −
+ − TRACE_FUNCTION("sounds()");
+ −
+ − switch (event)
+ − {
+ − case SHOW_CONFIRM:
+ − sounds_dialog();
+ − break;
+ − }
+ −
+ − }
+ −
+ − // Nov 29, 2004 REF: CRR 25051 xkundadu
+ − // Description: INCALL SCREEN – ADJUSTING THE VOLUME
+ − // Fix: Added these functions to set the speaker volume to various levels.
+ −
+ − void SetVolumeLevel1(void)
+ − {
+ −
+ −
+ − FFS_flashData.output_volume = OutVolumeLevel1;
+ − // Set the volume
+ − mmeSetVolume (1, FFS_flashData.output_volume);
+ − //write the value to the FFS
+ − flash_write();
+ −
+ − }
+ − void SetVolumeLevel2(void)
+ − {
+ −
+ −
+ − FFS_flashData.output_volume = OutVolumeLevel2;
+ − // Set the volume
+ − mmeSetVolume (1, FFS_flashData.output_volume);
+ − //write the value to the FFS
+ − flash_write();
+ −
+ − }
+ − void SetVolumeLevel3(void)
+ − {
+ −
+ −
+ − FFS_flashData.output_volume = OutVolumeLevel3;
+ − // Set the volume
+ − mmeSetVolume (1, FFS_flashData.output_volume);
+ − //write the value to the FFS
+ − flash_write();
+ −
+ − }
+ − void SetVolumeLevel4(void)
+ − {
+ −
+ −
+ − FFS_flashData.output_volume = OutVolumeLevel4;
+ − // Set the volume
+ − mmeSetVolume (1, FFS_flashData.output_volume);
+ − //write the value to the FFS
+ − flash_write();
+ −
+ − }
+ − void SetVolumeLevel5(void)
+ − {
+ −
+ −
+ − FFS_flashData.output_volume = OutVolumeLevel5;
+ − // Set the volume
+ − mmeSetVolume (1, FFS_flashData.output_volume);
+ − //write the value to the FFS
+ − flash_write();
+ −
+ − }
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − /*******************************************************************************
+ −
+ − $Function: sounds_midi_init
+ −
+ − $Description:Function to initialise the Midi files.
+ −
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ − void sounds_midi_init(void)
+ − {
+ − TRACE_FUNCTION("sounds_init");
+ − #ifdef FF_MIDI_RINGER
+ − #ifdef FF_MIDI_LOAD_FROM_MEM
+ − midi_files_count=MIDI_MAX_FILES;
+ − #else
+ − //Nov 04, 2005 REF:DRT OMAPS00053737 xdeepadh
+ − #ifdef FF_MIDI_LOAD_FROM_LFS
+ − //Populate midi files from LFS
+ − TRACE_EVENT("LFS");
+ − //Load the midi files from FFS into LFS
+ − midi_files_count=sounds_load_lfs_midi_files(MIDI_MAX_FILES);
+ − //Populate the list of midi files from LFS
+ − midi_files_count=sounds_populate_midi_files(midi_file_names,MIDI_MAX_FILES,LFS_CONTENT_DIR);
+ − #else
+ − TRACE_EVENT("FFS");
+ − midi_files_count=sounds_populate_midi_files(midi_file_names,MIDI_MAX_FILES,RINGER_CONTENT_DIR);
+ − #endif //FF_MIDI_LOAD_FROM_LFS
+ − #endif //FF_MIDI_LOAD_FROM_MEM
+ − #endif //FF_MIDI_RINGER
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: sounds_midi_exit
+ −
+ − $Description:Function to uninitialise the Midi files.
+ −
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − void sounds_midi_exit(void)
+ − {
+ − TRACE_FUNCTION("sounds_exit");
+ − #ifndef FF_MIDI_LOAD_FROM_MEM
+ − sounds_unpopulate_midi_files(midi_file_names);
+ − IsMidiInit = 0;
+ − #endif
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: sounds_populate_midi_files
+ −
+ − $Description:Populates the MIDI file names into the array
+ −
+ − $Returns: The count of the files in the directory
+ −
+ − $Arguments: file_names:Pointer to the arrayto store file names
+ − max_files_count:Max file counts to be stored in array
+ − *******************************************************************************/
+ −
+ − int sounds_populate_midi_files(char **file_names, int max_files_count,char* dir_name_p)
+ − {
+ − T_FFS_FD fd = 0;
+ − T_FFS_DIR dir = {0};
+ − char dest_name_p[100] = "";
+ − int i, files_count = 0;
+ − char *fileExt;
+ −
+ − TRACE_FUNCTION("sounds_populate_midi_files");
+ −
+ − if (ffs_opendir (dir_name_p, &dir) <= 0)
+ − {
+ − files_count = 0;
+ − }
+ −
+ − //read the file names
+ − //Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh
+ − //file_count will be used to populate the array index
+ − 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 20, 2005 REF: SPR 30772 xdeepadh
+ − //Retrieve file extension.Store only the supported file formats in array
+ − fileExt =sounds_midi_GetExtension(dest_name_p);
+ − //Oct 25, 2005 MP3 Ringer xdeepadh
+ − //List the MP3 files also.Mp3 files hsould not be listed or ULC
+ − #ifdef FF_MP3_RINGER
+ − if ( (strcmp(fileExt, "mp3") == 0))
+ − {
+ − strcpy (file_names[files_count], dest_name_p);
+ − files_count++;
+ − }
+ − else
+ − #endif //FF_MP3_RINGER
+ −
+ − //Nov 21, 2005 ER: OMAPS00057430, AAC Ringer support nekkareb
+ − //List the AAC files also.
+ − #ifdef FF_AAC_RINGER
+ − if ( (strcmp(fileExt, "aac") == 0))
+ − {
+ − strcpy (file_names[files_count], dest_name_p);
+ − files_count++;
+ − }
+ − else
+ − #endif //FF_AAC_RINGER
+ −
+ − //If XMF is supported
+ − #ifdef PAL_ENABLE_XMF
+ − if ( (strcmp(fileExt, "xmf") == 0))
+ − {
+ − strcpy (file_names[files_count], dest_name_p);
+ − files_count++;
+ − }
+ − else
+ − #endif //PAL_ENABLE_XMF
+ −
+ − //If IMELODY is supported
+ − #ifdef PAL_ENABLE_IMELODY
+ − if ( (strcmp(fileExt, "imy") == 0))
+ − {
+ − strcpy (file_names[files_count], dest_name_p);
+ − files_count++;
+ − }
+ − else
+ − #endif //PAL_ENABLE_IMELODY
+ −
+ − //If SMAF is supported
+ − #ifdef PAL_ENABLE_SMAF_MA3
+ − if ( (strcmp(fileExt, "mmf") == 0))
+ − {
+ − strcpy (file_names[files_count], dest_name_p);
+ − files_count++;
+ − }
+ − else
+ − #endif ////PAL_ENABLE_SMAF_MA3
+ −
+ − //If MIDI is supported
+ − #ifdef PAL_ENABLE_MIDI_NORMALIZER
+ − if ( (strcmp(fileExt, "mid") == 0))
+ − {
+ − strcpy (file_names[files_count], dest_name_p);
+ − files_count++;
+ − }
+ − else
+ − #endif ////PAL_ENABLE_MIDI_NORMALIZER
+ − //Sep 12, 2005 REF: SPR 33977 xdeepadh
+ − //mxmf file format has been supported
+ − #ifdef PAL_ENABLE_SMAF_MA3
+ − if ( (strcmp(fileExt, "mxmf") == 0))
+ − {
+ − strcpy (file_names[files_count], dest_name_p);
+ − files_count++;
+ − }
+ − else
+ − #endif //PAL_ENABLE_SMAF_MA3
+ − ;
+ − if(files_count >= max_files_count)
+ − break;
+ − }
+ − else
+ − {
+ − //files_count = 0;
+ − }
+ −
+ − }
+ − TRACE_EVENT_P1("read files_count is %d",files_count);
+ − return files_count;
+ − }
+ −
+ − //Nov 04, 2005 REF:DRT OMAPS00053737 xdeepadh
+ − #ifdef FF_MIDI_LOAD_FROM_LFS
+ − /*******************************************************************************
+ −
+ − $Function: sounds_load_lfs_midi_files
+ −
+ − $Description: Loads the midi files from FFS to LFS.
+ − This function should be used as a patch to load the lfs files.
+ − This function should be used only in the absence of ETM.
+ − $Returns: None
+ − $Arguments: max_files_count:Max file counts to be stored in array
+ −
+ − *******************************************************************************/
+ − int sounds_load_lfs_midi_files( int max_files_count)
+ − {
+ − char dir_name_p[] = RINGER_CONTENT_DIR;
+ − T_FFS_DIR dir = {0};
+ − char dest_name_p[100] = "";
+ − char dest_full_path[100] = "";
+ − int i, files_count = 0;
+ − char *fileExt;
+ − T_RAM_FILE* ram_file = NULL;
+ −
+ − TRACE_FUNCTION("sounds_load_lfs_midi_files");
+ −
+ − if (ffs_opendir (dir_name_p, &dir) <= 0)
+ − {
+ − TRACE_EVENT( "FFS open dir failure: OK");
+ −
+ − }
+ −
+ − //read the file names
+ − for (i = 0; ffs_readdir (&dir, dest_name_p, 100) > 0x0; i++)
+ − {
+ − TRACE_EVENT_P1( "dest name is %s",dest_name_p);
+ − if(dest_name_p != NULL)
+ − {
+ − //Jul 20, 2005 REF: SPR 30772 xdeepadh
+ − //Retrieve file extension.Store only the supported file formats in array
+ − fileExt =sounds_midi_GetExtension(dest_name_p);
+ − //If XMF is supported
+ − #ifdef PAL_ENABLE_XMF
+ − if ( (strcmp(fileExt, "xmf") == 0))
+ − {
+ − strcpy(dest_full_path,RINGER_CONTENT_DIR);
+ − strcat(dest_full_path,"/");
+ − strcat(dest_full_path,dest_name_p);
+ − ram_file = ram_load_file(dest_full_path);
+ − if (0 != ram_write_lfs(ram_file,dest_name_p))
+ − {
+ − TRACE_EVENT( "LFS write failure: OK");
+ − }
+ −
+ − }
+ − else
+ − #endif //PAL_ENABLE_XMF
+ −
+ − //If IMELODY is supported
+ − #ifdef PAL_ENABLE_IMELODY
+ − if ( (strcmp(fileExt, "imy") == 0))
+ − {
+ −
+ − strcpy(dest_full_path,RINGER_CONTENT_DIR);
+ − strcat(dest_full_path,"/");
+ − strcat(dest_full_path,dest_name_p);
+ − ram_file = ram_load_file(dest_full_path);
+ − if (0 != ram_write_lfs(ram_file,dest_name_p))
+ − {
+ − TRACE_EVENT( "LFS write failure: OK");
+ − }
+ −
+ − }
+ − else
+ − #endif //PAL_ENABLE_IMELODY
+ −
+ − //If SMAF is supported
+ − #ifdef PAL_ENABLE_SMAF_MA3
+ − if ( (strcmp(fileExt, "mmf") == 0))
+ − {
+ −
+ − strcpy(dest_full_path,RINGER_CONTENT_DIR);
+ − strcat(dest_full_path,"/");
+ − strcat(dest_full_path,dest_name_p);
+ − ram_file = ram_load_file(dest_full_path);
+ − if (0 != ram_write_lfs(ram_file,dest_name_p))
+ − {
+ − TRACE_EVENT( "LFS write failure: OK");
+ − }
+ − files_count++;
+ − }
+ − else
+ − #endif ////PAL_ENABLE_SMAF_MA3
+ −
+ − //If MIDI is supported
+ − #ifdef PAL_ENABLE_MIDI_NORMALIZER
+ − if ( (strcmp(fileExt, "mid") == 0))
+ − {
+ − strcpy(dest_full_path,RINGER_CONTENT_DIR);
+ − strcat(dest_full_path,"/");
+ − strcat(dest_full_path,dest_name_p);
+ − ram_file = ram_load_file(dest_full_path);
+ − if (0 != ram_write_lfs(ram_file,dest_name_p))
+ − {
+ − TRACE_EVENT( "LFS write failure: OK");
+ − }
+ − files_count++;
+ − }
+ − else
+ − #endif ////PAL_ENABLE_MIDI_NORMALIZER
+ − //Sep 12, 2005 REF: SPR 33977 xdeepadh
+ − //mxmf file format has been supported
+ − #ifdef PAL_ENABLE_SMAF_MA3
+ − if ( (strcmp(fileExt, "mxmf") == 0))
+ − {
+ −
+ − strcpy(dest_full_path,RINGER_CONTENT_DIR);
+ − strcat(dest_full_path,"/");
+ − strcat(dest_full_path,dest_name_p);
+ − ram_file = ram_load_file(dest_full_path);
+ − if (0 != ram_write_lfs(ram_file,dest_name_p))
+ − {
+ − TRACE_EVENT( "LFS write failure: OK");
+ − }
+ − files_count++;
+ − }
+ − else
+ − #endif //PAL_ENABLE_SMAF_MA3
+ − ;
+ − if(files_count >= max_files_count)
+ − break;
+ − }
+ − else
+ − {
+ − //files_count = 0;
+ − }
+ −
+ − }
+ − TRACE_EVENT_P1("read files_count is %d",files_count);
+ − return files_count;
+ − }
+ − #endif //FF_MIDI_LOAD_FROM_LFS
+ − /*******************************************************************************
+ −
+ − $Function: sounds_unpopulate_midi_files
+ −
+ − $Description:Frees the memory allocated for the array
+ − $Returns: None
+ −
+ − $Arguments: file_names:Pointer to the arrayto store file names
+ −
+ − *******************************************************************************/
+ − void sounds_unpopulate_midi_files(char **file_names)
+ − {
+ − T_FFS_FD fd = 0;
+ − char dir_name_p[] = RINGER_CONTENT_DIR;
+ − T_FFS_DIR dir = {0};
+ − char dest_name_p[100] = "";
+ − int i,files_count=0;
+ − TRACE_FUNCTION("sounds_populate_midi_files");
+ −
+ − if (ffs_opendir (dir_name_p, &dir) <= 0)
+ − {
+ − files_count = 0;
+ −
+ − }
+ −
+ − for (i = 0; ffs_readdir (&dir, dest_name_p, 100) > 0x0; i++)
+ − {
+ − mfwFree((U8 *)file_names[i],(U16)strlen(dest_name_p) + 1);
+ −
+ − }
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: sounds_midi_return_file_number
+ −
+ − $Description: returns the file count
+ −
+ − $Returns: Count of the Midi files
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ − int sounds_midi_return_file_number(void)
+ − {
+ − TRACE_FUNCTION("sounds_midi_return_file_number");
+ −
+ − if(midi_files_count<=0)
+ − return 0;
+ − else
+ − return midi_files_count;
+ −
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: sounds_midi_return_file_name
+ −
+ − $Description: Returns the file name
+ −
+ − $Returns: Name of the file
+ −
+ − $Arguments: index:The index of the file, whose name has to be retrieved
+ −
+ − *******************************************************************************/
+ −
+ − char* sounds_midi_return_file_name(UBYTE index)
+ − {
+ −
+ − TRACE_FUNCTION("sounds_midi_return_file_name");
+ −
+ − #ifdef FF_MIDI_LOAD_FROM_MEM
+ − return (char *)mmi_midi_files[index].melody_name;
+ − #else
+ − TRACE_EVENT_P2("midi_file_names[%d] is %s",index,(char *)midi_file_names[index]);
+ − return (char *) midi_file_names[index];
+ − #endif
+ −
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: sounds_midi_ringer_start_cb
+ −
+ − $Description: Callback function for ringer_start
+ −
+ − $Returns: None
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ − void sounds_midi_ringer_start_cb(void *parameter)
+ − {
+ − TRACE_EVENT("sounds_midi_ringer_start_cb");
+ −
+ − if (((T_AS_STOP_IND *)parameter)->header.msg_id == AS_STOP_IND )
+ − {
+ − // 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
+ − }
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: sounds_midi_ringer_stop_cb
+ −
+ − $Description: Callback function for ringer_stop
+ −
+ − $Returns: None
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ − void sounds_midi_ringer_stop_cb(void *parameter)
+ − {
+ −
+ − TRACE_EVENT("sounds_midi_ringer_stop_cb");
+ − // 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
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: sounds_midi_player_start_cb
+ −
+ − $Description: Callback function for player_start
+ −
+ − $Returns: None
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ − void sounds_midi_player_start_cb(void *parameter)
+ − {
+ −
+ − #ifdef FF_MMI_TEST_MIDI
+ − T_AS_PLAYER_TYPE player_type;
+ − #if FF_MIDI_LOAD_FROM_MEM
+ − T_MELODY melody_data;
+ − #else
+ − char* midi_file;
+ − #endif
+ − TRACE_EVENT("sounds_midi_player_start_cb");
+ − if (((T_AS_STOP_IND *)parameter)->header.msg_id == AS_STOP_IND )
+ − {
+ − if(mfw_player_exit_flag == PLAYER_EXIT_FLAG_FALSE)
+ − {
+ −
+ − //if we didn't reach the last file
+ − if(mfw_player_currently_playing_idx<(midi_files_count-1))
+ − {
+ − mfw_player_currently_playing_idx++;
+ − TRACE_EVENT_P1("mfw_player_currently_playing_idx is %d",mfw_player_currently_playing_idx);
+ − mfw_player_save_selected_file_idx(mfw_player_currently_playing_idx);
+ − #ifdef FF_MIDI_RINGER
+ − #ifdef FF_MIDI_LOAD_FROM_MEM
+ − melody_data=sounds_midi_return_memory_location(mfw_player_currently_playing_idx);
+ − player_type=mfw_ringer_deduce_player_type(melody_data.melody_name);
+ − mfw_player_start_memory(player_type,(UINT32*)melody_data.melody,melody_data.melody_size,(UBYTE)AS_VOLUME_HIGH,FALSE,sounds_midi_player_start_cb);
+ − #else
+ − midi_file=sounds_midi_return_file_name(mfw_player_currently_playing_idx);
+ − player_type=mfw_ringer_deduce_player_type(midi_file);
+ − mfw_player_start_file(player_type,midi_file,(UBYTE)AS_VOLUME_HIGH,FALSE,sounds_midi_player_start_cb);
+ − #endif
+ − #endif
+ − }
+ − else
+ − {
+ − //flag set to 1 means we only play the currently selected file
+ − mfw_player_exit_flag = PLAYER_EXIT_FLAG_TRUE;
+ − // 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
+ − }
+ − }
+ −
+ − }
+ − #endif//#ifdef FF_MMI_TEST_MIDI
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: sounds_midi_player_stop_cb
+ −
+ − $Description: Callback function for player_stop
+ −
+ − $Returns: None
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ − void sounds_midi_player_stop_cb(void *parameter)
+ − {
+ − TRACE_EVENT("sounds_midi_player_stop_cb");
+ − // 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
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: sounds_show_info
+ −
+ − $Description:Displays a dialog
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ − *******************************************************************************/
+ − static MfwHnd sounds_show_info(T_MFW_HND parent, int str1, int str2, T_VOID_FUNC callback)
+ − {
+ − T_DISPLAY_DATA display_info;
+ − TRACE_FUNCTION ("sounds_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, MT_INFO_SCRN_TIMEOUT, KEY_LEFT | KEY_CLEAR | KEY_HUP);
+ − return info_dialog(parent, &display_info);
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: get_ringer_mode
+ −
+ − $Description: Returns the current ringer mode based on soundsreason (CALL/SMS/ALARM/Volume setting)
+ − $Returns: the current ringer_mode
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − int get_ringer_mode(void)
+ − {
+ − T_AS_RINGER_MODE current_mode;
+ −
+ − TRACE_FUNCTION("get_ringer_mode");
+ −
+ − switch(getSoundsReason())
+ − {
+ − case MelodySelect:
+ − current_mode=AS_RINGER_MODE_IC;
+ − break;
+ −
+ − case SettingSMSTone:
+ − current_mode=AS_RINGER_MODE_SMS;
+ − break;
+ −
+ − case SettingAlarm:
+ − current_mode=AS_RINGER_MODE_ALARM;
+ − break;
+ −
+ − case SettingVolume:
+ − current_mode=AS_RINGER_MODE_IC;
+ − break;
+ −
+ − }
+ − return current_mode;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: playCurrentMelody
+ −
+ − $Description: play midi file which is temporarily selected, this event handler
+ − is invoked when the hPlayerStartTimer event completes
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: e, event, tc timer context
+ −
+ − *******************************************************************************/
+ −
+ − static int playCurrentMelody( MfwEvt e, MfwTim *tc )
+ − {
+ −
+ − TRACE_EVENT_P1("playCurrentMelody. The selected tone is %d",selected_tone);
+ − soundsPlayMidiPlayer(selected_tone);
+ −
+ − // stop running timer
+ − if (hPlayerStartTimer != NULL )
+ − {
+ − timStop(hPlayerStartTimer);
+ − }
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsPlayMidiPlayer
+ −
+ − $Description: Play the tune selected by melody_id, stopping any currently
+ − playing tunes if necessary.
+ − $Returns: None
+ −
+ − $Arguments: melody_id, selects the melody to be played
+ −
+ − *******************************************************************************/
+ − static void soundsPlayMidiPlayer( int melody_id )
+ − {
+ −
+ − #ifdef FF_MIDI_RINGER
+ − T_AS_RINGER_INFO * ringer_info;
+ − T_AS_RINGER_INFO temp_ringer_info;
+ − T_AS_PLAYER_TYPE player_type;
+ − #ifdef FF_MIDI_LOAD_FROM_MEM
+ − T_MELODY melody_data;
+ − #else
+ − char* midi_file;
+ −
+ − #endif
+ − #endif
+ −
+ − TRACE_EVENT_P1("soundsPlayMidiPlayer.The melody_id is %d",melody_id);
+ − CurrentTune = melody_id;
+ − ringer_info=mfw_ringer_get_info(get_ringer_mode(),&temp_ringer_info);
+ − TRACE_EVENT_P1("ringer_info details volume are %d ",ringer_info->volume);
+ − #ifdef FF_MIDI_LOAD_FROM_MEM
+ − melody_data=sounds_midi_return_memory_location(CurrentTune);
+ − player_type=mfw_ringer_deduce_player_type(melody_data.melody_name);
+ − mfw_player_start_memory(player_type,(UINT32*)melody_data.melody,melody_data.melody_size,ringer_info->volume,FALSE,sounds_midi_player_start_cb);
+ − #else
+ − midi_file=sounds_midi_return_file_name(CurrentTune);
+ − TRACE_EVENT_P1("midi_file is %s",midi_file);
+ − player_type=mfw_ringer_deduce_player_type(midi_file);
+ − mfw_player_start_file(player_type,midi_file,ringer_info->volume,FALSE,sounds_midi_player_start_cb);
+ − #endif
+ −
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: startPlayerTimer
+ −
+ − $Description: Start the timer for Scrolling of Midi files
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − void startPlayerTimer()
+ −
+ − {
+ − // start timer for 5 milli second and on timeout play the file
+ − timStart( hPlayerStartTimer );
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: stopPlayerTimer
+ −
+ − $Description: Stop the timer for Scrolling of Midi files.Stop the melody, if anything is playing.
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − static void stopPlayerTimer( void )
+ − {
+ − TRACE_FUNCTION( "stopPlayerTimer" );
+ −
+ − /* If a timer event is running we want to stop that as well.
+ − since we want to turn the tune off and have
+ − it start again when the timer expires*/
+ −
+ − if ( hPlayerStartTimer != NULL )
+ − timStop( hPlayerStartTimer );
+ − // Stop the tone
+ −
+ − //mfw_player_stop(sounds_midi_player_stop_cb);
+ −
+ −
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: playCurrentVolumeTone
+ −
+ − $Description: play midi file with the volume which is temporarily selected, this event handler
+ − is invoked when the hPlayerStartTimer event completes
+ −
+ − $Returns: MFW_EVENT_CONSUMED always
+ −
+ − $Arguments: e, event, tc timer context
+ −
+ − *******************************************************************************/
+ −
+ − static int playCurrentVolumeTone( MfwEvt e, MfwTim *tc )
+ − {
+ −
+ − TRACE_EVENT("playCurrentVolumeTone");
+ − soundsPlayVolumeMelody();
+ − // stop running timer
+ − if (hPlayerStartTimer != NULL )
+ − {
+ − timStop(hPlayerStartTimer);
+ − }
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: startVolumeTimer
+ −
+ − $Description: Start the timer for modifying the volume of Midi files
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − void startVolumeTimer()
+ −
+ − {
+ − TRACE_EVENT("startVolumeTimer");
+ − // start timer for 5 milli second and on timeout play the file
+ − timStart( hPlayerStartTimer );
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: stopVolumeTimer
+ −
+ − $Description: Stop the timer for chnaging volume of Midi files.Stop the melody, if anything is playing.
+ − $Returns: None
+ −
+ − $Arguments: None
+ −
+ − *******************************************************************************/
+ −
+ − void stopVolumeTimer(void)
+ − {
+ − TRACE_EVENT("stopVolumeTimer");
+ − if ( hPlayerStartTimer != NULL )
+ − timStop( hPlayerStartTimer );
+ − // Are we playing a tune
+ − //mfw_player_stop(sounds_midi_player_stop_cb);
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: soundsPlayVolumeMelody
+ −
+ − $Description: Play the ringer tune with the selected volume, stopping any currently
+ − playing tunes if necessary.
+ − $Returns: None
+ −
+ − $Arguments: melody_id, selects the melody to be played
+ −
+ − *******************************************************************************/
+ −
+ − static void soundsPlayVolumeMelody()
+ − {
+ −
+ − T_AS_RINGER_INFO * ringer_info;
+ − T_AS_RINGER_INFO temp_ringer_info;
+ − T_AS_PLAYER_TYPE player_type;
+ − TRACE_EVENT("soundsPlayVolumeMelody");
+ − TRACE_EVENT_P1("the current volume now is %d",current.volumeSetting);
+ − #ifdef FF_MIDI_RINGER
+ − //If going to the volume screen from Idle screen,change the incoming call volume.
+ − //mfw_player_stop(sounds_midi_player_stop_cb);
+ − ringer_info=mfw_ringer_get_info(get_ringer_mode(),&temp_ringer_info);
+ − #ifdef FF_MIDI_LOAD_FROM_MEM
+ − mfw_player_start_memory(ringer_info->player_type,ringer_info->data.memory.address,ringer_info->data.memory.size,current.volumeSetting,FALSE,sounds_midi_player_start_cb);
+ − #else
+ − mfw_player_start_file(ringer_info->player_type,ringer_info->data.filename,(T_AS_VOLUME)current.volumeSetting,FALSE,sounds_midi_player_start_cb);
+ − #endif
+ − #endif
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: sounds_midi_return_memory_location
+ −
+ − $Description: Returns the Melody structure
+ −
+ − $Returns: Structure containing the memory location, size and filename
+ −
+ − $Arguments: index :index whose memory location has to be retrieved
+ −
+ − *******************************************************************************/
+ − T_MELODY sounds_midi_return_memory_location(UBYTE index)
+ − {
+ − #ifdef FF_MIDI_LOAD_FROM_MEM
+ − TRACE_FUNCTION("sounds_midi_return_memory_location");
+ − return mmi_midi_files[index];
+ − #endif
+ − }
+ −
+ − //Jul 20, 2005 REF: SPR 30772 xdeepadh
+ − /*******************************************************************************
+ −
+ − $Function: sounds_midi_GetExtension
+ −
+ − $Description: public function to retrieve the extension of a file
+ −
+ − $Returns:Extention of the filename
+ −
+ − $Arguments: scr- Filename
+ −
+ − *******************************************************************************/
+ − char *sounds_midi_GetExtension(char *src)
+ − {
+ − int i;
+ − TRACE_FUNCTION("sounds_midi_GetExtension");
+ − for(i = 0; i < strlen(src); i++){
+ − if(src[i] == '.'){
+ − return (src+i+1);
+ − }
+ − }
+ − return (src+i);
+ − }
+ −
+ − #endif
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − End Of File
+ −
+ − *******************************************************************************/