# HG changeset patch # User Mychaela Falconia # Date 1603690176 0 # Node ID 0f7c6eab667b9ab5109072fd83a2cc5f40bed2f1 # Parent 46bab586c09bd8be8fa9d3e83a03e4d6e7955f94 rm src/ui/bmi/mmiCall.c.bak This file was junk from the initial LoCosto import back in Magnetite. diff -r 46bab586c09b -r 0f7c6eab667b src/ui/bmi/mmiCall.c.bak --- a/src/ui/bmi/mmiCall.c.bak Mon Oct 26 04:12:05 2020 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11063 +0,0 @@ -/******************************************************************************* - - 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: Call - $File: MmiCall.c - $Revision: 1.0 - - $Author: Condat(UK) - $Date: 25/10/00 - -******************************************************************************** - - Description - - This module provides the call functionality - - -******************************************************************************** - $History: MmiCall.c - - August 01, 2007 DR: OMAPS00137399 x0080701 (Bharat) - Description: COMBO PLUS: Voice can not be heard in a call when MP3 tone was set - Have an MP3 tone set as Ringer. Make a call to the target. - Accept the same, no voice can be heard from the calling - device or from the board that received - Issue: Timing Synchronization Issue between BMI-ACI-L1. - BMI calls sAT_A to accept the call. ACI then sends the RING_OFF signal - to BMI, wherein BMI does a Ringer Stop. After this, ACI calls Vocoder - Enable. However, the Ringer Stop goes to L1 much later after Vocoder - Enable reaches L1 due to which the Vocoder eventually gets disabled. - Solution: The Vocoder Enable Implementation is removed from ACI and - shall be called by BMI on receipt of AS_STOP_IND - (AS_STOP_IND is the message sent by AS to BMI when BMI invokes - as_stop for ringer_stop). This way, it is assured that the Vocoder - Enable Request reaches L1 only after Ringer Stop is completely done - - July 06, 2007 DR: OMAPS00137334 x0062172(Syed Sirajudeen) - Description:[MPY]Wrong indication when add party if conference full - Solution: Pop up the "Conference Full" string if user tries to add (MAX_CALLS+1)th user - to the conference. - - - - May 28, 2007 DR: OMAPS00123948 x0066692 - Description: MMI doesn't display specific dialogs for enabling TTY_VCO and TTY_HCO - Solution : In call_tty_statuswin() Dialog data is initialized specific to TTY_VCO and - TTY_HCO and TTY_ALL. Also conditions CALL_TTY_ALWAYSON and CALL_TTY_ONNEXTCALL - are applied while displaying hte dialog. - - Mar 21, 2007 DR: OMAPS00121645 x0066814 - Description: Bip ringer are always heard during calling and even during the voice call - Solution : In E_CM_CONNECT_ACK event, the code to stop the ringer is added. - - - May 16, 2007 DR: OMAPS00117598 x0066692 - Description: Ringer instabilities during incoming call when headset is plugged. - Solution : Function mfw_hook_register() is called after starting the ringer during - incoming call. - - May 10 2007 DR:OMAPS00127983 x066814 - Description: PSTN caller name not displayed on MS - Solution: In incomingCall() funtion, added a case to check whether - the name is updated by rAT_PercentCNAP. - - Apr 03, 2007 ER: OMAPS00122561 x0pleela - Description: [ACI] Phone lock feature has to be supported by ACI - Solution: Phone Lock ER implementation - - Mar 22, 2007,DR: OMAPS00121671 x0066814(Geetha) - Description: Bip ringer are always heard during calling and even during the voice call - Solution: In E_CM_CONNECT_ACK event, the code to stop the ringer is added - - Feb 16, 2007 DR: OMAPS00114834 x0pleela - Description: When accepting the call through AT commands with MP3 ringer, the corrupted - MP3 play continues - Solution: Made changes in the function: - 1) call_incoming_cb(): In KCD_RIGHT and KCD_LEFT keypad events, the code to - stop the ringer is commented as MMI should stop the ringer when it recieves - the RING_OFF event from ACI rather than stopping the ringer when user - accepts or rejects the call using keypad - 2) callcmevent(): In E_CM_CONNECT_ACK event, the code to stop the ringer is - commented as this code is moved and handled in call event E_CM_RING_OFF - - Jan 10, 2007 DR: OMAPS00110568 x0039928 - Description: Remove duplication of FFS.Flashdata from GDI - Solution: Added a new function get_call_data_tty(). - - Dec 22, 2006 REF:OMAPS00107042 x0039928 - Description : Tagrget hangs or crashes when making MO call with Agilent - Solution : cm status variable is otpimized to get memory from heap - to avoid stack overflow. - - - Dec 13, 2006 DR:OMAPS00107103 a0393213(R.Prabakar) - Description : No DTMF tones for simultanous keypress - Solution : Once there was some problem in sending DTMF tones, the problem persisted till the next reset. - This was because the queue was not getting flushed once the call was ended. - Now the queue is flushed once the call is ended. - - Nov 03, 2006 DR: OMAPS000101158 x0pleela - Description : Board crashes after sending atd command through HyperTerminal - Solution : Avoid peforming phonebook search operation if the source id is not LOCAL - callCmEvent: Check for the value of uOthersrc and if set donot perform phonebook - search operation. Else perform phonebook search operation - Oct 8 2006 OMAPS00097714 x0039928(sumanth) - TTY HCO/VCO options in MMI - - Sep 01, 2006 REF:OMAPS00090555 x0039928 - Description : When make a MO call,MFW can not get call number from ACI. - Solution : The called number is extracted from the parameter of callCmEvent() - for event E_CM_MO_RES and is displayed. Also stack memory optimization is done to - resolve MMI stack overflow problem. - - xrashmic 21 Aug, 2005 OMAPS00090198 - The mmeSetVolume is skipped when in a TTY call, as TTY has it own profile - and when this profile is loaded, the volume would also be set. - - Aug 17, 2006 REF:OMAPS00090196 x0039928 - Description : HOOk Register / Unregister shall not be called when TTY is ON - Solution : TTY ON condition is checked before registering / unregistering for the hook. - - Aug 31, 2006 DR: OMAPS00083503 x0pleela - Description: Result of ss_check_ss_string may be ignored - Solution: - Removed the new code added in callnumber() : MFW_SS_USSD - switch case to send the USSD string through at+cusd command. Instead sending through ATDn command - - Aug 30, 2006 DR: OMAPS00083503 x0pleela - Description: Result of ss_check_ss_string may be ignored - Solution: - Calling function GLOBAL USHORT get_nm_status(void) as per the review - comments to avoid the usage of the global variable gnm_status - - Aug 28, 2006 DR: OMAPS00083503 x0pleela - Description: Result of ss_check_ss_string may be ignored - Solution: callnumber(): MFW_SS_USSD is handled separately where send_ss_ussd() is called to - initaite USSD transaction - - Aug 03, 2006 REF:OMAPS00088329 x0039928 - Description : TTY> When TTY is ON Headset insertion detection / profile download should not happen - Solution : TTY ON condition is checked before downloading the headset profile. - - May 30, 2006 DR: OMAPS00070657 x0pleela - Description: CPHS feature on Locosto-Lite - Solution: For ALS feature, - a) Added new enum "CALL_ACTIVE_LINE", to display current active line along - with the called/calling number - b) Modified function "inCall_displayData", "call_win_cb" to display current active - line along with the called/calling number - - Jun 02, 2006 DRT OMAPS00079213 x0039928(sumanth) - Description: Triton PG2.2 impacts on Locosto program - Solution: Software workaround is done to register headset-hook dynamically - during/before call is established and unregister it after the call is ended/disconnected. - - May 18, 2006 REF: DRT OMAPS00076438 xdeepadh - Description: Scrolling not implemented in Imageviewer - Solution: The support for scrolling has been provided. - - - May 15, 2006 DR: OMAPS00075901 x0021334 - Descripton: Call Waiting - Release and Accept - incompatible usage of MMI and AT interpreter - Solution: The call waiting tone is stopped on receipt of E_CM_RING_OFF event. - - May 9, 2006 REF:DR OMAPS00074884 xrashmic - Description: Pressing Red key in scratch pad does not release calls but deletes the characters - Solution: Pressing Red key in scratch pad releses all calls. If there are no calls, it would destroy - the scratch pad. - - Apr 26, 2006 OMAPS00074886 a0393213 (Prabakar R) - Description : No option in MMI to release the held call. - Solution : No option was available. Added a menu option. - - Mar 31, 2006 ER: OMAPS00067709 x0pleela - Description: Voice Buffering implementation on C+ for PTT via PCM API - Solution: Added prototype for voice_buffering_stop_recording - Added check before calling play/record stop - - Mar 15, 2006 ER: OMAPS00067709 x0pleela - Description: Voice Buffering implementation on C+ for PTT via PCM API - Solution: Function: callCmEvent - Changes: 1. E_CM_DISCONNECT: Added code for voice buffering to stop playing - and recording if PTT call is disconnected. - 2. E_CM_CONNECT_ACK: Added code for voice buffering to start playing - if PTT call is connected. - - Function: call_kbd_cb - Changes: Added code to update voice_buffering_data when END key is pressed - while in PTT call - - Function: incomingCall - Changes: Added code to reject incoming call while in buffering phase - - Function: call_calling_cb - Changes: Added code to update voice_buffering_data when END key is pressed - before PTT call setup - - Mar 28, 2006 REF:DR OMAPS00072407 x0039928 - Description: Phone hangs when tried to make an outgoing call - Solution: Reverting back the changes of issue OMAPS00048894 to stop from stack overflow. - - Mar 11, 2006 REF:DR:OMAPS00061467 x0035544 - Description: 27.22.4.13.3 SET UP CALL (display of icons) fails. - Solution: During an event CALL_OUTGOING_SAT in the function Call() Copied sim icon data in to the - structure call_data inorder to display it on the dialog screen. - - Feb 13, 2006 REF:DR OMAPS00067943 x0039928 - Description: MMI gives access to Application during active call in Plus but not in Lite - Solution: The Menu function M_exeViewfinder is renamed to M_exeApplication and moved out of - FF_MMI_TEST_CAMERA flag. - - Jan 27, 2006 REF:DR OMAPS00048894 x0039928 - Description: Outgoing Call: The called number is not displayed while an outgoing call is made - Solution: The called number is extracted from the parameter of callCmEvent() for event E_CM_MO_RES and is displayed. - - Jan 05, 2006 REF:DR OMAPS00050454 x0039928 - Description: Phone power cycles while deflecting a call to another number - Solution: The calling window dialog is destroyed if there are no more calls. - - Nov 09, 2005 REF: OMAPS00043190 - x0018858 - Description: PTCRB - 27.22.4.1.4 (DISPLAY TEXT (Sustained text) Fails in 1900 DISPLAY TEXT - (Sustained text) - Solution: Have added a new global variable to store the handle of the window and then release - it when a higher priority call event comes in. - - 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. - - Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg - Description: Locosto: MIgration to New LCD APIs - Solution: Migrated to New APIs by replacing the old driver APIs with - corresponding New LCD APIs - - Aug 22 2005, xpradipg - LOCOSTO-ENH-31154 - Description: Application to test camera - Solution: Implemented the camera application with following functionalities - preview, snapshot and image saving. - - xpradipg - LOCOSTO-ENH-31895 : 23 June 2005 - Description: Support for various audio profiles - Solution: The support for audio device's carkit/headset/loudspeaker/handheld. - The audio device is enabled as per the user actions. - - Apr 06, 2005 REF: ENH 30011 xdeepadh - Description: Replacing the Test Application compilation flags with new flags. - Solution: The existing flags for Camera and MP3 test application have beeen replaced with the - new compilation flags,FF_MMI_TEST_CAMERA and FF_MMI_TEST_MP3 respectively. - - April 25, 200 REF: MMI-FIX-30125 x0018858 - Description: Unable to make a DTMF call with one call on hold. - Solution: Existing inmplemention allowed DTMF for only the first call that was being made. Modfified the - condition to allow DTMF for the second call also. - - 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. - - - Feb 03, 200 REF: CRR 25960 x0012850 - Description: Call Hold: While one call in Active and other in Held by swapping either of phone is not audible - Solution: swapping action results in one of the calls getting muted. We attach user connection again. - - Jan 19, 2005 REF: CRR MMI-SPR-27455 xnkulkar - Description: TC 29.3.2.6.7 failed on 900 on R&S - Solution: function "mfw_aud_l1_enable_vocoder ()" should be called only when the - call mode is not DATA or FAX - - 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. - - Nov 16, 2004 REF: CRR MMI-SPR-26120 xnkulkar - Description: After disconnecting MOC cannot return to STK menu - Solution: When the user ends a call, check if it is a STK call and send SAT_RETURN event to - return the control to STK menu. - - Oct 27, 2004 REF: CRR MMI-SPR-15632 xnkulkar - Description: SMS : class 2 and 3 SMSMT : icon not displayed when 2 active calls - Solution: In callCmEvent() under case case E_CM_TIMER_EVERY_SECOND, - condition "call_data.calls.mode == CallSingle" is removed to make the sms icon visible - even if there are more than one calls present. - - October 07, 2004 REF: CRR MMI-FIX-24440 xnkulkar - Description: Bug in mmicall.c callID related Error - Solution: In holdExec() function "callIndex()" function is used instead of directly - using status[call_data.calls.selected] - - Bug Id 14 & 21 : 12 Aug, 2004 - xrashmic - Description: Presing up/Down scroll key displays alert mode optins, - which overlaps with incoming call screen - Solution: Up and down scroll keys have been disabled for incoming call screen - - Sep 2, 2004 REF: CRR 21370 xkundadu - Description: Giving wrong expected result by long press on "#" key - Fix: When user presses long on '#' key it will display 'p'. - Changed the long press of '*' key to display 'w' - -// Jul 2, 2004 REF: CRR 21421 xvilliva -// Bug: ALS:Action on the other line when change is locked. -// Fix: The error code returned by ACI is processed and an alert -// is flashed to the user. - - Jul 14, 2004 REF=CRR 13847 xkundadu - Description: Have one active call and one held call. - If you end the active call using MMI, the Held call is still on - hold and UNHOLD has to be selected to retrieve the call - If you end the active call using BPM then the held call - automatically beocmes an active call, shouldn't there be - consistency between the two? - Solution: After all the disconnection, if there is only one call and - that call is HELD, retrieve that call to make it as ACTIVE. - Added the boolean variable bhostDisconnection to test - whether the disconnection process started from host side or not - If disconenction is from remote side, after the - disconnection if there is only one call and that is HELD, dont - change its status to ACTIVE. - - -// Jun 30, 2004 REF: CRR 13698 xvilliva -// Bug: No possibility to make an emergency call when active call and held -// call are existing. -// Fix: If the call being attempted is an emergency call in the presence -// of a held call and an active call, we release all current calls by -// calling cm_end_all() and initate the emergency call on receiving the -// E_CM_DISCONNECT_ALL event. - -// Jun 10, 2004 REF=CRR 13602 Sasken/xreddymn -// Added * and # key handling, to allow the input of -// * and # characters in the scratchpad screen - -// June 08, 2004 REF: CRR MMI-SPR-13876 xkundadu(Sasken) -// Issue description: CHW : AUDIO : No difference between CW and incoming call -// If there is one Active call and one wiating call and if the Active call is disconnected -// from the remote side/network side, the waiting tone should change to ringing tone. - - Jun 30, 2004 REF: CRR 15685 xkundadu(Sasken) - Description: FT - TC5.3 MOC - No busy tone upon MOC to busy - subscriber/GOLite. - Solution: Added code to play beep sound when the called party is busy. - When the remote party is busy, earlier there was only dialog - box indication that 'Number busy' - - Fix : "Setting" menu has been provided to set the SMS settings, during the active call - - 25/10/00 Original Condat(UK) BMI version. - - - - Mar 28, 2006 REF:ER OMAPS00071798 x0043642 - Added new options in BMI to accept the value for tty audio mode, - and the accepted value is passed as parameter in function call sAT_PercentCTTY - - $End - -*******************************************************************************/ - - -/****************************************************************************** - - Include Files - -*******************************************************************************/ - -#define ENTITY_MFW -/* includes */ -#include -#include -#include - -#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_win.h" -#include "mfw_kbd.h" -#include "mfw_lng.h" -/* SPR#1428 - SH - New Editor changes */ -#ifndef NEW_EDITOR -#include "mfw_edt.h" -#endif -#include "mfw_icn.h" -#include "mfw_mnu.h" -#include "mfw_tim.h" - -#include "mfw_sim.h" -#include "mfw_cm.h" -#include "mfw_nm.h" -#include "mfw_phb.h" -#include "mfw_mme.h" -#include "mfw_sat.h" -#include "mfw_sms.h" -#include "mfw_cm.h" -// Apr 05, 2005 REF: ENH 29994 xdeepadh -#ifdef FF_MIDI_RINGER -#include "mfw_midi.h" -#endif //FF_MIDI_RINGER - -//Apr 06, 2005 REF: ENH 30011 xdeepadh -#ifdef FF_MMI_TEST_CAMERA -//e-armanetsaid 19/08/04 -#include "mfw_cam.h" -//e-armanetsaid 19/08/04 -#endif //FF_MMI_TEST_CAMERA - -#include "dspl.h" - -#include "ksd.h" -#include "psa.h" - -#include "MmiMain.h" -#include "MmiBookController.h" -#include "MmiDummy.h" -#include "MmiDialogs.h" -#include "MmiLists.h" - -/* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR -#include "ATBCommon.h" -#include "ATBDisplay.h" -#include "ATBEditor.h" -#include "AUIEditor.h" -#else -#include "MmiEditor.h" -#include "MmiEditor_i.h" -#endif - - -#include "MmiMenu.h" -#include "mmiCall.h" -#include "Mmiicons.h" -#include "MmiIdle.h" - -#include "MmiSoftKeys.h" -#include "MmiSounds.h" -#include "MmiIdle.h" -#include "MmiNetwork.h" -#include "mmiSat_i.h" -#include "MmiAoc.h" -#include "MmiResources.h" /* sbh */ -#include "MmiCPHS.h" - -#include "gdi.h" -#include "audio.h" - -#include "cus_aci.h" - - -#include "mfw_ffs.h" -#include "MmiTimers.h" -#include "mmiSmsMenu.h" -#include "mmiColours.h" - - -// xpradipg - LOCOSTO-ENH-31154 : 22 Aug 2005 -#ifdef FF_MMI_TEST_CAMERA -#include "r2d/r2d.h" -#endif - -//x0pleela 09 Mar, 2006 ER:OMAPS00067709 -#ifdef FF_PCM_VM_VB -#include "Mfw_aud.h" -#endif -// June 08, 2004 REF: CRR MMI-SPR-13877 Ajith K P -// Issue description: CHW : AUDIO : CW tone not stopped -// 1 call is active -// 1 call is waiting call -// Waiting tone is heard -// The user press 2+SEND => 1 CH and 1 active call -// The waiting tone is not stopped. - -// June 08, 2004 REF: CRR MMI-SPR-13876 xkundadu(Sasken) -// Issue description: CHW : AUDIO : No difference between CW and incoming call -// If there is one Active call and one wiating call and if the Active call is disconnected -// from the remote side/network side, the waiting tone should change to ringing tone. - - - -/* SPR#1983 - SH - Required for WAP disconnect event */ -#ifdef FF_WAP -#include "AUIWapext.h" -#endif - -//x0pleela 07 Apr, 2007 ER: OMAPS00122561 -#ifdef FF_PHONE_LOCK -#include "MmiPins.h" -#endif //FF_PHONE_LOCK - - -//x0pleela 23 Aug, 2006 DR: OMAPS00083503 -//EXTERN USHORT get_nm_status(void); - -/* Marcus: Issue 1057: 21/01/2003: Added the following two external prototypes */ -extern T_MFW_HND sat_get_setup_menu_win (void); -extern T_MFW_HND sat_get_call_setup_win (void); - -USHORT item_flag_hold( struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi ); -USHORT item_flag_swap( struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi ); -// Apr 26 2006, a0393213 (Prabakar R), OMAPS00074886 : No option in MMI to release the held call. -// prototype of the function which determines whether the menu option is to be displayed or not. -USHORT item_flag_endheld( struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi ); - -/******************************************************************************* - - External Function Prototypes. - -*******************************************************************************/ - -extern T_MFW_HND satDisplayTextWin; // Nov 09, 2005 REF: OMAPS00043190 - x0018858 - // Externed this sat display text handle to make it accessible here. - -extern UBYTE getCurrentRingerSettings(void ); -extern int M_exeSendNew(MfwMnu* m, MfwMnuItem* i); // MZ -extern MfwMnuAttr *settingMenuAttributes(void);//May 27, 2004 REF: CRR 19186 Deepa M.D -extern MfwMnuAttr *applicationsMenuAttributes(void);//August 24, 2004 e-armanetsaid -void deflect_destroy(BOOL delete_call_windows); //GW -/******************************************************************************* - End -*******************************************************************************/ -// Jun 30, 2004 REF: CRR 15685 xkundadu(Sasken) -// Added this AUDIO_PLAY_THRICE define to play the beep sound three times -#define AUDIO_PLAY_THRICE (AUDIO_PLAY_ONCE *3) - -#define TRACE_MMI_CALL - -#ifndef TRACE_MMI_CALL -//#define TRACE_EVENT(a) -#endif - -#if defined (WIN32) -#define TONES_AUTH_NUM 3 -#define TONES_BUSY 4 -#define TONES_DROPPED 5 -#define TONES_CONGEST 6 -#endif - - - -#ifndef MFW_EVENT_PASSED -#define MFW_EVENT_PASSED 0 -#endif - -#define MMI_OUTGOING_CALL_DIALOG_NORMAL (1) -#define MMI_OUTGOING_CALL_DIALOG_SAT (2) - -#define NUMERIC_KEYS 0x8FF /*MC for setting up dialogue key events*/ - -#define MAX_SOUND 255 - -/* Marcus: CCBS: 14/11/2002: Start */ -/* CCBS related constants */ -#define MAX_CCBS_LIST_ITEMS 5 -#define MIN_CCBS_IDX 1 -#define MAX_CCBS_IDX (MAX_CCBS_LIST_ITEMS) - - -/* CCBS list structure type definitions */ -typedef struct -{ - SHORT idx; /* ACI's index to this callback */ - UBYTE number[MFW_NUM_LEN]; /* Phone number of callback */ - /* Name in phonebook corresponding to phone number of callback, if any */ -#ifdef NO_ASCIIZ - T_MFW_PHB_TEXT name; -#else - UBYTE name[PHB_MAX_LEN]; -#endif -} T_CCBS_LIST_ITEM_STR; - -typedef struct -{ - T_MFW_HND win; /* Parent window of active callbacks list */ - ListMenuData *list_menu_data; /* allocated list menu memory */ - UBYTE count; /* Number of valid items 0..MAX_CCBS_LIST_ITEMS */ - UBYTE sel; /* Currently selected item 0..MAX_CCBS_LIST_ITEMS-1 */ - T_CCBS_LIST_ITEM_STR item[MAX_CCBS_LIST_ITEMS]; -} T_CCBS_LIST_STR; - -/* CCBS recall type definitions */ -typedef struct -{ - T_MFW_HND win; /* Parent window of active callbacks list */ - T_MFW_CM_CALL_TYPE type; /* type of this call */ - UBYTE number[MFW_NUM_LEN]; /* Phone number of callback */ - /* Name in phonebook corresponding to phone number of callback, if any */ -#ifdef NO_ASCIIZ - T_MFW_PHB_TEXT name; -#else - UBYTE name[PHB_MAX_LEN]; -#endif -} T_CCBS_RECALL_STR; - - -/* CCBS related local module global data */ -static T_CCBS_LIST_STR ccbs_list; // CCBS list information structure -static T_MFW_HND ccbs_registration_win = NULL; // Callback registration window handle -static T_CCBS_RECALL_STR ccbs_recall; // Callback recall information structure -static char ccbs_recall_text_buffer[80]; - -/* Data for the list of registered CCBS */ -static MfwRect ccbs_list_menuArea = {0,0,10,10}; -static MfwMnuAttr ccbs_list_menuAttrib = -{ - &ccbs_list_menuArea, - MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */ - (U8)-1, /* use default font */ - NULL, /* with these items */ - 0, /* number of items */ - COLOUR_LIST_NETWORK, TxtNull, NULL, MNUATTRSPARE -}; - -//Daisy tang added for Real Resume feature 20071107 -//start -BOOL IsRealPaused=FALSE; -extern BOOL IsMP3Playing; -static MfwHnd mp3playTimer; -//end -/* CCBS related local function prototypes */ -static void call_ccbs_show_status(void); -static void call_initialise_ccbs_list(T_MFW_HND win); // Marcus: CCBS: 14/11/2002 -static int call_ccbs_callback(T_MFW_HND win, USHORT identifier, UBYTE reason); -static void call_cm_ccbs_event(T_MFW_CM_CCBS_INFO *para); -static void call_add_to_ccbs_list(T_MFW_CM_CCBS_INFO *para); -static void call_delete_from_ccbs_list(void); -static void call_create_ccbs_menu_list (void); -static void call_ccbs_menu_list_cb(T_MFW_HND win, ListMenuData * ListData); -static void call_show_ccbs_menu_list(void); -static int call_offer_ccbs_registration_callback(T_MFW_HND win, USHORT identifier, UBYTE reason); -static void call_offer_ccbs_registration(T_MFW_CM_CCBS_INFO *para); -static void call_withdraw_ccbs_registration(LangTxt TxtId); -static void call_offer_ccbs_recall(T_MFW_CM_CCBS_INFO *para); -static int call_offer_ccbs_recall_callback(T_MFW_HND win, USHORT identifier, UBYTE reason); -static void call_withdraw_ccbs_recall(LangTxt TxtId); -/*May 10,2007 DR:OMAP00127983 x0066814(Geetha)*/ -EXTERN T_MFW_PHB_TEXT *get_cnap_name(); -//CALL_NAME_NETWORK = TRUE implies that name is got from rAT_%CNAP -//CALL_NAME_NETWORK = FALSE implies that either the name is from phonebook or -//there is no name(only number is displayed) -EXTERN BOOL CALL_NAME_NETWORK; -// MMI-SPR 13847 xkundadu -// Added this variable to identify whether the disconnection is intiated from -// local mobile station or not. -BOOL bhostDisconnection = FALSE; - -/* Marcus: CCBS: 14/11/2002: End */ - -static UBYTE LocalRing=FALSE; -UBYTE call_SATCall = FALSE; // Marcus: Issue 1057: 21/01/2003: Made public -static UBYTE InCallTimer = TRUE; //This ought to be stored in ffs - -// Default "dialogDisp" should be TRUE! This has been added so that removeAllCalls doesn't display a dialog for each call -// May 9, 2006 REF:DR OMAPS00074884 xrashmic -// When removing calls one by one from removeAllCalls, rebuild calls should not be called -// Added a new paramter to the removeCall function to indicate the same -int removeCall (SHORT cid, BOOL dialogDisp,BOOL allCallsEnded); -int removeAllCalls(void); -int addCall (SHORT cid); -int callCmEvent (MfwEvt e, void *para); - -static int InformationTimerEvent(MfwEvt e, MfwTim *t); - -/* x0039928 - Commented for lint warning removal -static int callWaitingAnswerKeyEvent (MfwEvt e, MfwKbd *k); */ -void callAutoRedialKeyEvent(T_MFW_HND win, USHORT identifier, USHORT reason); - -// Default "dialogDisp" will be True, and affects only the "ViewEnd" mode. -static void callSetMode(int mode, BOOL dialogDisp); - -static int contactsExec(MfwMnu* m, MfwMnuItem* i); -static int M_exeSetting(MfwMnu* m, MfwMnuItem* i);//May 27, 2004 REF: CRR 19186 Deepa M.D -// Feb 13, 2006 REF:DR OMAPS00067943 x0039928 -// Fix : The Menu function M_exeViewfinder is renamed to M_exeApplication -static int M_exeApplication(MfwMnu* m, MfwMnuItem* i);//August 24 e-armanetsaid -static int holdExec(MfwMnu* m, MfwMnuItem* i); -static int muteExec(MfwMnu* m, MfwMnuItem* i); -static int scratchPadExec(MfwMnu* m, MfwMnuItem* i); -static int mainMenuExec(MfwMnu* m, MfwMnuItem* i); -static int startConferenceExec(MfwMnu* m, MfwMnuItem* i); -static int swapExec(MfwMnu* m, MfwMnuItem* i); -static int endAllExec(MfwMnu* m, MfwMnuItem* i); -// Apr 26 2006, a0393213 (Prabakar R), OMAPS00074886 : No option in MMI to release the held call. -// Prototype of the handler for "End held" menu option -static int endHeldExec(MfwMnu* m, MfwMnuItem* i); -static int endConferenceExec(MfwMnu* m, MfwMnuItem* i); -/* x0039928 - Commented for lint warning removal -static int transferExec(MfwMnu* m, MfwMnuItem* i);*/ - -static int privateStartAddConferenceExec(MfwMnu* m, MfwMnuItem* i); -static int exeSendMessage(MfwMnu* m, MfwMnuItem* i); -static int callExeNameEnter(MfwMnu* m, MfwMnuItem* i); -static void showCCNotify (T_MFW_HND win, T_MFW_CM_NOTIFY * cc_notify); - -/* x0039928 - Commented for lint warning removal -static int call_incoming_animation_cb(MfwEvt e, MfwTim *t); */ - - -static void showSelectPrivateCall(void); -static void showWaitingAnswer(void); -static void showAutoRedial(void); - -static void endingCall(void); -static void rebuildCalls(void); -static int getCallStatus(SHORT call_number,T_MFW_CM_STATUS* call); -void incomingCall(const T_MFW_CM_CW_INFO* p_pCwInfo); -void callConnect(SHORT cid); -void getTimeString(long time,char *timeString); -static void refreshCallTimer(void); // RAVI - -static void callFailureCause(UBYTE cause); -static void sendDTMFString(void); -/* x0039928 - Commented for lint warning removal -static void callCalcCost(char* line); */ - - -void call_show_ending_all(void); // RAVI - - -char* callInformation; -//xvilliva SPR13698, strECC used to store the emergency number. -static char strECC[EDITOR_SIZE]; -//xvilliva SPR13698, "makeECC" indicating the need to intiate emergency call. -static BOOL makeECC = false; -int callIndex(SHORT cid); -char line[MAX_LINE]; - - -static SHORT singleCall; - -int idwithheld; - -// xpradipg - LOCOSTO-ENH-31895 : 23 June 2005 -#ifdef FF_MMI_AUDIO_PROFILE -extern UBYTE carkitInserted; -extern UBYTE headsetInserted; -#endif -/*x0039928 OMAPS00097714 HCO/VCO option - ttypPfType is used to store the type of TTY (normal/HCO/VCO)*/ -#ifdef FF_TTY_HCO_VCO -UBYTE call_data_tty; -extern UBYTE ttyPfType; -#endif - -/* SPR#1985 - SH - TTY - If TRUE, updates will display a window*/ - -static UBYTE TTYDisplayDialog = FALSE; - -//18/12/2001 MC added sms message option -static T_MFW_MNU_ITEM menuCallSingleItems[] = -{ - {0,0,0, (char*) TxtSoftContacts, 0,(MenuFunc)contactsExec, item_flag_none}, - {0,0,0, (char*) TxtHold, 0,(MenuFunc)holdExec, item_flag_none}, - {0,0,0, (char*) TxtMute, 0,(MenuFunc)muteExec, item_flag_none}, -// xpradipg - LOCOSTO-ENH-31895 : 23 June 2005 -// new menu items added for all the four different profiles, only one of the -// menu item will be available at any given point fo time -#ifdef FF_MMI_AUDIO_PROFILE - {0,0,0, (char*) TxtLoudspeaker, 0, (MenuFunc)M_exeLoudspeaker, item_loudspeaker_status }, - {0,0,0, (char*) TxtHandheld, 0, (MenuFunc)M_exeHandheld, item_handheld_status }, - {0,0,0, (char*) TxtHeadset, 0, (MenuFunc)M_exeHeadset, item_headset_status}, - {0,0,0,(char*) TxtCarkit, 0, (MenuFunc)M_exeCarkit, item_carkit_status}, -#endif - {0,0,0, (char*) TxtSendMessage, 0, (MenuFunc)M_exeSendNew, item_flag_none }, - {0,0,0, (char*) TxtMessages, 0, (MenuFunc)M_exeRead, item_flag_none },/*SPR2132*/ - {0,0,0, (char*) TxtSettings, 0, (MenuFunc)M_exeSetting, item_flag_none }, //May 27, 2004 REF: CRR 19186 Deepa M.D .//Added Menu item for SMS Setting - // Feb 13, 2006 REF:DR OMAPS00067943 x0039928 - // Fix : The Menu function M_exeViewfinder is renamed to M_exeApplication - // and moved out of FF_MMI_TEST_CAMERA flag. - {0,0,0, (char*) TxtApplications, 0, (MenuFunc)M_exeApplication, item_flag_none }//August 23, 2004 e-armanetsaid.//Added Menu item for Camera test purposes while call ongoing -}; - -static const MfwMnuAttr menuCallSingle = -{ - &menuArea, - MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */ - (U8)-1, /* use default font */ - (T_MFW_MNU_ITEM*)menuCallSingleItems, /* with these items */ - sizeof(menuCallSingleItems)/sizeof(T_MFW_MNU_ITEM), /* number of items */ - COLOUR_LIST_XX, TxtNull, NULL, MNUATTRSPARE - -}; - -//18/12/2001 MC added sms message option -static T_MFW_MNU_ITEM menuCallTwoItems[] = -{ - {0,0,0, (char*) TxtMultiparty, 0,(MenuFunc)startConferenceExec, item_flag_none}, - {0,0,0, (char*) TxtContacts, 0,(MenuFunc)contactsExec, item_flag_none}, - {0,0,0, (char*) TxtSwap, 0,(MenuFunc)swapExec, item_flag_swap}, - {0,0,0, (char*) TxtEndAll, 0,(MenuFunc)endAllExec, item_flag_none}, - // Apr 26 2006, a0393213 (Prabakar R), OMAPS00074886 : No option in MMI to release the held call. - // Code which adds "End held" to the menu which appears when user presses Option soft key when there are atleast two calls - // This menu item is displayed only when some call is in hold state - {0,0,0, (char*) TxtEndHeld, 0,(MenuFunc)endHeldExec, item_flag_endheld}, - {0,0,0, (char*) TxtMute, 0,(MenuFunc)muteExec, item_flag_none}, - {0,0,0, (char*) TxtHold, 0,(MenuFunc)holdExec, item_flag_hold},//MC -// xpradipg - LOCOSTO-ENH-31895 : 23 June 2005 -// new menu items added for all the four different profiles, only one of the -// menu item will be available at any given point fo time -#ifdef FF_MMI_AUDIO_PROFILE - {0,0,0, (char*) TxtLoudspeaker, 0, (MenuFunc)M_exeLoudspeaker, item_loudspeaker_status }, - {0,0,0, (char*) TxtHandheld, 0, (MenuFunc)M_exeHandheld, item_handheld_status }, - {0,0,0, (char*) TxtHeadset, 0, (MenuFunc)M_exeHeadset, item_headset_status}, - {0,0,0,(char*) TxtCarkit, 0, (MenuFunc)M_exeCarkit, item_carkit_status}, -#endif - {0,0,0, (char*) TxtSendMessage, 0, (MenuFunc)M_exeSendNew, item_flag_none }, - {0,0,0, (char*) TxtMessages, 0, (MenuFunc)M_exeRead, item_flag_none },/*SPR2132*/ - {0,0,0, (char*) TxtSettings, 0, (MenuFunc)M_exeSetting, item_flag_none }//May 27, 2004 REF: CRR 19186 Deepa M.D //Added Menu item for SMS Setting -}; - -static const MfwMnuAttr menuCallTwo = -{ - &menuArea, - MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */ - (U8)-1, /* use default font */ - menuCallTwoItems, /* with these items */ - sizeof(menuCallTwoItems)/sizeof(T_MFW_MNU_ITEM), /* number of items */ - COLOUR_LIST_XX, TxtNull, NULL, MNUATTRSPARE - -}; - -//18/12/2001 MC added sms message option -static T_MFW_MNU_ITEM menuCallConferenceItems[] = -{ - {0,0,0, (char*) TxtPrivateCall, 0,(MenuFunc)privateStartAddConferenceExec, item_flag_none}, - {0,0,0, (char*) TxtSwap, 0,(MenuFunc)swapExec, item_flag_swap}, - {0,0,0, (char*) TxtEndAll, 0,(MenuFunc)endAllExec, item_flag_none}, - {0,0,0, (char*) TxtEndConference, 0,(MenuFunc)endConferenceExec, item_flag_none}, - {0,0,0, (char*) TxtContacts, 0,(MenuFunc)contactsExec, item_flag_none}, - {0,0,0, (char*) TxtHold, 0,(MenuFunc)holdExec, item_flag_hold}, - {0,0,0, (char*) TxtMute, 0,(MenuFunc)muteExec, item_flag_none}, -// xpradipg - LOCOSTO-ENH-31895 : 23 June 2005 -// new menu items added for all the four different profiles, only one of the -// menu item will be available at any given point fo time -#ifdef FF_MMI_AUDIO_PROFILE - {0,0,0, (char*) TxtLoudspeaker, 0, (MenuFunc)M_exeLoudspeaker, item_loudspeaker_status }, - {0,0,0, (char*) TxtHandheld, 0, (MenuFunc)M_exeHandheld, item_handheld_status }, - {0,0,0, (char*) TxtHeadset, 0, (MenuFunc)M_exeHeadset, item_headset_status}, - {0,0,0,(char*) TxtCarkit, 0, (MenuFunc)M_exeCarkit, item_carkit_status}, -#endif - - {0,0,0, (char*) TxtScratchPad, 0,(MenuFunc)scratchPadExec, item_flag_none}, - {0,0,0, (char*) TxtMainMenu, 0,(MenuFunc)mainMenuExec, item_flag_none}, - {0,0,0, (char*) TxtSendMessage, 0, (MenuFunc)M_exeSendNew, item_flag_none }, - {0,0,0, (char*) TxtMessages, 0, (MenuFunc)M_exeRead, item_flag_none },/*SPR2132*/ - {0,0,0, (char*) TxtSettings, 0, (MenuFunc)M_exeSetting, item_flag_none }//May 27, 2004 REF: CRR 19186 Deepa M.D //Added Menu item for SMS Setting -}; - -static const MfwMnuAttr menuCallConference = -{ - &menuArea, - MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */ - (U8)-1, /* use default font */ - (T_MFW_MNU_ITEM *)menuCallConferenceItems, /* with these items */ - sizeof(menuCallConferenceItems)/sizeof(T_MFW_MNU_ITEM), /* number of items */ - COLOUR_LIST_XX, TxtNull, NULL, MNUATTRSPARE - -}; - -#if(0) /* x0039928 - Commented for lint warning removal */ -static const T_MFW_MNU_ITEM menuDTMFItems [] = -{ - {0,0,0, (char*) TxtSendMessage, 0,(MenuFunc)exeSendMessage, item_flag_none}, - {0,0,0, (char*) TxtMessages, 0, (MenuFunc)M_exeRead, item_flag_none },/*SPR2132*/ - {0,0,0, (char*) TxtAddNew, 0,(MenuFunc)callExeNameEnter, item_flag_none} -}; - -static const T_MFW_MNU_ATTR menuDTMF = -{ - &menuArea, - MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */ - (U8)-1, /* use default font */ - (T_MFW_MNU_ITEM *)menuDTMFItems, /* with these items */ - sizeof(menuDTMFItems)/sizeof(T_MFW_MNU_ITEM), /* number of items */ - COLOUR_LIST_XX, TxtNull,NULL, MNUATTRSPARE - -}; -#endif - -enum { - CALL_STATUS_CALL, - CALL_TIMER_CALL, - CALL_ID_NAME_CALL, - CALL_ID_NUM_CALL -//x0pleela 23 May, 2006 DR: OMAPS00070657 -#ifdef FF_CPHS -, -CALL_ACTIVE_LINE -#endif -}; - -/********************************************************************* -********************************************************************** - - CALL WINDOW. DECLARATION - -********************************************************************* -**********************************************************************/ -//x0pleela 27 Mar, 2007 ER: OMAPS00122561 -#ifdef FF_PHONE_LOCK -extern T_MFW_HND phlock_win_handle; /* to hold the win handle of phone unlock editor window */ -extern T_MFW_HND phlock_kbd_handle; /* to hold the kbd handle of phone unlock editor window */ -extern T_MFW_HND phlock_mtc_win_handle; /* to hold the win handle of MT call window */ -#endif //FF_PHONE_LOCK - - T_call call_data; - -//x0pleela 09 Mar, 2006 ER:OMAPS00067709 -#ifdef FF_PCM_VM_VB -EXTERN T_voice_buffering voice_buffering_data; -#endif -void call(T_MFW_HND win, USHORT event, SHORT value, void * parameter); - - -static int call_win_cb(MfwEvt e, MfwWin *w); -static int call_kbd_cb (MfwEvt e, MfwKbd *k); -static int call_kbd_long_cb (MfwEvt e, MfwKbd *k); - - -/********************************************************************* -********************************************************************** - - MENU WINDOW. DECLARATION - -********************************************************************* -**********************************************************************/ - -typedef struct -{ - T_MMI_CONTROL mmi_control; - T_MFW_HND win; - T_MFW_HND kbd; - T_MFW_HND kbd_long; - T_MFW_HND menu; - T_VOID_FUNC func_cb; - /* - * internal data - */ -} T_call_menu; - - -/* Added to remove warning Aug-11*/ -EXTERN void mfw_aud_l1_enable_vocoder ( void ); -EXTERN void mfw_aud_l1_disable_vocoder ( void ); -#ifdef FF_CPHS - EXTERN T_MFW mfw_get_ALS_type(void); -#endif /* FF_CPHS */ -EXTERN BOOL smsidle_get_unread_sms_available(void); -#if defined (TI_PS_FF_EM) || defined (MMI_EM_ENABLED) - EXTERN void mmi_em_start_eng_mode_menus(T_MFW_HND parent); -#endif /* (TI_PS_FF_EM) || (MMI_EM_ENABLED) */ -void cm_end_held(void); -EXTERN void info_screen (T_MFW_HND win, USHORT TextId, USHORT TextId2,T_VOID_FUNC Callback); -EXTERN void dspl_show_bitmap(int x, int y,t_font_bitmap* current_bitmap,U32 attr ); -EXTERN void sat_release_the_editor (void); -/* End - Added to remove warning Aug-11 */ - -static T_MFW_HND call_menu_create(MfwHnd parent); -static void call_menu_destroy(MfwHnd window); - -T_MFW_HND call_menu_start(MfwHnd parent,MfwMnuAttr* menuAttr,T_VOID_FUNC func_cb); - -void call_menu (T_MFW_HND win, USHORT event, SHORT value, void * parameter); - - -static int call_menu_win_cb (MfwEvt e, MfwWin *w); -static int call_menu_kbd_cb (MfwEvt e, MfwKbd *k); -static int call_menu_kbd_long_cb (MfwEvt e, MfwKbd *k); -static int call_menu_mnu_cb (MfwEvt e, MfwMnu *m); - - - -/********************************************************************* -********************************************************************** - - CALL FUNCTIONS. DECLARATION - -********************************************************************* -**********************************************************************/ -/*SPR 1392, call deflection function prototypes*/ -static int deflPhbExec(void); // RAVI -/* SPR#1428 - SH - change parameters slightly */ -EXTERN void cm_mt_deflect (T_MFW_HND win, USHORT identifier, SHORT reason); -void call_deflection_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);//jgg -/*SPR 1392 end*/ -void call_incoming_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason); -void call_calling_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason); -void call_ending_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason); -void call_waiting_answer_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason); -void call_sending_dtmf_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason); -void call_menu_end_cb(void); -void call_failure_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason); -static void call_calling_show (USHORT Identifier); -void call_info_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason); -/* Marcus: Issue 1057: 21/01/2003: Added the following function prototype */ -void call_acm_max_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason); - -/********************************************************************* -********************************************************************** - - DIALLING WINDOW. DECLARATION - -********************************************************************* -**********************************************************************/ - - - -typedef struct -{ - T_MMI_CONTROL mmi_control; - T_MFW_HND win; // window handle - T_MFW_HND kbd; - T_MFW_HND kbd_long; -#ifdef NEW_EDITOR - T_ED_DATA *editor; /* SPR#1428 - SH - New Editor changes */ -#else - T_MFW_HND edt; -#endif - UBYTE mode; - UBYTE callstatus; -} T_call_scratchpad; - - - - -T_MFW_HND call_scratchpad_create(MfwHnd parent); -void call_scratchpad_exit (void); -static int call_scratchpad_kbd_cb (MfwEvt e, MfwKbd *k); -static int call_scratchpad_kbd_long_cb (MfwEvt e, MfwKbd *k); -static int call_scratchpad_win_cb (MfwEvt e, MfwWin *w); - -void call_scratchpad (T_MFW_HND win, USHORT event, SHORT value, void * parameter); -T_MFW_HND call_scratchpad_start (T_MFW_HND win_parent,char character,UBYTE mode, UBYTE callstatus); - -#ifdef NEPTUNE_BOARD -#ifdef MMI_POWER_MANAGEMENT_TEST -int iIncomingCall = 0; /* Variable for Incoming Call */ -#endif -#endif - -//x0pleela 03 Nov, 2006 DR: OMAPS000101158 -GLOBAL void mfw_set_OtherSrc_Value(UBYTE otherSrc); -GLOBAL UBYTE mfw_get_OtherSrc_Value(void); - - -/*August 01, 2007 DR: OMAPS00137399 x0080701 (Bharat) -- Start */ - -static E_IN_CALL_RINGER_STATUS iIncomingCallRingerStop = 0; - -/*August 01, 2007 DR: OMAPS00137399 x0080701 (Bharat) -- End */ - -/******************************************************************************* - - Private Methods - -*******************************************************************************/ -//Daisy tang added for Real Resume feature 20071107 -//start -static void mp3_test_real_resume(void) -{ - IsRealPaused = FALSE; - IsMP3Playing = TRUE; - mfw_fm_audRealResume(); -} - - -static int mp3_test_play_Timer_cb( MfwEvt e, MfwTim *tc ) -{ - if (mp3playTimer != NULL ) - { - timStop(mp3playTimer); - timDelete (mp3playTimer); - } - mp3_test_real_resume(); - return MFW_EVENT_CONSUMED; -} - -//end -/******************************************************************************* - - $Function: callInit - - $Description: initiates the window - - $Returns: none - - $Arguments: parent window - -*******************************************************************************/ - -void callInit (MfwHnd parent) -{ - - TRACE_FUNCTION("callInit"); - - cm_init(); - call_data.cm = cm_create(0, E_CM_ALL_SERVICES, (MfwCb)callCmEvent); - call_data.win = 0; - call_data.callStatus = CallInactive; - - call_data.vocoderState = CALL_VOCODER_IDLE; -} - - -/******************************************************************************* - - $Function: callExit - - $Description: Exits the window - - $Returns: none - - $Arguments: none - -*******************************************************************************/ - - -void callExit (void) -{ - - TRACE_FUNCTION("callExit"); - cm_delete(call_data.win); - timDelete(call_data.timer); - cm_exit(); -} - - - - -/******************************************************************************* - - $Function: callAutoRedialKeyEvent - - $Description: keyboard event handler - - $Returns: none - - $Arguments: typical - -*******************************************************************************/ - - -void callAutoRedialKeyEvent(T_MFW_HND win, USHORT identifier, USHORT reason) -{ - - TRACE_FUNCTION("callAutoRedialKeyEvent"); - - call_data.win_redial = 0; - switch (reason) - { - case INFO_KCD_LEFT: - /* - callSetMode(ViewAutoRedial); - cm_redial(); - */ - break; - case INFO_KCD_HUP: - case INFO_KCD_RIGHT: - case INFO_KCD_CLEAR: - cm_redial_abort(); - callSetMode(ViewConnect, TRUE); - break; - default: - break; - } -} - - - -/******************************************************************************* - - $Function: callCmEvent - - - $Description: call management event handler - - - $Returns: 1, processed, 0 ignored - - - $Arguments: event and parameter - - -*******************************************************************************/ - - - -int callCmEvent(MfwEvt e, void *para) -{ - -/* a0393213 (WR - "currentRinger" was set but never used) */ -#ifndef FF_MIDI_RINGER -#ifndef FF_MMI_RINGTONE - UBYTE currentRinger; -#endif -#endif - - int i; - SHORT *cid; - T_MFW_CM_DISCONNECT *dc; - T_MFW_CM_COMMAND *comm; -// SHORT callId; // RAVI - T_MFW_CM_REDIAL *pRedial; - T_MFW_CM_CPI *cmCpi; - /* SPR#1352 - SH - TTY */ - #ifdef MMI_TTY_ENABLED - T_MFW_CM_CTYI *cmCTYI; - #endif - /* end SH */ - - // June 08, 2004 REF: CRR MMI-SPR-13876 xkundadu(Sasken) -// Added this variable to check whether there is a waiting call -SHORT waiting_callnumber; - -// MMI-SPR 13847 xkundadu -// heldCall_Id gets the index of a HELD call. - SHORT heldCall_Id; - -// Aug 24, 2004 REF: CRR MMI-SPR-15750 xkundadu -// activeCall_Id gets the index of a ACTIVE call. - SHORT activeCall_Id; - -//x0pleela 09 Feb, 2007 DR: OMAPS00114834 -//This definition is required to get the current ringer settings -#ifndef FF_MIDI_RINGER - UBYTE currentRinger; -#endif - -#ifndef FF_MIDI_RINGER - currentRinger = getCurrentRingerSettings(); -#endif - - TRACE_EVENT_P2("%s %d","callCmEvent ",e); - - switch(e) - { - - /* - * Handle call notifications - */ - case E_CM_NOTIFY: - TRACE_EVENT("E_CM_NOTIFY"); - SEND_EVENT (call_data.win, E_CM_NOTIFY, 0, para); - break; - - case E_CM_COLP: - TRACE_EVENT("E_CM_COLP"); - SEND_EVENT (call_data.win, E_CM_COLP,0, para); - break; - - case E_CM_CW: -//Apr 06, 2005 REF: ENH 30011 xdeepadh -#ifdef FF_MMI_TEST_CAMERA -#ifdef RVM_CAMA_SWE -#ifdef RVM_CAMD_SWE - //e-armanetsaid 18/08/04 -enable R2D back when incoming call -might have been disabled by camera test module -//Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg -//replaced the flag with the function call, to migrate to the new Lcd APIs - if(dspl_control(DSPL_ACCESS_QUERY) == DSPL_ACCESS_DISABLE) - { -//Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg -//replaced the flag with the function call, to migrate to the new Lcd APIs - dspl_control(DSPL_ACCESS_ENABLE); - mfw_cam_disable_sensor(); - } - //e-armanetsaid 18/08/04 -enable R2D back when incoming call -might have been disabled by camera test module -#endif -#endif -#endif //FF_MMI_TEST_CAMERA - - /* Set the Incoming Call Variable */ -#ifdef NEPTUNE_BOARD -#ifdef MMI_POWER_MANAGEMENT_TEST - iIncomingCall = 1; -#endif -#endif - - if(para) - incomingCall((T_MFW_CM_CW_INFO*)para); -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Commented mmesetvolume.since the speaker volume will be set, -//once the call is acknowledged. -// mmeSetVolume (1, FFS_flashData.output_volume); - - break; - - case E_CM_RING_OFF: - TRACE_EVENT("E_CM_RING_OFF"); -//Below original code is commented by x0pleela 09 Feb, 2007 DR: OMAPS00114834 - // x0021334 15 May, 2006 DR: OMAPS00075901 - // This event comes before incoming call is accepted . Stop call waiting tone. - // audio_StopSoundbyID (AUDIO_MICROPHONE, TONES_CW); - -//x0pleela 15 Feb, 2007 DR: OMAPS00114834 -/* Above original code is commented and the following condition is added to stop - the ringer when MMI recieves the RING_OFF event from ACI rather than stopping - the ringer when user accepts or rejects the call using keypad -*/ - - /*August 01, 2007 DR: OMAPS00137399 x0080701 (Bharat) -- Start */ - - /* Set the Incoming Call Ringer Status as "Stopped" */ - bmi_incomingcall_set_ringer_status(BMI_INCOMING_CALL_NONE); - - /*August 01, 2007 DR: OMAPS00137399 x0080701 (Bharat) -- End */ - - if (LocalRing) - { -#ifdef FF_MMI_RINGTONE /* Stop MSL */ - audio_StopSoundbyID(AUDIO_MICROPHONE , CALLTONE_SELECT); -#else - audio_StopSoundbyID(AUDIO_MICROPHONE ,TONES_RINGING_TONE); -#endif - LocalRing = FALSE; - - /*August 01, 2007 DR: OMAPS00137399 x0080701 (Bharat) -- Start */ - - /* Vocoder Enable */ - mfw_aud_l1_enable_vocoder(); - - /*August 01, 2007 DR: OMAPS00137399 x0080701 (Bharat) -- End */ - } - else - { - // Checking whether call is present or not - if(call_data.calls.numCalls) - { - // Checking whether the call is mobile terminated. - if(call_data.call_direction EQ MFW_CM_MTC) - { - // The call is incoming call, So stop the call waiting tone. - audio_StopSoundbyID( AUDIO_MICROPHONE, TONES_CW); - - /*August 01, 2007 DR: OMAPS00137399 x0080701 (Bharat) -- Start */ - - /* Vocoder Enable */ - mfw_aud_l1_enable_vocoder(); - - /*August 01, 2007 DR: OMAPS00137399 x0080701 (Bharat) -- End */ - - } - - } - else - { -// stop this ringing tone. -#ifdef FF_MIDI_RINGER - mfw_ringer_stop(sounds_midi_ringer_stop_cb); - - /*August 01, 2007 DR: OMAPS00137399 x0080701 (Bharat) -- Start */ - - /* Set the Incoming Call Ringer Status as "Stopped" */ - bmi_incomingcall_set_ringer_status(BMI_INCOMING_CALL_RINGERSTOPPED); - - /*August 01, 2007 DR: OMAPS00137399 x0080701 (Bharat) -- End */ - -#else -#ifdef FF_MMI_RINGTONE /* Stop MSL */ - audio_StopSoundbyID( AUDIO_BUZZER, CALLTONE_SELECT); -#else - // This is to stop the buzzer - audio_StopSoundbyID( AUDIO_BUZZER, getCurrentRingerSettings() ); -#endif -#endif - } - } - break; - - case E_CM_DISCONNECT_ALL: - TRACE_EVENT(" E_CM_DISCONNECT_ALL : Call ended remove All Calls!"); - - call_show_ending_all(); - - removeAllCalls(); - - if (call_data.win) - call_destroy(call_data.win); - -// Jun 02, 2006 DRT OMAPS00079213 x0039928(sumanth) -// Fix: Hook is unregistered if the calls are disconnected. -#ifdef FF_MMI_AUDIO_PROFILE -// Aug 17, 2006 REF:OMAPS00090196 x0039928 -#ifdef MMI_TTY_ENABLED - -if(FFS_flashData.ttyAlwaysOn == FALSE && call_data.tty == CALL_TTY_OFF) - -#endif - - mfw_hook_unregister(); - - -#endif - - //xvilliva SPR13698, After receiving the "E_CM_DISCONNECT_ALL" - //we initiate the MO ECC. We reset the flag and then initiate the call. - if(makeECC == TRUE && strlen(strECC)>0) - { - makeECC = FALSE; - cm_mo_call((UBYTE *)strECC, VOICE_CALL); - } - -//x0pleela 24 Mar, 2006 ER:OMAPS00067709 -//stop voice recording -#ifdef FF_PCM_VM_VB - if( (get_voice_memo_type() EQ VOICE_BUFFERING) AND - (!voice_buffering_data.incoming_call_discon) ) - { - if(voice_buffering_data.call_active AND (!voice_buffering_data.play_stopped )) - voice_buffering_stop_playing(); - if( !voice_buffering_data.recording_possible) - voice_buffering_stop_recording(); - } -#endif - //Daisy tang added for Real Resume feature 20071107 - //start - if(IsRealPaused) - timStart( mp3playTimer ); - - //end - break; - - case E_CM_DISCONNECT: - TRACE_EVENT("E_CM_DISCONNECT"); -//EF assign dc now 29/01/2003 - dc = (T_MFW_CM_DISCONNECT *)para; - - if (strlen((char*)call_data.colp_number) > 0) - memset(call_data.colp_number,'\0',sizeof(call_data.colp_number)); - - /* SPR 1392, work out whether we need to remove the call deflection windows*/ - /*if the call to be disconnected is the current incoming call*/ - if ((dc->call_number==call_data.incCall)) - { /*if the deflection editor exists*/ - if (call_data.win_deflectEdit) - { - // Jan 05, 2006 REF:DR OMAPS00050454 x0039928 - // Delete the calling window also - deflect_destroy(TRUE); - } - } - -#ifdef FF_WAP - /* SPR#1983 - SH - Inform WAP of a disconnection */ - AUI_wap_call_disconnect(dc->call_number); -#endif - - /* MZ cq11080 25-07-03 Check to see if call is muted then Unmute.*/ - if (call_data.calls.muted) - { - if (audio_SetMute(AUDIO_MICROPHONE, AUDIO_MUTING_OFF) == DRV_OK) - { - call_data.calls.muted = false; - menuCallSingleItems[2].str = (char*)TxtMute; - } - } - - if (call_data.ignore_disconnect) - { - //x0pleela 15 Mar, 2006 ER:OMAPS00067709 - //stop voice recording -#ifdef FF_PCM_VM_VB - if( get_voice_memo_type() EQ VOICE_BUFFERING ) - { - if(voice_buffering_data.call_active AND (!voice_buffering_data.play_stopped )) - voice_buffering_stop_playing(); - if( !voice_buffering_data.recording_possible) - voice_buffering_stop_recording(); - } -#endif - //Daisy tang added for Real Resume feature 20071107 - //start - if(IsRealPaused) - timStart( mp3playTimer ); - - //end - return 1; - } - - - if (LocalRing) - { -#ifdef FF_MMI_RINGTONE /* Stop MSL */ - audio_StopSoundbyID(AUDIO_MICROPHONE , CALLTONE_SELECT); -#else - audio_StopSoundbyID(AUDIO_MICROPHONE ,TONES_RINGING_TONE); -#endif - LocalRing = FALSE; - } - - - - TRACE_EVENT("Disconnect Event"); - - cm_get_aoc_value(CM_AOC_CCM,&call_data.aocInfo); - - if (!dc->call_number) // Delete multiparty - { - -// Oct 6, 2004 REF: CRR 23948 xkundadu -// Description: FT-Brazil-TC 9.2 multiparty using BPM -After multiparty -// 'call ended', mmi doesnot return to idle,but indicates that a call is still.. -// Fix: Call the removeCall() function for all the calls in the multiparty -// in the case of multiparty disconnection. - - // Temporary variable to store the call table entries. -/* Dec 22, 2006 REF:OMAPS00107042 x0039928 */ -#ifdef FF_MMI_PB_OPTIM - T_MFW_CM_STATUS *currentstatus = NULL; -#else - T_MFW_CM_STATUS currentstatus[MAX_CALLS] = {-1}; -#endif - UBYTE noOfCalls = 0;//Number of calls - int j; - BOOL bCallEndedShown = FALSE;//To check 'Call ended' screen displayed or not - -#ifdef FF_MMI_PB_OPTIM - currentstatus = (T_MFW_CM_STATUS *)ALLOC_MEMORY(MAX_CALLS * sizeof(T_MFW_CM_STATUS)); -#endif - noOfCalls = call_data.calls.numCalls; - - // Storing the call table to a temperory table. - for( j=0;jcall_number)call_number, TRUE,FALSE); // Delete active call - -// June 08, 2004 REF: CRR MMI-SPR-13876 xkundadu(Sasken) -// Issue description: CHW : AUDIO : No difference between CW and incoming call -// If there is one Active call and one wiating call and if the Active call is -// disconnected from the remote side/network side, the waiting tone should -// change to ringing tone. -// Solution: If there is a waiting call and all other calls has been disconnected, -// change the waiting tone to ringing tone. - - // Check whether a waiting call is exisiting - if (cm_search_callId(CAL_STAT_Wait, &waiting_callnumber) EQ CM_OK) - { - // Checking whether there is no other calls - if(!call_data.calls.numCalls) - { - // If there is no other calls, stop the waiting tone and start ringing tone. - audio_StopSoundbyID( AUDIO_MICROPHONE, TONES_CW); -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -#ifdef FF_MIDI_RINGER - mfw_ringer_start(AS_RINGER_MODE_IC,true,sounds_midi_ringer_start_cb); -#else -#ifdef NEPTUNE_BOARD -#ifdef FF_MMI_RINGTONE /* MSL Ring Tone */ - audio_PlaySoundID( AUDIO_BUZZER, CALLTONE_SELECT, 0 , AUDIO_PLAY_INFINITE); -#else - audio_PlaySoundID( AUDIO_BUZZER, getCurrentRingerSettings(), - getCurrentVoulmeSettings(), AUDIO_PLAY_INFINITE); -#endif -#else - audio_PlaySoundID( AUDIO_BUZZER, getCurrentRingerSettings(), 0 , AUDIO_PLAY_INFINITE); -#endif -/* END RAVI */ -#endif - } - } - } - else // Delete not executed call - { - if ((dc->call_number==call_data.incCall)) - { - if (call_data.win_incoming) - { - - // Jun 21, 2004 REF: CRR MMI-SPR-17981 xkundadu - // Issue description: RE: S60/Symbian: ACI reports RING messages after an - // incoming call was closed using at+CHLD=1x or ATH - // Solution: If E_CM_DISCONNECT event comes and if incoming call alert is there - // stop the ringing tone. - -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -// Stopping the current ring tone. -#ifdef FF_MIDI_RINGER - mfw_ringer_stop(sounds_midi_ringer_stop_cb); -#else -#ifdef FF_MMI_RINGTONE /* Stop MSL */ - audio_StopSoundbyID( AUDIO_BUZZER, CALLTONE_SELECT); -#else - audio_StopSoundbyID( AUDIO_BUZZER, getCurrentRingerSettings()); -#endif - #endif - TRACE_EVENT("Dialog Destroy No 1"); - if(idwithheld == TRUE) - idCounter = idCounter + 1; - - SEND_EVENT(call_data.win_incoming,DIALOG_DESTROY,0,0); - call_data.win_incoming = 0; - } - TRACE_EVENT_P2("GET_CAUSE_VALUE(dc->cause %x) EQ %x", dc->cause, GET_CAUSE_VALUE(dc->cause)); - - if (GET_CAUSE_VALUE (dc->cause)!=NOT_PRESENT_8BIT) - { - //Calling side has terminated the call, turn of ringer MZ. - if(call_data.calls.numCalls) - { - TRACE_EVENT("NDH >>> Stopping TONES_CW in the Microphone"); - audio_StopSoundbyID( AUDIO_MICROPHONE, TONES_CW); - } - else - { - TRACE_EVENT("NDH >>> Stopping current Rigner on the Buzzer"); -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -#ifdef FF_MIDI_RINGER - // Stopping the current ring tone. - mfw_ringer_stop(sounds_midi_ringer_stop_cb); -#else - /* x0045876, 14-Aug-2006 (WR - "currentRinger" was set but never used) */ - /* currentRinger = getCurrentRingerSettings(); */ - -#ifdef FF_MMI_RINGTONE /*Stop MSL */ - audio_StopSoundbyID( AUDIO_BUZZER, CALLTONE_SELECT); -#else - /* x0045876, 14-Aug-2006 (WR - "currentRinger" was set but never used) */ - currentRinger = getCurrentRingerSettings(); - - audio_StopSoundbyID( AUDIO_BUZZER, currentRinger ); -#endif -#endif - } - //Check if incoming call has been rejected by user, call is not regarded as a missed call. MZ -#ifdef FF_2TO1_PS - if(dc->cause != M_CC_CAUSE_USER_BUSY ) /*SPR#2217 - DS - Changed MNCC_CAUSE_USER_BUSY to CAUSE_USER_BUSY */ -#else - if(dc->cause != M_CC_CAUSE_USER_BUSY ) -#endif - { - TRACE_EVENT("Add missed call"); - if (call_data.globalCWInfo.type EQ VOICE_CALL) - addMissedCall(); - } - - - } - call_data.incCall = 0; - if (!call_data.calls.numCalls) - if (call_data.win) - { - call_destroy(call_data.win); - /* SPR#1985 - SH - Revert to initial TTY setting - * Do not access dc-> after this call, as it will generate - * an event here which will overwrite the previous data */ -#ifdef MMI_TTY_ENABLED - call_tty_revert(); -#endif - -//x0pleela 09 Mar, 2006 ER:OMAPS00067709 -//stop voice recording -#ifdef FF_PCM_VM_VB - if( (get_voice_memo_type() EQ VOICE_BUFFERING) AND - (!voice_buffering_data.incoming_call_discon) ) - { - if(voice_buffering_data.call_active AND (!voice_buffering_data.play_stopped )) - voice_buffering_stop_playing(); - if( !voice_buffering_data.recording_possible) - voice_buffering_stop_recording(); - voice_buffering_data.call_active = FALSE; - vocoder_mute_ul(0); - } - -#endif - - - //Daisy tang added for Real Resume feature 20071107 - //start - if(IsRealPaused) - timStart( mp3playTimer ); - //end - return 1; - } - } - if ((dc->call_number==call_data.outCall)) - { - if (call_data.win_calling){ - TRACE_EVENT("Dialog Destroy No 2"); - SEND_EVENT(call_data.win_calling,DIALOG_DESTROY,0,0); - call_data.win_calling = 0; - } - call_data.outCall = 0; - callFailureCause(dc->cause); - } - } - } - if (call_data.callsToEnd) - { - call_data.callsToEnd=call_data.callsToEnd-1; - cm_disconnect(call_data.calls.status[0].call_number); - } - - /* SPR#1985 - SH - Revert to initial TTY setting - * Do not access dc-> after this call, as it will generate - * an event here which will overwrite the previous data */ -#ifdef MMI_TTY_ENABLED - call_tty_revert(); -#endif - - //GW-SPR#1035 - Added SAT changed - /*NM, 110702 - in case that the SAT initiate the setup call (open a new editor); - so we want to make sure that the editor disappear after disconnect - */ - sat_release_the_editor (); - /*NM, 110702 END*/ - - rebuildCalls(); // Marcus: Issue 1795: 12/03/2003 - - // MMI-SPR 13847 xkundadu - // Solution: If there is only one call and if that call is HELD, - // change its status to ACTIVE. - - // Checking whether the disconnection indication is initiated from host - if(bhostDisconnection == TRUE) - { - bhostDisconnection = FALSE; - - // Aug 24, 2004 REF: CRR MMI-SPR-15750 xkundadu - // Bug:"END" function is not implemented for mutiple call - // Solution: In the case of multiparty HELD call or single HELD call - // change its state to ACTIVE. - - if(call_data.calls.numCalls) - { - //If HELD call is there and no ACTIVE call, change the HELD - //call to ACTIVE. - if((cm_search_callId(CAL_STAT_Held, &heldCall_Id) == CM_OK) AND - (cm_search_callId(CAL_STAT_Active, &activeCall_Id) != CM_OK)) - { - // Change the HELD call to ACTIVE call - cm_command(heldCall_Id, CM_RETRIEVE, '\0'); - call_data.current_command = CM_RETRIEVE; - } - } - } -//x0pleela 09 Mar, 2006 ER:OMAPS00067709 -//stop voice recording -#ifdef FF_PCM_VM_VB - if( (get_voice_memo_type() EQ VOICE_BUFFERING) AND - (!voice_buffering_data.incoming_call_discon) ) - { - if(voice_buffering_data.call_active AND (!voice_buffering_data.play_stopped )) - voice_buffering_stop_playing(); - if( !voice_buffering_data.recording_possible) - voice_buffering_stop_recording(); - voice_buffering_data.call_active = FALSE; - vocoder_mute_ul(0); - } - -#endif - -// Jun 02, 2006 DRT OMAPS00079213 x0039928(sumanth) -// Fix: Hook is unregistered for the last call. -#ifdef FF_MMI_AUDIO_PROFILE -// Aug 17, 2006 REF:OMAPS00090196 x0039928 - -#ifdef MMI_TTY_ENABLED - -if(FFS_flashData.ttyAlwaysOn == FALSE && call_data.tty == CALL_TTY_OFF) - -#endif - if(call_data.calls.numCalls == 0) - mfw_hook_unregister(); -#endif - //Daisy tang added for Real Resume feature 20071107 - //start - if(IsRealPaused) - timStart( mp3playTimer ); - //end - break; - - case E_CM_CONNECT_ACK: - TRACE_EVENT("E_CM_CONNECT_ACK"); - cid = (SHORT*)para; - TRACE_EVENT_P5("CId %d . outCall %d . win_calling %d . incCall %d win_incoming %d", - *cid,call_data.outCall,call_data.win_calling,call_data.incCall, - call_data.win_incoming); - -// Jan 19, 2005 REF: CRR MMI-SPR-27455 xnkulkar -// Description: TC 29.3.2.6.7 failed on 900 on R&S -// Solution: function "mfw_aud_l1_enable_vocoder ()" should be called only when the -// call mode is not DATA or FAX - if (cm_search_callMode(*cid) != CAL_MODE_Data AND cm_search_callMode(*cid) != CAL_MODE_Fax) - { - if (call_data.vocoderState == CALL_VOCODER_DISABLED) - { - /* - ** If the Vocoder is disabled, now is the time to re-enable it. - */ - TRACE_EVENT("BMI E_CM_CONNECT_ACK: enable vocoder"); - mfw_aud_l1_enable_vocoder (); - } - - call_data.vocoderState = CALL_VOCODER_INCALL; - } - else - { - TRACE_EVENT("BMI E_CM_CONNECT_ACK: not voice call"); - } - - if (LocalRing) - { -#ifdef FF_MMI_RINGTONE /* Stop MSL */ - audio_StopSoundbyID(AUDIO_MICROPHONE , CALLTONE_SELECT); -#else - audio_StopSoundbyID(AUDIO_MICROPHONE ,TONES_RINGING_TONE); -#endif - LocalRing = FALSE; - } - else - { - -// Jun 08 2004 REF: CRR MMI-SPR-13877 Ajith K P -// Issue description: CHW : AUDIO : CW tone not stopped -// Solution: When MMI receives the event E_CM_CONNECT_ACK, if number of -// calls is greater than 1 and if the call is MTC, Stop the waiting call beep, otherwise stop the, -// normal ringing tone. - - // Checking whether call is present or not - if(call_data.calls.numCalls) - { - - // Checking whether the call is mobile terminated. - if(call_data.call_direction EQ MFW_CM_MTC) - { - // The call is incoming call, So stop the call waiting tone. - audio_StopSoundbyID( AUDIO_MICROPHONE, TONES_CW); - } - - } - else - { -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -// Since there is no other call the ringing tone will be Buzzer, -// So stop this ringing tone. -#ifdef FF_MIDI_RINGER - mfw_ringer_stop(sounds_midi_ringer_stop_cb); -#else -#ifdef FF_MMI_RINGTONE /* Stop MSL */ - audio_StopSoundbyID( AUDIO_BUZZER, CALLTONE_SELECT); -#else - // This is to stop the buzzer - audio_StopSoundbyID( AUDIO_BUZZER, getCurrentRingerSettings() ); -#endif -#endif - } - } - - - - if ((*cid==call_data.incCall)&&(call_data.win_incoming)) - { - SEND_EVENT(call_data.win_incoming,DIALOG_DESTROY,0,0); - call_data.win_incoming = 0; - } - - if ((*cid==call_data.outCall)&&(call_data.win_calling)){ - SEND_EVENT(call_data.win_calling,DIALOG_DESTROY,0,0); - call_data.win_calling = 0; - } - // Aug 17, 2004 REF: CRR 6401 xvilliva - // Recitified 'for' loop, Changed from MAX_CALL_NR to MAX_CALLS - // as it is going out of bounds of call_data.calls.status[i] - // which is of size MAX_CALLS only. - //Quick check to see if we're duplicating call table - for (i =0; iresult == Present) { - TRACE_EVENT_P2("comm.result = %d comm.command = %d",comm->result,comm->command); - switch (comm->command) { - - case CM_RETRIEVE: - TRACE_EVENT("call CM_RETRIEVED received"); - break; - case CM_HOLD: - TRACE_EVENT("call CM_HOLD received"); - break; - case CM_BUILD_MULTIPARTY: - TRACE_EVENT("call CM_BUILDMULTIPARTY received"); - call_data.calls.mode = CallConference; - break; - case CM_SPLIT_MULTIPARTY: - TRACE_EVENT("call CM_SPLIT_MULTIPARTY received"); - call_data.singleCall = comm->call_number; - call_data.calls.mode = CallSingleMultiparty; - break; - case CM_HOLD_MULTIPARTY: - TRACE_EVENT("call CM_HOLD_MULTIPARTY received"); - call_data.calls.mode = CallConference; - break; - case CM_RETRIEVE_MULTIPARTY: - TRACE_EVENT("call CM_RETRIEVE_MULTIPARTY received"); - - // Aug 24, 2004 REF: CRR MMI-SPR-15750 xkundadu - // If number of calls greater than one, set the mode to CallConference. - - - if(call_data.calls.numCalls >1) - { - call_data.calls.mode = CallConference; - - } - - - break; - case CM_SWAP: - TRACE_EVENT("call CM_SWAP received"); - break; - case CM_SWAP_MULTIPARTY: - TRACE_EVENT("call CM_SWAP MULTIPARTYreceived"); - if (call_data.calls.mode == CallSingleMultiparty) - call_data.calls.mode = CallMultipartySingle; - else - call_data.calls.mode = CallSingleMultiparty; - break; - case CM_ETC: - TRACE_EVENT("call CM_ETC received"); - i=0; - while (iresult == NotPresent) - { - //06 July, 2007 DR: OMAPS00137334 x0062172 Syed - if(call_data.calls.numCalls >= MAX_CALLS) - { - bookShowInformation(call_data.win, TxtConferenceFull,NULL, NULL); - } - else - { - bookShowInformation(call_data.win, TxtFailed,NULL, NULL); /*a0393213 lint warning removal*/ - } - - if (call_data.win_waiting) /*If we're waiting for current command*/ - { /*Get rid of waiting window*/ - SEND_EVENT(call_data.win_waiting,DIALOG_DESTROY,0,0); - call_data.win_waiting = 0; - TRACE_FUNCTION("destroy call win h"); - } -//TISH, patch for OMAPS00129157 -//start - if (call_data.win_calling && comm->command==CM_HOLD) - { - SEND_EVENT(call_data.win_calling,DIALOG_DESTROY,0,0); - call_data.win_calling = 0; - TRACE_EVENT("destroy call win i"); - } -//end - - } - break; - case E_CM_DTMF: - if (call_data.sendingDTMF) - { - call_data.charSent++; - sendDTMFString(); - } - break; - case E_CM_REDIAL: - TRACE_EVENT("E_CM_REDIAL"); - pRedial = (T_MFW_CM_REDIAL*)para; - if(pRedial == NULL) /*a0393213 lint warnings removal - check for null added*/ - { - TRACE_ERROR("callCmEvent():E_CM_REDIAL null parameter"); - } - else - { - switch(pRedial->redial_mode) - { - - case CM_REDIAL_BLACKLIST: - TRACE_EVENT("CM_REDIAL_BLACKLIST"); - TRACE_EVENT("the blacklist is now full"); - /* - GSM 2.07 - when the blacklist is full the MT - shall prohibit further automatic call - attempts to any one number until - the blacklist is manually cleared at the MT - - The blacklist is cleared after switch off/on ?! - */ - break; - case CM_REDIAL_NO_SERVICE: - TRACE_EVENT("CM_REDIAL_NO_SERVICE"); - break; - case CM_REDIAL_OUTGOING: - TRACE_EVENT("CM_REDIAL_OUTGOING"); - case CM_REDIAL_INCOMING: - TRACE_EVENT("CM_REDIAL_INCOMING"); - case CM_REDIAL_ABORTED: - TRACE_EVENT("CM_REDIAL_ABORTED"); - case CM_REDIAL_BLACKLISTED : - TRACE_EVENT("CM_REDIAL_BLACKLISTED"); - - if (call_data.win_redial) - { - SEND_EVENT(call_data.win_redial,DIALOG_DESTROY,0,0); - call_data.win_redial = 0; - TRACE_EVENT("destroy redial win "); - } - - break; - case CM_REDIAL_SUCCESS: - TRACE_EVENT("CM_REDIAL_SUCCESS"); - - if (call_data.win_redial) - { - SEND_EVENT(call_data.win_redial,DIALOG_DESTROY,0,0); - call_data.win_redial = 0; - TRACE_EVENT("destroy redial win "); - } - rebuildCalls(); - break; - - case CM_REDIAL_STARTED: - TRACE_EVENT("CM_REDIAL_STARTED"); - /* */ - - - - - if (call_data.win_calling) - { - SEND_EVENT(call_data.win_calling,DIALOG_DESTROY,0,0); - call_data.win_calling = 0; - TRACE_EVENT("destroy call call_win"); - } - - if (pRedial->left_attempts EQ 0 ) // Not yet started redial attempts - { - /* start the 1st repeat attempt */ - cm_autoredial_start(); - } - callSetMode(ViewAutoRedial, TRUE); - break; - - case CM_REDIAL_STOP: - TRACE_EVENT("E_CM_REDIAL_STOP"); - if (call_data.win_redial) - { - SEND_EVENT(call_data.win_redial,DIALOG_DESTROY,0,0); - call_data.win_redial = 0; - } - rebuildCalls(); - break; - case CM_REDIAL_ATTEMPT: - TRACE_EVENT("E_CM_REDIAL ATTEMPT"); - break; - default: - break; - } - } - break; - case E_CM_MO_RES: - { - T_MFW_PHB_ENTRY phb_entry; -// Sep 01, 2006 REF:OMAPS00090555 x0039928 -// Fix : Get the outgoing call data/number from the parameter passed to callCmEvent - T_MFW_CM_MO_INFO *outgoing_call_data = (T_MFW_CM_MO_INFO*) para; - T_MFW_CM_AOC_INFO aoc_info; - char * v_Number = NULL; - cid = &(outgoing_call_data->call_id); - - // this is used for the "last charge" - cm_get_aoc_value(CM_AOC_ACM, &aoc_info); - - acm_last_call = aoc_info.acm; - - TRACE_EVENT ("E_CM_MO_RES"); - - TRACE_EVENT_P1("Call Id %d",*cid); - - /* If we have no active call window, create one */ - if (!call_data.win) - { - call_create(0); - } - - if (call_data.calls.numCalls == 0) - { - SEND_EVENT(call_data.win,CALL_INIT,0,0); - } - - /* end any locally generated tones, this is for late assignment - * and should be managed within ACI - */ - if (LocalRing) - { -#ifdef FF_MMI_RINGTONE /* Stop MSL */ - audio_StopSoundbyID(AUDIO_MICROPHONE , CALLTONE_SELECT); -#else - audio_StopSoundbyID(AUDIO_MICROPHONE ,TONES_RINGING_TONE); -#endif - LocalRing = FALSE; - } - - /* SPR#1983 - SH - Notify WAP if a data call is set up */ - -#ifdef FF_WAP - { - T_MFW_CM_CALL_STAT stat; - UBYTE ton; - UBYTE mode; - - cm_search_callStat(*cid, &stat, &ton, &mode); - - if (mode == DATA_CALL) - { - AUI_wap_call_connect(*cid); - } - } -#endif - - /* set the outcall ID */ - call_data.outCall = *cid; - call_data.call_direction = MFW_CM_MOC; - - /* set local pointer to number from outgoing call data */ -// Sep 01, 2006 REF:OMAPS00090555 x0039928 - v_Number = (char*)(outgoing_call_data->number); - - TRACE_EVENT_P1("(char*)outgoing_call_data.number: %s", outgoing_call_data->number); - - /* Check whether the dialled number appears in the phonebook and set the - * status information if it does - */ - if (cm_check_emergency((UBYTE*)v_Number) == TRUE) - { - call_data.emergencyCall = TRUE; - } - - /* SPR#1700 - DS - If call is a SAT call and the SIM has supplied an alpha identifier then - * do not overwrite with name/number. Label already setup for SAT calls in function call(). - */ - if (call_SATCall == TRUE) - { - //Ensure calling string is NULL terminated - call_data.phbNameNumber[sizeof(call_data.phbNameNumber)-1] = 0; - } - //x0pleela 03 Nov, 2006 DR: OMAPS000101158 - //check the value of uOthersrc - //If the value is not set then do the phone book search operation - //Else do not perform phone book search operation - //this is to avoid stack overflow probelm when the source id is not LOCAL - if(!mfw_get_OtherSrc_Value()) - { -#ifdef NO_ASCIIZ - // else //x0pleela 03 Nov, 2006 DR: OMAPS000101158 - if ((bookFindNameInSDNPhonebook(v_Number, &phb_entry) == 1) && (phb_entry.name.len != 0) ) - { - memcpy(call_data.phbNameNumber, (char*)phb_entry.name.data, sizeof(call_data.phbNameNumber)-1); - call_data.phbNameNumber[sizeof(call_data.phbNameNumber)-1] = 0; - } - else if(bookFindNameInPhonebook(v_Number, &phb_entry) == 1 && (phb_entry.name.len != 0) ) - { - memcpy(call_data.phbNameNumber, (char*)phb_entry.name.data, sizeof(call_data.phbNameNumber)-1); - call_data.phbNameNumber[sizeof(call_data.phbNameNumber)-1] = 0; - } -#else - else if ( (bookFindNameInSDNPhonebook(v_Number, &phb_entry) == 1) && (phb_entry.name[0] != 0) ) - { - memcpy(call_data.phbNameNumber, (char*)phb_entry.name, sizeof(call_data.phbNameNumber)-1); - call_data.phbNameNumber[sizeof(call_data.phbNameNumber)-1] = 0; - } - else if(bookFindNameInPhonebook(v_Number, &phb_entry) == 1 && (phb_entry.name[0] != 0) ) - { - memcpy(call_data.phbNameNumber, (char*)phb_entry.name, sizeof(call_data.phbNameNumber)-1); - call_data.phbNameNumber[sizeof(call_data.phbNameNumber)-1] = 0; - } -#endif - else - { - memcpy(call_data.phbNameNumber,v_Number, sizeof(call_data.phbNameNumber)-1); - /*MC, SPR 1257, merge from 3.3.3*/ - /* Marcus: Issue 987: 18/09/2002: Ensured call_data.phbNameNumber null terminated */ - call_data.phbNameNumber[sizeof(call_data.phbNameNumber)-1] = 0; - /*MC end*/ -// Sep 01, 2006 REF:OMAPS00090555 x0039928 - if ( (outgoing_call_data->ton == MFW_TON_INTERNATIONAL) && ( - outgoing_call_data->number[0] != '+') ) - { - char InterNat_Plus[EDITOR_SIZE]; /* NDH : This should NOT be static!& the size is determined by calldata.phbNameNumber */ - - TRACE_EVENT("International Call Required!"); - // API - 826 - Create a buffer and a plus to the start of the buffer then add the out going number - strcpy(InterNat_Plus, "+"); - mfwStrncpy(&InterNat_Plus[1], call_data.phbNameNumber, sizeof(InterNat_Plus)-1); - - memcpy(call_data.phbNameNumber, (char*)InterNat_Plus, sizeof(call_data.phbNameNumber)); - } - } - } - - //x0pleela 03 Nov, 2006 DR: OMAPS000101158 - //check the value of uOthersrc - //If the value is set then reset it to FALSE - if(mfw_get_OtherSrc_Value()) - mfw_set_OtherSrc_Value(FALSE); - - if (call_SATCall == TRUE) - { - TRACE_EVENT ("SAT_CALL_DIALOG"); - // Marcus: Issue 1057: 21/01/2003: Removed: call_SATCall = FALSE; - - /* create the outgoing call dialog */ - call_calling_show(MMI_OUTGOING_CALL_DIALOG_SAT); - - } - else - { - TRACE_EVENT ("NORMAL_CALL_DIALOG"); - - /* create the outgoing call dialog */ - call_calling_show(MMI_OUTGOING_CALL_DIALOG_NORMAL); - } - } - break; - case E_CM_TIMER_EVERY_SECOND: - TRACE_EVENT("EVERY_SECOND"); - refreshCallTimer(); - cm_get_aoc_value(CM_AOC_CCM,&call_data.aocInfo); - - TRACE_EVENT_P1("winIsFocussed(call_data.win) %d",winIsFocussed(call_data.win)); - - /* SPR#1602 - SH - Uncomment check to see if window is focussed */ - // Oct 27, 2004 REF: CRR MMI-SPR-15632 xnkulkar - // Description: SMS : class 2 and 3 SMSMT : icon not displayed when 2 active calls - // Fix: condition "call_data.calls.mode == CallSingle" is removed to make the sms icon visible - // even if there are more than one calls present. - if (winIsFocussed(call_data.win) - //x0pleela 27 Mar, 2007 ER: OMAPS00122561 -#ifdef FF_PHONE_LOCK - || ((!phlock_win_handle) || (mmiPinsEmergencyCall())) -#endif //FF_PHONE_LOCK - ) - winShow(call_data.win); - break; - case E_CM_CPI: - { - T_DISPLAY_DATA display_info; /* cq11676: User Busy indication for E plus. 10-02-04 MZ */ - cmCpi = (T_MFW_CM_CPI*)para; - TRACE_EVENT_P5("callCmEvent - CPI : Call No %d, type %d, InBand %d, TCh %d, Cause 0x%4x ", - cmCpi->call_number, - cmCpi->type, - cmCpi->inband, - cmCpi->tch, - cmCpi ->cause); - - if (cmCpi->type == CPI_TYPE_ALERT)/*a0393213 lint warnings removal - CPI_MSG_Alert changed to CPI_TYPE_ALERT*/ - { - if (!cmCpi->inband) - { - -/* RAVI - 20-1-2006 */ -/* Silent Implementation */ -#ifdef NEPTUNE_BOARD -#ifdef FF_MMI_RINGTONE - audio_PlaySoundID(AUDIO_MICROPHONE, CALLTONE_SELECT, 0, AUDIO_PLAY_INFINITE); -#else - audio_PlaySoundID( AUDIO_MICROPHONE, TONES_RINGING_TONE, - getCurrentVoulmeSettings(), AUDIO_PLAY_INFINITE); -#endif -#else - /* Testcase 26.8.x - generated internal alert */ - audio_PlaySoundID(AUDIO_MICROPHONE, TONES_RINGING_TONE, 0, AUDIO_PLAY_INFINITE); -#endif - LocalRing = TRUE; - } - else if (LocalRing) - { -#ifdef FF_MMI_RINGTONE /* Stop MSL */ - audio_StopSoundbyID(AUDIO_MICROPHONE , CALLTONE_SELECT); -#else - audio_StopSoundbyID(AUDIO_MICROPHONE ,TONES_RINGING_TONE); -#endif - LocalRing = FALSE; - } - - } - else if ((cmCpi->type == CPI_TYPE_SYNC) && (cmCpi->tch)) /*a0393213 lint warnings removal - CPI_MSG_Sync changed to CPI_TYPE_SYNC*/ - { - /* - ** check whether this is an incoming call from Idle, as the Vocoder should not be disabled if - ** we are already in a call, or if Late Traffic Channel assignment has caused the channel to be - ** assigned after the call has been accepted. - */ - if (call_data.vocoderState == CALL_VOCODER_IDLE) - { - /* - ** A the Traffic Channel is assigned the Vocoder will have been turned on by Layer1. - ** Disable the Vocoder, so that an E2 Melody can be played - */ - mfw_aud_l1_disable_vocoder(); - - call_data.vocoderState = CALL_VOCODER_DISABLED; - } - - } - else if((cmCpi->type == CPI_TYPE_DISC) && (cmCpi->inband)) /*a0393213 lint warnings removal - CPI_MSG_Disc changed to CPI_TYPE_DISC*/ - { - /* cq11676: Display the Number busy indication on receiving the Disconnect cause and allow user to stay in calling screen - untill the final Traffic channel Release indication has been received. Specific for E+ network. 17-02-04 MZ */ - -#ifdef FF_2TO1_PS - if ( cmCpi->cause == CAUSE_NWCC_USER_BUSY) -#else - if ( cmCpi->cause == M_CC_CAUSE_USER_BUSY) -#endif - { - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtNumberBusy, TxtNull, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_LEFT ); - info_dialog(idle_get_window(), &display_info); - } - - } - } - break; - /*MC SPR 1392, call deflection status*/ - case E_CM_CALL_DEFLECT_STATUS: - { BOOL* result = para; - T_DISPLAY_DATA display_info; - - - if (*result == TRUE)/*If call deflection was successful*/ - { - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtCallDeflection, TxtDone, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_LEFT ); - } - else/*if call deflection failed*/ - { - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtCallDeflection, TxtFailed, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_LEFT ); - } - /*Show dialog*/ - info_dialog(idle_get_window(), &display_info); - /*destroy the call deflection windows and the call windows if no active call*/ - deflect_destroy(TRUE); - - } - break; - /* Marcus: CCBS: 14/11/2002: Start */ - case E_CM_CCBS: - TRACE_EVENT("E_CM_CCBS"); - call_cm_ccbs_event((T_MFW_CM_CCBS_INFO *) para); - break; - /* Marcus: CCBS: 14/11/2002: End */ - - /* SPR#1352 - SH - TTY */ -#ifdef MMI_TTY_ENABLED - case E_CM_CTYI: - cmCTYI = (T_MFW_CM_CTYI*)para; - switch (cmCTYI->neg) - { - case CTYI_REJECT: - TRACE_EVENT("CTYI REJECT"); - /* TTY rejected, switch it off */ - - call_tty_set(CALL_TTY_OFF); - call_tty_statuswin(); - break; - case CTYI_GRANT: - TRACE_EVENT("CTYI GRANT"); - /* If user has set "always on", then set that status. - * Otherwise, we're just switching on TTY for the next - * call */ - - if (FFS_flashData.ttyAlwaysOn) - call_tty_set(CALL_TTY_ALWAYSON); - else - call_tty_set(CALL_TTY_ONNEXTCALL); - - call_tty_statuswin(); - break; - } - break; -#endif - /* end SH */ - - default: - return 0; - } - return 1; -} - - - -#if(0) /* x0039928 - Commented for lint warning removal */ -/******************************************************************************* - - $Function: callWaitingAnswerKeyEvent - - $Description: - - $Returns: 1, processed, 0 ignored - - $Arguments: event and parameter - -*******************************************************************************/ - -static int callWaitingAnswerKeyEvent (MfwEvt e, MfwKbd *k) -{ - TRACE_FUNCTION("callWaitingAnswerKeyEvent"); - switch (k->code) - { - - case KCD_LEFT: - cm_command_abort(call_data.current_command); - break; - default: - break; - } - return 1; -} - -#endif - - - -/******************************************************************************* - - $Function: showDefault - - $Description: common display content - - $Returns: - - $Arguments: - -*******************************************************************************/ - - - -static void showDefault (void) -{ - dspl_ClearAll(); - GlobalIconStatus = GlobalSignalIconFlag | GlobalBatteryIconFlag - | GlobalSMSIconFlag| GlobalVoiceMailIconFlag - | GlobalCallForwardingIconFlag| GlobalKeyplockIconFlag - | GlobalRingerIconFlag | GlobalRingVibrIconFlag - | GlobalVibratorIconFlag | GlobalAlarmIconFlag - | GlobalSilentRingerIconFlag|GlobalCipheringActivIconFlag - | GlobalCipheringDeactivIconFlag - /* SH 18/01/02. Flag for GPRS On icon. - Note: Homezone icon not displayed during call. */ - #ifdef MMI_GPRS_ENABLED - | GlobalGPRSOnIconFlag - #endif - /* SPR#1352 - SH - Flag for TTY icon */ - #ifdef MMI_TTY_ENABLED - | GlobalTTYIconFlag - #endif - /* SH end */ - ; - iconsShow(); -} - - - - - - - -#if(0) /* x0039928 - Lint warning fix */ -/******************************************************************************* - - $Function: showSelectPrivateCall - - $Description: multiparty private call handling - - $Returns: - - $Arguments: - -*******************************************************************************/ -// define position we will display number/name of caller -#define CALLID_NUM_XPOS (35) -// define number of chars that can be displayed (at this position) -#define STR_DISPLAY_NCHAR ((SCREEN_SIZE_X-CALLID_NUM_XPOS)/6) - - -static void showSelectPrivateCall(void){ - - - int i = 0; - char stat; - char line[MAX_LINE]; - char tag[MAX_CHAR]; - int topLine; - TRACE_FUNCTION("showSelectPrivateCall"); - - showDefault(); - memset(tag,'\0',sizeof(tag)); - if (call_data.calls.numCalls 0) - { - resources_truncate_to_screen_width((char*)call_data.calls.status[i].name.data,call_data.calls.status[i].name.len ,(char*)tag,MAX_CHAR-2, SCREEN_SIZE_X,FALSE); - } -/*MC end*/ -#else - if (strlen((char*)call_data.calls.status[i].name) > 0) - { - resources_truncate_to_screen_width(call_data.calls.status[i].name,0 ,(char*)tag,MAX_CHAR-2, SCREEN_SIZE_X,FALSE); - } -#endif - else - if (strlen((char*)call_data.calls.status[i].number) > 0) - { - resources_truncate_to_screen_width((char*)call_data.calls.status[i].number,0 ,(char*)tag,MAX_CHAR-2, SCREEN_SIZE_X,FALSE); - } - else - { - resources_truncate_to_screen_width(GET_TEXT(TxtSoftCall),0 ,(char*)tag,MAX_CHAR-2, SCREEN_SIZE_X,TRUE); - } - if (i==callIndex(call_data.calls.selected)) - dspl_TextOut(CALLINFO_X_TAGPOS,(USHORT)(topLine+Mmi_layout_line_height()*i), DSPL_TXTATTR_INVERS, tag); - else - dspl_TextOut(CALLINFO_X_TAGPOS,(USHORT)(topLine+Mmi_layout_line_height()*i), 0, tag); - } - displaySoftKeys(TxtSoftSelect,TxtEnd); -} - - - -/******************************************************************************* - - $Function: showWaitingAnswer - - $Description: - - $Returns: - - $Arguments: - -*******************************************************************************/ - - -static void showWaitingAnswer(void){ - - - TRACE_FUNCTION("showWaitingAnswer"); - showDefault(); - PROMPT(TXTMESSAGE_X, Mmi_layout_line(2), 0, TxtPleaseWait); - displaySoftKeys(TxtCancel,'\0'); -} - -#endif - -/******************************************************************************* - - $Function: showSendingDTMF - - $Description: displays sending DTMF - - $Returns: - - $Arguments: - -*******************************************************************************/ - - -void showSendingDTMF(void){ - - - TRACE_FUNCTION("showSendingDTMF"); - showDefault(); - PROMPT(TXTMESSAGE_X, Mmi_layout_line(2), 0, TxtSendingDTMF); - displaySoftKeys(TxtCancel,'\0'); -} - - - - - -/******************************************************************************* - - $Function: showInformation - - $Description: - - $Returns: - - $Arguments: - -*******************************************************************************/ - - -void showInformation(void){ - - - TRACE_FUNCTION("showInformation"); - showDefault(); - dspl_TextOut(24, 16, 0, callInformation); -} - - - - - -/******************************************************************************* - - $Function: callSetMode - - $Description: - - $Returns: - - $Arguments: - -*******************************************************************************/ - -static void callSetMode (int mode, BOOL dialogDisp){ - - T_DISPLAY_DATA display_info; - - - - switch (mode){ - case ViewConnect: - if (call_data.calls.numCalls) - { - call_data.refreshConnect = 1; - call_data.calls.view = ViewConnect; - } - else - { /*SPR 1392, check for valid incoming call ID rather than existence of incoming - call window. During the setting up of call deflection, the incoming call screen doesn't exist*/ - if ((!call_data.incCall) && (!call_data.win_calling)&&(call_data.win)) - call_destroy(call_data.win); - return; - } - break; - case ViewMenu: - call_data.calls.view = ViewMenu; - break; - case ViewEnd: - { - T_MFW_CM_AOC_INFO aoc_info; - - TRACE_EVENT(" Call ended read the AOC again"); - - // this is used for the "last charge" - cm_get_aoc_value(CM_AOC_ACM, &aoc_info); - - if ( aoc_info.acm > acm_last_call ) - { - //for the last charge - acm_last_call = aoc_info.acm - acm_last_call; - } - else - { - TRACE_EVENT(" ACM value didnt change"); - } - - - memset(line,'\0',sizeof(line)); - if (InCallTimer == TRUE) - getTimeString(call_data.timeEnded,(char*)line); - setLastCallDuration(call_data.timeEnded, call_data.call_direction); - - if (dialogDisp) - { - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtCallEnded, TxtNull, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)call_ending_cb, THREE_SECS, KEY_CLEAR ); - - /* - * Call Info Screen - */ - call_data.win_ending = info_dialog (call_data.win, &display_info); - } - } - break; - case ViewAutoRedial: - memset(line,'\0',sizeof(line)); - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtCancel, TxtAutoredial, TxtNull, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)callAutoRedialKeyEvent, FOREVER, KEY_RIGHT|KEY_CLEAR|KEY_HUP ); - display_info.TextString2 = (char*)call_data.phbNameNumber; - - call_data.win_redial = info_dialog (call_data.win, &display_info); - break; - default: - break; - } - - - switch (mode) - { - case ViewDTMF: - call_data.calls.view = ViewDTMF; - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - call_data.editorAttrDTMF.cursor = ED_CURSOR_BAR; -#else /* NEW_EDITOR */ - call_data.edtAttrDTMF.mode = edtCurBar1; -#endif /* NEW_EDITOR */ - break; - - case ViewScratchPad: - call_data.calls.view = ViewScratchPad; - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - call_data.editorAttrDTMF.cursor = ED_CURSOR_BAR; -#else /* NEW_EDITOR */ - call_data.edtAttrDTMF.mode = edtCurBar1; -#endif /* NEW_EDITOR */ - break; - - case ViewSelectPrivateCall: - call_data.calls.view = ViewSelectPrivateCall; - break; - - - //GW Added - case ViewShortWait: - dlg_initDisplayData_TextId( &display_info, TxtCancel, TxtNull, TxtPleaseWait, TxtNull, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)call_waiting_answer_cb, ONE_SECS, KEY_LEFT ); - display_info.TextString2 = (char*)line; - call_data.win_waiting = info_dialog (call_data.win, &display_info); - break; - - case ViewWaitingAnswer: - dlg_initDisplayData_TextId( &display_info, TxtCancel, TxtNull, TxtPleaseWait, TxtNull, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)call_waiting_answer_cb, FOREVER, KEY_LEFT ); - display_info.TextString2 = NULL; - call_data.win_waiting = info_dialog (call_data.win, &display_info); - break; - - case ViewSendingDTMF: - dlg_initDisplayData_TextId( &display_info, TxtCancel, TxtNull, TxtSendingDTMF, TxtNull, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)call_sending_dtmf_cb, FOREVER, KEY_LEFT ); - display_info.TextString2 = (char*)line; - call_data.win_sending_dtmf = info_dialog (call_data.win, &display_info); - break; - default: - break; - } - winShow(call_data.win); -} - - - - - - -/******************************************************************************* - - $Function: contactsExec - - $Description: - - $Returns: - - $Arguments: - -*******************************************************************************/ - -static int contactsExec(MfwMnu* m, MfwMnuItem* i) -{ - - // T_MFW_HND win = mfwParent(mfw_header()); // RAVI -// T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; // RAVI - // T_call_menu * data = (T_call_menu *)win_data->user; // RAVI - - - bookPhonebookStart(call_data.win,PhbkNormal); - return 1; - -} - -//May 27, 2004 REF: CRR 19186 Deepa M.D -/******************************************************************************* - - $Function: M_exeSetting - - $Description: This function is called when the user press "Settings" in the - Active call "options" screen.This function creates and displays the - SMS Settings menu in an active call screen. - - $Returns: Execution status - - $Arguments: m - menu handler - i - Menu item selected - -*******************************************************************************/ - -static int M_exeSetting(MfwMnu* m, MfwMnuItem* i) -{ - -// T_MFW_HND win = mfwParent(mfw_header()); // RAVI -// T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; // RAVI -// T_call_menu * data = (T_call_menu *)win_data->user; // RAVI - TRACE_FUNCTION("M_exeSetting"); - - /* Create the SMS Setting menu*/ - bookMenuStart(call_data.win, settingMenuAttributes(),0); - - return 1; -} - - -//August 24 2004 e-armanetsaid added for camera driver test purposes -// Feb 13, 2006 REF:DR OMAPS00067943 x0039928 -// Fix : The Menu function M_exeViewfinder is renamed to M_exeApplication -/******************************************************************************* - - $Function: M_exeApplication - - $Description: This function is called when the user press "Application" in the - Active call "options" screen.This function creates and displays the - Application menu in an active call screen. - - $Returns: Execution status - - $Arguments: m - menu handler - i - Menu item selected - -*******************************************************************************/ - -static int M_exeApplication(MfwMnu* m, MfwMnuItem* i) -{ - - // T_MFW_HND win = mfwParent(mfw_header()); // RAVI - // T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; // RAVI -// T_call_menu * data = (T_call_menu *)win_data->user; // RAVI - TRACE_FUNCTION("M_exeSetting"); - - /* Create the Application menu*/ - bookMenuStart(call_data.win, applicationsMenuAttributes(),0); - - return 1; -} - -/******************************************************************************* - - $Function: holdExec - - $Description: - - $Returns: - - $Arguments: - -*******************************************************************************/ - -static int holdExec(MfwMnu* m, MfwMnuItem* i){ - - TRACE_FUNCTION("holdExec"); - switch (call_data.calls.mode){ - case CallSingle: - case CallTwo: - // Oct 07, 2004 REF: CRR MMI-FIX-24440 xnkulkar - // callIndex function is used instead of directly using status[call_data.calls.selected] - if (call_data.calls.status[callIndex(call_data.calls.selected)].stat == CALL_HELD) - { - cm_command(call_data.calls.selected, CM_RETRIEVE, '\0'); - call_data.current_command = CM_RETRIEVE; - } - else - { - cm_command(call_data.calls.selected, CM_HOLD,'\0' ); - call_data.current_command = CM_HOLD; - } - callSetMode(ViewWaitingAnswer, TRUE); - break; - case CallConference: - // Oct 07, 2004 REF: CRR MMI-FIX-24440 xnkulkar - // callIndex function is used instead of directly using status[call_data.calls.selected] - if (call_data.calls.status[callIndex(call_data.calls.selected)].stat == CALL_HELD) - { - cm_command(call_data.calls.selected, CM_RETRIEVE_MULTIPARTY, '\0'); - call_data.current_command = CM_RETRIEVE_MULTIPARTY; - } - else - { - cm_command(call_data.calls.selected, CM_HOLD_MULTIPARTY, '\0'); - call_data.current_command = CM_HOLD_MULTIPARTY; - } - callSetMode(ViewWaitingAnswer, TRUE); - break; - case CallMultipartySingle: - case CallSingleMultiparty: - default: - break; - } - return 1; -} - -/******************************************************************************* - - $Function: muteExec - - $Description: - - $Returns: - - $Arguments: - -*******************************************************************************/ - -static int muteExec(MfwMnu* m, MfwMnuItem* i){ - - T_MFW_HND win = mfwParent(mfw_header()); -// T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data; //RAVI -// T_call_menu *data = (T_call_menu *)win_data->user; // RAVI - - if (call_data.calls.muted) - { - if (audio_SetMute(AUDIO_MICROPHONE, AUDIO_MUTING_OFF) == DRV_OK) - { - call_data.calls.muted = false; - menuCallSingleItems[2].str = (char*)TxtMute; - } - } - else - { - if (audio_SetMute(AUDIO_MICROPHONE, AUDIO_MUTING_ON) == DRV_OK) - { - call_data.calls.muted = true; - menuCallSingleItems[2].str = (char*)TxtUnmute; - } - } - - call_menu_destroy(win); - call_data.win_menu = 0; - return 1; -} - -/******************************************************************************* - - $Function: scratchPadExec - - $Description: - - $Returns: - - $Arguments: - -*******************************************************************************/ - -static int scratchPadExec(MfwMnu* m, MfwMnuItem* i){ - - T_MFW_HND win = mfwParent(mfw_header()); -// T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; -// T_call_menu * data = (T_call_menu *)win_data->user; - - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - call_scratchpad_start(win,ctrlBack,ViewScratchPad, 0); -#else - call_scratchpad_start(win,ecBack,ViewScratchPad, 0); -#endif - return 1; -} - -/******************************************************************************* - - $Function: mainMenuExec - - $Description: - - $Returns: - - $Arguments: - -*******************************************************************************/ - -static int mainMenuExec(MfwMnu* m, MfwMnuItem* i){ - -//JVJE menuEnter(); - return 1; - -} - -/******************************************************************************* - - $Function: startConferenceExec - - $Description: - - $Returns: - - $Arguments: - -*******************************************************************************/ - -static int startConferenceExec(MfwMnu* m, MfwMnuItem* i){ - - cm_command(0,CM_BUILD_MULTIPARTY,'\0'); - call_data.current_command = CM_BUILD_MULTIPARTY; - callSetMode(ViewWaitingAnswer, TRUE); - return 0; - -} - -/******************************************************************************* - - $Function: privateStartAddConferenceExec - - $Description: - - $Returns: - - $Arguments: - -*******************************************************************************/ - -static int privateStartAddConferenceExec(MfwMnu* m, MfwMnuItem* i){ - - switch(call_data.calls.mode){ - case CallConference: - cm_command(call_data.calls.selected,CM_SPLIT_MULTIPARTY,'\0'); - callSetMode(ViewShortWait, TRUE); - break; - case CallMultipartySingle : - case CallSingleMultiparty : - case CallTwo: - TRACE_EVENT("call to BUILD_MULTIPARTY------------------------------------"); - cm_command(0,CM_BUILD_MULTIPARTY,'\0'); - call_data.current_command = CM_BUILD_MULTIPARTY; - callSetMode(ViewWaitingAnswer, TRUE); - break; - default: - break; - } - return 1; - -} - - - - -/******************************************************************************* - - $Function: swapExec - - $Description: - - $Returns: - - $Arguments: - -*******************************************************************************/ - -static int swapExec(MfwMnu* m, MfwMnuItem* i){ - - switch(call_data.calls.mode){ - case CallSingleMultiparty : - case CallMultipartySingle : - - cm_command(0,CM_SWAP_MULTIPARTY, '\0'); - call_data.current_command = CM_SWAP_MULTIPARTY; - callSetMode(ViewWaitingAnswer, TRUE); - break; - case CallTwo: - cm_command(call_data.calls.selected,CM_SWAP, '\0'); - call_data.current_command = CM_SWAP; - callSetMode(ViewWaitingAnswer, TRUE); - break; - default: - break; - } - return 1; -} - -/******************************************************************************* - - $Function: endAllExec - - $Description: - - $Returns: - - $Arguments: - -*******************************************************************************/ - -static int endAllExec(MfwMnu* m, MfwMnuItem* i){ - - cm_end_all(); - - return 1; - -} - -// Apr 26 2006, a0393213 (Prabakar R), OMAPS00074886 : No option in MMI to release the held call. -// Handler for "End held" menu item added - -/******************************************************************************* - - $Function: endHeldExec - - $Description: when "End held" menu option is pressed, this function is called - - $Returns: 1 for success 0 for failure - - $Arguments: not used - -*******************************************************************************/ - -static int endHeldExec(MfwMnu* m, MfwMnuItem* i){ - - cm_end_held(); - - return 1; - -} - - -/******************************************************************************* - - $Function: endConferenceExec - - $Description: - - $Returns: - - $Arguments: - -*******************************************************************************/ - -static int endConferenceExec(MfwMnu* m, MfwMnuItem* i){ - - cm_disconnect(0); - - return 1; - -} - - - -/******************************************************************************* - - $Function: transferExec - - $Description: - - $Returns: - - $Arguments: - -*******************************************************************************/ -/* x0039928 - Commented for lint warning removal */ -/* -static int transferExec(MfwMnu* m, MfwMnuItem* i){ - - cm_command(0,CM_ETC,'\0'); - call_data.current_command = CM_ETC; - callSetMode(ViewWaitingAnswer, TRUE); - return 1; - -} -*/ - - - -/******************************************************************************* - - $Function: removeCall - - $Description: removes a managed call - - $Returns: - - $Arguments: call id - -*******************************************************************************/ - - - -// May 9, 2006 REF:DR OMAPS00074884 xrashmic -int removeCall(SHORT cid, BOOL dialogDisp, BOOL allCallsEnded) -{ - int i; - TYPEQUEUE* first; - - TRACE_EVENT_P1("Remove call %d",cid); - if (!call_data.accessEnd){ - TRACE_EVENT("not access end"); - first = call_data.endQueue; - while (call_data.endQueue){ - call_data.endQueue = call_data.endQueue->next; - } - call_data.endQueue = (TYPEQUEUE*)ALLOC_MEMORY(sizeof(TYPEQUEUE)); - call_data.endQueue->call_number = cid; - call_data.endQueue->next = 0; - if (first) call_data.endQueue = first; - return 0; - } - if (call_data.endQueue){ - first = call_data.endQueue->next; - FREE_MEMORY( (void *)call_data.endQueue, sizeof(TYPEQUEUE)); - call_data.endQueue = first; - } - call_data.accessEnd = FALSE; - call_data.timeEnded = call_data.calls.time[callIndex(cid)]; - - call_data.call_direction = call_data.calls.status[callIndex(cid)].call_direction; - call_data.calls.status[callIndex(cid)].call_direction = MFW_CM_INV_DIR; - - for (i = 0; i < MAX_CALLS; i++) - { - if (call_data.calls.status[i].call_number == cid) - call_data.calls.status[i].call_number = 0; - - if (i < (MAX_CALLS -1)) - { - if (call_data.calls.status[i].call_number == 0 && call_data.calls.status[i+1].call_number != 0) - { - call_data.calls.status[i] = call_data.calls.status[i+1]; - call_data.calls.time[i] = call_data.calls.time[i+1]; - call_data.calls.status[i+1].call_number = 0; - call_data.calls.status[i+1].call_direction = MFW_CM_INV_DIR; - } - } - } - - if (call_data.calls.numCalls > 0) - call_data.calls.numCalls--; - - if (call_data.calls.selected == cid) - call_data.calls.selected = 0; - - if (call_data.calls.numCalls ==1) - call_data.calls.mode = CallSingle; - - if (call_data.calls.mode == CallSingleMultiparty) - call_data.calls.mode = CallConference; - - if (call_data.singleCall == cid) - call_data.singleCall = 0; - // May 9, 2006 REF:DR OMAPS00074884 xrashmic - // When removing calls one by one from removeAllCalls, rebuild calls should not be called - if (call_data.calls.numCalls && (allCallsEnded==FALSE)) - rebuildCalls(); - else - { - resetDTMFQueue(); /*OMAPS00107103 a0393213(R.Prabakar) - The DTMF queue is flushed once the call is ended*/ - call_data.vocoderState = CALL_VOCODER_IDLE; - } - - callSetMode(ViewEnd, dialogDisp); - return 1; -} - - -/******************************************************************************* - - $Function: removeAllCalls - - $Description: removes a managed call - - $Returns: - - $Arguments: call id - -*******************************************************************************/ - - - - -int removeAllCalls(void) -{ - int i; - int j = 0; - - TRACE_FUNCTION("removeAllCalls()"); - - for (i=0; i= MAX_CALLS) - return 0; - if (call_data.calls.status[call_data.calls.numCalls].call_number != 0) - return 0; -#ifdef NO_ASCIIZ -{ - /*a0393213 lint warning:access beyond array soln:memcpy changed to mfwStrncpy*/ - mfwStrncpy((char*)call_data.calls.status[call_data.calls.numCalls].name.data, - (char*)call_data.phbNameNumber, - sizeof(call_data.calls.status[call_data.calls.numCalls].name.data)); - call_data.calls.status[call_data.calls.numCalls].name.len = - dspl_str_length(call_data.phbNameNumber); - /* Marcus: Issue 987: 18/09/2002: End */ - /*MC end*/ -} -#else - - strncpy((char*)call_data.calls.status[call_data.calls.numCalls].name, - (char*)call_data.phbNameNumber,sizeof(call_data.calls.status[call_data.calls.numCalls].name)); -#endif - getCallStatus(cid, &call_data.calls.status[call_data.calls.numCalls]); - call_data.calls.time[call_data.calls.numCalls] = 0; - call_data.calls.numCalls++; - call_data.calls.selected = cid; - switch (call_data.calls.mode){ - case CallSingle: - if (call_data.calls.numCalls > 1) - call_data.calls.mode = CallTwo; - break; - case CallConference: - call_data.singleCall = cid; - call_data.calls.mode = CallSingleMultiparty; - break; - default: - if (call_data.calls.numCalls == 1) - call_data.calls.mode = CallSingle; - break; - } - rebuildCalls(); - return 1; -} - -/******************************************************************************* - - $Function: callIndex - - $Description: - - $Returns: returns the cm call id - - $Arguments: call id - -*******************************************************************************/ - - -int callIndex(SHORT cid) { - -int i; - - for (i = 0; i < MAX_CALLS; i++) { - if (call_data.calls.status[i].call_number == cid) - return i; - } - return MAX_CALLS; -} - -/******************************************************************************* - - $Function: callConnect - - $Description: - - $Returns: - - $Arguments: call id - -*******************************************************************************/ - - - -void callConnect(SHORT cid){ - - TRACE_FUNCTION("Call Connect"); - addCall(cid); - callSetMode(ViewConnect, TRUE); - -} - -/******************************************************************************* - - $Function: callNumber - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - -void callNumber(UBYTE *number) -{ - T_MFW res; -// T_MFW_PHB_ENTRY phb_entry; // RAVI - T_MFW_SS_RETURN ssRes; - char edt_buf_prov[EDITOR_SIZE]; - -TRACE_FUNCTION("callnumber()"); -// Jun 02, 2006 DRT OMAPS00079213 x0039928(sumanth) -// Fix: Hook is registered for the first call when an outgoing call is done. -#ifdef FF_MMI_AUDIO_PROFILE -// Aug 17, 2006 REF:OMAPS00090196 x0039928 -#ifdef MMI_TTY_ENABLED -if(FFS_flashData.ttyAlwaysOn == FALSE && call_data.tty == CALL_TTY_OFF) -#endif - mfw_hook_register(); -#endif - - call_data.emergencyCall = FALSE; - - mfwStrncpy((char*)edt_buf_prov,(char*)number, EDITOR_SIZE); - ssRes = ss_check_ss_string((UBYTE*)edt_buf_prov); - - switch (ssRes) - { - case MFW_SS_USSD: - case MFW_SS_SIM_LOCK: - case MFW_SS_REG_PW: - case MFW_SS_CF: - case MFW_SS_CB: - case MFW_SS_CLIR: - case MFW_SS_CLIP: - case MFW_SS_COLR: - case MFW_SS_COLP: - case MFW_SS_WAIT: - case MFW_SS_HOLD: - - case MFW_SS_SIM_REG_PW: - case MFW_SS_SIM_UNBLCK_PIN: - case MFW_SS_MMI: - res = cm_mo_call((UBYTE*)number, VOICE_CALL); - switch(res) - { - //xvilliva 21421 - We flash an alert "Invalid Request" to user as Line1 - //is locked and CF interrogation is done for line2. - case CM_ALS_ERR: - info_screen(0, TxtNotImplemented, TxtNull, NULL); - break; - } - return; /* Handled on # */ - /*MC 12/04/02*/ - case MFW_SS_ECT: - TRACE_EVENT("Recognised ECT string"); - cm_mo_call((UBYTE*)number, VOICE_CALL); - return; /* Handled on # */ - case MFW_SS_CCBS: - TRACE_EVENT("Recognised CCBS string"); - cm_mo_call((UBYTE*)number, VOICE_CALL); - return; - case MFW_SS_DIAL: - case MFW_SS_DIAL_IDX: - case MFW_SS_DTMF: - case MFW_SS_UNKNOWN: - default: - break; /* Remove #, it will be added later on again */ - } - - res = cm_mo_call((UBYTE*)number, VOICE_CALL); - switch (res){ - case CM_OK : - TRACE_EVENT("call OK"); - break; - case CM_EC: - call_data.emergencyCall = TRUE; - break; - case CM_BLACKLIST: - TRACE_EVENT("number blacklisted now"); - /*NM, p018*/ - if (call_data.win) - bookShowInformation(call_data.win,Txtblacklisted,NULL,(T_VOID_FUNC)call_failure_cb); - break; - case CM_SIM: - case CM_SS : - case CM_MMI: - case CM_USSD: - return; -// break; //RAVI - //GW-SPR#1035 - Added from SAT changes baseline - case CM_CFDN_ERR: - case CM_CBDN_ERR: - TRACE_EVENT("MO-Call blocked by FDN or BDN"); - info_screen(0, TxtCallBlocked, TxtNull, NULL); - break; - default: - TRACE_FUNCTION("call not OK"); - //check if call ended because ACM>=ACMMAX - { -// Sep 01, 2006 REF:OMAPS00090555 x0039928 -// Fix: Memory for aocInfo is allocated fron heap instead of stack if flag FF_MMI_PB_OPTIM is defined - #ifdef FF_MMI_PB_OPTIM - T_MFW_CM_AOC_INFO* aocInfo; - aocInfo = (T_MFW_CM_AOC_INFO*)ALLOC_MEMORY(sizeof(T_MFW_CM_AOC_INFO)); - #else - T_MFW_CM_AOC_INFO aocInfo; - #endif - - #ifdef FF_MMI_PB_OPTIM - cm_get_aoc_value(CM_AOC_ACMMAX,aocInfo); - cm_get_aoc_value(CM_AOC_ACM,aocInfo); - if((aocInfo->acm >= aocInfo->acm_max) && - ( aocInfo->acm_max > 0)) - #else - cm_get_aoc_value(CM_AOC_ACMMAX,&aocInfo); - - //Get ACM and ACMMAX - cm_get_aoc_value(CM_AOC_ACM,&aocInfo); - - //display "No Credit" to user - if((aocInfo.acm >= aocInfo.acm_max) && - ( aocInfo.acm_max > 0)) - #endif - { T_DISPLAY_DATA display_info; - /* SPR2500, initialise info dialogue correctly*/ - dlg_initDisplayData_TextId(&display_info, TxtSoftOK, NULL, TxtNo, TxtCredit, COLOUR_STATUS); - dlg_initDisplayData_events(&display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_LEFT | KEY_RIGHT); - - TRACE_EVENT("acm_max exceeded"); - info_dialog (call_data.win, &display_info); -// Sep 01, 2006 REF:OMAPS00090555 x0039928 -// Fix: if flag FF_MMI_PB_OPTIM is defined then free the allocated memory from heap for aocInfo - #ifdef FF_MMI_PB_OPTIM - if(aocInfo) - FREE_MEMORY((UBYTE*)aocInfo,sizeof(T_MFW_CM_AOC_INFO)); - #endif - - return; - - } - else - { - TRACE_FUNCTION("call not OK to show error"); - /*API - 917 - Added code so that when trying to generate an MO call when FDN is - activated an entry is not in the FDN phonebook this screen should be displayed - */ - /*NM, p018*/ - if (call_data.win) - { - bookShowInformation(call_data.win,TxtOperationNotAvail,NULL,(T_VOID_FUNC)call_failure_cb); - } - else - { - /* to show any notification even in the case "call_data.win == 0" */ - info_screen(0, TxtOperationNotAvail, TxtNull, NULL); - } - } -// Sep 01, 2006 REF:OMAPS00090555 x0039928 -// Fix: if flag FF_MMI_PB_OPTIM is defined then free the allocated memory from heap for aocInfo - #ifdef FF_MMI_PB_OPTIM - if(aocInfo) - FREE_MEMORY((UBYTE*)aocInfo,sizeof(T_MFW_CM_AOC_INFO)); - #endif - } - return; - } - -} - -/******************************************************************************* - - $Function: getTimeString - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - -void getTimeString(long time,char *timeString){ - - int hour,min,sec; - - hour = time/3600; - min = (time-hour*3600)/60; - sec = (time-hour*3600-min*60); - sprintf(timeString,"%02d:%02d:%02d",hour,min,sec); - return; -} - - -/******************************************************************************* - - $Function: refreshCallTimer - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - - -static void refreshCallTimer(){ - - int i; - - TRACE_FUNCTION("refreshCallTimer"); - for (i = 0; i < call_data.calls.numCalls; i++) - call_data.calls.time[i]++; - return; -} - - - -/******************************************************************************* - - $Function: call_HeadsetKeyDetection - - $Description: - - $Returns: Return TRUE if call or incoming call or outgoing call in progress - - $Arguments: None -*******************************************************************************/ - - - -UBYTE call_HeadsetKeyDetection (void) -{ - if (call_data.incCall || call_data.outCall || call_data.calls.numCalls) - return 1; - else - return 0; -} - - - - -/******************************************************************************* - - $Function: endingCall - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - -static void endingCall(void){ - - TRACE_FUNCTION("Ending call"); - call_data.accessEnd = TRUE; - -// Nov 16, 2004 REF: CRR MMI-SPR-26120 xnkulkar -// Description: After disconnecting MOC cannot return to STK menu -// Solution: When the user ends a call, check if it is a STK call and send SAT_RETURN event to -// return the control to STK menu. - if (call_SATCall == TRUE) - { - SEND_EVENT(sat_get_setup_menu_win(), SAT_RETURN, 0, NULL); - } - if (call_data.endQueue){ - // May 9, 2006 REF:DR OMAPS00074884 xrashmic - removeCall(call_data.endQueue->call_number, TRUE,FALSE); - return; - } - if (!call_data.calls.numCalls) - { /*SPR 1392, check for valid incoming call ID rather than existence of incoming - call window. During the setting up of call deflection, the incoming call screen doesn't exist*/ - if ((!call_data.incCall/*.win_incoming*/)&&(!call_data.win_calling)) - { - MmiModuleDel(ModuleCall); - call_data.callStatus = CallInactive; - - if (call_data.win) call_destroy(call_data.win); - } - } - callSetMode(ViewConnect, TRUE); -} - - - -/******************************************************************************* - - $Function: rebuildCalls - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - -static void rebuildCalls(void){ - - int i; - - TRACE_FUNCTION("rebuildCalls"); - if (call_data.calls.selected == 0) - call_data.calls.selected = call_data.calls.status[0].call_number; - if (call_data.calls.mode != CallConference){ - for (i=0;i < call_data.calls.numCalls;i++){ - TRACE_EVENT_P1("Getting call number %d", i); - getCallStatus(call_data.calls.status[i].call_number, &call_data.calls.status[i]); - if (call_data.calls.status[i].stat == CALL_ACTIVE) - call_data.calls.selected = call_data.calls.status[i].call_number; - } - } - else - for (i=0;i < call_data.calls.numCalls;i++){ - TRACE_EVENT_P1("Getting call number %d", i); - getCallStatus(call_data.calls.status[i].call_number, &call_data.calls.status[i]); - } - if (call_data.win_menu){ - call_menu_destroy(call_data.win_menu); - call_data.win_menu = 0; - } -} - - -/******************************************************************************* - - $Function: getCallStatus - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ -//Sandip - 18261 . Setup call Reset fix - -static int getCallStatus(SHORT call_number,T_MFW_CM_STATUS* call){ - - char prov[MFW_TAG_LEN]; - int p; - int i; -#ifdef NO_ASCIIZ - //For future compatibility with unicode - memset(prov, '\0', MFW_TAG_LEN); -//Changed here for CQ-18261 - memcpy((char*)prov,(char*)call->name.data,MFW_TAG_LEN ); - p = cm_status(call_number,call, 1); - i=0; - while ((i name.len) && (call->number[i]==prov[i])) - { - i++; - } - if (i == call->name.len) - { - memset(call->name.data,'\0',PHB_MAX_LEN); - /*a0393213 lint warning:access beyond array soln:memcpy changed to mfwStrncpy*/ - mfwStrncpy((char*)call->name.data, (char*)prov, PHB_MAX_LEN); - } -#else - //copy current name to temp var - mfwStrncpy((char*)prov,(char*)call->name, MFW_TAG_LEN); - //read status from MFW - p = cm_status(call_number,call, 1); - TRACE_EVENT_P4("CID:%d,orig name:%s new name: %s, Call number: %s", prov, call->name, prov, call->number); - //if number alphabetically ahead of orig name - if (strcmp((char*)call->number,(char*)prov)) - mfwStrncpy((char*)call->name,(char*)prov, MFW_TAG_LEN); //copy orig name to structure -#endif - return p; - -} - -#if(0) /* x0039928 - Lint warning fix */ -/******************************************************************************* - - $Function: exeSendMessage - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - -int exeSendMessage(MfwMnu* m, MfwMnuItem* i) -{ - return 0; -} - - -/******************************************************************************* - - $Function: callExeNameEnter - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - -static int callExeNameEnter(MfwMnu* m, MfwMnuItem* i){ - return 0; -} - -#endif - -/******************************************************************************* - - $Function: callFailureCause - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - -#ifdef FF_2TO1_PS -static void callFailureCause(UBYTE cause) -{ - - TRACE_FUNCTION("callFailureCause()"); - - switch(cause) - { - case M_CC_CAUSE_UNASSIGN: - case M_CC_CAUSE_BARRED: - case M_CC_CAUSE_NUM_FORMAT: - case M_CC_CAUSE_BARRED_IN_CUG: - case M_CC_CAUSE_USER_NOT_IN_CUG: -/* RAVI - 20-1-2006 */ -/* Silent Implementation */ -#ifdef NEPTUNE_BOARD - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, getCurrentVoulmeSettings(), - AUDIO_PLAY_ONCE); -#else - /* Oct 07, 2004 REF: CRR 23873 xnkulkar(Sasken) */ - /* Play the Error tone if the call failure is due to above causes. */ - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, 0 , AUDIO_PLAY_ONCE); -#endif -/* END RAVI */ - bookShowInformation(idle_get_window(),TxtCheckNumber,NULL,(T_VOID_FUNC)call_failure_cb); - break; - case M_CC_CAUSE_USER_BUSY: -/* RAVI - 20-1-2006 */ -/* Silent Implementation */ -#ifdef NEPTUNE_BOARD - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, getCurrentVoulmeSettings(), - AUDIO_PLAY_THRICE); -#else -/* Jun 30, 2004 REF: CRR 15685 xkundadu(Sasken) */ -/* Play the beep sound if the called party is busy. */ - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, 0 , AUDIO_PLAY_THRICE); -#endif -/* END RAVI */ - bookShowInformation(idle_get_window(),TxtNumberBusy,NULL,(T_VOID_FUNC)call_failure_cb); - break; - case M_CC_CAUSE_NO_RESPONSE: - case M_CC_CAUSE_ALERT_NO_ANSWER: - case M_CC_CAUSE_CALL_REJECT: - bookShowInformation(idle_get_window(),TxtNoAnswer,NULL,(T_VOID_FUNC)call_failure_cb); - break; - case M_CC_CAUSE_NUM_CHANGED: - bookShowInformation(idle_get_window(),TxtNumberChanged,NULL,(T_VOID_FUNC)call_failure_cb); - break; - case M_CC_CAUSE_FACILITY_REJECT: - case M_CC_CAUSE_STATUS_ENQUIRY: - case M_CC_CAUSE_QOS_UNAVAIL: - - case M_CC_CAUSE_BEARER_CAP_UNAVAIL: - case M_CC_CAUSE_SERVICE_UNAVAIL: - case M_CC_CAUSE_BEARER_NOT_IMPLEM: - case M_CC_CAUSE_ACM_MAX: - case M_CC_CAUSE_FACILITY_NOT_IMPLEM: - case M_CC_CAUSE_SERVICE_NOT_IMPLEM: -/* RAVI - 20-1-2006 */ -#ifdef NEPTUNE_BOARD - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, getCurrentVoulmeSettings(), AUDIO_PLAY_ONCE); -#else - /* Oct 07, 2004 REF: CRR 23873 xnkulkar(Sasken) */ - /* Play the Error tone if the call failure is due to above causes. */ - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, 0 , AUDIO_PLAY_ONCE); -#endif -/* END RAVI */ - bookShowInformation(idle_get_window(),TxtOperationNotAvail,NULL,(T_VOID_FUNC)call_failure_cb); - - break; - case M_CC_CAUSE_NO_CHAN_AVAIL: - case M_CC_CAUSE_TEMP_FAIL: - case M_CC_CAUSE_SWITCH_CONGEST: - case M_CC_CAUSE_REQ_CHAN_UNAVAIL: - - bookShowInformation(idle_get_window(),TxtNetworkBusy,NULL,(T_VOID_FUNC)call_failure_cb); - break; - case M_CC_CAUSE_FACILITY_UNSUBSCRIB: - case M_CC_CAUSE_BEARER_CAP_AUTHORIZ: - bookShowInformation(idle_get_window(),TxtNotSubscribed,NULL,(T_VOID_FUNC)call_failure_cb); - break; - - //GW-SPR#1035 - Added SAT changed - /*NM, 110702 - the "202" stands for timer 303 expired; - unfortunately there is no define for that in the SAP/MNCC */ - case 202: - bookShowInformation(idle_get_window(),TxtCallTimeout,NULL,(T_VOID_FUNC)call_failure_cb); - break; - /*NM, 110702 END*/ - default: - /* RAVI - 20-1-2006 */ -#ifdef NEPTUNE_BOARD - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, getCurrentVoulmeSettings(), - AUDIO_PLAY_ONCE); -#else - /* Oct 07, 2004 REF: CRR 23873 xnkulkar(Sasken) */ - /* Play the Error tone if the call failure is due to any other reason. */ - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, 0 , AUDIO_PLAY_ONCE); -#endif -/* END RAVI */ - bookShowInformation(idle_get_window(),TxtOperationNotAvail,NULL,(T_VOID_FUNC)call_failure_cb); - break; - } - return; -} - -#else /* FF_2TO1_PS */ -static void callFailureCause(UBYTE cause) -{ - - TRACE_FUNCTION("callFailureCause()"); - - switch(cause) - { - case M_CC_CAUSE_UNASSIGN: - case M_CC_CAUSE_BARRED: - case M_CC_CAUSE_NUM_FORMAT: - case M_CC_CAUSE_BARRED_IN_CUG: - case M_CC_CAUSE_USER_NOT_IN_CUG: -/* RAVI - 20-1-2006 */ -#ifdef NEPTUNE_BOARD - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, getCurrentVoulmeSettings(), - AUDIO_PLAY_ONCE); -#else - /* Oct 07, 2004 REF: CRR 23873 xnkulkar(Sasken) */ - /* Play the Error tone if the call failure is due to above causes. */ - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, 0 , AUDIO_PLAY_ONCE); -#endif -/* END RAVI */ - bookShowInformation(idle_get_window(),TxtCheckNumber,NULL,(T_VOID_FUNC)call_failure_cb); - break; - case M_CC_CAUSE_USER_BUSY: -/* RAVI - 20-1-2006 */ -#ifdef NEPTUNE_BOARD - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, getCurrentVoulmeSettings(), AUDIO_PLAY_THRICE); -#else -/* Jun 30, 2004 REF: CRR 15685 xkundadu(Sasken) */ -/* Play the beep sound if the called party is busy. */ - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, 0 , AUDIO_PLAY_THRICE); -#endif -/* END RAVI*/ - bookShowInformation(idle_get_window(),TxtNumberBusy,NULL,(T_VOID_FUNC)call_failure_cb); - break; - case M_CC_CAUSE_NO_RESPONSE: - case M_CC_CAUSE_ALERT_NO_ANSWER: - case M_CC_CAUSE_CALL_REJECT: - bookShowInformation(idle_get_window(),TxtNoAnswer,NULL,(T_VOID_FUNC)call_failure_cb); - break; - case M_CC_CAUSE_NUM_CHANGED: - bookShowInformation(idle_get_window(),TxtNumberChanged,NULL,(T_VOID_FUNC)call_failure_cb); - break; - case M_CC_CAUSE_FACILITY_REJECT: - case M_CC_CAUSE_STATUS_ENQUIRY: - case M_CC_CAUSE_QOS_UNAVAIL: - - case M_CC_CAUSE_BEARER_CAP_UNAVAIL: - case M_CC_CAUSE_SERVICE_UNAVAIL: - case M_CC_CAUSE_BEARER_NOT_IMPLEM: - case M_CC_CAUSE_ACM_MAX: - case M_CC_CAUSE_FACILITY_NOT_IMPLEM: - case M_CC_CAUSE_SERVICE_NOT_IMPLEM: -/* RAVI - 20-1-2006 */ -/* Silent Implementation */ -#ifdef NEPTUNE_BOARD - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, getCurrentVoulmeSettings(), - AUDIO_PLAY_ONCE); -#else - /* Oct 07, 2004 REF: CRR 23873 xnkulkar(Sasken) */ - /* Play the Error tone if the call failure is due to above causes. */ - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, 0 , AUDIO_PLAY_ONCE); -#endif -/* END RAVI */ - bookShowInformation(idle_get_window(),TxtOperationNotAvail,NULL,(T_VOID_FUNC)call_failure_cb); - break; - case M_CC_CAUSE_NO_CHAN_AVAIL: - case M_CC_CAUSE_TEMP_FAIL: - case M_CC_CAUSE_SWITCH_CONGEST: - case M_CC_CAUSE_REQ_CHAN_UNAVAIL: - bookShowInformation(idle_get_window(),TxtNetworkBusy,NULL,(T_VOID_FUNC)call_failure_cb); - break; - case M_CC_CAUSE_FACILITY_UNSUBSCRIB: - case M_CC_CAUSE_BEARER_CAP_AUTHORIZ: - bookShowInformation(idle_get_window(),TxtNotSubscribed,NULL,(T_VOID_FUNC)call_failure_cb); - break; - - //GW-SPR#1035 - Added SAT changed - /*NM, 110702 - the "202" stands for timer 303 expired; - unfortunately there is no define for that in the SAP/MNCC */ - case 202: - bookShowInformation(idle_get_window(),TxtCallTimeout,NULL,(T_VOID_FUNC)call_failure_cb); - break; - /*NM, 110702 END*/ - default: - /* RAVI - 20-1-2006 */ - /* Silent Implementation */ - #ifdef NEPTUNE_BOARD - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, getCurrentVoulmeSettings(), - AUDIO_PLAY_ONCE); - #else - /* Oct 07, 2004 REF: CRR 23873 xnkulkar(Sasken) */ - /* Play the Error tone if the call failure is due to any other reason. */ - audio_PlaySoundID( AUDIO_SPEAKER, TONES_BUSY, 0 , AUDIO_PLAY_ONCE); - #endif - /* END RAVI */ - bookShowInformation(idle_get_window(),TxtOperationNotAvail,NULL,(T_VOID_FUNC)call_failure_cb); - break; - } - return; -} - -#endif /* !FF_2TO1_PS */ - -/******************************************************************************* - - $Function: sendDTMFString - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - -static void sendDTMFString(void) -{ - - - call_data.sendingDTMF = TRUE; - callSetMode(ViewSendingDTMF, TRUE); - if (call_data.charSent LONG */ - result= result * call_data.aocInfo.ccm; /* CCM * PPU */ - sprintf(line, "%ld %s", result,call_data.aocInfo.cur); /* LONG => STRING */ - } - else /* '.' found */ - { - /* - * '.' found, *pdest EQ '.' - */ - counter = strlen(pdest + 1); /* store the decimal place */ - - src = (char*)call_data.aocInfo.ppu; - dst = line; - do /* remove the '.' */ - { - if (*src NEQ '.') - { - *dst++ = *src; - } - } while (*src++ NEQ '\0'); - /* STRING => LONG */ - result= atol(line) * call_data.aocInfo.ccm; /* CCM * PPU */ - sprintf(line, "%ld", result); /* LONG => STRING */ - - if(strlen(line) < counter) - { - src = line; - dst = line2; - *dst++ = '0'; - *dst++ = '.'; - counter = counter - strlen(line); - do /* fill up with '0' */ - { - *dst++ = '0'; - } while (--counter NEQ 0); - - memcpy (dst,src,sizeof(src)); - sprintf(line, "%s %s", line2,call_data.aocInfo.cur); /* add the currency */ - return; - } - src = line; - dst = line2; - POINT= src + strlen(src) - counter; - do /* set the '.' */ - { - if (src EQ POINT) - { - *dst++ = '.'; - } - *dst++ = *src++; - - } while (*src NEQ '\0'); - if (line2[0] EQ '.') - sprintf(line, "0%s %s", line2,call_data.aocInfo.cur); /* add the currency */ - if (line2[0] NEQ '.') - sprintf(line, "%s %s", line2,call_data.aocInfo.cur); /* add the currency */ - } - return; -} -#endif - -/******************************************************************************* - - $Function: call_create - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - - -T_MFW_HND call_create (T_MFW_HND parent_window){ - - T_call * data = &call_data; - T_MFW_WIN * win; - - TRACE_FUNCTION("call_create()"); - - data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)call_win_cb); - - if (data->win EQ 0) - return 0; - - /* - * Create window handler - */ - data->mmi_control.dialog = (T_DIALOG_FUNC)call; - data->mmi_control.data = data; - win = ((T_MFW_HDR *)data->win)->data; - win->user = (void *) data; - - /* - * Create any other handler - */ - memset(data->phbNameNumber,'\0',sizeof(data->phbNameNumber)); - - data->kbd = kbd_create (data->win,KEY_ALL,(T_MFW_CB)call_kbd_cb); - data->kbd_long = kbd_create (data->win,KEY_ALL|KEY_LONG,(T_MFW_CB)call_kbd_long_cb); - -//x0pleela 07 Apr, 2007 ER: OMAPS00122561 -#ifdef FF_PHONE_LOCK - if( phlock_win_handle && ( call_data.call_direction == MFW_CM_MTC ) ) - { - phlock_mtc_win_handle = data->win; - - kbd_delete(data->kbd); - data->kbd = phlock_kbd_handle; //set the kbd handle of unlock screen - } -#endif //FF_PHONE_LOCK - - data->cm = cm_create(data->win, E_CM_ALL_SERVICES, (MfwCb)callCmEvent); - - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - AUI_edit_SetAttr(&data->editorAttrCall,CALL_EDITOR,COLOUR_EDITOR_XX,EDITOR_FONT, ED_MODE_ALPHA, ED_CURSOR_BAR,ATB_DCS_ASCII, (UBYTE*)data->phbNameNumber,EDITOR_SIZE); - data->editorCall = ATB_edit_Create(&data->editorAttrCall,0); -#else /*NEW_EDITOR*/ - bookSetEditAttributes(CALL_EDITOR,COLOUR_EDITOR_XX,0,edtCurBar1,0,(char*)data->phbNameNumber,EDITOR_SIZE,&data->edtAttrCall); - data->editCall = edtCreate(data->win,&data->edtAttrCall,0,0); -#endif /* NEW_EDITOR */ - SEND_EVENT(data->win,CALL_INIT,0,0); -//x0pleela 27 Mar, 2007 ER: OMAPS00122561 -#ifdef FF_PHONE_LOCK -if( ( !phlock_win_handle) || (mmiPinsEmergencyCall()) ) -#endif //FF_PHONE_LOCK - winShow(data->win); -//x0pleela 27 Mar, 2007 ER: OMAPS00122561 -#ifdef FF_PHONE_LOCK -else -{ - //show phone unlock window - winShow(phlock_win_handle ); -} -#endif //FF_PHONE_LOCK - - /* - * return window handle - */ - return data->win; - - - -} - - -/******************************************************************************* - - $Function: call_destroy - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - -void call_destroy (T_MFW_HND own_window){ - - T_MFW_WIN * win; - T_call * data; - - TRACE_FUNCTION("call_destroy()"); - - - if (own_window) - { - win = ((T_MFW_HDR *)own_window)->data; - data = (T_call *)win->user; - - if (data) - { - /* - * Exit Keyboard Handler - */ - /* - * Delete WIN Handler - */ - -#ifdef FF_MMI_AUDIO_PROFILE - if( mfw_get_current_audioDevice() == MFW_AUD_LOUDSPEAKER) - { - mfw_audio_set_device(MFW_AUD_HANDHELD); - } -#endif - - if (call_data.win_calling){ - SEND_EVENT(call_data.win_calling,DIALOG_DESTROY,0,0); - call_data.win_calling = 0; - } - if (call_data.win_ending){ - SEND_EVENT(call_data.win_ending,DIALOG_DESTROY,0,0); - call_data.win_ending = 0; - } - if (call_data.win_menu){ - call_menu_destroy(call_data.win_menu); - call_data.win_menu = 0; - } - if (call_data.win_waiting){ - SEND_EVENT(call_data.win_waiting,DIALOG_DESTROY,0,0); - call_data.win_waiting = 0; - } - if (call_data.win_sending_dtmf){ - SEND_EVENT(call_data.win_sending_dtmf,DIALOG_DESTROY,0,0); - call_data.win_sending_dtmf = 0; - } - - if (call_data.win_incoming) - { - return; - } - -/* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - /* New editor not destroyed automatically by win_delete, - * so do so here */ - if (call_data.editorCall) - { - ATB_edit_Destroy(call_data.editorCall); - call_data.editorCall = 0; - } -#endif /* NEW_EDITOR */ - -/*mc, spr 1392, destroy all call deflection windows*/ - - if (call_data.win_deflectSearch) - { - bookPhonebookDestroy(call_data.win_deflectSearch); - call_data.win_deflectSearch = 0; - } - - if (call_data.win_deflectEdit) - { - /* SPR#1428 - SH - New editor */ - #ifdef NEW_EDITOR - AUI_edit_Destroy(call_data.win_deflectEdit); - #else /* NEW_EDITOR */ - editor_destroy(call_data.win_deflectEdit); - #endif /* NEW_EDITOR */ - - call_data.win_deflectEdit = 0; - } - - if (call_data.win_deflecting) - { - SEND_EVENT(call_data.win_deflecting, DIALOG_DESTROY, NULL, NULL); - call_data.win_deflecting = 0; - } - - win_delete (data->win); - data->win=0; - - //x0pleela 07 Apr, 2007 ER: OMAPS00122561 -#ifdef FF_PHONE_LOCK - if(( call_data.call_direction == MFW_CM_MTC )&& phlock_mtc_win_handle ) - { - phlock_mtc_win_handle = NULL; - } -#endif //FF_PHONE_LOCK - } - - idleEvent(IdleUpdate);/* NDH SPR 1584, update idle screen*/ - -#ifdef NEPTUNE_BOARD -#ifdef MMI_POWER_MANAGEMENT_TEST - iIncomingCall = 0; -#endif -#endif - } -} - -/******************************************************************************* - - $Function: deflect_destroy - - $Description: destroys call deflection windows and, depending upon the value of the - parameter delete_call_windows, deletes the call windows if there is no - currently active call. - - $Returns: nothing - - $Arguments: Boolean delete_call_windows, should be set to TRUE if call winodws - ought to be deleted too. -*******************************************************************************/ -void deflect_destroy(BOOL delete_call_windows) -{ -/*destroy all call deflection windows*/ - - if (call_data.win_deflectSearch) - { - bookPhonebookDestroy(call_data.win_deflectSearch); - call_data.win_deflectSearch = 0; - } - - if (call_data.win_deflectEdit) - { - /* SPR#1428 - SH - New editor */ - #ifdef NEW_EDITOR - AUI_edit_Destroy(call_data.win_deflectEdit); - #else /* NEW_EDITOR */ - editor_destroy(call_data.win_deflectEdit); - #endif /* NEW_EDITOR */ - - call_data.win_deflectEdit = 0; - } - - if (call_data.win_deflecting) - { - SEND_EVENT(call_data.win_deflecting, DIALOG_DESTROY, NULL, NULL); - call_data.win_deflecting = 0; - } - - /*set incoming call number to 0, as call deflection has either failed or succeeded*/ - call_data.incCall = 0; - - /*destroy call window if no active call and flag TRUE*/ - if (!call_data.calls.numCalls && delete_call_windows == TRUE) - { if (call_data.win) - { - call_destroy(call_data.win); - } - } - -} - - -/******************************************************************************* - - $Function: call - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - -void call (T_MFW_HND win, USHORT event, SHORT value, void * parameter) -{ - T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; - T_call * data = (T_call *)win_data->user; - int i; - - - TRACE_FUNCTION ("call()"); - - switch (event) - { - case CALL_INIT: - { - - - memset(&data->calls,0,sizeof(data->calls)); - memset(call_data.colp_number,'\0',sizeof(call_data.colp_number)); - phb_set_auto_off(PHB_AUTO_ON); - data->win_incoming=0; - data->win_calling=0; - data->win_menu=0; - data->win_waiting=0; - data->calls.numCalls = 0; - data->accessEnd = TRUE; - data->callWaitingEnd = 0; - data->emergencyCall = FALSE; - data->callsToEnd = 0; - data->incCall = 0; - data->callStatus = CallInactive; - data->outCall=0; - data->call_direction=MFW_CM_INV_DIR; - data->refreshConnect = 0; - data->firstChar=FIRST_TYPED; - data->currentVolume=MAX_SOUND; - data->endQueue = 0; - data->singleCall = 0; - data->charSent=0; - data->sendingDTMF=FALSE; - data->ignore_disconnect = FALSE; - - for (i=0; i MAX_SOUND) - FFS_flashData.output_volume = MAX_SOUND; - else if (FFS_flashData.output_volume <= 0) - FFS_flashData.output_volume = MAX_SOUND;*//*a0393213 lint warning removal - commented as the statement as no effect*/ -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Commented mmesetvolume.since the speaker volume will be set, -//once the call is acknowledged. -//mmeSetVolume (1, FFS_flashData.output_volume); -//x0pleela 27 Mar, 2007 ER: OMAPS00122561 -#ifdef FF_PHONE_LOCK -if ( (!phlock_win_handle) || (mmiPinsEmergencyCall()) ) -#endif //FF_PHONE_LOCK - winUnhide(call_data.win); - } - break; - - case CALL_DESTROY_WAITING: - if (call_data.win_waiting){ - SEND_EVENT(call_data.win_waiting,DIALOG_DESTROY,0,0); - call_data.win_waiting = 0; - if (!call_data.calls.numCalls) - call_destroy(call_data.win); - } - break; - case CALL_DESTROY_CALLING_WINDOW: - /* SPR#1983 - SH - This is a special WAP event. - * It destroys the "Calling" dialog if WAP connection - * is cancelled. */ - - TRACE_EVENT("CALL_DESTROY_CALLING_WINDOW"); - - if (call_data.win_calling) - { - SEND_EVENT(call_data.win_calling,DIALOG_DESTROY,0,0); - call_data.win_calling = 0; - } - - if (call_data.outCall) - { - cm_disconnect(call_data.outCall); - call_data.outCall = 0; - if (!call_data.calls.numCalls) - { - call_data.ignore_disconnect = TRUE; - call_destroy(call_data.win); - return; - } - endingCall(); - } - break; - - case E_CM_NOTIFY: - /* - * Show all cc related notifications - */ - showCCNotify( win, (T_MFW_CM_NOTIFY*) parameter ); - break; - case E_CM_COLP: - { - /* NM 056, FTA Testcase 31.1.3.1 - * add COLP only for the singlecall and have - * to be done for multicall as well ! - */ - - T_MFW_CM_MO_INFO *colp = (T_MFW_CM_MO_INFO*) parameter ; - - TRACE_EVENT ("E_CM_COLP"); - - if (strlen((char*)colp->number) > 0) - { - memset(call_data.colp_number,'\0',sizeof(call_data.colp_number)); - strncpy ((char*)call_data.colp_number , (char*)colp->number, sizeof(call_data.colp_number)-1); - } - } - break; - case CALL_OUTGOING_SAT: - { - /* this means the SIM toolkit is about to start a call - this means we will - * shortly receive E_CM_MO_RES from MFW, so we do some initialisation of data - * parameters before we receive this event - */ - - T_SAT_call_setup_parameter * call_setup_parameter = ( - T_SAT_call_setup_parameter *)parameter; - - char* tempString; /* Temporary string holder */ - - TRACE_EVENT ("CALL_OUTGOING_SAT"); - - /* if this is the first call then initialise the window data */ - if (call_data.calls.numCalls == 0) - SEND_EVENT(call_data.win,CALL_INIT,0,0); - - /* set the outcall ID */ - call_data.outCall = call_setup_parameter->callId; - call_data.call_direction = MFW_CM_MOC; - - /* set the display string from the SIM toolkit label */ - - /* SPR#1700 - DS - Use TextString2 (second alpha id) if available. Else, use TextString (first alpha id). - * This conforms with GSM SAT spec 11.14 section 6.4.13 - */ - - if (call_setup_parameter->TextString2 NEQ NULL) /* Use second alpha id */ - { - TRACE_EVENT("Use second alpha id: TextString2"); - tempString = call_setup_parameter->TextString2; - //x0035544 Mar 11, 2006, DR:OMAPS00061467 - #ifdef FF_MMI_SAT_ICON - if(call_setup_parameter->IconInfo2.dst != NULL) - { - //Copy the icon data for the second alpah ID - call_data.IconData.width = call_setup_parameter->IconInfo2.width; - call_data.IconData.height = call_setup_parameter->IconInfo2.height; - call_data.IconData.dst = call_setup_parameter->IconInfo2.dst; - call_data.IconData.selfExplanatory = call_setup_parameter->IconInfo2.selfExplanatory; - TRACE_EVENT_P2("icon width=%d, icon height= %d---sudha",call_data.IconData.width,call_data.IconData.height); - } - else - { - call_data.IconData.dst = NULL; - call_data.IconData.width = 0; - call_data.IconData.height = 0; - call_data.IconData.selfExplanatory = FALSE; - } - #endif - } - else /* Second alpha id not set therefore use first alpha id */ - { - TRACE_EVENT("Use first alpha id: TextString"); - tempString = call_setup_parameter->TextString; - //x0035544 Mar 11, 2006, DR:OMAPS00061467 - #ifdef FF_MMI_SAT_ICON - if(call_setup_parameter->IconInfo.dst != NULL) - { - //copy the icon data of first alpha ID - call_data.IconData.width = call_setup_parameter->IconInfo.width; - call_data.IconData.height = call_setup_parameter->IconInfo.height; - call_data.IconData.dst = call_setup_parameter->IconInfo.dst; - call_data.IconData.selfExplanatory = call_setup_parameter->IconInfo.selfExplanatory; - } - else - { - call_data.IconData.dst = NULL; - call_data.IconData.width = 0; - call_data.IconData.height = 0; - call_data.IconData.selfExplanatory = FALSE; - } - #endif - } - - if (tempString NEQ NULL) - { - uint32 len; /*a0393213 lint warning - type changed from int to uint32*/ - - /* - * SPR#1700 - DS - Copy string according to string encoding - */ - if ( *(tempString) == (char) 0x80) /* Unicode */ /*a0393213 lint warnings removal - typecasting done*/ - { - /* Count number of bytes in SAT label */ - len = 2*ATB_string_UCLength((USHORT*)tempString); - - if (sizeof(call_data.phbNameNumber) < len) - { - len = 2*(sizeof(call_data.phbNameNumber)/2);/*a0393213 lint warnings removal - to make len an even number*/ - } - - TRACE_EVENT_P1("Unicode SAT label is %d bytes", len); - - memcpy( (void *) call_data.phbNameNumber, (void *)tempString, len-2);/*a0393213 lint warnings removal - changed len to len-2*/ - - /* Make sure the string is null terminated */ - call_data.phbNameNumber[len-2] = 0x00;/*a0393213 lint warnings removal - changed len to len-2*/ - - /* Unicode strings need two zero bytes to terminate */ - call_data.phbNameNumber[len-1] = 0x00;/*a0393213 lint warnings removal - changed len to len-1*/ - } - else /* Ascii */ - { - len = strlen(tempString); - - if (sizeof(call_data.phbNameNumber) < len) - { - len = sizeof(call_data.phbNameNumber); - } - - TRACE_EVENT_P1("Ascii SAT label is %d bytes", len); - - strncpy(call_data.phbNameNumber, tempString, len-1);/*a0393213 lint warnings removal - changed len to len-1*/ - call_data.phbNameNumber[len-1]=0x00;/*a0393213 lint warnings removal - added this statement*/ - } - } - else - { - TRACE_EVENT("tempString is NULL - No SAT label!"); - call_data.phbNameNumber[0] = '\0'; - } - - call_SATCall = TRUE; - - } - break; - /* SPR#1428 - SH - Insert phone number into new editor */ - /*MC, SPR 1392, phone number selected for call deflection*/ - case DEFLECT_PHBK_NUMBER: - #ifdef NEW_EDITOR - { - T_ATB_TEXT text; - text.dcs = ATB_DCS_ASCII; - - /*API - 25/08/03 - SPR2144 - Remove the call to pass call_data.editor_buffer, instead pass down parameter*/ - text.data = (UBYTE *)parameter; - /*API - 25/08/03 - SPR 2144 - END*/ - - text.len = ATB_string_Length(&text); - SEND_EVENT(call_data.win_deflectEdit, E_ED_INSERT, 0, (void *)&text); - } - #else /* NEW_EDITOR */ - /*copy number to editor*/ - memcpy (call_data.editor_buffer , (char *)parameter, sizeof(call_data.editor_buffer)); - SEND_EVENT(call_data.win_deflectEdit, E_EDITOR_CURSOR_END, NULL, NULL); - #endif /* NEW_EDITOR */ - - /*Set search window pointer to NULL as we've just exited that window*/ - call_data.win_deflectSearch = 0; - break; - - default: - break; - } - -} - -int lines_inBetween_Display(int noCalls, int callNo) -{ - switch(noCalls) - { - case 1: - case 2: - return (1+(callNo*5)); - // break; // RAVI - - case 3: - return (0+(callNo*4)); - // break; // RAVI - - case 4: - return (0+(callNo*3)); - // break; // RAVI - - case 5: - case 6: - return (0+(callNo*2)); - // break; // RAVI - - default: - /* x0045876, 14-Aug-2006 (WR - missing return statement at end of non-void function) */ - /* break; */ - return 0; - } -} - -// API - SPR 1775 - Conference call, added to place a arrow next to the call looking at! -int multiCall_ActiveCall (int bitmap_pos, int CurrentCallNo) -{ - t_font_bitmap multicall_pointer = { 0, BMP_FORMAT_BW_UNPACKED, 8, 8, 0, (char*)multi_pointer}; - int xPos, yPos; - int noActCalls, nLines; - - noActCalls = call_data.calls.numCalls; - - TRACE_EVENT("multiCall_ActiveCall"); - TRACE_EVENT_P2("CurrentCallNo = %d, noActCalls = %d", CurrentCallNo, noActCalls); - - xPos = 5; - nLines = lines_inBetween_Display(noActCalls, CurrentCallNo); - - TRACE_EVENT_P1("nLines = %d", nLines); - - switch(bitmap_pos) - { - case CALL_STATUS_CALL : - if(noActCalls <= 2) - nLines = nLines; - else if(noActCalls == 3) - nLines = nLines; - else if(noActCalls >= 4) - nLines = nLines; - break; - - default: - xPos = 5; - yPos = nLines; - break; - } - yPos = Mmi_layout_IconHeight() + (nLines * Mmi_layout_line_height()); - - TRACE_EVENT_P2("xPos = %d, yPos = %d", xPos, yPos); - - dspl_show_bitmap(xPos, yPos, &multicall_pointer, 0 ); - - /* x0045876, 14-Aug-2006 (WR - missing return statement at end of non-void function) */ - return TRUE; -} - -/*MC, please note: it is assumed that txtStr will have a unicode tag at the beginning -if it ought to be displayed in Unicode, otherwise, it *will* be displayed in ASCII*/ -int inCall_displayData( int dataId , int txtId, char* txtStr, int CurrentCallNo) -{ - int xPos, yPos; - int txtFormat; - int lenStr, lenId, txtWidth, nLines; - int noActCalls; // statusWidth; // RAVI - char idStr[PHB_MAX_LEN]; - /*MC, SPR 1319*/ - UBYTE unicode_string =0;/*Unicode flag*/ - UBYTE current_display_type = dspl_get_char_type();/*store current char type*/ - noActCalls = call_data.calls.numCalls; - //noActCalls = 4; - - -TRACE_EVENT_P4("inCall_displayData %d %d %s %d",dataId,txtId,txtStr,CurrentCallNo); - - if (txtStr != NULL) - { -/*MC SPR 1319*/ -#ifdef NO_ASCIIZ - /*set char type so correct text extent calculated*/ - if (txtStr[0] ==(char)0x80)/*if unicode tag*//*a0393213 lint warnings removal - typecasting done*/ - { - dspl_set_char_type(DSPL_TYPE_UNICODE); - } - else - { - dspl_set_char_type(DSPL_TYPE_ASCII); - } -#endif -/*mc end*/ - lenStr = dspl_GetTextExtent( txtStr, 0); - } - else - lenStr = 0; - - if(txtId != TxtNull) - { - memcpy(idStr, MmiRsrcGetText(txtId), PHB_MAX_LEN); - lenId = dspl_GetTextExtent( idStr, 0); - /*MC, unicode string if in chinese*/ - if (Mmi_getCurrentLanguage() == CHINESE_LANGUAGE) - unicode_string = 1; - } - else - { - lenId = 0; -/*MC SPR 1319*/ - #ifdef NO_ASCIIZ - /*MC*/ - if ((txtStr != NULL) && (txtStr[0] ==(char)0x80))/*if unicode tag*//*a0393213 lint warnings removal - typecasting done*/ - { char debug[25]; - int i; - - dspl_set_char_type(DSPL_TYPE_UNICODE); - //idStr = txtStr; - resources_truncate_to_screen_width(txtStr,0, idStr, PHB_MAX_LEN, - SCREEN_SIZE_X, TRUE); - unicode_string = 1;/*set unicode flag*/ - - for(i=0; i< 25;i++) - { if (txtStr[i] == NULL) - debug[i] = '0'; - else - debug[i] = txtStr[i]; - } - - - TRACE_EVENT_P1("Call Name string:%s", debug); - } - else -#endif -/*MC end*/ - { //idStr = txtStr; - resources_truncate_to_screen_width(txtStr,0, idStr, PHB_MAX_LEN, - SCREEN_SIZE_X, FALSE); - dspl_set_char_type(DSPL_TYPE_ASCII); - } - } - - txtWidth = lenStr+lenId; - -#ifndef LSCREEN - xPos = 0; - yPos = 0; - txtFormat = 0; - - switch (dataId) - { - case CALL_STATUS_CALL : - xPos = 8; - if (CurrentCallNo == 0) - yPos = Mmi_layout_line(1); - else - yPos = (Mmi_layout_line(1) + LINE_HEIGHT*CurrentCallNo); - break; - - case CALL_TIMER_CALL : - xPos = INCALLTIMER_X; - if (CurrentCallNo == 0) - yPos = Mmi_layout_line(2); - else - yPos = (Mmi_layout_line(1) + LINE_HEIGHT*CurrentCallNo); - break; - - case CALL_ID_NAME_CALL : - xPos = CALLID_NUM_XPOS; - if (CurrentCallNo == 0) - yPos = Mmi_layout_line(1); - else - yPos = (Mmi_layout_line(1) + LINE_HEIGHT*CurrentCallNo); - break; - - case CALL_ID_NUM_CALL : - xPos = CALLID_NUM_XPOS; - if (CurrentCallNo == 0) - yPos = Mmi_layout_line(1); - else - yPos = (Mmi_layout_line(1) + LINE_HEIGHT*CurrentCallNo); - break; - - default: - break; - } -#else - - txtFormat = 0; - xPos = ((SCREEN_SIZE_X - txtWidth)/2); - nLines = lines_inBetween_Display(noActCalls, CurrentCallNo); - - switch (dataId) - { - case CALL_STATUS_CALL : - if(noActCalls <= 2) - nLines = nLines; - else if(noActCalls == 3) - nLines = nLines; - else if(noActCalls >= 4) - { - xPos = 5; - nLines = nLines; - } - break; - - case CALL_ID_NAME_CALL : - if(noActCalls <= 2) - { - #ifdef FF_CPHS - nLines=nLines+2; - #else - nLines = nLines + 1; - #endif - } - else if(noActCalls == 3) - { - #ifdef FF_CPHS - nLines=nLines+1; - #else - nLines = nLines; - #endif - } - else if(noActCalls >= 4) - { - #ifdef FF_CPHS - nLines= nLines+2; - #else - nLines = nLines + 1; - #endif - } - break; - - case CALL_ID_NUM_CALL : - if(noActCalls <= 2) - { - #ifdef FF_CPHS - nLines = nLines + 3; - #else - nLines = nLines + 2; - #endif - } - else if(noActCalls == 3) - { - #ifdef FF_CPHS - nLines = nLines + 2; - #else - nLines = nLines + 1; - #endif - } - else if(noActCalls >= 4) - { - #ifdef FF_CPHS - nLines = nLines + 2; - #else - nLines = nLines + 1; - #endif - } - break; - - case CALL_TIMER_CALL : - if(noActCalls <= 2) - { - #ifdef FF_CPHS - nLines = nLines + 4; - #else - nLines = nLines + 3; - #endif - } - else if(noActCalls == 3) - { - #ifdef FF_CPHS - nLines = nLines + 3; - #else - nLines = nLines + 2; - #endif - } - else if(noActCalls >= 4) - { - xPos = (SCREEN_SIZE_X - 5) - dspl_GetTextExtent( idStr, 0); - #ifdef FF_CPHS - nLines = nLines + 1; - #else - nLines = nLines; - #endif - } - break; - -#ifdef FF_CPHS - case CALL_ACTIVE_LINE: - nLines = nLines + 1; - break; -#endif - default: - break; - } -yPos = Mmi_layout_IconHeight() + (nLines * Mmi_layout_line_height()); - -#endif -/*MC SPR 1319*/ -#ifdef NO_ASCIIZ - -if (unicode_string==1) - dspl_TextOut(xPos, yPos, DSPL_TXTATTR_UNICODE, idStr); -else -#endif - dspl_ScrText(xPos, yPos, idStr, txtFormat); -/*MC SPR 1319, restore original char type*/ -dspl_set_char_type(current_display_type); - - return 0; /* Added to remove warning Aug - 11 */ -} - - -/******************************************************************************* - - $Function: call_win_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ -//GW-SPR#???-Truncate phone numbers at the beginning (lose first x chars) - -static int call_win_cb(MfwEvt e, MfwWin *w){ -// int j; // RAVI - int i = 0; - char line[/*MAX_LINE*/PHB_MAX_LEN]; - char tag[MAX_CHAR]; - char name[MAX_CHAR]; - int topLine; - int alphaUsed=0; /*a0393213 lint warnings removal - initialization done*/ - /* x0045876, 14-Aug-2006 (WR - "currentRinger" was set but never used) */ - char len; - TRACE_FUNCTION("call_win_cb"); - - switch (e) - { - case MfwWinVisible: - memset(tag,'\0',sizeof(tag)); - memset(name,'\0',sizeof(name)); - TRACE_EVENT_P1("icon SMS is = %d", iconsGetState(iconIdSMS)); - // Jun 11, 2004 REF: CRR 15634 Deepa M.D - //Check for unread SMS here and display the SMS icon accordingly. - if (smsidle_get_unread_sms_available()) - iconsSetState(iconIdSMS);//Make the SMS Icon visible. - else - iconsDeleteState(iconIdSMS);//Make the SMS Icon invisible. - /*iconsShow();*/ /* SPR#1699 - SH - Undo this change for now */ - showDefault(); - - if (!call_data.calls.numCalls){ - displaySoftKeys('\0',TxtEnd); - return 1; - } - -#ifdef FF_PHONE_LOCK - if( ( call_data.call_direction == MFW_CM_MTC ) && ( phlock_mtc_win_handle ) ) - { - TRACE_EVENT("dialog_info_win_resize_cb: creating mtc kbd handler"); - call_data.kbd= kbd_create (phlock_mtc_win_handle, KEY_ALL, (T_MFW_CB)call_kbd_cb); - } -#endif //FF_PHONE_LOCK - - switch(call_data.calls.mode){ - case CallSingle : - if (call_data.calls.muted) - { - inCall_displayData( CALL_STATUS_CALL ,TxtMuted, NULL, 0); -#ifndef LSCREEN - TRACE_EVENT("Call is Muted!"); -#else - inCall_displayData(CALL_ID_NAME_CALL, 0, name, 0); - inCall_displayData(CALL_ID_NUM_CALL, 0, tag, 0); -//x0pleela 23 May, 2006 DR: OMAPS00070657 -#ifdef FF_CPHS - if(call_data.call_direction==MFW_CM_MOC) - { - if(mmi_get_als_selectedLine()==MFW_SERV_LINE1) - { - inCall_displayData(CALL_ACTIVE_LINE,TxtLine1,NULL, 0); - } - else if(mmi_get_als_selectedLine()==MFW_SERV_LINE2) - { - inCall_displayData(CALL_ACTIVE_LINE,TxtLine2,NULL, 0); - } - } -#endif /* FF_CPHS*/ -#endif - } - else - { - i = callIndex(call_data.calls.selected); - /*a0393213 lint warnings removal - check for callIndex done*/ - if(i<0 || i>=MAX_CALLS) - { - TRACE_ERROR("call_win_cb(): Call index out of bounds"); - break; - } - alphaUsed = 0; - - if (call_data.calls.status[i].stat == CALL_ACTIVE) - { -#ifndef LSCREEN -#ifdef MMI_TTY_ENABLED - if (call_tty_get()) - inCall_displayData( CALL_STATUS_CALL, 0, "1TTY", 0); - else -#endif - inCall_displayData( CALL_STATUS_CALL ,0, "1.A.", 0); -#else - /* SPR#1352 - SH - Make this a text ID, and check for TTY*/ -#ifdef MMI_TTY_ENABLED - if (call_tty_get()) - inCall_displayData( CALL_STATUS_CALL, TxtActiveTTYCall, 0, 0); - else -#endif - inCall_displayData( CALL_STATUS_CALL, TxtActiveCall, 0, 0); -#endif - } - else - { -#ifndef LSCREEN - inCall_displayData( CALL_STATUS_CALL ,0, "1.H.", 0); -#else - /* SPR#1352 - SH - Make this a text ID, and check for TTY*/ -#ifdef MMI_TTY_ENABLED - if (call_tty_get()) - inCall_displayData( CALL_STATUS_CALL, TxtHeldTTYCall, 0, 0); - else -#endif - inCall_displayData( CALL_STATUS_CALL, TxtHeldCall, 0, 0); -#endif - } - /*mc SPR 1319*/ -#ifdef NO_ASCIIZ - if (call_data.calls.status[i].name.len > 0) - { - alphaUsed = TRUE; - if (call_data.calls.status[i].name.data[0] == 0x80) - { /*convert string from on-sim unicode to display format*/ - memset(name, 0, MAX_CHAR); - /*make sure we don't go over the end of the name string*/ - if (call_data.calls.status[i].name.len-1 > (MAX_CHAR -2)) - len = MAX_CHAR-2; - else - len = call_data.calls.status[i].name.len-1; - memcpy(&name[2], &call_data.calls.status[i].name.data[1], len); - name[0] = (char)0x80;/*a0393213 lint warnings removal - char* removed*/ - name[1] = 0x7f; - } - else - strncpy(name, (char*)call_data.calls.status[i].name.data,MAX_CHAR-1); - } -#else - if (strlen((char*)call_data.calls.status[i].name) > 0) - { - alphaUsed = TRUE; - strncpy(name, &call_data.calls.status[i].name,MAX_CHAR-1 ); - } - -#endif - if (strlen((char*)call_data.calls.status[i].number) > 0) - { - - TRACE_EVENT("output COLP number"); - /* NM, Testcase 31.1.3.1 COLP, - show the real connected number, - for single call - */ - if (strlen((char*)call_data.colp_number) > 0) - { - strncpy(tag, (char*)call_data.colp_number, MAX_CHAR-1); - } - else - { - strncpy(tag, (char*)call_data.calls.status[i].number, MAX_CHAR-1); - } - } - else - {/*MC SPR 1319*/ -#ifdef NO_ASCIIZ - if (Mmi_getCurrentLanguage() == CHINESE_LANGUAGE) - { /*prepend string with unicode tag so that we know to display it as unicode*/ - memset(tag, 0, MAX_CHAR); - tag[0] = (char)0x80;/*a0393213 lint warnings removal - typecasting done*/ - tag[1] = 0x7f; -#ifdef NEW_EDITOR /* SPR#1428 - SH - New Editor changes - new function to calculate length of unicode string */ - memcpy(&tag[2], GET_TEXT(TxtSoftCall), ATB_string_UCLength((USHORT*)GET_TEXT(TxtSoftCall))*sizeof(USHORT)); -#else /* NEW_EDITOR */ - memcpy(&tag[2], GET_TEXT(TxtSoftCall), strlenUnicode((U16*)GET_TEXT(TxtSoftCall))-2); -#endif /* NEW_EDITOR */ - TRACE_EVENT_P1("TxtSoftCall: %s", tag); - } - else -#endif - /*mc end*/ { - memcpy(tag, GET_TEXT(TxtSoftCall), MAX_CHAR); - } - } - } - - if(alphaUsed == TRUE) - { - alphaUsed = FALSE; - inCall_displayData(CALL_ID_NAME_CALL, 0, name, 0); -#ifdef LSCREEN - inCall_displayData(CALL_ID_NUM_CALL, 0, tag, 0); -#endif - } - else - inCall_displayData(CALL_ID_NUM_CALL, 0, tag, 0); - -//x0pleela 23 May, 2006 DR: OMAPS00070657 -#ifdef FF_CPHS - if(CphsPresent() && mmi_cphs_get_als_value()) - { - - TRACE_FUNCTION_P1("call_data.call_direction: %d", call_data.call_direction); - if(call_data.call_direction==MFW_CM_MOC) - { - if(mmi_get_als_selectedLine()==MFW_SERV_LINE1) - { - inCall_displayData(CALL_ACTIVE_LINE,TxtLine1,NULL, 0); - } - else if(mmi_get_als_selectedLine()==MFW_SERV_LINE2) - { - inCall_displayData(CALL_ACTIVE_LINE,TxtLine2,NULL, 0); - } - else - inCall_displayData(CALL_ACTIVE_LINE,TxtNull,NULL, 0); - } - else if(call_data.call_direction==MFW_CM_MTC) - { TRACE_FUNCTION_P1("call_data.call_direction: %d", call_data.call_direction); - if( mfw_get_ALS_type() EQ VOICE_CALL) - { - inCall_displayData(CALL_ACTIVE_LINE,TxtLine1,NULL, 0); - } - else if(mfw_get_ALS_type() EQ AuxVOICE_CALL) - { - inCall_displayData(CALL_ACTIVE_LINE,TxtLine2,NULL, 0); - } - else - inCall_displayData(CALL_ACTIVE_LINE,TxtNull,NULL, 0); - } - } -#endif /* FF_CPHS */ - - - memset(line,'\0',sizeof(line)); - - getTimeString(call_data.calls.time[i],(char*)line); - - if (InCallTimer == TRUE) - { - inCall_displayData(CALL_TIMER_CALL, 0, line, 0); - } - break; - case CallTwo : - case CallConference : - default: - - if (call_data.calls.numCalls 0) - { - if (call_data.calls.status[i].name.data[0] == 0x80) - { /*convert string from on-sim unicode to display format*/ - memset(name, 0, MAX_CHAR); - /*make sure we don't go over the end of the name string*/ - if (call_data.calls.status[i].name.len-1 > (MAX_CHAR -2)) - len = MAX_CHAR-2; - else - len = call_data.calls.status[i].name.len-1; - memcpy(&name[2], &call_data.calls.status[i].name.data[1], len); - name[0] = (char)0x80;/*a0393213 lint warnings removal - type casting done*/ - name[1] = 0x7f; - } - else - { - strncpy(name, (char*)call_data.calls.status[i].name.data,MAX_CHAR-1); - } - } -#else - if (strlen((char*)call_data.calls.status[i].name) > 0) - { - alphaUsed = TRUE; - strncpy(name, &call_data.calls.status[i].name,MAX_CHAR-1 ); - } -#endif - - if (strlen((char*)call_data.calls.status[i].number) > 0) - { - TRACE_EVENT("output COLP number"); - /* - *COLP, show the real connected number, - for multi call - */ - if (strlen((char*)call_data.colp_number) > 0) - { strncpy(tag, (char*)call_data.colp_number, MAX_CHAR-1); - } - else - { strncpy(tag, (char*)call_data.calls.status[i].number, MAX_CHAR-1); - } - } - else - { - /*MC SPR 1319*/ -#ifdef NO_ASCIIZ - if (Mmi_getCurrentLanguage() == CHINESE_LANGUAGE) - { /*prepend string with unicode tag so that we know to display it as unicode*/ - memset(tag, 0, MAX_CHAR); - tag[0] = (char)0x80;/*a0393213 lint warnings removal - typecasting done*/ - tag[1] = 0x7f; -#ifdef NEW_EDITOR /* SPR#1428 - SH - New Editor changes - new function to calculate length of unicode string */ - memcpy(&tag[2], GET_TEXT(TxtSoftCall), ATB_string_UCLength((USHORT*)GET_TEXT(TxtSoftCall))*sizeof(USHORT)); -#else /* NEW_EDITOR */ - memcpy(&tag[2], GET_TEXT(TxtSoftCall), strlenUnicode((U16*)GET_TEXT(TxtSoftCall))-2); -#endif /* NEW_EDITOR */ - TRACE_EVENT_P1("TxtSoftCall: %s", tag); - } - else -#endif - /*mc end*/ - memcpy(tag, GET_TEXT(TxtSoftCall), MAX_CHAR); - } - - if(alphaUsed == TRUE) - { - alphaUsed = FALSE; - inCall_displayData(CALL_ID_NAME_CALL, 0, name, i); -#ifdef LSCREEN - inCall_displayData(CALL_ID_NUM_CALL, 0, tag, i); -#endif - } - else - inCall_displayData(CALL_ID_NUM_CALL, 0, tag, i); - - if (((call_data.calls.mode== CallConference)||(call_data.calls.mode== CallMultipartySingle)) - && (i==callIndex(call_data.calls.selected))) - { - multiCall_ActiveCall(CALL_STATUS_CALL, i); - inCall_displayData(CALL_ID_NUM_CALL, 0, tag, i); - } - else - { - inCall_displayData(CALL_ID_NUM_CALL, 0, tag, i); - } -#ifdef LSCREEN - memset(line,'\0',sizeof(line)); - - getTimeString(call_data.calls.time[i],(char*)line); - - /* JVJ Call timer removed, it makes the display unreadable */ -#endif - } - break; - } - displaySoftKeys(TxtSoftOptions,TxtEnd); - break; - default: - break; - } - - return 1; -} - - - - -/******************************************************************************* - - $Function: call_kbd_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - -static int call_kbd_cb (MfwEvt e, MfwKbd *k){ - - T_MFW_HND win = mfwParent(mfw_header()); //GW Added - int index; - - /* a0393213 (WR - "volStep" was set but never used) */ - /* int volStep; */ - - TRACE_FUNCTION("call_kbd_cb"); - - /* a0393213 (WR - "volStep" was set but never used) */ - /* - //GW Change volume in large steps if sound has a large range - if (MAX_SOUND < 8) - volStep = 1; - else - volStep = MAX_SOUND / 4; - */ - - switch (k->code) - { - case KCD_MNUUP: - if ((call_data.calls.mode== CallConference)||(call_data.calls.mode== CallMultipartySingle)) - { - index = callIndex(call_data.calls.selected); - if (index ==0) - index = call_data.calls.numCalls; - index = index - 1; - call_data.calls.selected = call_data.calls.status[index].call_number; - winShow(win); - } - else - { -// 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. - - T_MFW_HND Volmenu_handle; // Menu Handle - UBYTE currentLevel = 0; // Index of the menuitem where the focus should be. - - // Setting the reason why the volume settings is going to be changed. - setSoundsReason(SettingVolume); - // Display the menu, if the user presses the MENU key up - Volmenu_handle = bookMenuStart(call_data.win, ringerVolumeLevels(), SettingVolume); - - switch(FFS_flashData.output_volume) - { - case OutVolumeLevel1: - { - // If the current speaker volume is OutVolumeLevel1, - // focus the first menu item. I.e Level 1. - currentLevel = 0; - } - break; - case OutVolumeLevel2: - { - // Level 2 - currentLevel = 1; - } - break; - case OutVolumeLevel3: - { - // Level 3 - currentLevel = 2; - } - break; - case OutVolumeLevel4: - { - // Level 4 - currentLevel = 3; - } - break; - case OutVolumeLevel5: - { - // Level 5 - currentLevel = 4; - } - break; - default: - { - FFS_flashData.output_volume = OutVolumeLevel3; - currentLevel = 2; - } - } - - // Set the focus to the currently selected volume level menu item. - SEND_EVENT(Volmenu_handle, DEFAULT_OPTION, NULL, ¤tLevel); - - } - break; - - case KCD_MNUDOWN: - if ((call_data.calls.mode== CallConference)||(call_data.calls.mode== CallMultipartySingle)) - { - index = callIndex(call_data.calls.selected); - index = index + 1; - if (index >= call_data.calls.numCalls) - index = 0; - call_data.calls.selected = call_data.calls.status[index].call_number; - winShow(win); - } - else - { -// 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. - T_MFW_HND Volmenu_handle;// Menu Handle - UBYTE currentLevel = 0;// Index of the menuitem where the focus should me. - - // Setting the reason why the volume settings is going to be changed. - setSoundsReason(SettingVolume); - // Display the menu, if the user presses the MENU key DOWN - Volmenu_handle = bookMenuStart(call_data.win, ringerVolumeLevels(), SettingVolume); - switch(FFS_flashData.output_volume) - { - case OutVolumeLevel1: - { - // If the current speaker volume is OutVolumeLevel1, - // focus the first menu item. I.e Level 1. - currentLevel = 0; - } - break; - case OutVolumeLevel2: - { - currentLevel = 1; - } - break; - case OutVolumeLevel3: - { - currentLevel = 2; - } - break; - case OutVolumeLevel4: - { - currentLevel = 3; - } - break; - case OutVolumeLevel5: - { - currentLevel = 4; - } - break; - default: - { - FFS_flashData.output_volume = OutVolumeLevel3; - currentLevel = 2; - } - } - // Set the focus to the currently selected volume level menu item. - SEND_EVENT(Volmenu_handle, DEFAULT_OPTION, NULL, ¤tLevel); - } - break; - case KCD_LEFT: - { - /*a0393213 lint warning removal - call index bound check done*/ - int call_index=callIndex(call_data.calls.selected); - if(call_index<0 || call_index>=MAX_CALLS) - { - TRACE_ERROR("call_kbd_cb(): call index out of bound"); - break; - } - switch (call_data.calls.mode){ - case CallSingle: - if (call_data.calls.status[call_index].stat == CALL_ACTIVE) - menuCallSingleItems[1].str = (char*)TxtHold; - else - menuCallSingleItems[1].str = (char*)TxtUnhold; - call_data.win_menu = call_menu_start(call_data.win,(T_MFW_MNU_ATTR *)&menuCallSingle,(T_VOID_FUNC)call_menu_end_cb); - break; - case CallTwo: - if (call_data.calls.status[call_index].stat == CALL_ACTIVE) - menuCallTwoItems[5].str = (char*)TxtHold; - else - menuCallTwoItems[5].str = (char*)TxtUnhold; - call_data.win_menu = call_menu_start(call_data.win,(T_MFW_MNU_ATTR *)&menuCallTwo,(T_VOID_FUNC)call_menu_end_cb); - break; - case CallConference: - if (call_data.calls.status[call_index].stat == CALL_ACTIVE) - menuCallConferenceItems[5].str = (char*)TxtHold; - else - menuCallConferenceItems[5].str = (char*)TxtUnhold; - menuCallConferenceItems[0].str = (char*)TxtPrivateCall; - call_data.win_menu = call_menu_start(call_data.win,(T_MFW_MNU_ATTR *)&menuCallConference,(T_VOID_FUNC)call_menu_end_cb); - break; - case CallSingleMultiparty: - case CallMultipartySingle: - menuCallConferenceItems[0].str = (char*)TxtAddToConference; - call_data.win_menu = call_menu_start(call_data.win,(T_MFW_MNU_ATTR *)&menuCallConference,(T_VOID_FUNC)call_menu_end_cb); - break; - default: - break; - } - break; - } - case KCD_CALL: - holdExec(0, 0); - break; - - case KCD_HUP: -//x0pleela 09 Mar, 2006 ER:OMAPS00067709 -//updating voice buffering data -#ifdef FF_PCM_VM_VB - if( get_voice_memo_type() EQ VOICE_BUFFERING ) - { - voice_buffering_data.rec_stop_reason = CALLING_PARTY_END_CALL; - } -#endif - cm_end_all(); - break; - case KCD_RIGHT: -//x0pleela 09 Mar, 2006 ER:OMAPS00067709 -//updating voice buffering data -#ifdef FF_PCM_VM_VB - if( get_voice_memo_type() EQ VOICE_BUFFERING ) - { - voice_buffering_data.rec_stop_reason = CALLING_PARTY_END_CALL; - } -#endif - if (!call_data.calls.numCalls) - { - cm_force_disconnect(); - call_data.ignore_disconnect = TRUE; -// Jun 02, 2006 DRT OMAPS00079213 x0039928(sumanth) -// Fix: Hook is unregistered when the call is disconnected through keypad or hook. -#ifdef FF_MMI_AUDIO_PROFILE -// Aug 17, 2006 REF:OMAPS00090196 x0039928 -#ifdef MMI_TTY_ENABLED - -if(FFS_flashData.ttyAlwaysOn == FALSE && call_data.tty == CALL_TTY_OFF) - -#endif - mfw_hook_unregister(); -#endif - /* SPR#1985 - SH - Revert to initial TTY setting*/ -#ifdef MMI_TTY_ENABLED - call_tty_revert(); -#endif - /* end SH */ - call_destroy(call_data.win); - return 1; - } - // MMI-SPR 13847 xkundadu - // Assign this variable to TRUE to indicate that, host pary started - // the disconnection. - bhostDisconnection = TRUE; - - - switch (call_data.calls.mode) - { - case CallConference: - case CallMultipartySingle: - cm_disconnect(call_data.calls.selected); - break; - default: - { - TRACE_EVENT_P1("call Id %d",call_data.calls.selected); - } - cm_disconnect(call_data.calls.selected); - if (call_data.calls.numCalls==1){ - call_data.ignore_disconnect = TRUE; - /* SPR#1985 - SH - Revert to initial TTY setting*/ -#ifdef MMI_TTY_ENABLED - call_tty_revert(); -#endif - /* end SH */ - // May 9, 2006 REF:DR OMAPS00074884 xrashmic - removeCall(call_data.calls.selected, TRUE,FALSE); - } - break; - } - break; - default: - - //April 25, 2005 REF: MMI-FIX-30125 x0018858 - //The condition has been modified to support the second call DTMF input. - /* use the DTMF only for single call */ - if (call_data.calls.mode EQ CallNormal ||call_data.calls.mode EQ CallDone || - call_data.calls.mode EQ CallNew ||call_data.calls.mode EQ CallSingle || call_data.calls.mode EQ CallTwo) - { - TRACE_EVENT("send DTMF"); - call_scratchpad_start(call_data.win,editControls[k->code],ViewDTMF, 0); - } - // if (call_data.calls.mode EQ CallTwo ||call_data.calls.mode EQ CallConference || - //call_data.calls.mode EQ CallSingleMultiparty ||call_data.calls.mode EQ CallMultipartySingle) - if (call_data.calls.mode EQ CallConference ||call_data.calls.mode EQ CallSingleMultiparty ||call_data.calls.mode EQ CallMultipartySingle) - { - TRACE_EVENT("send no DTMF and the keys are able for multicall controll"); - call_scratchpad_start(call_data.win,editControls[k->code],ViewMulticallControl, ViewMulticallControlCallWaiting); - } - - break; - - } - return 1; - - -} - -/******************************************************************************* - - $Function: call_kbd_long_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - -static int call_kbd_long_cb (MfwEvt e, MfwKbd *k){ - - TRACE_FUNCTION("callConnectKeyEvent"); - return MFW_EVENT_CONSUMED; - - -} - - - - -/******************************************************************************* - - $Function: call_incoming_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - -void call_incoming_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) -{ -// T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; // RAVI -// T_call * data = (T_call *)win_data->user; // RAVI - - /* a0393213 (WR - "currentRinger" was set but never used) */ -#ifndef FF_MIDI_RINGER -#ifndef FF_MMI_RINGTONE - UBYTE currentRinger; -#endif -#endif - /* - * special case: Identifier is used only for the Multicall Control - */ - - /* API - 10/11/2003 - SPR 2472 - Remove the call to turn backlight on from here and place in the incomingCall() function */ - /* API - 10/11/2003 - SPR 2472 - END */ - - TRACE_FUNCTION ("call_incoming_cb()"); - - /*SPR 2646, don't reset window variable till window is destroyed*/ - /* a0393213 (WR - "currentRinger" was set but never used) */ -#ifndef FF_MIDI_RINGER -#ifndef FF_MMI_RINGTONE - currentRinger = getCurrentRingerSettings(); -#endif -#endif - - switch (reason) - { - case INFO_KCD_HUP: - case INFO_KCD_RIGHT: - - // terminate the ringing - /* MZ 1/08/03 issue 2359, terminated the call waiting tone when user rejects the waiting call from the - active call state.*/ - call_data.win_incoming = 0;/*SPR 2646, the dialogue is destroyed*/ - -// Jun 02, 2006 DRT OMAPS00079213 x0039928(sumanth) -// Fix: Hook is unregistered when a call is rejected. -#ifdef FF_MMI_AUDIO_PROFILE -// Aug 17, 2006 REF:OMAPS00090196 x0039928 -#ifdef MMI_TTY_ENABLED - -if(FFS_flashData.ttyAlwaysOn == FALSE && call_data.tty == CALL_TTY_OFF) - -#endif - - if (!call_data.calls.numCalls) - mfw_hook_unregister(); -#endif - cm_mt_reject(); - -//Nov 09, 2005 REF: OMAPS00043190 - x0018858 -// Check to see if the window has not been deinitialized and then de-init -// it on rejecting the call. -//begin - if (satDisplayTextWin) - { - SEND_EVENT (satDisplayTextWin, E_ED_DEINIT, INFO_KCD_LEFT, NULL); - } -//end - break; - case INFO_KCD_OFFHOOK: - case INFO_KCD_LEFT: - - call_data.win_incoming = 0;/*SPR 2646, the dialog is destroyed here too*/ - /* SPR#1983 - SH - Destroy WAP if WAP call is active */ -#ifdef FF_WAP - if (AUI_wap_in_call()) - { - AUI_wap_browser_disconnect(); - } - else - { - cm_mt_accept(); -#else - { - cm_mt_accept(); -#endif - /* MZ cq11080 25/07/03 Remove mute, when incoming call is accepted. */ - if (call_data.calls.muted) - { - if (audio_SetMute(AUDIO_MICROPHONE, AUDIO_MUTING_OFF) == DRV_OK) - { - call_data.calls.muted = false; - menuCallSingleItems[2].str = (char*)TxtMute; - } - } - } - - break; - case INFO_KCD_UP: - case INFO_KCD_DOWN: - - // MZ 3/4/01set the sound reason to volume setting from incomingcall. - /*SPR 2646, don't create a volume setting menu more than once*/ - setSoundsReason(SettingVolume); - if (!call_data.win_menu) - { - // MZ 3/4/01 display the volume settings menu. - call_data.win_menu=bookMenuStart(call_data.win, ringerVolumeSetting(), SettingVolume); - } - - break; - //this is for the auto answer - case INFO_TIMEOUT: -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -// Stopping the current ring tone. -#ifdef FF_MIDI_RINGER - mfw_ringer_stop(sounds_midi_ringer_stop_cb); -#else -#ifdef FF_MMI_RINGTONE /*MSL Stop */ - audio_StopSoundbyID( AUDIO_BUZZER, CALLTONE_SELECT); -#else - audio_StopSoundbyID( AUDIO_BUZZER, currentRinger ); -#endif -#endif - cm_mt_accept(); - call_data.win_incoming = 0;/*SPR 2646, this is the only point where this variable should be reset*/ - break; - - case INFO_KCD_ALL: - - call_data.win_incoming = 0;/*SPR 2646, the dialog is destroyed here too*/ - // only allowed if Keypadlock -> off and the AnyKeyAnswer -> on - if ((FFS_flashData.settings_status & SettingsAnyKeyAnswerOn) AND - !(FFS_flashData.settings_status & SettingsKeyPadLockOn)) - { - TRACE_EVENT ("call_incoming_cb() with Anykeyanswer"); - mmeAudioTone(0, 0, TONE_SWT_OFF); -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -// Stopping the current ring tone. -#ifdef FF_MIDI_RINGER - mfw_ringer_stop(sounds_midi_ringer_stop_cb); -#else -#ifdef FF_MMI_RINGTONE /*Stop MSL */ - audio_StopSoundbyID( AUDIO_BUZZER, CALLTONE_SELECT); -#else - audio_StopSoundbyID( AUDIO_BUZZER, currentRinger ); -#endif -#endif - cm_mt_accept(); - } - else /* open the scratchpad for the Multicall Control */ - { - call_scratchpad_start(call_data.win, editControls[identifier], ViewMulticallControl, ViewMulticallControlIncomingCall); - - } - - break; - - default: - - break; - } -} - -#if(0) /* x0039928 - Commented for lint warning removal */ -/******************************************************************************* - - $Function: call_incoming_animation_cb - - $Description: callback for the in-call animation timer expiring - - $Returns: 1 - - $Arguments: e - event (unused) - t - timer control block (unused) - - $ History - GW #1555 15/01/03 - Disabled animation code for GOLite b+w display - GW #1555 15/01/03 - Changed code to use data from the icon structure instead of hard - coded values. - -*******************************************************************************/ -static int call_incoming_animation_cb (MfwEvt e, MfwTim *t) -{ -#ifdef COLOURDISPLAY - MfwIcnAttr *anim; - call_data.animationScreen = (call_data.animationScreen + 1) % CALLANIMATION ; - - if (call_data.incCall != 0) - { - anim = (MfwIcnAttr *)&incoming_call_animate[call_data.animationScreen]; - dspl_BitBlt2(anim->area.px,anim->area.py,anim->area.sx,anim->area.sy,(void*)anim->icons,0,anim->icnType); - timStart(call_data.timer); - } -#endif - return 1; -} -#endif - -/******************************************************************************* - - $Function: incomingCall - - $Description: - - $Returns: - - $Arguments: - - //SPR#2106 - DS - Function restructured to check return value from bookFindNameInPhonebook(). - Also checks if supplied number is empty string and, if empty, sets TextId2 to TxtNumberWithheld. -*******************************************************************************/ - -void incomingCall(const T_MFW_CM_CW_INFO* p_pCwInfo) -{ - - int phbMatch=0; -/*May 10,2007 DR:OMAP00127983 x0066814(Geetha)*/ - T_MFW_PHB_TEXT *new_cnap_name; - - TRACE_FUNCTION("incomingCall()"); - -//x0pleela 14 Mar, 2006 ER: OMAPS00067709 -#ifdef FF_PCM_VM_VB - //Reject the incoming call if in buffering phase - if( (get_voice_memo_type() EQ VOICE_BUFFERING) AND voice_buffering_data.buffering_phase) - { - voice_buffering_data.incoming_call_discon = TRUE; - cm_mt_reject(); - return; - } - -#endif - - /* API - 10/11/2003 - SPR 2472 - Place the call to turn on the backlight here so the backlight comes on for all calls */ - mme_backlightEvent(BL_INCOMING_CALL); - /* API - 10/11/2003 - SPR 2472 - END */ - - /*SPR 1392, replaced local variable display_info with call_data.inc_call_data, so incoming calls dialog - can be easily resurrected*/ - - if(p_pCwInfo == 0) - return; - - //x0pleela 03 Apr, 2007 ER: OMAPS00122561 -#ifdef FF_PHONE_LOCK - call_data.call_direction = MFW_CM_MTC; -#endif //FF_PHONE_LOCK - - if (!call_data.win) - call_create(0); - - if (call_data.calls.numCalls == 0) - { - -// Jun 02, 2006 DRT OMAPS00079213 x0039928(sumanth) -// Fix: Hook is registered when an incoming call comes. - -//May 16, 2007 DRT OMAPS00116526 x0066692(Asha) -//Moved down the code. mfw_hook_register() is called after starting the Ringer. - - SEND_EVENT(call_data.win,CALL_INIT,0,0); - } - - //set the global status - MmiModuleSet(ModuleInCall); - - memcpy(&call_data.globalCWInfo, p_pCwInfo, sizeof(call_data.globalCWInfo)); - call_data.incCall = p_pCwInfo->call_number; - call_data.call_direction = MFW_CM_MTC; - - - /* SPR#1983 - SH - Detect if WAP call is in progress */ -#ifdef FF_WAP - if (AUI_wap_in_call()) - { - dlg_initDisplayData_TextId( &call_data.inc_call_data, TxtEndWap, TxtReject, TxtNull, TxtNull , COLOUR_STATUS_INCOMINGCALL); - } - else -#endif - { - dlg_initDisplayData_TextId( &call_data.inc_call_data, TxtAccept, TxtReject, TxtNull, TxtNull , COLOUR_STATUS_INCOMINGCALL); - } - /* end SPR#1983 */ - - //Daisy tang added for Real Resume feature 20071107 - //start - if(IsMP3Playing) - { - UINT i; - - IsRealPaused = TRUE; - mfw_fm_audRealPause(); - mp3playTimer = timCreate( 0, 800, (MfwCb)mp3_test_play_Timer_cb); -#if 0 - for(i = 0;i<50;i++) - { - /* - #define AS_STATE_STARTING 3 - #define AS_STATE_STOPPING 5 - */ - if((as_get_state() EQ 3) OR (as_get_state() EQ 5)) - vsi_t_sleep(0,10); /* small delay */ - else - break; - } -#endif - } - //end - /* MZ 1/08/03 issue 2359, generate a call waiting tone/indication in the ear piece. */ - if(call_data.calls.numCalls) - /* RAVI - 20-1-2006 */ - /* Silent Implementation */ -#ifdef NEPTUNE_BOARD - audio_PlaySoundID( AUDIO_MICROPHONE, TONES_CW, getCurrentVoulmeSettings(), - AUDIO_PLAY_INFINITE); -#else - audio_PlaySoundID( AUDIO_MICROPHONE, TONES_CW, 0, AUDIO_PLAY_INFINITE); -#endif -/* END RAVI */ - else -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -#ifdef FF_MIDI_RINGER - mfw_ringer_start(AS_RINGER_MODE_IC,true,sounds_midi_ringer_start_cb); - -//May 16, 2007 DRT OMAPS00116526 x0066692(Asha) -//mfw_hook_register() is called after starting the Ringer. -#ifdef FF_MMI_AUDIO_PROFILE -// Aug 17, 2006 REF:OMAPS00090196 x0039928 -#ifdef MMI_TTY_ENABLED - -if(FFS_flashData.ttyAlwaysOn == FALSE && call_data.tty == CALL_TTY_OFF) - -#endif - mfw_hook_register(); -#endif - -#else -/* RAVI - 20-1-2006 */ -#ifdef NEPTUNE_BOARD -#ifdef FF_MMI_RINGTONE /* MSL Ring Tone */ - audio_PlaySoundID( AUDIO_BUZZER, CALLTONE_SELECT, 0 , AUDIO_PLAY_INFINITE); -#else - { - UBYTE currentRinger; - currentRinger=getCurrentRingerSettings(); - audio_PlaySoundID( AUDIO_BUZZER, currentRinger, getCurrentVoulmeSettings(), - AUDIO_PLAY_INFINITE); - } -#endif -#else - { - UBYTE currentRinger; - currentRinger=getCurrentRingerSettings(); - audio_PlaySoundID( AUDIO_BUZZER, currentRinger, 0 , AUDIO_PLAY_INFINITE); - } -#endif -/* END RAVI */ - -#endif - call_data.inc_call_data.TextId2 = 0; - call_data.inc_call_data.TextString2 = NULL;/*a0393213 lint warnings removal - '\0' changed to NULL*/ - - TRACE_EVENT_P1("number %s",call_data.globalCWInfo.number); - - /*SPR#2106 - DS - Check if supplied number string is empty */ - if (call_data.globalCWInfo.number[0] == 0x00) - { - /* No number supplied */ - idwithheld = TRUE; - call_data.inc_call_data.TextId2 = TxtNumberWithheld; - } - else - { - /* Number supplied */ - idwithheld = FALSE; - - /* Try to find number in PB entry */ - phbMatch = bookFindNameInPhonebook((char*)call_data.globalCWInfo.number,&call_data.entry); - -#ifdef NO_ASCIIZ - TRACE_EVENT_P1("name %s",call_data.entry.name.data); -#else /* NO_ASCIIZ */ - TRACE_EVENT_P1("name %s",call_data.entry.name); -#endif /* NO_ASCIIZ */ - - /* Set up alpha tag */ - - if (phbMatch == TRUE) - { - /* Match found */ -#ifdef NO_ASCIIZ - if (call_data.entry.name.len > 0) - {/* MC, SPR 1257, merge from 3.3.3*/ - memset(call_data.phbNameNumber, 0, EDITOR_SIZE); - memcpy(call_data.phbNameNumber,(char*)call_data.entry.name.data, sizeof(call_data.phbNameNumber)); - /*MC end*/ - - //GW-SPR#762 - String may not be null terminated - add null at end. - if (call_data.entry.name.len < EDITOR_SIZE) - call_data.phbNameNumber[call_data.entry.name.len] = 0x00; - - call_data.inc_call_data.TextString2 = call_data.phbNameNumber; - } -#else /* NO_ASCIIZ */ - //checking for the number from caller - if (strlen((char*)call_data.entry.name) > 0) - { - bookGsm2Alpha((UBYTE*)call_data.entry.name); - strncpy((char*)call_data.phbNameNumber,(char*)call_data.entry.name,sizeof(call_data.phbNameNumber)); - call_data.inc_call_data.TextString2 = (char*)call_data.phbNameNumber; - } -#endif /* NO_ASCIIZ */ - } -/*May 10,2007 DR:OMAP00127983 x0066814(Geetha)-Begin*/ -else if (CALL_NAME_NETWORK) - { - /*Name is from Network (rAT_%CNAP)*/ - CALL_NAME_NETWORK=FALSE; - new_cnap_name=get_cnap_name(); - call_data.globalCWInfo.name.len=new_cnap_name->len; -#ifdef NO_ASCIIZ - memcpy(call_data.globalCWInfo.name.data,new_cnap_name->data,sizeof(call_data.globalCWInfo.name.data)); - if (call_data.globalCWInfo.name.len > 0) - { - memset(call_data.phbNameNumber, 0, EDITOR_SIZE); - memcpy(call_data.phbNameNumber,(char*)call_data.globalCWInfo.name.data, sizeof(call_data.phbNameNumber)); - - //String may not be null terminated - add null at end. - if (call_data.entry.name.len < EDITOR_SIZE) - call_data.phbNameNumber[call_data.globalCWInfo.name.len] = 0x00; - - call_data.inc_call_data.TextString2 = call_data.phbNameNumber; - } -#else /* NO_ASCIIZ */ - //checking for the number from caller - strcpy(call_data.globalCWInfo.name.len,new_cnap_name->len); - strcpy(call_data.globalCWInfo.name.data,new_cnap_name->data); - if (strlen((char*)call_data.globalCWInfo.name) > 0) - { - bookGsm2Alpha((UBYTE*)call_data.globalCWInfo.name); - strncpy((char*)call_data.phbNameNumber,(char*)call_data.globalCWInfo.name,sizeof(call_data.phbNameNumber)); - call_data.inc_call_data.TextString2 = (char*)call_data.phbNameNumber; - } -#endif /* NO_ASCIIZ */ - } -/*May 10,2007 DR:OMAP00127983 x0066814(Geetha)- End*/ - else - { - /* No match */ - if (strlen((char*)call_data.globalCWInfo.number) > 0) - { - int max_size = sizeof(call_data.phbNameNumber); - memset((char*)call_data.phbNameNumber, 0x00, max_size); - /* SH 12/02/02. Ensure that '+' is included before international numbers. */ - if ((call_data.globalCWInfo.ton == MFW_TON_INTERNATIONAL) && (call_data.globalCWInfo.number[0] != (UBYTE)'+') ) - { - strcpy((char*)call_data.phbNameNumber,"+"); - max_size--; - } - - /* sbh end */ - - strncat((char*)call_data.phbNameNumber,(char*)call_data.globalCWInfo.number, max_size); - - call_data.inc_call_data.TextString2 = (char*)call_data.phbNameNumber; - } - } - } - //GW-SPR#762 - Wrap number/name onto 2nd line (if too long) - call_data.inc_call_data.WrapStrings = WRAP_STRING_2; - - if (!ALSPresent(NULL, NULL, NULL)) - { - if (call_data.globalCWInfo.type EQ VOICE_CALL) - call_data.inc_call_data.TextId = TxtLine1; - if (call_data.globalCWInfo.type EQ AuxVOICE_CALL) - call_data.inc_call_data.TextId = TxtLine2; - } - else - { - if (call_data.globalCWInfo.type EQ VOICE_CALL) - { - /* SPR#1352 - SH - Modify dialog if this is a TTY call */ - /* API - 10-01-03 - 1543 - change the pointer from display_info to call_data.inc_call_data */ -#ifdef MMI_TTY_ENABLED - if (call_tty_get()) - { - call_data.inc_call_data.TextId = TxtIncomingTTYCall; - } - else - { - - call_data.inc_call_data.TextId = TxtIncomingCall; - } -#else /* MMI_TTY_ENABLED */ - call_data.inc_call_data.TextId = TxtIncomingCall; -#endif /* MMI_TTY_ENABLED */ - } - /* end SH */ - - } - - if (call_data.globalCWInfo.type EQ DATA_CALL) - call_data.inc_call_data.TextId = TxtIncomingData; // Only to be able to compile. - - if (call_data.globalCWInfo.type EQ FAX_CALL) - call_data.inc_call_data.TextId = TxtIncomingFax; //SPR#1147 - DS - changed text id from "Fax" to "Incoming fax". - -#ifndef COLOURDISPLAY - call_data.inc_call_data.dlgType = 0; - call_data.inc_call_data.bgdBitmap = NULL; -#else /* COLOURDISPLAY */ - call_data.inc_call_data.dlgType = DLG_BORDER_VERTICAL_1|DLG_BORDER_HORIZONTAL_1|DLG_INFO_LAYOUT_CENTRE|DLG_INFO_LAYOUT_BOTTOM; - call_data.inc_call_data.bgdBitmap = icon_getBgdBitmap(BGD_INCALL); -#endif /* COLOURDISPLAY */ - - if (FFS_flashData.settings_status & SettingsAutoAnswerOn) - { - //Assume we cannot do call deflection if auto-answer is on (not enough time) - // xrashmic 12 Aug, 2004 Bug: 14, 21 - //Disabled the KEY_MNUUP|KEY_MNUDOWN for this dialog. It used to display the alert mode screen in the incoming call screen - dlg_initDisplayData_events( &call_data.inc_call_data, (T_VOID_FUNC)call_incoming_cb, THREE_SECS, KEY_RIGHT|KEY_LEFT|KEY_HUP|KEY_CALL|INFO_KCD_ALL ); - } - /*SPR 1392, if call deflection is off*/ - else if (FFS_flashData.call_deflection!= TRUE) - { - // xrashmic 12 Aug, 2004 Bug: 14, 21 - //Disabled the KEY_MNUUP|KEY_MNUDOWN for this dialog. It used to display the alert mode screen in the incoming call screen - dlg_initDisplayData_events( &call_data.inc_call_data, (T_VOID_FUNC)call_incoming_cb, FOREVER, KEY_RIGHT|KEY_LEFT|KEY_HUP|KEY_CALL|INFO_KCD_ALL ); - } - else //Call deflection active - { - call_data.inc_call_data.LeftSoftKey = TxtDeflect; - // xrashmic 12 Aug, 2004 Bug: 14, 21 - //Disabled the KEY_MNUUP|KEY_MNUDOWN for this dialog. It used to display the alert mode screen in the incoming call screen - dlg_initDisplayData_events( &call_data.inc_call_data, (T_VOID_FUNC)call_deflection_cb, FOREVER, KEY_RIGHT|KEY_LEFT|KEY_HUP|KEY_CALL|INFO_KCD_ALL ); - } - - /* - ** Turn on the backlight - */ - mme_backlightEvent(BL_INCOMING_CALL); - /* - * Call Info Screen - */ -#ifdef COLOURDISPLAY - mmi_dialogs_insert_animation_new(&call_data.inc_call_data,250,(MfwIcnAttr*)incoming_call_animate, CALLANIMATION); -#endif - call_data.win_incoming = info_dialog (call_data.win, &call_data.inc_call_data); - -} - - - - -/******************************************************************************* - - $Function: call_calling_show - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - - -static void call_calling_show (USHORT Identifier) -{ - - T_DISPLAY_DATA display_info; - TRACE_FUNCTION("call_calling_show"); - - /* SPR#1352 - SH - Modify dialog if this is a TTY call */ -#ifdef MMI_TTY_ENABLED - if (call_tty_get()) - { - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtEnd, TxtTTYCalling, TxtNull , COLOUR_STATUS_CALLING); - } - else -#endif - { - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtEnd, TxtCalling, TxtNull , COLOUR_STATUS_CALLING); - } - /* end SH */ - - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)call_calling_cb, FOREVER, KEY_RIGHT | KEY_HUP | NUMERIC_KEYS ); - display_info.Identifier = Identifier; - //GW-SPR#762 - Wrap number/name onto 2nd line (if too long) - display_info.WrapStrings = WRAP_STRING_2; - - if (call_data.emergencyCall) - display_info.TextId2 = TxtSOS; - else - display_info.TextString2 = (char*)call_data.phbNameNumber; - //x0035544 Mar 09, 2006 DR:OMAPS00061467 -#ifdef FF_MMI_SAT_ICON - if(call_data.IconData.dst != NULL) - { - //copy the icon data to be displayed on to the screen. - display_info.IconData.width = call_data.IconData.width; - display_info.IconData.height = call_data.IconData.height; - display_info.IconData.dst = call_data.IconData.dst; - display_info.IconData.selfExplanatory = call_data.IconData.selfExplanatory; - } -#endif - - /* set the user defined identifier */ - call_data.win_calling= info_dialog (call_data.win, &display_info); -} - - -/******************************************************************************* - - $Function: call_calling_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - -void call_calling_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) -{ - // T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; // RAVI -// T_call * data = (T_call *)win_data->user; // RAVI - /* - * Who has initiated the information screen - */ - TRACE_FUNCTION ("call_calling_cb()"); - call_data.win_calling = 0; - switch (reason) - { - case INFO_TIMEOUT: - break; - case INFO_KCD_HUP: - case INFO_KCD_RIGHT: - -//x0pleela 09 Mar, 2006 ER:OMAPS00067709 -//updating voice buffering data -#ifdef FF_PCM_VM_VB - if( get_voice_memo_type() EQ VOICE_BUFFERING ) - { - voice_buffering_data.rec_stop_reason = CALL_END_BEF_SETUP; - } -#endif - /* destroy the redial windows if exit*/ - cm_redial_abort(); - - if (identifier == MMI_OUTGOING_CALL_DIALOG_SAT) - /* in the SAT case, MFW does not know about the call, we therefore - * need to disconnect the call without using MFW's call table - */ - { - satDisc(); - /* Marcus: Issue 1057: 21/01/2003: Start */ - SEND_EVENT(sat_get_call_setup_win(), SAT_CALL_END, 0, NULL); - - /* SPR#1784 - DS - Not needed. SAT_RETURN sent by sim_toolkit_exec() SAT_SESSION_END. - */ - //SEND_EVENT(sat_get_setup_menu_win(), SAT_RETURN, 0, NULL); /* recreate the SETUP MENU */ - call_SATCall = FALSE; - /* Marcus: Issue 1057: 21/01/2003: End */ - - call_data.ignore_disconnect = TRUE; - if (!call_data.calls.numCalls) - { - call_destroy(call_data.win); - return; - } - } - else - { - TRACE_EVENT_P1("disconnecting call %d",call_data.outCall); - cm_disconnect(call_data.outCall); - - if (!call_data.calls.numCalls) - { - call_data.ignore_disconnect = TRUE; - call_destroy(call_data.win); - return; - } - endingCall(); - -// Jun 02, 2006 DRT OMAPS00079213 x0039928(sumanth) -// Fix: Hook is unregistered when an outgoing call is ended in calling window. -#ifdef FF_MMI_AUDIO_PROFILE -// Aug 17, 2006 REF:OMAPS00090196 x0039928 -#ifdef MMI_TTY_ENABLED - -if(FFS_flashData.ttyAlwaysOn == FALSE && call_data.tty == CALL_TTY_OFF) - -#endif - - if (!call_data.calls.numCalls) - mfw_hook_unregister(); -#endif - - break; - case INFO_KCD_LEFT: - break; - case INFO_KCD_ALL: - /*MC 12.04.02 allows scratchpad to be started when call not yet connected*/ - /* use the DTMF only for single call */ - if (call_data.calls.mode EQ CallNormal ||call_data.calls.mode EQ CallDone || - call_data.calls.mode EQ CallNew ||call_data.calls.mode EQ CallSingle || call_data.calls.mode EQ NULL) - { - TRACE_FUNCTION("send DTMF"); - - call_scratchpad_start(call_data.win,editControls[identifier],ViewDTMF, 0); - } - - if (call_data.calls.mode EQ CallTwo ||call_data.calls.mode EQ CallConference || - call_data.calls.mode EQ CallSingleMultiparty ||call_data.calls.mode EQ CallMultipartySingle) - { - TRACE_FUNCTION("send no DTMF and the keys are able for multicall controll"); - call_scratchpad_start(call_data.win,editControls[identifier],ViewMulticallControl, ViewMulticallControlCallWaiting); - } - - break; - } - } -} - -/******************************************************************************* - - $Function: call_menu_end_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - -void call_menu_end_cb(void) -{ - call_data.win_menu=0; -} - - -/******************************************************************************* - - $Function: call_waiting_answer_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - -void call_waiting_answer_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) -{ - // T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; // RAVI -// T_call * data = (T_call *)win_data->user; // RAVI - /* - * Who has initiated the information screen - */ - TRACE_FUNCTION ("call_waiting_answer_cb()"); - - - call_data.win_waiting=0; - - switch (reason) - { -// call_data.win_waiting=0; // RAVI - case INFO_KCD_LEFT: - if (call_data.current_command) - cm_command_abort(call_data.current_command); - call_data.current_command = 0; - callSetMode(ViewConnect, TRUE); - break; - default: - break; - } -} - -/******************************************************************************* - - $Function: call_sending_dtmf_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - -void call_sending_dtmf_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) -{ -// T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; // RAVI -// T_call * data = (T_call *)win_data->user; // RAVI - /* - * Who has initiated the information screen - */ - TRACE_EVENT ("call_sending_dtmf_cb()"); - call_data.win_sending_dtmf=0; - switch (reason) - { - case INFO_KCD_LEFT: - case INFO_KCD_HUP: - call_data.charSent = 0; - call_data.sendingDTMF = FALSE; - cm_command_abort(CM_DTMF_AUTO); - call_data.current_command = CM_DTMF_AUTO; - break; - default: - break; - } -} - - - -/******************************************************************************* - - $Function: call_ending_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - -/* - * Marcus: Issue 1057: 21/01/2003: Modified this function to use call_acm_max_cb - * in the call to dlg_initDisplayData_events, and to handle the end of a SAT - * call is not in the "No credit" situation - */ - - - -void call_ending_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) -{ -// T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; // RAVI -// T_call * data = (T_call *)win_data->user; // RAVI -// T_MFW_CM_AOC_INFO aocInfo; // RAVI - - /* - * Who has initiated the information screen - */ - TRACE_FUNCTION ("call_ending_cb()"); - call_data.win_ending=0; - switch (reason) - { - default: - endingCall(); - break; - } - //MC 17/12/2001 - //check if call ended because ACM>=ACMMAX -{T_MFW_CM_AOC_INFO aocInfo; - - cm_get_aoc_value(CM_AOC_ACMMAX,&aocInfo); - - //Get ACM and ACMMAX - cm_get_aoc_value(CM_AOC_ACM,&aocInfo); - - //display "No Credit" to user - if((aocInfo.acm >= aocInfo.acm_max) && - ( aocInfo.acm_max > 0)) - { T_DISPLAY_DATA display_info; - - TRACE_EVENT("acm_max exceeded"); - - dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtNo, TxtCredit , COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)call_acm_max_cb, THREE_SECS, KEY_RIGHT | KEY_LEFT ); - info_dialog (call_data.win, &display_info); - return; -// return; // RAVI - } - else if (call_SATCall == TRUE) - { - call_SATCall = FALSE; -#if 0 /* CQ16437 : Do not need to return to the SAT menu as it was not exited on Call Setup */ - SEND_EVENT(sat_get_call_setup_win(), SAT_CALL_END, 0, NULL); - SEND_EVENT(sat_get_setup_menu_win(), SAT_RETURN, 0, NULL); /* SPR#1784 - DS - recreate the SETUP MENU */ -#endif - } - -} - -//Nov 09, 2005 REF: OMAPS00043190 - x0018858 -// Check to see if the window has not been deinitialized and then de-init -// it on ending the call after answering it. -//Begin - if (satDisplayTextWin) - { - SEND_EVENT (satDisplayTextWin, E_ED_DEINIT, INFO_KCD_LEFT, NULL); - } -//end - -} - -/* - * Marcus: Issue 1057: 21/01/2003: Added the call_acm_max_cb function to handle - * the end of a SAT call in the "No credit" situation - */ -/******************************************************************************* - - $Function: call_acm_max_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - -void call_acm_max_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) -{ - TRACE_FUNCTION ("call_acm_max_cb()"); - if (call_SATCall == TRUE) - { - call_SATCall = FALSE; - SEND_EVENT(sat_get_call_setup_win(), SAT_CALL_END, 0, NULL); - SEND_EVENT (sat_get_setup_menu_win(), SAT_RETURN, 0, NULL); /* SPR#1784 - DS - recreate the SETUP MENU */ - - } -} - - - - -/******************************************************************************* - - $Function: call_menu_create - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - -static T_MFW_HND call_menu_create(MfwHnd parent){ - - T_MFW_WIN * win_data; - T_call_menu * data = (T_call_menu *)ALLOC_MEMORY (sizeof (T_call_menu)); - - - TRACE_FUNCTION ("call_menu_create()"); - - data->win = win_create (parent, 0, E_WIN_VISIBLE, (T_MFW_CB)call_menu_win_cb); - - if (data->win EQ 0) - return 0; - - /* - * Create window handler - */ - data->mmi_control.dialog = (T_DIALOG_FUNC)call_menu; - data->mmi_control.data = data; - win_data = ((T_MFW_HDR *)data->win)->data; - win_data->user = (void *)data; - - /* - * return window handle - */ - - data->kbd = kbdCreate(data->win,KEY_ALL,(MfwCb)call_menu_kbd_cb); - data->kbd_long = kbdCreate(data->win,KEY_ALL|KEY_LONG,(MfwCb)call_menu_kbd_long_cb); - - - return data->win; - - - -} - -/******************************************************************************* - - $Function: call_menu_destroy - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - -static void call_menu_destroy(MfwHnd window){ - - T_MFW_WIN * win_data = ((T_MFW_HDR *)window)->data; - T_call_menu * data = (T_call_menu *)win_data->user; - - TRACE_FUNCTION ("call_menu_destroy()"); - - if (window == NULL) - { - TRACE_EVENT ("Error : Called with NULL Pointer"); - return; - } - - if (data) - { - call_data.win_menu = 0; - winDelete (data->win); - /* * Free Memory - */ - FREE_MEMORY ((void *)data, sizeof (T_call_menu)); - } - -} - - -/******************************************************************************* - - $Function: call_menu_start - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - -T_MFW_HND call_menu_start(MfwHnd parent,MfwMnuAttr* menuAttr,T_VOID_FUNC func_cb){ - - - T_MFW_HND win; - - win = call_menu_create (parent); - - if (win NEQ NULL) - { - SEND_EVENT (win, CALL_INIT, 0, (MfwMnuAttr*) menuAttr); - } - return win; - - - -} - - - -/******************************************************************************* - - $Function: call_menu - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - -void call_menu (T_MFW_HND win, USHORT event, SHORT value, void * parameter) -{ - T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; - T_call_menu * data = (T_call_menu *)win_data->user; - - TRACE_FUNCTION ("T_call_menu()"); - - switch (event) - { - case CALL_INIT: - data->menu = mnuCreate(data->win,(MfwMnuAttr*)parameter,E_MNU_ESCAPE,(MfwCb)call_menu_mnu_cb); - mnuLang(data->menu,mainMmiLng); - mnuUnhide(data->menu); - winShow(data->win); - break; - default: - return; - } - -} - -/******************************************************************************* - - $Function: call_menu_win_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - - -static int call_menu_win_cb (MfwEvt e, MfwWin *w) -{ - T_call_menu * data = (T_call_menu *)w->user; - - MfwMnu * mnu; - - TRACE_FUNCTION ("call_menu_win_cb()"); - switch (e) - { - case MfwWinVisible: - mnu = (MfwMnu *)mfwControl(data->menu); - showDefault(); - softKeys_displayId(TxtSoftSelect, TxtSoftBack, 0, mnu->curAttr->mnuColour ); - break; - default: - return 0; - } - return 1; - -} - - -/******************************************************************************* - - $Function: call_menu_kbd_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - -static int call_menu_kbd_cb (MfwEvt e, MfwKbd *k){ - - - T_MFW_HND win = mfwParent(mfw_header()); - T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; - T_call_menu * data = (T_call_menu *)win_data->user; - - TRACE_FUNCTION ("call_menu_kbd_cb()"); - - - switch (k->code) - { - case KCD_MNUUP: - mnuUp(data->menu); - winShow(win); - break; - case KCD_MNUDOWN: - mnuDown(data->menu); - winShow(win); - break; - case KCD_LEFT: - mnuSelect(data->menu); - { - MfwMnu *mnu; - mnu = (MfwMnu *) mfwControl( data->menu ); - if (mnu != NULL) - { - if (mnu->curAttr != NULL) - softKeys_displayId( TxtSoftSelect, TxtSoftBack, 0, mnu->curAttr->mnuColour); - } - } - break; - case KCD_RIGHT: - case KCD_HUP: - mnuEscape(data->menu); - break; - default: - return MFW_EVENT_CONSUMED; - } - return MFW_EVENT_CONSUMED; -} - -/******************************************************************************* - - $Function: call_menu_kbd_long_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - - -static int call_menu_kbd_long_cb (MfwEvt e, MfwKbd *k){ - - T_MFW_HND win = mfwParent(mfw_header()); - T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; - T_call_menu * data = (T_call_menu *)win_data->user; - - - if ((e & KEY_CLEAR) && (e & KEY_LONG)) - { - mnuEscape(data->menu); - return MFW_EVENT_CONSUMED; - } - return MFW_EVENT_CONSUMED; -} - - -/******************************************************************************* - - $Function: call_menu_mnu_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - -static int call_menu_mnu_cb (MfwEvt e, MfwMnu *m){ - - T_MFW_HND win = mfwParent(mfw_header()); - // T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; // RAVI -// T_call_menu * data = (T_call_menu *)win_data->user; // RAVI - - TRACE_FUNCTION ("call_menu_mnu_cb()"); - - switch (e) - { - case E_MNU_ESCAPE: - call_menu_destroy(win); - call_data.win_menu = 0; - break; - default: - return 0; - } - return 1; -} - - - - -/******************************************************************************* - - $Function: call_scratchpad_create - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - -T_MFW_HND call_scratchpad_create (T_MFW_HND parent_window) -{ - T_MFW_WIN * win; - T_call_scratchpad * data = (T_call_scratchpad *)ALLOC_MEMORY (sizeof (T_call_scratchpad)); - - - - data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)call_scratchpad_win_cb); - - if (data->win EQ 0) - return 0; - - /* - * Create window handler - */ - data->mmi_control.dialog = (T_DIALOG_FUNC)call_scratchpad; - data->mmi_control.data = data; - win = ((T_MFW_HDR *)data->win)->data; - win->user = (void *) data; - - /* - * Create any other handler - */ - - memset( (void *) call_data.edtBufDTMF,'\0',sizeof(call_data.edtBufDTMF)); - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - AUI_edit_SetAttr(&call_data.editorAttrDTMF,CALLSCRATCHPAD_EDITOR,COLOUR_EDITOR_XX,EDITOR_FONT, ED_MODE_ALPHA, ED_CURSOR_BAR,ATB_DCS_ASCII, (UBYTE*)call_data.edtBufDTMF,EDITOR_SIZE); - data->editor = ATB_edit_Create(&call_data.editorAttrDTMF,0); -#else /*NEW_EDITOR*/ - bookSetEditAttributes(CALLSCRATCHPAD_EDITOR, COLOUR_EDITOR_XX,0,edtCurBar1,0,(char*)call_data.edtBufDTMF,EDITOR_SIZE,&call_data.edtAttrDTMF); - data->edt = edtCreate (data->win,&call_data.edtAttrDTMF,MfwEdtVisible,0); -#endif /*NEW_EDITOR*/ - - // xnkulkar SPR-18262 : Added KEY_MAKE flag to detect the key release event. - data->kbd = kbd_create (data->win,KEY_ALL |KEY_MAKE,(T_MFW_CB)call_scratchpad_kbd_cb); - data->kbd_long = kbd_create (data->win,KEY_ALL|KEY_LONG,(T_MFW_CB)call_scratchpad_kbd_long_cb); - - /* - * return window handle - */ - return data->win; -} - - - - - -/******************************************************************************* - - $Function: call_scratchpad_destroy - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - -void call_scratchpad_destroy (T_MFW_HND own_window) -{ - T_MFW_WIN * win; - T_call_scratchpad * data; - - if (own_window) - { - win = ((T_MFW_HDR *)own_window)->data; - data = (T_call_scratchpad *)win->user; - - if (data) - { - /* - * Exit Keyboard Handler - */ - /* - * Delete WIN Handler - */ - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - /* New editor not destroyed automatically by win_delete, - * so do so here */ - if (data->editor) - { - ATB_edit_Destroy(data->editor); - } -#endif /* NEW_EDITOR */ - - win_delete (data->win); - } - FREE_MEMORY ((void *)data, sizeof (T_call_scratchpad)); - } -} - - -/******************************************************************************* - - $Function: call_scratchpad_start - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - -T_MFW_HND call_scratchpad_start (T_MFW_HND win_parent,char character,UBYTE mode, UBYTE callstatus) -{ - T_MFW_WIN *win_data; - T_call_scratchpad * data; - - - T_MFW_HND win = call_scratchpad_create (win_parent); - - - if (win NEQ NULL) - { - win_data = ((T_MFW_HDR *) win)->data; - data = (T_call_scratchpad *)win_data->user; - data->mode = mode; - data->callstatus = callstatus; - SEND_EVENT(win,CALL_SCRATCHPAD_INIT,0,&character);/*a0393213 warnings removal-address of character sent*/ - } - return win; - -} - - - -/******************************************************************************* - - $Function: call_scratchpad - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - -void call_scratchpad (T_MFW_HND win, USHORT event, SHORT value, void * parameter) -{ - T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; - T_call_scratchpad * data = (T_call_scratchpad *)win_data->user; - - TRACE_FUNCTION ("call_scratchpad()"); - - switch (event) - { - case CALL_SCRATCHPAD_INIT: - memset(call_data.edtBufDTMF,'\0',sizeof(call_data.edtBufDTMF)); - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - ATB_edit_Unhide(data->editor); - ATB_edit_AsciiChar(data->editor, *((char*)parameter), FALSE); /*a0393213 warnings removal-parameter properly typecasted and used*/ - ATB_edit_AsciiChar(data->editor, ctrlBottom, TRUE); -#else /* NEW_EDITOR */ - edtUnhide(data->edt); - edtChar(data->edt,(char)parameter); // RAVI - Introduced * - edtChar(data->edt,ecBottom); -#endif /* NEW_EDITOR */ - - #if 1//TISH patch for OMAPS00115335 - if (data->mode EQ ViewDTMF || data->mode EQ ViewMulticallControl) - #else - if (data->mode EQ ViewDTMF) - #endif - { - cm_command(call_data.calls.selected,CM_DTMF_ACTIVE,(UBYTE)call_data.edtBufDTMF[0]); - call_data.current_command = CM_DTMF_ACTIVE; - } - winShow(data->win); - break; - default: - return; - } -} - - - - -/******************************************************************************* - - $Function: call_scratchpad_win_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - -static int call_scratchpad_win_cb (MfwEvt e, MfwWin *w) -{ - T_call_scratchpad * data = (T_call_scratchpad *)w->user; - - TRACE_FUNCTION ("call_scratchpad_win_cb()"); - switch (e) - { - case MfwWinVisible: - dspl_ClearAll(); - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - ATB_edit_Show(data->editor); -#else /* NEW_EDITOR */ - edtShow(data->edt); -#endif /* NEW_EDITOR */ - displaySoftKeys(TxtSoftCall,TxtDelete);//MC - break; - default: - return 0; - } - - return 1; -} - - -#if(0) /* x0039928 - Commented for lint warning removal */ -static void call_display_call_ended(void) -{ - T_DISPLAY_DATA display_info; - - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtCallEnded, TxtNull, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, NULL, THREE_SECS, KEY_CLEAR ); - - /* - * Call Info Screen - */ - info_dialog (0, &display_info); - - - return; -} -#endif -/******************************************************************************* - - $Function: call_scratchpad_kbd_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - -static int call_scratchpad_kbd_cb (MfwEvt e, MfwKbd *k) -{ - T_MFW_HND win = mfw_parent (mfw_header()); - T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; - T_call_scratchpad * data = (T_call_scratchpad *)win_data->user; - // xnkulkar SPR-18262: This BOOL variable is added to detect the key press event in order to call winShow()/windowsUpdate() function - BOOL key_pressed_dtmf = FALSE; - //xvilliva SPR13698 - The following two variables are used to find a - //HELD and an active call. - SHORT heldID = -1; - SHORT activeID = -1; - -// int position=0; // RAVI - UBYTE callstatus = data->callstatus; - - TRACE_FUNCTION ("call_scratchpad_kbd_cb()"); - - // xnkulkar SPR-18262: Detect the key release event (using !(e & KEY_MAKE)). This event is used to send the - // DTMF stop command. - if (!(e & KEY_MAKE)) - { - switch (k->code) - { - case KCD_0: - case KCD_1: - case KCD_2: - case KCD_3: - case KCD_4: - case KCD_5: - case KCD_6: - case KCD_7: - case KCD_8: - case KCD_9: - case KCD_STAR: - case KCD_HASH: - // xnkulkar SPR-18262: A key has been released. Call cm_command() function with CM_DTMF_INACTIVE - // mode to stop sending the DTMF tone. - #if 1 // for OMAPS00115335 - if(call_data.current_command EQ CM_DTMF_ACTIVE) - { - cm_command(call_data.calls.selected,CM_DTMF_INACTIVE,(UBYTE)editControls[k->code]); - call_data.current_command = CM_DTMF_INACTIVE; - } - #else - cm_command(call_data.calls.selected,CM_DTMF_INACTIVE,(UBYTE)editControls[k->code]); - call_data.current_command = CM_DTMF_INACTIVE; - #endif - - default: - return MFW_EVENT_CONSUMED; -// break; // RAVI - } - } - - switch(data->mode){ - case ViewDTMF: - switch (k->code) - { - case KCD_0: - case KCD_1: - case KCD_2: - case KCD_3: - case KCD_4: - case KCD_5: - case KCD_6: - case KCD_7: - case KCD_8: - case KCD_9: - case KCD_STAR: - case KCD_HASH: - - - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - ATB_edit_AsciiChar(data->editor, editControls[k->code], FALSE); - ATB_edit_AsciiChar(data->editor,ctrlBottom, TRUE); -#else /* NEW_EDITOR */ - edtChar(data->edt, editControls[k->code]); - edtChar(data->edt,ecBottom); -#endif /* NEW_EDITOR */ - -#if defined (TI_PS_FF_EM) || defined (MMI_EM_ENABLED) - /*MC, SPR2469 check for engineering mode code*/ - if (strcmp((char*)call_data.edtBufDTMF, "*36446337464#") == 0) - { - TRACE_EVENT("Engineering mode string"); - /*create menu*/ - mmi_em_start_eng_mode_menus(call_data.win); - } - else -#endif - { - // xnkulkar SPR-18262: A key has been pressed. Call cm_command() function with CM_DTMF_ACTIVE - // mode to start sending the DTMF tone. - cm_command(call_data.calls.selected,CM_DTMF_ACTIVE,(UBYTE)editControls[k->code]); - call_data.current_command = CM_DTMF_ACTIVE; - key_pressed_dtmf = TRUE; - // xnkulkar SPR-18262: Call winShow() to update the character on screen. - // Calling windowsUpdate() slows down the process of sending DTMF commands and induces a delay. - win_show(data->win); - } - break; - - /*API - 23/07/03 - 11076 - Add the call to KCD_RIGHT here */ - /*API - 06/10/03 - 2585 - Re-work of the above issue */ - case KCD_RIGHT: - - if (strlen(call_data.edtBufDTMF) > 0) - { - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - ATB_edit_DeleteLeft(data->editor, TRUE); /* SPR#2342 - SH */ -#else /* NEW_EDITOR */ - edtChar(data->edt, ecBack); -#endif /* NEW_EDITOR */ - - } - else - call_scratchpad_destroy(data->win); - - break; - case KCD_HUP: - // May 9, 2006 REF:DR OMAPS00074884 xrashmic - // Pressing Red key in scratch pad releses all calls. If there are no calls, - // it would destroy the scratch pad. - { - if (call_data.calls.numCalls==0) - { - call_scratchpad_destroy(data->win); - } - else - { - cm_end_all(); - } - } - break; - case KCD_CALL: - case KCD_LEFT: - - callNumber((UBYTE*)call_data.edtBufDTMF); - call_scratchpad_destroy(win); - /* MZ cq11080 25/07/03 Remove mute when activating new call */ - if (call_data.calls.muted) - { - if (audio_SetMute(AUDIO_MICROPHONE, AUDIO_MUTING_OFF) == DRV_OK) - { - call_data.calls.muted = false; - menuCallSingleItems[2].str = (char*)TxtMute; - } - } - return 1; -// break; // RAVI - - /*API - 23/07/03 - 11076 - Remove duplication of code for The handeling of KCD_RIGHT - problem was also this returned 1 at end of case and stopped - further editor update etc*/ - - default: - break; - } - break; - case ViewScratchPad: - switch (k->code) - { - case KCD_0: - case KCD_1: - case KCD_2: - case KCD_3: - case KCD_4: - case KCD_5: - case KCD_6: - case KCD_7: - case KCD_8: - case KCD_9: - case KCD_STAR: - case KCD_HASH: - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - ATB_edit_AsciiChar(data->editor, editControls[k->code], TRUE); -#else /* NEW_EDITOR */ - edtChar(data->edt, editControls[k->code]); -#endif /*NEW_EDITOR */ - break; - case KCD_HUP: - call_scratchpad_destroy(data->win); - break; - case KCD_LEFT: - sendDTMFString(); - break; - case KCD_RIGHT: - call_scratchpad_destroy(data->win); - break; - default: - break; - } - break; - case ViewMulticallControl: - { - TRACE_FUNCTION ("ViewMulticallControl()"); - switch (k->code) - { - case KCD_0: - case KCD_1: - case KCD_2: - case KCD_3: - case KCD_4: - case KCD_5: - case KCD_6: - case KCD_7: - case KCD_8: - case KCD_9: -// -// Jun 10, 2004 REF=CRR 13602 Sasken/xreddymn -// Added * and # key handling, to allow the input of -// * and # characters in the scratchpad screen - case KCD_STAR: - case KCD_HASH: - - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - ATB_edit_AsciiChar(data->editor, editControls[k->code], TRUE); -#else /* NEW_EDITOR */ - edtChar(data->edt, editControls[k->code]); -#endif /* NEW_EDITOR */ - break; - - case KCD_MNUUP: - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - ATB_edit_MoveCursor(data->editor, ctrlRight, TRUE); -#else /* NEW_EDITOR */ - edtChar(data->edt, ecRight); -#endif /* NEW_EDITOR */ - break; - - case KCD_MNUDOWN: - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - ATB_edit_MoveCursor(data->editor, ctrlLeft, TRUE); -#else /* NEW_EDITOR */ - edtChar(data->edt, ecLeft); -#endif /* NEW_EDITOR */ - break; - case KCD_CALL: - case KCD_LEFT: - /*MC 12/04/02 Check for ECT string and display appropriate waiting screen*/ - if (call_data.edtBufDTMF[0]== '4' && strlen(call_data.edtBufDTMF) == 1) - { call_data.current_command = CM_ETC; - callSetMode(ViewWaitingAnswer, TRUE); - } - // xvilliva SPR13698 - // We find out if the current call is an emergency call, we check if there is an - // active call and a held call currently, we release all the calls to make way to - // establish an emergency call. - // When we try to disconnect the active+held calls using cm_disconnect() and - // establish an emergency call using cm_mo_call(), ECC doesnot get through - // as we do not get E_CM_DISCONNECT immediately. This is varying with - // service providers. To avoid this we take the approach of ending all calls - // and after we receive the E_CM_DISCONNECT_ALL event we initiate the - // emergency call. - makeECC = FALSE; - strcpy(strECC,""); - if (cm_check_emergency((UBYTE*)call_data.edtBufDTMF) EQ TRUE) - { - if ((cm_search_callId(CAL_STAT_Held, &heldID) == CM_OK) - AND (cm_search_callId(CAL_STAT_Active, &activeID) == CM_OK)) - { - strcpy(strECC,call_data.edtBufDTMF);// Store the emergency number. - makeECC = TRUE; // Set the flag for making ECC. - cm_end_all(); // We end all other calls. - if (call_data.win) - call_destroy(call_data.win); // Clear the call status window. - } - } - if(makeECC == FALSE) // We make call only if it is not - { // handled in the above "if". - cm_mo_call((UBYTE*)call_data.edtBufDTMF, VOICE_CALL); - } - call_scratchpad_destroy(data->win); - - // June 22, 2004 MMI-SPR 16573 CW+CLIP : blanck screen - // Issue description: 1 active call + 1 Call Waiting (calling number is correctly - //displayed) - // The user releases the active call (11+SEND) - // Call Waiting but the screen is empty (yellow screen !) - // The user answers the call (yellow screen..) - // Solution: After the scratchpad window destruction, if there is an incoming call, - // show the incoming call window - - // Checking whether the there is an incoming call is present or not - if(call_data.incCall) - { - // Checking the callstatus. If there is a call is waiting and if the user presses - // any of the key betweem 0-9, from the function call_incoming_cb(), - // call_scratchpad_start() will be called with the status parameter ViewMulticallControlIncomingCall - // here it's checking whethere the status variable is ViewMulticallControlIncomingCall - if(callstatus EQ ViewMulticallControlIncomingCall) - { - // Checking whether the incoming call window is exisiting - // IF window is not there, display it. - if (call_data.win_incoming == 0) - { - call_data.win_incoming = info_dialog(call_data.win, &call_data.inc_call_data); - } - } - } - - - - break; - case KCD_RIGHT: - TRACE_EVENT ("press right"); - if (strlen(call_data.edtBufDTMF) > 0) - { - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - ATB_edit_DeleteLeft(data->editor, TRUE); /* SPR#2342 - SH */ -#else /* NEW_EDITOR */ - edtChar(data->edt, ecBack); -#endif /* NEW_EDITOR */ - } - else - { - TRACE_EVENT ("now destroy"); - call_scratchpad_destroy(data->win); - // June 22, 2004 MMI-SPR 16573: CW+CLIP : blanck screen - // Issue description: 1 active call + 1 Call Waiting (calling number is correctly - //displayed) - // Solution: Here also retain the incoming call window. - // Checking whether the there is an incoming call is present or not - if(call_data.incCall) - { - // Checking the callstatus. If there is a call is waiting and if the user presses - // any of the key betweem 0-9, from the function call_incoming_cb(), - // call_scratchpad_start() will be called with the status parameter ViewMulticallControlIncomingCall - // here it's checking whethere the status variable is ViewMulticallControlIncomingCall - if(callstatus EQ ViewMulticallControlIncomingCall) - { - // Checking whether the incoming call window is exisiting - // IF window is not there, display it. - if (call_data.win_incoming == 0) - { - call_data.win_incoming = info_dialog(call_data.win, &call_data.inc_call_data); - } - } - } - } - break; - case KCD_HUP: - // May 9, 2006 REF:DR OMAPS00074884 xrashmic - // Pressing Red key in scratch pad releses all calls. If there are no calls, - //it would destroy the scratch pad. - if (call_data.calls.numCalls==0) - { - call_scratchpad_destroy(data->win); - } - else - { - cm_end_all(); - } - break; - default: - break; - } - - - /* if true, call the incoming call screen back on the screen because it - was destroyed by the scratchpad function */ - if (callstatus EQ ViewMulticallControlIncomingCall && data EQ NULL) - { - TRACE_EVENT ("call the incoming call screen back on the screen"); - incomingCall(&call_data.globalCWInfo); - } - } - break; - default: - break; - } - /* API - 30/10/2003 - SPR 2667 - Remove the call to winShow(call_data.win); and replace with this call - this means that all windows will be updated from idle up */ - - // xnkulkar SPR-18262: As windowsUpdate() keeps the system busy for more time and hinders the process of - // sending DTMF commands, it's called when no key is pressed. - if(key_pressed_dtmf == FALSE) - { - windowsUpdate(); - } - /* API - 30/10/2003 - SPR 2667 - END */ - return MFW_EVENT_CONSUMED; -} - - - - - -/******************************************************************************* - - $Function: call_scratchpad_kbd_long_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - -static int call_scratchpad_kbd_long_cb (MfwEvt e, MfwKbd *k) -{ - T_MFW_HND win = mfw_parent (mfw_header()); - T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; - T_call_scratchpad * data = (T_call_scratchpad *)win_data->user; - - if (e & KEY_LONG) - { - { - if (e & KEY_CLEAR) - { - call_scratchpad_destroy(data->win); - return MFW_EVENT_CONSUMED; - } - if (e & KEY_0) - { - call_data.edtBufDTMF[0] = '+'; - winUpdate((MfwWin*)mfwControl(data->win)); - return MFW_EVENT_CONSUMED; - } - else - { - - //Sep 2, 2004 REF: CRR 21370 xkundadu - //Added the long press of '*' key to display 'w' - if(e & KEY_STAR) - { - #ifdef NEW_EDITOR - ATB_edit_DeleteLeft(data->editor, FALSE); - ATB_edit_AsciiChar(data->editor, 'w', TRUE); - #else - edtChar(data->edt, ecBack); - edtChar(data->edt,'w'); - #endif - - return MFW_EVENT_CONSUMED; - } - } - - //Sep 2, 2004 REF: CRR 21370 xkundadu - //Changed the long press of '#' key to display 'p' - - if (e & KEY_HASH) - { - /* SPR#1428 - SH - New Editor changes */ -#ifdef NEW_EDITOR - ATB_edit_DeleteLeft(data->editor, FALSE); /* SPR#2342 - SH */ - ATB_edit_AsciiChar(data->editor, 'p', TRUE); -#else /* NEW_EDITOR */ - edtChar(data->edt, ecBack); - edtChar(data->edt,'p'); -#endif /* NEW_EDITOR */ - - return MFW_EVENT_CONSUMED; - } - } - } - return MFW_EVENT_PASSED; -} - -UBYTE call_status(void){ - return call_data.callStatus; -} - - -/******************************************************************************* - - $Function: call_failure_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - -void call_failure_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) -{ - // T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; // RAVI -// T_call * data = (T_call *)win_data->user; // RAVI - /* - * Who has initiated the information screen - */ - TRACE_FUNCTION ("call_failure_cb()"); - switch (reason) - { - case INFO_TIMEOUT: - if (!call_data.calls.numCalls) - { - if (call_data.win) - call_destroy(call_data.win); - } - break; - case INFO_KCD_RIGHT: - break; - case INFO_KCD_LEFT: - break; - case INFO_KCD_HUP: - break; - default: - break; - } - - /* SPR#1784 - DS - If failed call was a SAT call, clean up SAT */ - if (call_SATCall == TRUE) - { - call_SATCall = FALSE; - SEND_EVENT(sat_get_call_setup_win(), SAT_CALL_END, 0, NULL); - - /* May be necessary to reinstate if there is no call result editor sent from SAT */ - //SEND_EVENT(sat_get_setup_menu_win(), SAT_RETURN, 0, NULL); /* recreate the SETUP MENU */ - } - -} - -/******************************************************************************* - - $Function: call_get_window - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - - - -MfwHnd call_get_window(void){ - return call_data.win; -} - - - -/******************************************************************************* - - $Function: showCCNotify - - $Description: Show result from E_CC_NOTIFY being returned. Short cc-related - notification window. - - $Returns: - - $Arguments: -*******************************************************************************/ - - -static void showCCNotify (T_MFW_HND win, T_MFW_CM_NOTIFY * cc_notify) -{ - T_DISPLAY_DATA display_info; - USHORT txtId2 = TxtNull; - - TRACE_FUNCTION("++ showCCNotify"); - - - switch (cc_notify->notification) - { - case MFW_CM_HOLD: - txtId2 = TxtHold; - break; - - case MFW_CM_RETRIEVED: - txtId2 = TxtUnhold; - break; - - default: - break; - } - - if (txtId2 != TxtNull ) - { - dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull,TxtSoftCall, txtId2 , COLOUR_STATUS_CCNOTIFY); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)call_info_cb, THREE_SECS, KEY_CLEAR | KEY_LEFT ); - display_info.Identifier = E_CM_NOTIFY; - - /* - * Call Info Screen - */ - - info_dialog (win, &display_info); - } -} - -/******************************************************************************* - - $Function: call_info_cb - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - -void call_info_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) -{ - TRACE_FUNCTION ("call_info_cb()"); -} - -/******************************************************************************* - - $Function: StartsendDTMFString - - $Description: - - $Returns: - - $Arguments: -*******************************************************************************/ - -void StartsendDTMFString(char * String) -{ - - strncpy (call_data.edtBufDTMF, String, sizeof(call_data.edtBufDTMF)); - call_data.charSent = 0; - call_data.sendingDTMF = TRUE; - callSetMode(ViewSendingDTMF, TRUE); - sendDTMFString(); - -} - -/******************************************************************************* - - $Function: menuInCallTimerOn - - $Description: Handles user selection of the "on" option in the In-call Timer menu - - $Returns: status int - - $Arguments: not used -*******************************************************************************/ -int menuInCallTimerOn(MfwMnu* m, MfwMnuItem* i) -{T_MFW_HND win = mfwParent( mfw_header() ); - T_DISPLAY_DATA display_info; - - - InCallTimer = TRUE; - flash_write(); - - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtActivated, TxtInCallTimer, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_CLEAR|KEY_LEFT|KEY_RIGHT ); - /* Call Info Screen - */ - info_dialog( win, &display_info ); - - return MFW_EVENT_CONSUMED; - -} - -/******************************************************************************* - - $Function: menuInCallTimerOff - - $Description: Handles user selection of the "off" option in the In-call Timer menu - - $Returns: status int - - $Arguments: not used -*******************************************************************************/ -int menuInCallTimerOff(MfwMnu* m, MfwMnuItem* i) -{T_MFW_HND win = mfwParent( mfw_header() ); - T_DISPLAY_DATA display_info; - - - InCallTimer = FALSE; - flash_write(); - - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtDeActivated, TxtInCallTimer, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_CLEAR|KEY_LEFT|KEY_RIGHT ); - - /* Call Info Screen - */ - info_dialog( win, &display_info ); - - return MFW_EVENT_CONSUMED; - -} - -/* Marcus: CCBS: 13/11/2002: Start */ -/******************************************************************************* - - $Function: call_initialise_ccbs_list - - $Description: Initialises the ccbs_list structure - - $Returns: Nothing - - $Arguments: T_MFW_HND win - handle to parent window - -*******************************************************************************/ -static void call_initialise_ccbs_list(T_MFW_HND win) -{ - UBYTE index; - - TRACE_FUNCTION("call_initialise_ccbs_list()"); - TRACE_EVENT_P1("win = %p", win); - - ccbs_list.win = win; - ccbs_list.list_menu_data = NULL; - ccbs_list.count = 0; - ccbs_list.sel = MAX_CCBS_LIST_ITEMS; // Deliberately set to an invalid value - for (index = 0; index < MAX_CCBS_LIST_ITEMS; index++) - { - ccbs_list.item[index].idx = 0; // Deliberately set to an invalid value - ccbs_list.item[index].number[0] = '\0'; -#ifdef NO_ASCIIZ - ccbs_list.item[index].name.len = 0; - ccbs_list.item[index].name.data[0] = '\0'; -#else - ccbs_list.item[index].name[0] = '\0'; -#endif - } -} - -/******************************************************************************* - - $Function: call_cm_ccbs_event - - $Description: Handles E_CM_CCBS events - - $Returns: Nothing - - $Arguments: T_MFW_CM_CCBS_INFO *para - pointer to E_CM_CCBS event data - -*******************************************************************************/ -static void call_cm_ccbs_event(T_MFW_CM_CCBS_INFO *para) -{ - TRACE_FUNCTION("call_cm_ccbs_event()"); - - if ((FFS_flashData.ccbs_status != FALSE) && - (FFS_flashData.ccbs_status != TRUE)) - { - /* - * CCBS status is not something sensible, - * so set CCBS status to default - */ - effs_t ffs_res; // For the result returned by flash_write - FFS_flashData.ccbs_status = FALSE; - if ((ffs_res = flash_write()) != EFFS_OK) - { - TRACE_EVENT_P1("flash_write returned %d", ffs_res); - } - TRACE_EVENT("CCBS status set to default (off)"); - } - - switch (para->operation) - { - case CM_CCBS_DELETE_ALL: - TRACE_EVENT("CM_CCBS_DELETE_ALL"); - - switch(para->type) - { - case CM_CCBS_INFO: - TRACE_EVENT("CM_CCBS_INFO unexpected"); - // No further action required - break; - - case CM_CCBS_OK: - TRACE_EVENT("CM_CCBS_OK"); - // No further action required - break; - - case CM_CCBS_ERROR: - TRACE_EVENT("CM_CCBS_ERROR"); - // No further action required - break; - - default: - TRACE_EVENT_P1("Unexpected type %d", para->type); - break; - } - break; - - case CM_CCBS_DELETE: - TRACE_EVENT("CM_CCBS_DELETE"); - - switch(para->type) - { - case CM_CCBS_INFO: - TRACE_EVENT("CM_CCBS_INFO unexpected"); - // No further action required - break; - - case CM_CCBS_OK: // Completed deleting a specific CCBS - TRACE_EVENT("CM_CCBS_OK"); - call_delete_from_ccbs_list(); - - if (ccbs_list.count == 0) - { - bookShowInformation(ccbs_list.win, TxtEmptyList, NULL, NULL); - } - else - { - call_show_ccbs_menu_list(); - } - break; - - case CM_CCBS_ERROR: // Failed to delete a specific CCBS - TRACE_EVENT("CM_CCBS_ERROR"); - call_show_ccbs_menu_list(); - bookShowInformation(ccbs_list.win, TxtFailed, NULL, NULL); - break; - - default: - TRACE_EVENT_P1("Unexpected type %d", para->type); - // No further action required - break; - } - break; - - case CM_CCBS_LIST: - TRACE_EVENT("CM_CCBS_LIST"); - - switch(para->type) - { - case CM_CCBS_INFO: - TRACE_EVENT("CM_CCBS_INFO"); - call_add_to_ccbs_list(para); - break; - - case CM_CCBS_OK: // Completed obtaining the list of CCBS - TRACE_EVENT("CM_CCBS_OK"); - if (ccbs_list.count == 0) - { - call_ccbs_show_status(); - bookShowInformation(ccbs_list.win, TxtEmptyList, NULL, NULL); - } - else - { - call_show_ccbs_menu_list(); - } - break; - - case CM_CCBS_ERROR: - TRACE_EVENT("CM_CCBS_ERROR"); - call_ccbs_show_status(); - bookShowInformation(ccbs_list.win, TxtFailed, NULL, NULL); - break; - - default: - TRACE_EVENT_P1("Unexpected type %d", para->type); - // No further action required - break; - } - break; - - case CM_CCBS_ASYNC: - TRACE_EVENT("CM_CCBS_ASYNC"); - - switch(para->type) - { - case CM_CCBS_INFO: - TRACE_EVENT("CM_CCBS_INFO"); - - if (FFS_flashData.ccbs_status != TRUE) - { - TRACE_EVENT("CCBS deactivated"); - break; - } - - switch(para->indct) - { - case CCBS_IND_Possible: - TRACE_EVENT("CCBS_IND_Possible"); - call_offer_ccbs_registration(para); - break; - - case CCBS_IND_PossibilityTimedOut: - TRACE_EVENT("CCBS_IND_PossibilityTimedOut"); - call_withdraw_ccbs_registration(TxtTimedOut); - break; - - case CCBS_IND_Recall: - TRACE_EVENT("CCBS_IND_Recall"); - call_offer_ccbs_recall(para); - break; - - case CCBS_IND_RecallTimedOut: - TRACE_EVENT("CCBS_IND_RecallTimedOut"); - call_withdraw_ccbs_recall(TxtTimedOut); - break; - - default: - TRACE_EVENT_P1("Unexpected indct %d", para->indct); - // No further action required - break; - } - break; - - case CM_CCBS_OK: - TRACE_EVENT("CM_CCBS_OK unexpected"); - break; - - case CM_CCBS_ERROR: - TRACE_EVENT("CM_CCBS_ERROR unexpected"); - break; - - default: - TRACE_EVENT_P1("Unexpected type %d", para->type); - break; - } - break; - - case CM_CCBS_ACCEPT_REGISTRATION: - TRACE_EVENT("CM_CCBS_ACCEPT_REGISTRATION"); - - switch(para->type) - { - case CM_CCBS_INFO: - TRACE_EVENT("CM_CCBS_INFO"); - // No further action required - CCBS_IND_Registered ignored - break; - - case CM_CCBS_OK: - TRACE_EVENT("CM_CCBS_OK"); - call_withdraw_ccbs_registration(TxtAcc); - break; - - case CM_CCBS_ERROR: - TRACE_EVENT("CM_CCBS_ERROR"); - call_withdraw_ccbs_registration(TxtFailed); - break; - - default: - TRACE_EVENT_P1("Unexpected type %d", para->type); - break; - } - break; - - case CM_CCBS_REJECT_REGISTRATION: - TRACE_EVENT("CM_CCBS_REJECT_REGISTRATION"); - - switch(para->type) - { - case CM_CCBS_INFO: - TRACE_EVENT("CM_CCBS_INFO unexpected"); - // No further action required - break; - - case CM_CCBS_OK: - TRACE_EVENT("CM_CCBS_OK"); - // No further action required - break; - - case CM_CCBS_ERROR: - TRACE_EVENT("CM_CCBS_ERROR"); - // No further action required - break; - - default: - TRACE_EVENT_P1("Unexpected type %d", para->type); - // No further action required - break; - } - break; - - case CM_CCBS_ACCEPT_RECALL: - TRACE_EVENT("CM_CCBS_ACCEPT_RECALL"); - - switch(para->type) - { - case CM_CCBS_INFO: - TRACE_EVENT("CM_CCBS_INFO unexpected"); - // No further action required - break; - - case CM_CCBS_OK: - TRACE_EVENT("CM_CCBS_OK"); - call_withdraw_ccbs_recall(TxtAcc); - break; - - case CM_CCBS_ERROR: - TRACE_EVENT("CM_CCBS_ERROR"); - call_withdraw_ccbs_recall(TxtFailed); - break; - - default: - TRACE_EVENT_P1("Unexpected type %d", para->type); - // No further action required - break; - } - break; - - case CM_CCBS_REJECT_RECALL: - TRACE_EVENT("CM_CCBS_REJECT_RECALL"); - - switch(para->type) - { - case CM_CCBS_INFO: - TRACE_EVENT("CM_CCBS_INFO unexpected"); - // No further action required - break; - - case CM_CCBS_OK: - TRACE_EVENT("CM_CCBS_OK"); - call_withdraw_ccbs_recall(TxtRejected); - break; - - case CM_CCBS_ERROR: - TRACE_EVENT("CM_CCBS_ERROR"); - call_withdraw_ccbs_recall(TxtRejected); - break; - - default: - TRACE_EVENT_P1("Unexpected type %d", para->type); - // No further action required - break; - } - break; - - case CM_CCBS_NONE: - TRACE_EVENT("CM_CCBS_NONE unexpected"); - // No further action required - break; - - default: - TRACE_EVENT_P1("Unexpected operation %d", para->operation); - break; - } -} - -/******************************************************************************* - - $Function: call_add_to_ccbs_list - - $Description: Adds an entry to a CCBS list structure - - $Returns: Nothing - - $Arguments: T_MFW_CM_CCBS_INFO *para - pointer to E_CM_CCBS event data - -*******************************************************************************/ -static void call_add_to_ccbs_list(T_MFW_CM_CCBS_INFO *para) -{ - TRACE_FUNCTION("call_add_to_ccbs_list()"); - - if (para->indct != CCBS_IND_IrgtResult) - { - TRACE_EVENT_P1("Unexpected indct %d", para->indct); - } - else if (para->status != CCBS_STAT_Active) - { - TRACE_EVENT_P1("Unexpected status %d", para->status); - } - else if ((para->idx < MIN_CCBS_IDX) || (para->idx > MAX_CCBS_IDX)) - { - TRACE_EVENT_P1("Unexpected idx %d", para->idx); - } - else if (ccbs_list.count >= MAX_CCBS_LIST_ITEMS) - { - TRACE_EVENT_P1("ccbs_list.count = %d", ccbs_list.count); - } - else - { - /* Define a pointer for efficient access to the item to be filled */ - // T_CCBS_LIST_ITEM_STR *item = &ccbs_list.item[ccbs_list.count]; - T_MFW_PHB_ENTRY entry; // Structure to pass to bookFindNameInPhonebook - int max_num_size = sizeof(ccbs_list.item[ccbs_list.count].number); - - TRACE_EVENT_P1("ccbs_list.count = %d", ccbs_list.count); - // TRACE_EVENT_P1("item: %p", item); - - memset((char *)ccbs_list.item[ccbs_list.count].number, 0x00, max_num_size); - - ccbs_list.item[ccbs_list.count].idx = para->idx; - if ((para->ton == MFW_TON_INTERNATIONAL) && (para->number[0] != '+')) - { - strcpy((char *)ccbs_list.item[ccbs_list.count].number, "+"); - max_num_size--; - } - - strncat((char *)ccbs_list.item[ccbs_list.count].number, (char *)para->number, max_num_size); - TRACE_EVENT_P1("number %s", ccbs_list.item[ccbs_list.count].number); - if (bookFindNameInPhonebook((char*)para->number, &entry)) - { - /* The number corresponds to a name in the phonebook */ -#ifdef NO_ASCIIZ - memcpy(&ccbs_list.item[ccbs_list.count].name, &entry.name, sizeof(ccbs_list.item[ccbs_list.count].name)); - if ((dspl_get_char_type() == DSPL_TYPE_UNICODE) && - (ccbs_list.item[ccbs_list.count].name.data[0] == 0x80)) - { - /* UniCode */ - TRACE_EVENT("Prefixed unicode name"); - if (ccbs_list.item[ccbs_list.count].name.len < (sizeof(ccbs_list.item[ccbs_list.count].name.data)-2)) - { - ccbs_list.item[ccbs_list.count].name.data[ccbs_list.item[ccbs_list.count].name.len] = '\0'; - ccbs_list.item[ccbs_list.count].name.data[ccbs_list.item[ccbs_list.count].name.len+1] = '\0'; - } - else - { - ccbs_list.item[ccbs_list.count].name.data[sizeof(ccbs_list.item[ccbs_list.count].name.data)-2] = '\0'; - ccbs_list.item[ccbs_list.count].name.data[sizeof(ccbs_list.item[ccbs_list.count].name.data)-1] = '\0'; - } - } - else /* not UniCode */ - { - TRACE_EVENT("Not prefixed unicode: ASCII name"); - if (ccbs_list.item[ccbs_list.count].name.len < (sizeof(ccbs_list.item[ccbs_list.count].name.data)-1)) - { - ccbs_list.item[ccbs_list.count].name.data[ccbs_list.item[ccbs_list.count].name.len] = '\0'; - } - else - { - ccbs_list.item[ccbs_list.count].name.data[sizeof(ccbs_list.item[ccbs_list.count].name.data)-1] = '\0'; - } - bookGsm2Alpha(ccbs_list.item[ccbs_list.count].name.data); - TRACE_EVENT_P2("name.data %p %s", ccbs_list.item[ccbs_list.count].name.data, ccbs_list.item[ccbs_list.count].name.data); - } - TRACE_EVENT_P1("name.len %d", ccbs_list.item[ccbs_list.count].name.len); -#else - strncpy(ccbs_list.item[ccbs_list.count].name, entry.name, sizeof(ccbs_list.item[ccbs_list.count].name)-1); - ccbs_list.item[ccbs_list.count].name[sizeof(ccbs_list.item[ccbs_list.count].name)-1] = '\0'; - bookGsm2Alpha(ccbs_list.item[ccbs_list.count].name); - TRACE_EVENT_P1("name %s", ccbs_list.item[ccbs_list.count].name); -#endif - } - ccbs_list.count++; - } -} - -/******************************************************************************* - - $Function: call_delete_from_ccbs_list - - $Description: Deletes an entry from a CCBS list structure - - $Returns: Nothing - - $Arguments: None - -*******************************************************************************/ -static void call_delete_from_ccbs_list(void) -{ - TRACE_FUNCTION("call_delete_from_ccbs_list()"); - - if (ccbs_list.count == 0) - { - TRACE_EVENT("List empty"); - } - else if (ccbs_list.sel >= ccbs_list.count) - { - TRACE_EVENT_P2("Invalid item %d selected from %d", ccbs_list.sel, ccbs_list.count); - } - else - { - TRACE_EVENT_P2("Valid item %d selected from %d", ccbs_list.sel, ccbs_list.count); - if (ccbs_list.sel < (ccbs_list.count-1)) - { - UBYTE index; - TRACE_EVENT("Not the last item selected"); - for (index = ccbs_list.sel; index < (ccbs_list.count-1); index++) - { - TRACE_EVENT_P2("Moving item %d to item %d", index+1, index); - memcpy(&ccbs_list.item[index], &ccbs_list.item[index+1], - sizeof(ccbs_list.item[index])); - } - } - ccbs_list.count--; - TRACE_EVENT_P1("%d items remain", ccbs_list.count); - } -} - -/******************************************************************************* - - $Function: call_create_ccbs_menu_list - - $Description: Creates a list of registered CCBS for selection. - - $Returns: Nothing - - $Arguments: None - -*******************************************************************************/ -static void call_create_ccbs_menu_list(void) -{ - UBYTE index; - - TRACE_FUNCTION("call_create_ccbs_menu_list()"); - - if (ccbs_list.count == 0) - { - TRACE_EVENT("Should not be an empty list"); - return; - } - - ccbs_list.list_menu_data = (ListMenuData *)ALLOC_MEMORY (sizeof (ListMenuData)); - - TRACE_EVENT_P2("ALLOC_MEMORY for ccbs_list.list_menu_data: %d, %p", sizeof (ListMenuData), ccbs_list.list_menu_data); - if (ccbs_list.list_menu_data == NULL) - { - return; - } - - ccbs_list.list_menu_data->List = - (T_MFW_MNU_ITEM *) ALLOC_MEMORY (ccbs_list.count * sizeof (T_MFW_MNU_ITEM)); - - TRACE_EVENT_P2("ALLOC_MEMORY for ccbs_list.list_menu_data->List: %d, %p", - ccbs_list.count * sizeof (T_MFW_MNU_ITEM), ccbs_list.list_menu_data->List); - - if (ccbs_list.list_menu_data->List == NULL) - { - TRACE_EVENT_P2("FREE_MEMORY for ccbs_list.list_menu_data: %d, %p", sizeof (ListMenuData), ccbs_list.list_menu_data); - FREE_MEMORY ((UBYTE *)ccbs_list.list_menu_data, sizeof (ListMenuData)); - ccbs_list.list_menu_data = NULL; - return; - } - - /* - * Fill in the items in the menu list - */ - TRACE_EVENT_P1("ccbs_list.count: %d", ccbs_list.count); - - for (index = 0; index < ccbs_list.count; index++) - { - TRACE_EVENT_P1("index: %d", index); - mnuInitDataItem(&ccbs_list.list_menu_data->List[index]); - -#ifdef NO_ASCIIZ - if (ccbs_list.item[index].name.len != 0 ) - { - ccbs_list.list_menu_data->List[index].str = (char *)ccbs_list.item[index].name.data; - TRACE_EVENT_P2("name.data: %p %s", ccbs_list.item[index].name.data, ccbs_list.item[index].name.data); - } -#else - if (strlen((char *)ccbs_list.item[index].name) != 0) - { - ccbs_list.list_menu_data->List[index].str = (char *)ccbs_list.item[index].name; - } -#endif - else - { - ccbs_list.list_menu_data->List[index].str = (char *)ccbs_list.item[index].number; - TRACE_EVENT_P2("number: %p %s", ccbs_list.item[index].number, ccbs_list.item[index].number); - } - - TRACE_EVENT_P3("[%d] %p %s", index, ccbs_list.list_menu_data->List[index].str, ccbs_list.list_menu_data->List[index].str); - ccbs_list.list_menu_data->List[index].flagFunc = item_flag_none; - } - - TRACE_EVENT_P1("index: %d", index); - /* - * Fill common parameter for list handling - */ - ccbs_list.list_menu_data->ListLength = index; - ccbs_list.list_menu_data->ListPosition = 1; - ccbs_list.list_menu_data->CursorPosition = 1; - ccbs_list.list_menu_data->SnapshotSize = index; - ccbs_list.list_menu_data->Font = 0; - ccbs_list.list_menu_data->LeftSoftKey = TxtDelete; - ccbs_list.list_menu_data->RightSoftKey = TxtSoftBack; - ccbs_list.list_menu_data->KeyEvents = - KCD_HUP | KEY_RIGHT | KEY_LEFT | KEY_MNUUP | KEY_MNUDOWN; - ccbs_list.list_menu_data->Reason = 0; - ccbs_list.list_menu_data->Strings = TRUE; - ccbs_list.list_menu_data->Attr = &ccbs_list_menuAttrib; - ccbs_list.list_menu_data->autoDestroy = TRUE; - ccbs_list.list_menu_data->listCol = COLOUR_LIST_XX; - Mmi_set_area_attr(&ccbs_list_menuArea,0,0,SCREEN_SIZE_X,SCREEN_SIZE_Y-Mmi_layout_softkeyHeight()); - -} - -/******************************************************************************* - - $Function: call_ccbs_menu_list_cb - - $Description: Callback function for the registered CCBS list - - $Returns: Nothing - - $Arguments: T_MFW_HND win - the list's window handle - ListMenuData * - pointer to list data - -*******************************************************************************/ -static void call_ccbs_menu_list_cb(T_MFW_HND win, ListMenuData * ListData) -{ - T_MFW res; // The value returned fron cm_ccbs_delete - - TRACE_FUNCTION("call_ccbs_menu_list_cb()"); - - /* Make record of the selected item for deletion if OK */ - ccbs_list.sel = ListData->ListPosition; - - switch (ListData->Reason) - { - case LISTS_REASON_SELECT: - - TRACE_EVENT("LISTS_REASON_SELECT"); -#ifdef NO_ASCIIZ - if (ccbs_list.item[ccbs_list.sel].name.len != 0 ) - { - TRACE_EVENT_P3("selected item %d idx %d %s", - ccbs_list.sel, - ccbs_list.item[ccbs_list.sel].idx, - (char *)ccbs_list.item[ccbs_list.sel].name.data); - } -#else - if (strlen((char *)ccbs_list.item[ccbs_list.sel].name) != 0 ) - { - TRACE_EVENT_P3("selected item %d idx %d %s", - ccbs_list.sel, - ccbs_list.item[ccbs_list.sel].idx, - (char *)ccbs_list.item[ccbs_list.sel].name); - } -#endif - else - { - TRACE_EVENT_P3("selected item %d idx %d %s", - ccbs_list.sel, - ccbs_list.item[ccbs_list.sel].idx, - (char *)ccbs_list.item[ccbs_list.sel].number); - } - - if ((res = cm_ccbs_delete(ccbs_list.item[ccbs_list.sel].idx)) != CM_OK) - { - TRACE_EVENT_P1("cm_ccbs_delete returned %d", res); - TRACE_EVENT_P2("FREE_MEMORY for ccbs_list.list_menu_data->List: %d, %p", - ccbs_list.count * sizeof (T_MFW_MNU_ITEM), - ccbs_list.list_menu_data->List); - FREE_MEMORY ((UBYTE *)ccbs_list.list_menu_data->List, - ccbs_list.count * sizeof (T_MFW_MNU_ITEM)); - TRACE_EVENT_P2("FREE_MEMORY for ccbs_list.list_menu_data: %d, %p", - sizeof (ListMenuData), - ccbs_list.list_menu_data); - FREE_MEMORY ((UBYTE *)ccbs_list.list_menu_data, - sizeof (ListMenuData)); - /* Redisplay the registered CCBS list */ - call_show_ccbs_menu_list(); - bookShowInformation(ccbs_list.win, TxtFailed, NULL, NULL); - return; - } - break; - - case LISTS_REASON_BACK: - case LISTS_REASON_HANGUP: - - TRACE_EVENT("LISTS_REASON_BACK/LISTS_REASON_HANGUP"); - - /* Redisplay the Callback Status */ - call_ccbs_show_status(); - break; - - default: - TRACE_EVENT_P1("Unexpected ListData->Reason %d", ListData->Reason); - break; - } - - TRACE_EVENT_P2("FREE_MEMORY for ccbs_list.list_menu_data->List: %d, %p", - ccbs_list.count * sizeof (T_MFW_MNU_ITEM), - ccbs_list.list_menu_data->List); - FREE_MEMORY ((UBYTE *)ccbs_list.list_menu_data->List, - ccbs_list.count * sizeof (T_MFW_MNU_ITEM)); - TRACE_EVENT_P2("FREE_MEMORY for ccbs_list.list_menu_data: %d, %p", - sizeof (ListMenuData), - ccbs_list.list_menu_data); - FREE_MEMORY ((UBYTE *)ccbs_list.list_menu_data, - sizeof (ListMenuData)); - ccbs_list.list_menu_data = NULL; - -} - -/******************************************************************************* - - $Function: call_show_ccbs_menu_list - - $Description: Shows the list of registered CCBS - - $Returns: Nothing - - $Arguments: None - -*******************************************************************************/ -static void call_show_ccbs_menu_list(void) -{ - T_MFW res; - TRACE_FUNCTION("call_show_ccbs_menu_list()"); - call_create_ccbs_menu_list(); - if ((res = listDisplayListMenu( - ccbs_list.win, ccbs_list.list_menu_data, - (ListCbFunc)call_ccbs_menu_list_cb, 0)) != LISTS_OK) - { - TRACE_EVENT_P1("listDisplayListMenu returned %d", res); - TRACE_EVENT_P2("FREE_MEMORY for ccbs_list.list_menu_data->List: %d, %p", - ccbs_list.count * sizeof (T_MFW_MNU_ITEM), - ccbs_list.list_menu_data->List); - FREE_MEMORY ((UBYTE *)ccbs_list.list_menu_data->List, - ccbs_list.count * sizeof (T_MFW_MNU_ITEM)); - TRACE_EVENT_P2("FREE_MEMORY for ccbs_list.list_menu_data: %d, %p", - sizeof (ListMenuData), - ccbs_list.list_menu_data); - FREE_MEMORY ((UBYTE *)ccbs_list.list_menu_data, - sizeof (ListMenuData)); - ccbs_list.list_menu_data = NULL; - bookShowInformation(ccbs_list.win, TxtFailed, NULL, NULL); - } -} - -/******************************************************************************* - - $Function: call_offer_ccbs_registration - - $Description: Offers an opportunity for CCBS registration to the user - - $Returns: Nothing - - $Arguments: T_MFW_CM_CCBS_INFO *para - pointer to E_CM_CCBS event data - -*******************************************************************************/ -static void call_offer_ccbs_registration(T_MFW_CM_CCBS_INFO *para) -{ - TRACE_FUNCTION("call_offer_ccbs_registration()"); - - if (para->indct != CCBS_IND_Possible) - { - TRACE_EVENT_P1("Unexpected indct %d", para->indct); - } - else - { - T_DISPLAY_DATA display_info ; // Structure for info_dialog - - /* Marcus: Issue 1630: 24/01/2003: Start */ - dlg_initDisplayData_TextId( &display_info, TxtYes, TxtNo, TxtCallBackQuery, TxtNull, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)call_offer_ccbs_registration_callback, FOREVER, KEY_HUP | KEY_LEFT | KEY_RIGHT); - /* Marcus: Issue 1630: 24/01/2003: End */ - - ccbs_registration_win = info_dialog(NULL, &display_info); - TRACE_EVENT_P3("info_dialog(%p, %p): %p", - NULL, &display_info, ccbs_registration_win); - } -} -/******************************************************************************* - - $Function: call_offer_ccbs_registration_callback - - $Description: Handle the Callback Registration Query callback - - $Returns: int: MFW_EVENT_CONSUMED or MFW_EVENT_REJECTED - - $Arguments: T_MFW_HND win - pointer to the parent window - USHORT identifier - Identifier supplied in T_DISPLAY_DATA - UBYTE reason - The reason for the call - - $Note: The current Callback Registration Query window is about to be destroyed - -*******************************************************************************/ - -static int call_offer_ccbs_registration_callback(T_MFW_HND win, USHORT identifier, UBYTE reason) -{ - int res = MFW_EVENT_CONSUMED; // Result code to be returned by this function - T_MFW mfw_res; // Result code returned by MFW - - TRACE_FUNCTION("call_offer_ccbs_registration_callback()"); - TRACE_EVENT_P3("win %p: identifier %d: reason %d", win, identifier, reason); - - switch(reason) - { - case INFO_KCD_RIGHT: // Reject offer of CCBS registration - TRACE_EVENT("INFO_KCD_RIGHT"); - if ((mfw_res = cm_ccbs_reject_registration()) != CM_OK) - { - TRACE_EVENT_P1("cm_ccbs_reject_registration returned %d", mfw_res); - bookShowInformation(ccbs_registration_win, TxtFailed, NULL, NULL); - } - break; - - case INFO_KCD_LEFT: // Accept the offer of CCBS registration - TRACE_EVENT("INFO_KCD_LEFT"); - if ((mfw_res = cm_ccbs_accept_registration()) != CM_OK) - { - TRACE_EVENT_P1("cm_ccbs_accept_registration returned %d", mfw_res); - bookShowInformation(ccbs_registration_win, TxtFailed, NULL, NULL); - } - break; - - case INFO_KCD_HUP: // Ignore the offer of CCBS registration - TRACE_EVENT("INFO_KCD_HUP"); - // No further action required - break; - - default: - TRACE_EVENT_P1("Unexpected reason: %d", reason); - res = MFW_EVENT_REJECTED; - break; - } - - /* - * The current Callback Registration Query window is about to be destroyed - * so the window handle is no longer valid. - */ - ccbs_registration_win = NULL; - - return res; -} - - -/******************************************************************************* - - $Function: call_withdraw_ccbs_registration - - $Description: Withdraws an opportunity for CCBS registration to the user - - $Returns: Nothing - - $Arguments: T_MFW_CM_CCBS_INFO *para - pointer to E_CM_CCBS event data - -*******************************************************************************/ -static void call_withdraw_ccbs_registration(LangTxt TxtId) -{ - T_DISPLAY_DATA display_info ; // Structure for info_dialog - - TRACE_FUNCTION("call_withdraw_ccbs_registration()"); - - if (ccbs_registration_win != NULL) - { - TRACE_EVENT_P1("Destroying dialog %p", ccbs_registration_win); - SEND_EVENT(ccbs_registration_win, DIALOG_DESTROY, 0, 0); - ccbs_registration_win = NULL; - } - - /* Marcus: Issue 1630: 24/01/2003: Start */ - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtCallBack, TxtId, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_HUP | KEY_LEFT | KEY_RIGHT); - /* Marcus: Issue 1630: 24/01/2003: End */ - - info_dialog(NULL, &display_info); - TRACE_EVENT_P2("info_dialog(%p, %p)", NULL, &display_info); -} - -/******************************************************************************* - - $Function: unicode_strcpy - - $Description: UniCode equivalent of ASCII strcpy - - $Returns: Nothing - - $Arguments: pointer to destination unicode string - pointer to source unicode string - -*******************************************************************************/ -static void unicode_strcpy(USHORT *dst, USHORT *src) -{ - UCHAR *first = (UCHAR *)src; - - if (*first == 0x80) - src++; - - while (*dst++ = *src++); -} - -/******************************************************************************* - - $Function: unicode_strcat - - $Description: UniCode equivalent of ASCII strcat - - $Returns: Nothing - - $Arguments: pointer to destination unicode string - pointer to source unicode string - -*******************************************************************************/ -static void unicode_strcat(USHORT *dst, USHORT *src) -{ - UCHAR *first = (UCHAR *)src; - - if (*first == 0x80) - src++; - - while (*dst) - dst++; - - while (*dst++ = *src++); -} - -/******************************************************************************* - - $Function: unicode_strlen - - $Description: UniCode equivalent of ASCII strlen - - $Returns: size_t - length of UniCode string (including and 0x80 prefix) - - $Arguments: pointer to destination unicode string - pointer to source unicode string - -*******************************************************************************/ -static size_t unicode_strlen(USHORT *src) -{ - size_t count = 0; - - while (*src++) - count += sizeof(USHORT); - - return count; -} - -/******************************************************************************* - - $Function: ascii_unicode_strcpy - - $Description: UniCode equivalent of ASCII strcpy with ASCII source - - $Returns: Nothing - - $Arguments: pointer to destination unicode string - pointer to source unicode string - -*******************************************************************************/ -static void ascii_unicode_strcpy(USHORT *dst, UCHAR *src) -{ - UBYTE *udst = (UBYTE *)dst; - do - { - *udst = 0; - udst++; - } - while (*udst++ = *src++); -} - -/******************************************************************************* - - $Function: ascii_unicode_strcat - - $Description: UniCode equivalent of ASCII strcat with ASCII source - - $Returns: Nothing - - $Arguments: pointer to destination unicode string - pointer to source unicode string - -*******************************************************************************/ -static void ascii_unicode_strcat(USHORT *dst, UCHAR *src) -{ - UBYTE *udst = (UBYTE *)dst + unicode_strlen(dst); - ascii_unicode_strcpy((USHORT *)udst, src); -} - -/******************************************************************************* - - $Function: fill_ccbs_recall_text_buffer - - $Description: Fills the ccbs_recall_text_buffer - - $Returns: Length (in bytes) of the contents of the ccbs_recall_text_buffer - - $Arguments: LangTxt TxtId - text identifier of the final line - -*******************************************************************************/ -static size_t fill_ccbs_recall_text_buffer(LangTxt TxtId) -{ - size_t size; - - TRACE_FUNCTION("fill_ccbs_recall_text_buffer"); - - if ((dspl_get_char_type() == DSPL_TYPE_UNICODE) && - (Mmi_getCurrentLanguage() == CHINESE_LANGUAGE)) - { - /* Chinese UniCode - MmiRsrcGetText returns UniCode */ - TRACE_EVENT("Chinese UniCode - UniCode TxtIds"); - - /*MC, SPR1526, don't need to add unicode tag any more*/ - unicode_strcpy((USHORT *)&ccbs_recall_text_buffer[0], - (USHORT *)MmiRsrcGetText(TxtCallBack)); - ascii_unicode_strcat((USHORT *)ccbs_recall_text_buffer, (UCHAR *)"\n"); -#ifdef NO_ASCIIZ - if (ccbs_recall.name.len > 0) - { - if (ccbs_recall.name.data[0] == 0x80) - { - TRACE_EVENT("NO_ASCIIZ UniCode name"); - unicode_strcat((USHORT *)ccbs_recall_text_buffer, - (USHORT *)ccbs_recall.name.data); - } - else - { - TRACE_EVENT("NO_ASCIIZ ASCII name"); - ascii_unicode_strcat((USHORT *)ccbs_recall_text_buffer, - ccbs_recall.name.data); - } - } -#else - if (ccbs_recall.name[0] == 0x80) - { - TRACE_EVENT("ASCIIZ UniCode name"); - unicode_strcat((USHORT *)ccbs_recall_text_buffer, - (USHORT *)ccbs_recall.name); - } - else if (strlen((char *)ccbs_recall.name) > 0) - { - TRACE_EVENT("ASCIIZ ASCII name"); - ascii_unicode_strcat((USHORT *)ccbs_recall_text_buffer, - (char *)ccbs_recall.name); - } -#endif - else - { - TRACE_EVENT("ASCII number"); - ascii_unicode_strcat((USHORT *)ccbs_recall_text_buffer, - (UCHAR *)ccbs_recall.number); - } - ascii_unicode_strcat((USHORT *)ccbs_recall_text_buffer, (UCHAR *)"\n"); - unicode_strcat((USHORT *)ccbs_recall_text_buffer, - (USHORT *)MmiRsrcGetText(TxtId)); - - size = unicode_strlen((USHORT *)ccbs_recall_text_buffer); - } - else /* Not Chinese UniCode */ - { - int max_recallbuf_size = sizeof(ccbs_recall_text_buffer); - int cur_recallbuf_size = 0; - TRACE_EVENT("Not Chinese UniCode - ASCII TxtIds"); - strcpy(ccbs_recall_text_buffer, MmiRsrcGetText(TxtCallBack)); - strcat(ccbs_recall_text_buffer, "\n"); - - cur_recallbuf_size = strlen(ccbs_recall_text_buffer); - max_recallbuf_size -= cur_recallbuf_size; - -#ifdef NO_ASCIIZ - if (ccbs_recall.name.len > 0) - { - TRACE_EVENT("NO_ASCIIZ ASCII name"); - strncat(ccbs_recall_text_buffer, (char *)ccbs_recall.name.data, max_recallbuf_size); - max_recallbuf_size -= strlen((char *)ccbs_recall.name.data); - } -#else - if (strlen((char *)ccbs_recall.name) > 0) - { - TRACE_EVENT("ASCIIZ ASCII name"); - strncat(ccbs_recall_text_buffer, (char *)ccbs_recall.name, max_recallbuf_size); - max_recallbuf_size -= strlen((char *)ccbs_recall.name); - } -#endif - else - { - TRACE_EVENT("ASCII number"); - strncat(ccbs_recall_text_buffer, (char *)ccbs_recall.number, max_recallbuf_size); - max_recallbuf_size -= strlen((char *)ccbs_recall.number); - } - - if (max_recallbuf_size > 1) - { - strcat(ccbs_recall_text_buffer, "\n"); - strncat(ccbs_recall_text_buffer, MmiRsrcGetText(TxtId), max_recallbuf_size-1); - } - - size = strlen(ccbs_recall_text_buffer); - } - - TRACE_EVENT_P1("size = %d", size); - - return size; -} - -/******************************************************************************* - - $Function: call_offer_ccbs_recall - - $Description: Offers an opportunity for CCBS recall to the user - - $Returns: Nothing - - $Arguments: T_MFW_CM_CCBS_INFO *para - pointer to E_CM_CCBS event data - -*******************************************************************************/ -static void call_offer_ccbs_recall(T_MFW_CM_CCBS_INFO *para) -{ - size_t size; /* The length of the string to be displayed */ - LangTxt TxtId; - - TRACE_FUNCTION("call_offer_ccbs_recall()"); - - if (para->indct != CCBS_IND_Recall) - { - TRACE_EVENT_P1("Unexpected indct %d", para->indct); - } - else - { - /* SPR#1428 - SH - New editor changes */ - #ifdef NEW_EDITOR - T_AUI_EDITOR_DATA editor_data; - #else /* NEW_EDITOR */ - T_EDITOR_DATA editor_data; // Structure for (read-only) editor - #endif /* NEW_EDITOR */ - - T_MFW_PHB_ENTRY entry; // Structure to pass to bookFindNameInPhonebook - - int max_recall_size = sizeof(ccbs_recall.number); - - /* Clear the ccbs_recall structure for a new CCBS recall offering */ - memset((void *)&ccbs_recall, 0, sizeof(ccbs_recall)); - - /* Fill in the fields of the ccbs_recall structure */ - ccbs_recall.type = para->call_type; - - if ((para->ton == MFW_TON_INTERNATIONAL) && (para->number[0] != '+')) - { - strcpy((char *)ccbs_recall.number, "+"); - max_recall_size--; - } - - strncat((char *)ccbs_recall.number, (char *)para->number, max_recall_size); - TRACE_EVENT_P1("number %s", ccbs_recall.number); - if (bookFindNameInPhonebook((char*)para->number, &entry)) - { - /* The number corresponds to a name in the phonebook */ -#ifdef NO_ASCIIZ - memcpy(&ccbs_recall.name, &entry.name, sizeof(ccbs_recall.name)); - if ((dspl_get_char_type() == DSPL_TYPE_UNICODE) && - (ccbs_recall.name.data[0] == 0x80)) - { - /* UniCode */ - TRACE_EVENT("Prefixed unicode name"); - if (ccbs_recall.name.len < (sizeof(ccbs_recall.name.data)-2)) - { - ccbs_recall.name.data[ccbs_recall.name.len] = '\0'; - ccbs_recall.name.data[ccbs_recall.name.len+1] = '\0'; - } - else - { - ccbs_recall.name.data[sizeof(ccbs_recall.name.data)-2] = '\0'; - ccbs_recall.name.data[sizeof(ccbs_recall.name.data)-1] = '\0'; - } - } - else /* Not UniCode */ - { - TRACE_EVENT("Not prefixed unicode: ASCII name"); - if (ccbs_recall.name.len < (sizeof(ccbs_recall.name.data)-1)) - { - ccbs_recall.name.data[ccbs_recall.name.len] = '\0'; - } - else - { - ccbs_recall.name.data[sizeof(ccbs_recall.name.data)-1] = '\0'; - } - bookGsm2Alpha(ccbs_recall.name.data); - TRACE_EVENT_P1("name %s", ccbs_recall.name.data); - } - TRACE_EVENT_P1("name len %d", ccbs_recall.name.len); -#else - strncpy(ccbs_recall.name, entry.name, sizeof(ccbs_recall.name)-1); - ccbs_recall.name[sizeof(ccbs_recall.name)-1] = '\0'; - bookGsm2Alpha(ccbs_recall.name); - TRACE_EVENT_P1("name %s", ccbs_recall.name); -#endif - } - - switch (ccbs_recall.type) - { - case VOICE_CALL: - TxtId = TxtVoice; - break; - - case DATA_CALL: - TxtId = TxtData; - break; - - case FAX_CALL: - TxtId = TxtFax; - break; - - default: - TxtId = TxtNull; - TRACE_EVENT_P1("Unexpected ccbs_recall.type %d", ccbs_recall.type); - break; - } - - size = fill_ccbs_recall_text_buffer(TxtId); - - /* SPR#1428 - SH - New editor changes */ -#ifdef NEW_EDITOR - AUI_edit_SetDefault(&editor_data); - AUI_edit_SetDisplay(&editor_data, ZONE_FULLSOFTKEYS, COLOUR_EDITOR_XX, EDITOR_FONT); - AUI_edit_SetTextStr(&editor_data, TxtAccept, TxtReject, TxtNull, 0); - AUI_edit_SetEvents(&editor_data, 0, TRUE, FOREVER, (T_AUI_EDIT_CB)call_offer_ccbs_recall_callback); - AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)ccbs_recall_text_buffer, size); - AUI_edit_SetMode(&editor_data, ED_MODE_READONLY, ED_CURSOR_NONE); - if ((ccbs_recall.win = AUI_edit_Start(NULL, &editor_data)) != NULL) - { - TRACE_EVENT_P3("AUI_edit_Start(%p, %p): %p", NULL, &editor_data, ccbs_recall.win); -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -#ifdef FF_MIDI_RINGER - mfw_ringer_start(AS_RINGER_MODE_IC,true,sounds_midi_ringer_start_cb); -#else -#ifdef NEPTUNE_BOARD -#ifdef FF_MMI_RINGTONE /* MSL Ring tone */ - audio_PlaySoundID(AUDIO_BUZZER, CALLTONE_SELECT, 0 , AUDIO_PLAY_ONCE ); -#else - audio_PlaySoundID(AUDIO_BUZZER, getCurrentRingerSettings(), - getCurrentVoulmeSettings(), AUDIO_PLAY_ONCE ); /* GW#2355 /CQ11341 */ -#endif -#else - audio_PlaySoundID(AUDIO_BUZZER, getCurrentRingerSettings(), 0 , AUDIO_PLAY_ONCE ); /* GW#2355 /CQ11341 */ -#endif -/* END RAVI */ - -#endif - } - else - { - TRACE_EVENT("AUI_edit_Start failed"); - } -#else /* NEW_EDITOR */ - editor_attr_init(&editor_data.editor_attr, ZONE_FULLSOFTKEYS, - edtCurNone, 0, ccbs_recall_text_buffer, size, COLOUR_EDITOR_XX); - editor_data_init(&editor_data, (T_EDIT_CB)call_offer_ccbs_recall_callback, - TxtAccept, TxtReject, TxtNull, 0, READ_ONLY_MODE, FOREVER); - if ((ccbs_recall.win = editor_start(NULL, &editor_data)) != NULL) - { - TRACE_EVENT_P3("editor_start(%p, %p): %p", - NULL, &editor_data, ccbs_recall.win); -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -#ifdef FF_MIDI_RINGER - mfw_ringer_start(AS_RINGER_MODE_IC,true,sounds_midi_ringer_start_cb); -#else -#ifdef NEPTUNE_BOARD -#ifdef FF_MMI_RINGTONE /* MSL Ring Tone */ - audio_PlaySoundID(AUDIO_BUZZER, CALLTONE_SELECT, 0 , AUDIO_PLAY_ONCE ); -#else - audio_PlaySoundID(AUDIO_BUZZER, getCurrentRingerSettings(), - getCurrentVoulmeSettings(), AUDIO_PLAY_ONCE ); /* GW#2355 /CQ11341 */ -#endif -#else - audio_PlaySoundID(AUDIO_BUZZER, getCurrentRingerSettings(), 0 , AUDIO_PLAY_ONCE ); /* GW#2355 /CQ11341 */ -#endif -/* END RAVI */ -#endif - } - else - { - TRACE_EVENT("editor_start failed"); - } -#endif - - } -} - -/******************************************************************************* - - $Function: call_offer_ccbs_recall_callback - - $Description: Handle the Callback Registration Query callback - - $Returns: int: MFW_EVENT_CONSUMED or MFW_EVENT_REJECTED - - $Arguments: T_MFW_HND win - pointer to the parent window - USHORT identifier - Identifier supplied in T_DISPLAY_DATA - UBYTE reason - The reason for the call - - $Note: The current Callback Registration Query window is about to be destroyed - -*******************************************************************************/ - -static int call_offer_ccbs_recall_callback(T_MFW_HND win, USHORT identifier, UBYTE reason) -{ - int res = MFW_EVENT_CONSUMED; // Result code to be returned by this function - T_MFW mfw_res; // Result code returned by MFW - - TRACE_FUNCTION("call_offer_ccbs_recall_callback()"); - TRACE_EVENT_P3("win %p: identifier %d: reason %d", win, identifier, reason); - - switch(reason) - { - case INFO_KCD_RIGHT: // Reject offer of CCBS recall - TRACE_EVENT("INFO_KCD_RIGHT"); - if ((mfw_res = cm_ccbs_reject_recall()) != CM_OK) - { - TRACE_EVENT_P1("cm_ccbs_reject_recall returned %d", mfw_res); - bookShowInformation(ccbs_recall.win, TxtFailed, NULL, NULL); - } - break; - - case INFO_KCD_LEFT: // Accept the offer of CCBS recall - case INFO_KCD_CALL: - TRACE_EVENT("INFO_KCD_LEFT"); - if ((mfw_res = cm_ccbs_accept_recall( - ccbs_recall.number, ccbs_recall.type)) != CM_OK) - { - TRACE_EVENT_P1("cm_ccbs_accept_recall returned %d", mfw_res); - if (mfw_res == CM_BLACKLIST) - { - bookShowInformation(ccbs_recall.win, Txtblacklisted, NULL, NULL); - } - else - { - bookShowInformation(ccbs_recall.win, TxtFailed, NULL, NULL); - } - } - break; - - case INFO_KCD_HUP: // Ignore the offer of CCBS recall - TRACE_EVENT("INFO_KCD_HUP"); - // No further action required - break; - - default: - TRACE_EVENT_P1("Unexpected reason: %d", reason); - res = MFW_EVENT_REJECTED; - break; - } - - /* - * The current Callback Registration Query window is about to be destroyed - * so the window handle is no longer valid. - */ - ccbs_recall.win = NULL; -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -// Stopping the current ring tone. -#ifdef FF_MIDI_RINGER - mfw_ringer_stop(sounds_midi_ringer_stop_cb); -#else -#ifdef FF_MMI_RINGTONE /*Stop MSL */ - audio_StopSoundbyID( AUDIO_BUZZER, CALLTONE_SELECT); -#else - audio_StopSoundbyID(AUDIO_BUZZER,getCurrentRingerSettings()); -#endif -#endif - return res; -} - -/******************************************************************************* - - $Function: call_withdraw_ccbs_recall - - $Description: Withdraws an opportunity for CCBS registration to the user - - $Returns: Nothing - - $Arguments: None - -*******************************************************************************/ -static void call_withdraw_ccbs_recall(LangTxt TxtId) -{ - size_t size; /* The length of the string to be displayed */ - ULONG duration; /* The duration of this display - 3s or forever */ - LangTxt lsk; /* The LSK label - OK if forever else none */ - /* SPR#1428 - SH - New editor data */ -#ifdef NEW_EDITOR - T_AUI_EDITOR_DATA editor_data; -#else /* NEW_EDITOR */ - T_EDITOR_DATA editor_data; // Structure for (read-only) editor -#endif /* NEW_EDITOR */ - int zoneId; // Variable for "zone" of editor - - TRACE_FUNCTION("call_withdraw_ccbs_recall()"); - - if (ccbs_recall.win != NULL) - { - TRACE_EVENT_P1("Destroying editor %p", ccbs_recall.win); - /* SPR#1428 - SH - New editor changes */ -#ifdef NEW_EDITOR - AUI_edit_Destroy(ccbs_recall.win); -#else /* NEW_EDITOR */ - editor_destroy(ccbs_recall.win); -#endif /* NEW_EDITOR */ - ccbs_recall.win = NULL; -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -// Stopping the current ring tone. -#ifdef FF_MIDI_RINGER - mfw_ringer_stop(sounds_midi_ringer_stop_cb); -#else -#ifdef FF_MMI_RINGTONE /*Stop MSL */ - audio_StopSoundbyID( AUDIO_BUZZER, CALLTONE_SELECT); -#else - audio_StopSoundbyID(AUDIO_BUZZER,getCurrentRingerSettings()); -#endif -#endif - } - - size = fill_ccbs_recall_text_buffer(TxtId); - - if (TxtId == TxtTimedOut) - { - TRACE_EVENT("Timed Out"); - duration = FOREVER; - lsk = TxtSoftOK; - zoneId = ZONE_FULLSOFTKEYS; - } - else - { - TRACE_EVENT("Not Timed Out"); - duration = THREE_SECS; - lsk = TxtNull; - zoneId = ZONE_FULLSCREEN; - } - - /* SPR#1428 - SH - New editor changes */ -#ifdef NEW_EDITOR - AUI_edit_SetDefault(&editor_data); - AUI_edit_SetDisplay(&editor_data, zoneId, COLOUR_EDITOR_XX, EDITOR_FONT); - AUI_edit_SetTextStr(&editor_data, lsk, TxtNull, TxtNull, 0); - AUI_edit_SetEvents(&editor_data, 0, TRUE, duration, NULL); - AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)ccbs_recall_text_buffer, size); - AUI_edit_SetMode(&editor_data, ED_MODE_READONLY, ED_CURSOR_NONE); - AUI_edit_Start(NULL, &editor_data); -#else /* NEW_EDITOR */ - editor_attr_init(&editor_data.editor_attr, zoneId, edtCurNone, 0, - ccbs_recall_text_buffer, size, COLOUR_EDITOR_XX); - editor_data_init(&editor_data, NULL, - lsk, TxtNull, TxtNull, 0, READ_ONLY_MODE, duration); - - editor_start(NULL, &editor_data); -#endif /* NEW_EDITOR */ - TRACE_EVENT_P2("editor_start(%p, %p)", NULL, &editor_data); -} - -/******************************************************************************* - - $Function: call_ccbs_show_status - - $Description: Display the CCBS Status Display - - $Returns: Nothing - - $Arguments: None - -*******************************************************************************/ -static void call_ccbs_show_status(void) -{ - T_DISPLAY_DATA display_info ; // Structure for info_dialog - TRACE_FUNCTION("call_ccbs_show_status()"); - - /* Marcus: Issue 1630: 24/01/2003: Start */ - if (FFS_flashData.ccbs_status == FALSE) - { - /* CCBS is off, so no RSK "List" option */ - TRACE_EVENT("FFS_flashData.ccbs_status == FALSE"); - dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtCallBack, TxtOff, COLOUR_STATUS_NETWORKS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)call_ccbs_callback, FOREVER, KEY_HUP | KEY_LEFT ); - } - else - { - /* CCBS is on, so RSK "List" option */ - TRACE_EVENT("FFS_flashData.ccbs_status != FALSE"); - dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtList, TxtCallBack, TxtOn, COLOUR_STATUS_NETWORKS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)call_ccbs_callback, FOREVER, KEY_HUP | KEY_LEFT | KEY_RIGHT ); - } - /* Marcus: Issue 1630: 24/01/2003: End */ - - TRACE_EVENT_P2("info_dialog(%p, %p)", NULL, &display_info); - info_dialog(NULL, &display_info); -} - -/******************************************************************************* - - $Function: call_ccbs_callback - - $Description: Handle the CCBS Status Display callback - - $Returns: int: MFW_EVENT_CONSUMED or MFW_EVENT_REJECTED - - $Arguments: T_MFW_HND win - pointer to the parent window - USHORT identifier - Identifier supplied in T_DISPLAY_DATA - UBYTE reason - The reason for the call - - $Note: The current CCBS Status Display window is about to be destroyed - -*******************************************************************************/ - -static int call_ccbs_callback(T_MFW_HND win, USHORT identifier, UBYTE reason) -{ - int res = MFW_EVENT_CONSUMED; // Result code to be returned by this function - - TRACE_FUNCTION("call_ccbs_callback()"); - TRACE_EVENT_P3("win %p: identifier %d: reason %d", win, identifier, reason); - - switch(reason) - { - case INFO_KCD_RIGHT: // List CCBS - TRACE_EVENT("INFO_KCD_RIGHT"); - if (FFS_flashData.ccbs_status == TRUE) - { - T_MFW cm_res; // Result returned by cm_ccbs_list - - /* Set up the structure that is to contain the CCBS list */ - call_initialise_ccbs_list(win); - - /* Request the CCBS list from ACI via MFW */ - if ((cm_res = cm_ccbs_list()) != CM_OK) - { - /* Redisplay the CCBS Status Display replacing that being destroyed */ - call_ccbs_show_status(); - bookShowInformation(NULL, TxtFailed, NULL, NULL); - TRACE_EVENT_P1("cm_ccbs_list returned %d", cm_res); - } - } - else - { - TRACE_EVENT("List selected when CCBS off"); - } - break; - - case INFO_KCD_LEFT: // Cancel back - TRACE_EVENT("INFO_KCD_LEFT"); - break; - - case INFO_KCD_HUP: // Cancel back - TRACE_EVENT("INFO_KCD_HUP"); - break; - - default: - TRACE_EVENT_P1("Unexpected reason: %d", reason); - res = MFW_EVENT_REJECTED; - break; - } - - return res; -} - -/******************************************************************************* - - $Function: call_ccbs - - $Description: Handle the CCBS sub-menu - - $Returns: int: MFW_EVENT_CONSUMED or MFW_EVENT_REJECTED - - $Arguments: MfwMnu *menu - pointer to current menu - MfwMnuItem *item - pointer to current menu item - -*******************************************************************************/ - -int call_ccbs(MfwMnu* menu, MfwMnuItem* item) -{ - int res = MFW_EVENT_CONSUMED; // Result code to be returned by this function - effs_t ffs_res; // For result returned by flash_write - - TRACE_FUNCTION("call_ccbs()"); - - if ((FFS_flashData.ccbs_status != FALSE) && - (FFS_flashData.ccbs_status != TRUE)) - { - /* - * CCBS status is not something sensible, - * so set CCBS status to default - */ - FFS_flashData.ccbs_status = FALSE; - if ((ffs_res = flash_write()) != EFFS_OK) - { - TRACE_EVENT_P1("flash_write returned %d", ffs_res); - } - TRACE_EVENT("CCBS status set to default (off)"); - } - - switch(menu->lCursor[menu->level]) - { - case 0: - TRACE_EVENT("Menu option 0: Check Status"); - break; - - case 1: - TRACE_EVENT("Menu option 1: Activate"); - if (FFS_flashData.ccbs_status != TRUE) - { - TRACE_EVENT("FFS_flashData.ccbs_status != TRUE"); - FFS_flashData.ccbs_status = TRUE; - if ((ffs_res = flash_write()) != EFFS_OK) - { - TRACE_EVENT_P1("flash_write returned %d", ffs_res); - } - } - break; - - case 2: - TRACE_EVENT("Menu option 2: Deactivate"); - if (FFS_flashData.ccbs_status != FALSE) - { - T_MFW cm_res; // Result returned by cm_ccbs_delete_all - TRACE_EVENT("FFS_flashData.ccbs_status != FALSE"); - FFS_flashData.ccbs_status = FALSE; - if ((ffs_res = flash_write()) != EFFS_OK) - { - TRACE_EVENT_P1("flash_write returned %d", ffs_res); - } - if ((cm_res = cm_ccbs_delete_all()) != CM_OK) - { - TRACE_EVENT_P1("cm_ccbs_delete_all returned %d", cm_res); - bookShowInformation(NULL, TxtFailed, NULL, NULL); - } - else - { - TRACE_EVENT("cm_ccbs_delete_all successful"); - } - } - break; - - default: - TRACE_EVENT_P1("Unexpected menu->lCursor[menu->level]: %d", - menu->lCursor[menu->level]); - res = MFW_EVENT_REJECTED; - break; - } - - if (res == MFW_EVENT_CONSUMED) - { - /* Valid, so display the CCBS Status Display */ - call_ccbs_show_status(); - } - TRACE_EVENT_P1("call_ccbs returning %d", res); - return res; -} -/* Marcus: CCBS: 13/11/2002: End */ - -/******************************************************************************* - - $Function: call_deflection_on - - $Description: Handles user selection of the "on" option in the Call Deflection menu - - $Returns: status int - - $Arguments: not used - Function added for SPR 1392 -*******************************************************************************/ -int call_deflection_on(MfwMnu* m, MfwMnuItem* i) -{T_MFW_HND win = mfwParent( mfw_header() ); - T_DISPLAY_DATA display_info; - - - FFS_flashData.call_deflection = TRUE; - flash_write(); - - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtCallDeflection, TxtActivated, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_CLEAR|KEY_LEFT|KEY_RIGHT ); - /* Call Info Screen - */ - info_dialog( win, &display_info ); - - return MFW_EVENT_CONSUMED; - -} - -/******************************************************************************* - - $Function: call_deflection_off - - $Description: Handles user selection of the "off" option in the Call deflection menu - - $Returns: status int - - $Arguments: not used - Function added for SPR 1392 -*******************************************************************************/ -int call_deflection_off(MfwMnu* m, MfwMnuItem* i) -{T_MFW_HND win = mfwParent( mfw_header() ); - T_DISPLAY_DATA display_info; - - FFS_flashData.call_deflection = FALSE; - flash_write(); - - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtCallDeflection, TxtDeActivated, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_CLEAR|KEY_LEFT|KEY_RIGHT ); - - /* Call Info Screen - */ - info_dialog( win, &display_info ); - - return MFW_EVENT_CONSUMED; - -} - - - - - -/******************************************************************************* - - $Function: cm_mt_deflect - $Description: Handles events from call deflection editor - $Returns: nothing - $Arguments: win, identifier(not used), reason(which key was pressed) -*******************************************************************************/ -void cm_mt_deflect(T_MFW_HND win, USHORT identifier, SHORT reason) -{ - T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; - T_call * data = (T_call *)win_data->user; - T_DISPLAY_DATA display_info; - BOOL result; - - TRACE_FUNCTION("cm_mt_deflect"); - TRACE_EVENT_P1("cm_mt_deflect reason=%d",reason); - - - - switch (reason) - { - case INFO_KCD_LEFT: - - TRACE_EVENT("cm_mt_deflect-left"); - /*destroy the editor, we don't need it anymore*/ - /* SPR#1428 - SH - New editor */ - #ifdef NEW_EDITOR - AUI_edit_Destroy(call_data.win_deflectEdit); - #else /* NEW_EDITOR */ - editor_destroy(call_data.win_deflectEdit); - #endif /* NEW_EDITOR */ - - call_data.win_deflectEdit = 0; - /*deflect to number in editor*/ - result = cm_deflect_incoming_call(data->editor_buffer); - - if (result == TRUE) - { - // Jan 05, 2006 REF:DR OMAPS00050454 x0039928 - // Fix: Destroy the calling window - if (!call_data.calls.numCalls) - { if (call_data.win) - { - call_destroy(call_data.win); - } - } - - /*Show that we're attempting to deflect the call*/ - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtDeflectingCallTo, TxtNull, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_LEFT ); - display_info.TextString2 =data->editor_buffer; - call_data.win_deflecting = info_dialog(idle_get_window(), &display_info); - } - else - { /*Show that deflection of call failed*/ - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtDeflect, TxtFailed, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_LEFT ); - info_dialog(idle_get_window(), &display_info); - - /*delete all deflection windows if deflection has failed*/ - deflect_destroy(TRUE); - } - break; -case INFO_KCD_ALTERNATELEFT: - /*start the phonebook serach window to select a number*/ - deflPhbExec(); - - break; - case INFO_KCD_HUP: - case INFO_KCD_RIGHT: // (Exit from Editor) - TRACE_EVENT("cm_mt_deflect-right"); - /*destroy the editor*/ - /* SPR#1428 - SH - New editor */ - #ifdef NEW_EDITOR - AUI_edit_Destroy(call_data.win_deflectEdit); - #else /* NEW_EDITOR */ - editor_destroy(call_data.win_deflectEdit); - #endif /* NEW_EDITOR */ - call_data.win_deflectEdit = 0; - /*resurrect the incoming call screen*/ - if (call_data.win_incoming == 0) - { call_data.win_incoming=info_dialog(call_data.win, &call_data.inc_call_data); - } - else - { winShow(call_data.win_incoming); - } - - break; - - default: - - break; - - } - - return; -} - - - -/******************************************************************************* - - $Function: call_deflection_cb - $Description: Handles keyboard input from incoming call screen - $Returns: nothing - $Arguments: win, identifier(not used), reason(which key was pressed) -*******************************************************************************/ -void call_deflection_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) -{ - T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; - T_call * data = (T_call *)win_data->user; - -/* a0393213 (WR - "currentRinger" was set but never used) */ -#ifndef FF_MIDI_RINGER -#ifndef FF_MMI_RINGTONE - UBYTE currentRinger; -#endif -#endif - -#ifdef NEW_EDITOR - T_AUI_EDITOR_DATA editor_data; -#else /* NEW_EDITOR */ - T_EDITOR_DATA editor_data; -#endif /* NEW_EDITOR */ - - TRACE_FUNCTION("call_deflection_cb"); - TRACE_EVENT("call_deflection_cb"); - - TRACE_EVENT_P1("number %s",call_data.globalCWInfo.number); - -#ifndef WIN32 -// EF 2nd call causes windows crash -/*a0393213 lint warnings:structure passed instead of char* */ -#ifdef NO_ASCIIZ - TRACE_EVENT_P1("name %s",call_data.entry.name.data); -#else - TRACE_EVENT_P1("name %s",call_data.entry.name); -#endif -#endif - - /*special case: Identifier is used only for the Multicall Control */ - call_data.win_incoming = 0; - // Jan 05, 2006 REF:DR OMAPS00050454 x0039928 - // Fix: Reset the deflecting window. - call_data.win_deflecting = 0; - - /* a0393213 (WR - "currentRinger" was set but never used) */ -#ifndef FF_MIDI_RINGER -#ifndef FF_MMI_RINGTONE - currentRinger = getCurrentRingerSettings(); -#endif -#endif - - switch (reason) - { - //reject - case INFO_KCD_HUP: - case INFO_KCD_RIGHT: - TRACE_EVENT("reject deflection"); -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -// terminate the ringing -#ifdef FF_MIDI_RINGER - mfw_ringer_stop(sounds_midi_ringer_stop_cb); -#else -#ifdef FF_MMI_RINGTONE /*Stop MSL */ - audio_StopSoundbyID( AUDIO_BUZZER, CALLTONE_SELECT); -#else - audio_StopSoundbyID( AUDIO_BUZZER, currentRinger ); -#endif -#endif - cm_mt_reject(); - break; - //deflect - case INFO_KCD_LEFT: - TRACE_EVENT("deflect call"); -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -// Stopping the current ring tone. -#ifdef FF_MIDI_RINGER - mfw_ringer_stop(sounds_midi_ringer_stop_cb); -#else -#ifdef FF_MMI_RINGTONE /*Stop MSL */ - audio_StopSoundbyID( AUDIO_BUZZER, CALLTONE_SELECT); -#else - audio_StopSoundbyID( AUDIO_BUZZER, currentRinger ); -#endif -#endif - /* SPR#1428 - SH - New editor */ - #ifdef NEW_EDITOR - AUI_edit_SetDefault(&editor_data); - AUI_edit_SetDisplay(&editor_data, ZONE_FULL_SK_TITLE, COLOUR_EDITOR_XX, EDITOR_FONT); - editor_data.editor_attr.win_size.py += Mmi_layout_line_height() ; - editor_data.editor_attr.win_size.sy -= Mmi_layout_line_height() ; - AUI_edit_SetTextStr(&editor_data, TxtDeflect, TxtSoftBack, TxtDeflectCallTo, NULL); - AUI_edit_SetEvents(&editor_data, identifier, FALSE, FOREVER, (T_AUI_EDIT_CB)cm_mt_deflect); - AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)data->editor_buffer, 20); - AUI_edit_SetAltTextStr(&editor_data, 1, TxtSoftContacts, FALSE, TxtNull); - AUI_edit_SetMode(&editor_data, 0, ED_CURSOR_BAR); - /* create the editor handler */ - call_data.win_deflectEdit = AUI_edit_Start(win, &editor_data); /* start the editor */ - #else /* NEW_EDITOR */ - editor_attr_init(&editor_data.editor_attr, ZONE_FULL_SK_TITLE, edtCurBar1, 0, data->editor_buffer, 20, COLOUR_EDITOR_XX ); - editor_data.editor_attr.win.py += Mmi_layout_line_height() ; - editor_data.editor_attr.win.sy -= Mmi_layout_line_height() ; - editor_data.AlternateLeftSoftKey = TxtSoftContacts;/*get phonebook list*/ - editor_data.LeftSoftKey = TxtDeflect; /*deflect to entered number*/ - editor_data.RightSoftKey = TxtSoftBack; - editor_data.TextId = TxtDeflectCallTo; - editor_data.Identifier = identifier; - editor_data.min_enter = 1; - editor_data.hide = FALSE; - editor_data.timeout =FOREVER; - editor_data.Callback = (T_EDIT_CB)cm_mt_deflect; - editor_data.destroyEditor = FALSE; - editor_data.mode = DIGITS_MODE; - /* create the editor handler */ - call_data.win_deflectEdit = editor_start(win, &editor_data); /* start the editor */ -#endif /* NEW_EDITOR */ - - break; - - //Accept call - case INFO_KCD_OFFHOOK: - - TRACE_EVENT("accept call -deflection"); -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -// Stopping the current ring tone. -#ifdef FF_MIDI_RINGER - mfw_ringer_stop(sounds_midi_ringer_stop_cb); -#else -#ifdef FF_MMI_RINGTONE /*Stop MSL */ - audio_StopSoundbyID( AUDIO_BUZZER, CALLTONE_SELECT); -#else - audio_StopSoundbyID( AUDIO_BUZZER, currentRinger ); -#endif -#endif - - cm_mt_accept(); - break; -// break; // RAVI - - //this is for the auto answer - case INFO_TIMEOUT: -// Apr 05, 2005 REF: ENH 29994 xdeepadh -//Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh -// Stopping the current ring tone. -#ifdef FF_MIDI_RINGER - mfw_ringer_stop(sounds_midi_ringer_stop_cb); -#else -#ifdef FF_MMI_RINGTONE /*Stop MSL */ - audio_StopSoundbyID( AUDIO_BUZZER, CALLTONE_SELECT); -#else - audio_StopSoundbyID( AUDIO_BUZZER, currentRinger ); -#endif -#endif - - cm_mt_accept(); - break; - - default: - - break; - } - -} - - - - -/******************************************************************************* - - $Function: deflPhbExec - - $Description: Starts phonebook serach screen for call deflection - - $Returns: status int - - $Arguments:none - -*******************************************************************************/ - - - -static int deflPhbExec() -{ - - // T_MFW_HND win = mfwParent(mfw_header()); // RAVI - // T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; // RAVI -// T_call_menu * data = (T_call_menu *)win_data->user; // RAVI - - call_data.win_deflectSearch = bookPhonebookStart(call_data.win,PhbkFromDeflect); - return 1; -} - - -/* SPR#1352 - SH */ -#ifdef MMI_TTY_ENABLED - - -/******************************************************************************* - - $Function: call_tty_init - - $Description: Initialise TTY - - $Returns None - - $Arguments: None - -*******************************************************************************/ - -void call_tty_init(void) -{ - /* SPR#1985 - SH - By default, don't display update dialogs */ - - TTYDisplayDialog = FALSE; - - if (FFS_flashData.ttyAlwaysOn==TRUE) - { - cm_tty_enable(TRUE); - } - else - { - FFS_flashData.ttyAlwaysOn = FALSE; /* Ensures it's either TRUE or FALSE */ - call_tty_set(CALL_TTY_OFF); - } - - return; -} - -/******************************************************************************* - - $Function: call_tty_get - - $Description: Obtain status of TTY - - $Returns Status byte - - $Arguments: None - -*******************************************************************************/ - -UBYTE call_tty_get(void) -{ - return call_data.tty; -} - -/******************************************************************************* - - $Function: call_tty_set - - $Description: Change status of TTY in RAM. Called when an appropriate response - is received from ACI. - - $Returns None - - $Arguments: Status byte, one of: CALL_TTY_OFF, CALL_TTY_ALWAYSON, - CALL_TTY_ONNEXTCALL - -*******************************************************************************/ - -void call_tty_set(UBYTE tty) -{ - call_data.tty = tty; -#ifdef FF_TTY_HCO_VCO - call_data_tty = call_data.tty; -#endif - - if (tty) - iconsSetState(iconIdTTY); - else - iconsDeleteState(iconIdTTY); - - return; -} - - -/******************************************************************************* - - $Function: call_tty_menu - - $Description: Initialise menu for TTY - - $Returns None - - $Arguments: None - -*******************************************************************************/ - -int call_tty_menu(MfwMnu* menu, MfwMnuItem* item) -{ - T_MFW_HND win = mfwParent(mfw_header()); - T_MFW_HND menuWin; - UBYTE selection; - - /* SPR#1985 - SH - Query TTY status, to update menu */ - TTYDisplayDialog = FALSE; - cm_tty_query(); - - selection = call_data.tty; - menuWin = bookMenuStart(win, TTYAttributes(), 0); - SEND_EVENT(menuWin, DEFAULT_OPTION, NULL, &selection); /* Set the default option to the value of tty */ - - return 1; -} -/*x0039928 OMAPS00097714 HCO/VCO option - menu handlers added*/ -#ifdef FF_TTY_HCO_VCO -/******************************************************************************* - - $Function: call_tty_co_menuselect_nextcall - - $Description: when an item is selected in TTY --> On next call menu - - $Returns None - - $Arguments: None - -*******************************************************************************/ -int call_tty_co_menuselect_nextcall(MfwMnu* menu, MfwMnuItem* item) -{ - UBYTE tty_co; - - tty_co = menu->lCursor[menu->level]; - - ttyPfType = tty_co; - - if (FFS_flashData.ttyAlwaysOn!=FALSE) - { - FFS_flashData.ttyAlwaysOn = FALSE; - flash_write(); - } - - TTYDisplayDialog = TRUE; - cm_tty_enable(TRUE); - return MFW_EVENT_CONSUMED; -} - -/******************************************************************************* - - $Function: call_tty_co_menuselect_always - - $Description: when an item is selected in TTY --> Always menu - - $Returns None - - $Arguments: None - -*******************************************************************************/ -int call_tty_co_menuselect_always(MfwMnu* menu, MfwMnuItem* item) -{ - UBYTE tty_co; - - tty_co = menu->lCursor[menu->level]; - - if (tty_co == TTY_ONLY_PF) - { - if (FFS_flashData.ttyAlwaysOn!= TRUE) - { - FFS_flashData.ttyAlwaysOn = TRUE; - flash_write(); - } - - FFS_flashData.ttyPfType = TTY_ONLY_PF; - flash_write(); - } - else if(tty_co == TTY_VCO_PF) - { - if (FFS_flashData.ttyAlwaysOn!=TRUE) - { - FFS_flashData.ttyAlwaysOn = TRUE; - flash_write(); - } - - FFS_flashData.ttyPfType = TTY_VCO_PF; - flash_write(); - } - else if(tty_co == TTY_HCO_PF) - { - if (FFS_flashData.ttyAlwaysOn!=TRUE) - { - FFS_flashData.ttyAlwaysOn = TRUE; - flash_write(); - } - - FFS_flashData.ttyPfType = TTY_HCO_PF; - flash_write(); - } - - TTYDisplayDialog = TRUE; - cm_tty_enable(TRUE); - - return 1; -} -#endif -/******************************************************************************* - - $Function: call_tty_menuselect - - $Description: Select menu option for TTY. Switches "always on" on or off in the - flash, then requests the ACI appropriately. - - $Returns None - - $Arguments: None - -*******************************************************************************/ - - -int call_tty_menuselect(MfwMnu* menu, MfwMnuItem* item) -{ - T_MFW_HND win = mfwParent(mfw_header()); - T_DISPLAY_DATA display_info; - UBYTE tty; - - tty = menu->lCursor[menu->level]; - /* SPR#1985 - SH - Remove duplicate call */ - -// Aug 03, 2006 REF:OMAPS00088329 x0039928 -// Fix: If headset is already connected then tty is not enabled. - if(tty != CALL_TTY_OFF) - { -#ifdef FF_MMI_AUDIO_PROFILE - if(headsetInserted == TRUE) - { - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtNotAllowed, NULL, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_LEFT ); - info_dialog(idle_get_window(), &display_info); - - return 1; - } -#endif - } - - /* Check if "Always on" status has changed */ - - if (tty==CALL_TTY_ALWAYSON) - { -#ifdef FF_TTY_HCO_VCO /*x0039928 OMAPS00097714 HCO/VCO option - Added to provide HCO/VCO option*/ - bookMenuStart(win, TTYCOAlwaysAttributes(), 0); -#else - if (FFS_flashData.ttyAlwaysOn!=TRUE) - { - FFS_flashData.ttyAlwaysOn = TRUE; - flash_write(); - } -#endif - } - else - { - -#ifdef FF_TTY_HCO_VCO /*x0039928 OMAPS00097714 HCO/VCO option - Added to provide HCO/VCO option*/ - if (tty==CALL_TTY_ONNEXTCALL) - bookMenuStart(win, TTYCONextCallAttributes(), 0); - else -#endif - if (FFS_flashData.ttyAlwaysOn!=FALSE) - { - FFS_flashData.ttyAlwaysOn = FALSE; - flash_write(); - } - } - - /* Send request to MFW->ACI - * SPR#1985 - SH - Don't show status dialog */ - - - TTYDisplayDialog = TRUE; - -#ifdef FF_TTY_HCO_VCO - if (!tty) - cm_tty_enable(FALSE); -#else - if (tty) - cm_tty_enable(TRUE); - else - cm_tty_enable(FALSE); -#endif - - return 1; -} - -#ifdef NEPTUNE_BOARD /* Mar 27, 2006 REF:ER OMAPS00071798 */ - -/******************************************************************************* - - $Function: ctty_audio_mode_text - - $Description: sets the audio mode then requests the ACI appropriately. - - $Returns None - - $Arguments: None - -*******************************************************************************/ -int ctty_audio_mode_text(MfwMnu* m, MfwMnuItem* i) -{ - T_MFW_HND win = mfwParent( mfw_header() ); - T_DISPLAY_DATA display_info; - - FFS_flashData.tty_audio_mode = AUDIO_MODE_TEXT; - flash_write(); - - dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtAudioModeText, TxtActivated, COLOUR_STATUS); - dlg_initDisplayData_events(&display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_LEFT); - - info_dialog( win, &display_info ); - -} - - -/******************************************************************************* - - $Function: ctty_audio_mode_text - - $Description: sets the audio mode then requests the ACI appropriately. - - $Returns None - - $Arguments: None - -*******************************************************************************/ - -int ctty_audio_mode_vco(MfwMnu* m, MfwMnuItem* i) -{ - T_MFW_HND win = mfwParent( mfw_header() ); - T_DISPLAY_DATA display_info; - - FFS_flashData.tty_audio_mode = AUDIO_MODE_VCO; - flash_write(); - - dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtAudioModeVco, TxtActivated, COLOUR_STATUS); - dlg_initDisplayData_events(&display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_LEFT); - - info_dialog( win, &display_info ); -} - - -/******************************************************************************* - - $Function: ctty_audio_mode_text - - $Description: sets the audio mode then requests the ACI appropriately. - - $Returns None - - $Arguments: None - -*******************************************************************************/ - -int ctty_audio_mode_unknown(MfwMnu* m, MfwMnuItem* i) -{ - T_MFW_HND win = mfwParent( mfw_header() ); - T_DISPLAY_DATA display_info; - - FFS_flashData.tty_audio_mode = AUDIO_MODE_Unknown; - flash_write(); - - dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtAudioModeUnknown, TxtActivated, COLOUR_STATUS); - dlg_initDisplayData_events(&display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_LEFT); - - info_dialog( win, &display_info ); - -} - -#endif - -/******************************************************************************* - - $Function: call_tty_statuswin - - $Description: If TTY status changes, inform the user with a window - - $Returns None - - $Arguments: None - -*******************************************************************************/ - -void call_tty_statuswin(void) -{ - T_MFW_HND win = mfwParent(mfw_header()); - T_DISPLAY_DATA display_info; - - TRACE_FUNCTION("call_tty_statuswin()"); - - /* SPR#1985 - SH - Now checks to see if dialog should be displayed */ - - if (TTYDisplayDialog) - { -// May 28, 2007 DR: OMAPS00123948 x0066692 -//Added Specific Dailogs when TTy_VCO, TTY_HCO are selected - if (call_data.tty == CALL_TTY_ALWAYSON) - { - if(flash_read() >= EFFS_OK) - { - if( FFS_flashData.ttyPfType == TTY_ONLY_PF) - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtTTY, TxtActivated, COLOUR_STATUS); - else if(FFS_flashData.ttyPfType == TTY_VCO_PF) - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtTTYVco, TxtActivated, COLOUR_STATUS); - - else if(FFS_flashData.ttyPfType == TTY_HCO_PF ) - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtTTYHco, TxtActivated, COLOUR_STATUS); - } - } - else if( call_data.tty == CALL_TTY_ONNEXTCALL ) - { - if( ttyPfType == TTY_ONLY_PF ) - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtTTY, TxtActivated, COLOUR_STATUS); - else if (ttyPfType == TTY_VCO_PF ) - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtTTYVco, TxtActivated, COLOUR_STATUS); - else if(ttyPfType == TTY_HCO_PF ) - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtTTYHco, TxtActivated, COLOUR_STATUS); - - } - else - { - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtTTY, TxtDeActivated, COLOUR_STATUS); - } - - dlg_initDisplayData_events( &display_info, NULL, THREE_SECS, NULL ); - info_dialog (win, &display_info); - TTYDisplayDialog = FALSE; - } - - return; -} - -/******************************************************************************* - - $Function: call_tty_revert - - $Description: Called when call terminates, to revert TTY settings back to their original - values (when appropriate) - - $Returns None - - $Arguments: None - -*******************************************************************************/ - -void call_tty_revert(void) -{ - - /* If "on next call" status is true, and stored status isn't "always on", - * then TTY has been temporarily switched on from the "off" state, - * and must be switched off again. */ - - if (call_tty_get()==CALL_TTY_ONNEXTCALL) - { - if (FFS_flashData.ttyAlwaysOn) /* TTY must stay on */ - cm_tty_enable(TRUE); - else - cm_tty_enable(FALSE); - } - - /* If we're in "off" status but the stored status is "always on", then - * TTY has been temporarily switched off - switch it on again */ - - else if (call_tty_get()==CALL_TTY_OFF && FFS_flashData.ttyAlwaysOn) - { - cm_tty_enable(TRUE); - } - - return; -} - -#endif - -static void call_ending_all_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) -{ - /* - ** Send an Idle Update to trigger the idle screen to be updated if required, - ** it will also trigger the Pin Entry screen to be reactivated if an emergency call - ** was made before the Pin/Puk was entered. - */ - idleEvent(IdleUpdate); - -#ifdef NEPTUNE_BOARD -#ifdef MMI_POWER_MANAGEMENT_TEST - iIncomingCall = 0; -#endif -#endif - - return; -} - - -void call_show_ending_all() -{ - T_DISPLAY_DATA display_info; - - TRACE_EVENT("call_show_ending_all()"); - - dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtCallEnded, TxtNull, COLOUR_STATUS); - dlg_initDisplayData_events( &display_info,(T_VOID_FUNC)call_ending_all_cb, THREE_SECS, KEY_CLEAR ); - /* - * Call Info Screen - */ - info_dialog (idle_get_window(), &display_info); -} - -/******************************************************************************* - - $Function: item_flag_hold - - - - $Arguments: m, ma, mi - not used - -*******************************************************************************/ - -USHORT item_flag_hold( struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi ) -{ - switch (call_data.calls.mode) - { - case CallSingle: - case CallConference: - return 0; - default: - return 1; - } - -} - -// Apr 26 2006, a0393213 (Prabakar R), OMAPS00074886 : No option in MMI to release the held call. - -/******************************************************************************* - - $Function: item_flag_endheld - $Description: This function decides if the 'End held' menu item needs to be displayed or not. - The return value 0 indicates to display and 1 to hide - - $Arguments: m, ma, mi - not used - - - -*******************************************************************************/ - -USHORT item_flag_endheld( struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi ) -{ - SHORT id; - if (cm_search_callId(CAL_STAT_Held, &id) == CM_OK) - { - //some call is in hold state, so display 'End held' menu option - return 0; - } - else - { - //there is no call in hold state, so don't display 'End held' menu option - return 1; - } -} - - -/******************************************************************************* - - $Function: item_flag_swap - - - - $Arguments: m, ma, mi - not used - -*******************************************************************************/ - -USHORT item_flag_swap( struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi ) -{ - switch (call_data.calls.mode) - { - case CallTwo: - case CallSingleMultiparty: - case CallMultipartySingle: - return 0; - default: - return 1; - } - -} - - /* cq15633 Access status function 23-03-04. MZ */ - -/******************************************************************************* - - $Function: call_IsAlertScreenActive - - $Description: Returns the status of the incoming call window. TRUE- If the incoming call window is active - - - $Returns TRUE/FALSE - - $Arguments: None - -*******************************************************************************/ - -BOOL call_IsAlertScreenActive( void ) -{ - if(call_data.win_incoming != NULL) - return TRUE; - - return FALSE; -} -// xpradipg - LOCOSTO-ENH-31895 : 23 June 2005 -#ifdef FF_MMI_AUDIO_PROFILE -/******************************************************************************* - - $Function: item_loudspeaker_status - - $Description: This function decides if the loudspeaker menu item needs to be displayed or not. - The return value 0 indicates to display and 1 to hide - - $Returns TRUE/FALSE - - $Arguments: None - -*******************************************************************************/ -USHORT item_loudspeaker_status( struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi ) -{ - int device; - TRACE_FUNCTION("item_loudspeaker_status"); - device = mfw_get_current_audioDevice( ); - if ( device == MFW_AUD_CARKIT || carkitInserted == TRUE|| device == MFW_AUD_LOUDSPEAKER) - return TRUE; - return FALSE; -} -/******************************************************************************* - - $Function: item_headset_status - - $Description: The menu item "Headset" is displayed when the function returns ''0", the required - condition is the current device is not headset or and the headset is not inserted - - $Returns TRUE/FALSE - - $Arguments: None - -*******************************************************************************/ -USHORT item_headset_status( struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi ) -{ - int device; - TRACE_FUNCTION("item_headset_status"); - device = mfw_get_current_audioDevice( ); - if ( device == MFW_AUD_HEADSET || headsetInserted == FALSE) - return TRUE; - return FALSE; -} -/******************************************************************************* - - $Function: item_carkit_status - - $Description: The menu item "carkit" is displayed when the function returns ''0", the required - condition is the current device is not handheld or not carkit or the headset is not - inserted - $Returns TRUE/FALSE - - $Arguments: None - -*******************************************************************************/ -USHORT item_carkit_status( struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi ) -{ - int device; - TRACE_FUNCTION("item_carkit_status"); - device = mfw_get_current_audioDevice( ); - if ( device == MFW_AUD_CARKIT || carkitInserted == FALSE) - return TRUE; - return FALSE; -} -/******************************************************************************* - - $Function: item_handheld_status - - $Description: The menu item "Handheld" is displayed when the function returns ''0" - - $Returns TRUE/FALSE - - $Arguments: None - -*******************************************************************************/ -USHORT item_handheld_status( struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi ) -{ - int device; - TRACE_FUNCTION("item_handheld_status"); - device = mfw_get_current_audioDevice( ); - if ( device == MFW_AUD_CARKIT || headsetInserted == TRUE || device == MFW_AUD_HANDHELD) - return TRUE; - return FALSE; -} -/******************************************************************************* - - $Function: M_exeHandheld - - $Description: Set the audio device to handheld - - $Returns none - - $Arguments: m and i are not used - -*******************************************************************************/ -int M_exeHandheld (MfwMnu* m, MfwMnuItem* i) -{ - T_MFW_HND win = mfwParent(mfw_header()); - - - TRACE_FUNCTION("M_exeHandheld"); - mfw_audio_set_device(MFW_AUD_HANDHELD); - call_menu_destroy(win); - call_data.win_menu = 0; - return 1; /*a0393213 warnings removal-added return statement*/ -} -/******************************************************************************* - - $Function: M_exeHeadset - - $Description: Set the audio device to Headset - - $Returns none - - $Arguments: m and i are not used - -*******************************************************************************/ -int M_exeHeadset (MfwMnu* m, MfwMnuItem* i) -{ - T_MFW_HND win = mfwParent(mfw_header()); - - - TRACE_FUNCTION("M_exeHeadset"); - mfw_audio_set_device(MFW_AUD_HEADSET); - call_menu_destroy(win); - call_data.win_menu = 0; - return 1; /*a0393213 warnings removal-added return statement*/ -} -/******************************************************************************* - - $Function: M_exeLoudspeaker - - $Description: Set the audio device to Loudspeaker - - $Returns none - - $Arguments: m and i are not used - -*******************************************************************************/ -int M_exeLoudspeaker (MfwMnu* m, MfwMnuItem* i) -{ - T_MFW_HND win = mfwParent(mfw_header()); - - - TRACE_FUNCTION("M_exeLoudspeaker"); - mfw_audio_set_device(MFW_AUD_LOUDSPEAKER); - call_menu_destroy(win); - call_data.win_menu = 0; - return 1; /*a0393213 warnings removal-added return statement*/ -} -/******************************************************************************* - - $Function: M_exeCarkit - - $Description: Set the audio device to Carkit - - $Returns none - - $Arguments: m and i are not used - -*******************************************************************************/ -int M_exeCarkit (MfwMnu* m, MfwMnuItem* i) -{ - T_MFW_HND win = mfwParent(mfw_header()); - - - TRACE_FUNCTION("M_exeCarkit"); - mfw_audio_set_device(MFW_AUD_CARKIT); - call_menu_destroy(win); - call_data.win_menu = 0; - return 1; /*a0393213 warnings removal-added return statement*/ -} -/******************************************************************************* - - $Function: mmi_hook_handle - - $Description: Performs the action of the right softkey in connected call screen - - $Returns none - - $Arguments: - -*******************************************************************************/ -void mmi_hook_handle() -{ - - MfwKbd kbdvar; - - TRACE_FUNCTION("mmi_hook_handle"); - kbdvar.code = KCD_RIGHT; - call_kbd_cb(0,&kbdvar); -} -#endif - -/******************************************************************************* - - $Function: get_call_data_tty - - $Description: Gives the tty status - - $Returns tty status - - $Arguments: None - -*******************************************************************************/ -#ifdef FF_TTY_HCO_VCO -UBYTE get_call_data_tty(void) -{ - return call_data_tty; -} -#endif - -/*August 01, 2007 DR: OMAPS00137399 x0080701 (Bharat) -- Start */ - -/******************************************************************************* - - $Function: bmi_incomingcall_set_ringer_status - - $Description: Sets the Ringer Status during Incoming Call - - $Returns None - - $Arguments: Ringer Status Value (Input) - -*******************************************************************************/ -void bmi_incomingcall_set_ringer_status(E_IN_CALL_RINGER_STATUS eStatus) -{ - if ( ( eStatus < BMI_INCOMING_CALL_NONE ) || - ( eStatus > BMI_INCOMING_CALL_RINGERSTOPPED ) ) - { - return; - } - - iIncomingCallRingerStop = eStatus; -} - -/******************************************************************************* - - $Function: bmi_incomingcall_get_ringer_status - - $Description: Gives the Ringer Status during Incoming Call - - $Returns None - - $Arguments: Ringer Status Value (Output) - -*******************************************************************************/ -void bmi_incomingcall_get_ringer_status(E_IN_CALL_RINGER_STATUS *peStatus) -{ - if (!peStatus) - { - return; - } - - *peStatus = iIncomingCallRingerStop; -} - -/*August 01, 2007 DR: OMAPS00137399 x0080701 (Bharat) -- End */ -