FreeCalypso > hg > fc-tourmaline
view src/ui/bmi/mmiServices.c @ 261:841a848ba762
SPI SWE: clear any pending boot-time interrupts in spi_init()
Charger plug/unplug hw logic in the Iota ABB has no built-in debouncing,
thus electrical contact bounce on the charging power connection interface
produces a lot of charger plug/unplug interrupts. When we boot in
charging mode (charging power present at boot time and is presumably
the cause of Switch-ON), some bounce may occur between the initial
Iota Switch-ON action and Calypso firmware booting. By clearing any
accumulated ITSTATREG interrupts on boot, we prevent these pre-boot
interrupts from generating charger plug/unplug events to FCHG, which
would upset smooth from-boot charging.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 14 May 2021 02:49:05 +0000 |
parents | 897bdea4cb0b |
children |
line wrap: on
line source
/******************************************************************************* CONDAT (UK) ******************************************************************************** This software product is the property of Condat (UK) Ltd and may not be disclosed to any third party without the express permission of the owner. ******************************************************************************** $Project name: Basic MMI $Project code: BMI (6349) $Module: Supplementary services $File: MmiServices.c $Revision: 1.0 $Author: Condat(UK) $Date: 25/10/00 ******************************************************************************** Description This module provides the supplementary services functionality ******************************************************************************** $History: MmiServices.c May 03, 2007 DR: OMAPS00129383 x0pleela Description:[ACI] MTC related call forwarded SS notification not differentiable on BAT/ATI level Solution: Replaced BASIC_SERVICE_CODE with TELETELE_BEARER_SERVICE_CODE to activate and de-activate both Tele and Bearere services Feb 27, 2007 ER: OMAPS00113891 x0pleela Description:[ACI] MTC related call forwarded SS notification not differentiable on BAT/ATI level Solution: Did the following changes: - Externed call_data variable - In function showssNotify(), >> handling the case MFW_SS_MT_FORWARDED: where incoming call dialog will be displayed with proper string for TTY/normal forwarded incoming call. >>New case MFW_SS_MT_CALL_FORWARDED is added to display a dialog "Incoming call forwarde" to the subscriber who has forwarded his all incoming calls Nov 27, 2006 OMAPS00098359 a0393213(R.Prabakar) Description: CPHS 4.2 : Call Divert doesn't work properly for Line 2 Aug 28, 2006 DR: OMAPS00083503 x0pleela Description: Result of ss_check_ss_string may be ignored Solution: Dynamically changing the dcs value in editor settings in functions showUSSDInfo() and showUSSDCNF() Aug 28, 2006 DR: OMAPS00083503 x0pleela Description: Result of ss_check_ss_string may be ignored Solution: Defined new enumeration T_SS_APLHA for DCS services(): Checking for dcs and if UCS2 character then display a dialog saying font not supported. Else proceed with the transaction showUSSDError():This function displays a dialog saying USSD message received, Font not supported for UCS2 characters Aug 23, 2006 DR: OMAPS00090419 x0pleela Descroption:FT Nice/France, Orange (wk32/06) - Call Barring - misleading message: Solution:Commented the code (function getCBService()) which appends the ss string with *11 or *89 as it is not a valid SS string for checking status, activation and deactivation of call barring feature in functions servicesCallBarringCheck, servicesCallBarringDeactivate, servicesCallBarringActivate May 30, 2006 REF:OMAPS00079650 a0393213 (R.Prabakar) Description : CPHS Call Forwarding feature implementation Solution : As part of implementation, in this file, call to cphs_set_divert_status is called whenever necessary. The current code is put under the else part of #ifdef FF_CPHS. Some clean-up of existing code is also done. May 30, 2006 DR: OMAPS00070657 x0pleela Description: CPHS feature on Locosto-Lite Solution: For ALS feature, a) Defined new enumeration "SERVICE_CB_SERVICE" for SS similar to Line 1 and Line 2 b) Defined new function "getCBService()" to update psstring based on the current line activated while processing SS Apr 10, 2006 REF: OMAPS00052691 x0039928 Description: FT USA [Cingular(WK42)] - T 8.6 Call Waiting Accept - ATD *43# returns "Unknown status" Solution: Proper Text is displyed when network returns status STAT_NONE( 0 ) for call waiting activation. Dec 07, 2005 REF: OMAPS00050087 x0039928 Description: Deactivated is displayed while activate Hide Id option is selected Solution: String "Not Activated" is displayed if the Hide Id activation fails. July 09, 2005 REF : MMI-22565 - a0876501 Description: IMEI CD byte calculation added Solution: Increased the IMEI_LEN from 15 to 17 for displaying the Cd byte. Jun 16, 2005 REF: CRR 31543 x0021334 Issue: SATK: cannot get TR for send ussd command Solution: When the user presses "Hang up" key when the SAT USSD session is in progress, a call is made to function 'sAT_end_ussd()' to end the USSD session. May 12, 2005 REF: CRR 30892 x0021334 Bug: MMI doesn't handle 2nd Interogation of "CW for basic services" using USSD *#43#. Fix: Set ss_data.info_win to NULL to pass the check in services_ss_cb() for notification May 02, 2005 REF : LOCOSTO-ENH-30818 - xpradipg Description: IMEI retreival by posting a call to ACI sAT_xx API Solution: The direct call to cl_get_imeisv() is replaced with the call to the mmi_imei_store() which inturn calls sAT_Dn() and retrieves the IMEI info and stores it onto the global variable "imei" Feb 17, 2005 REF : CRR 17657 x0012850 Divya.P.V Bug : Unable to compose a one or two digit number Fix : This bug is reproducible when a very long message is sent by the service provider when an invalid one or two digit number is dialled. The read only editor with the service provider message that comes up when a one or two digit is dialled was not handled properly. So altered the editor handling to cater for the long message. Oct 20, 2004 REF: CRR 25772 Deepa M.D Bug: Not displaying proper RSK name in call divert edit screens Fix: The RSK name will be changed based on whether the editor content is empty or not. Jul 23, 2004 REF: CRR 16107 xvilliva Bug: (Call Barring) - MMI response overlayes partially background images. Fix: Alert being displayed is altered. Jun 21,2004 CRR:13650 xpradipg - SASKEN Jul 16, 2004 REF: CRR 18409 xvilliva Bug: CHW : message "Deactivated" when it should be "Activated". Fix: The alert displayed depends on the status code received. If we receive the status as zero or 0xFF, we now show an alert saying "unknown status" instead of "Deactivated". Jun 21,2004 CRR:13650 xpradipg - SASKEN Jun 23, 2004 REF: CRR MMI-SPR-13599 Rashmi C N(Sasken) Solution: The CF state is maintained in flash. During bootup the CF icon in the idle screen is displayed depending upon its state in the ffs Jun 10, 2004 REF: CRR MMI-SPR-13614 Rashmi C N(Sasken) Solution: The condition for which Call Forward is activated/deactivated or its staus is checked, is displayed in the message along with the activation/deactivation message Jun 21,2004 CRR:13650 xpradipg - SASKEN Description: CBA : no basic service sent when using the menu Fix: Basic service code 10(All teleservices) is sent for activation and deactivation thru menus Jun 04,2004 CRR:13601 xpradipg - SASKEN Description: CFO interrogation display : Timer to long Fix: Timer is enabled for the information dialog. It times out after 5 seconds from the last key press. Jun 03, 2004 CRR:13649 - xpradipg-SASKEN subject: CBA : Management of password solution: password is promted on selecting activation/deactivation option as against the previous case where it was shown up on selecting CallBarring option in the Network Services Issue Number : SPR#12882 on 29/03/04 by VadiRaj 25/10/00 Original Condat(UK) BMI version. $End *******************************************************************************/ /****************************************************************************** Include Files *******************************************************************************/ #define BUGS 0 #define ENTITY_MFW /* includes */ #include <string.h> #include <stdio.h> #include <stdlib.h> #if defined (NEW_FRAME) #include "typedefs.h" #include "vsi.h" #include "pei.h" #include "custom.h" #include "gsm.h" #else #include "STDDEFS.H" #include "custom.h" #include "gsm.h" #include "vsi.h" #endif #include "prim.h" #include "mfw_sys.h" #include "mfw_mfw.h" #include "mfw_win.h" #include "mfw_kbd.h" /* SPR#1428 - SH - New Editor changes */ #ifndef NEW_EDITOR #include "mfw_edt.h" #endif /* NEW_EDITOR */ #include "mfw_lng.h" #include "mfw_icn.h" #include "mfw_tim.h" #include "mfw_mnu.h" #include "mfw_phb.h" #include "mfw_sat.h" #include "mfw_ffs.h" #include "ksd.h" #include "psa.h" #include "mfw_sms.h" #include "mfw_sim.h" #include "mfw_nm.h" #include "mfw_cm.h" #include "mfw_ss.h" #include "dspl.h" #include "MmiMmi.h" #include "MmiDummy.h" #include "MmiDialogs.h" #include "MmiLists.h" #include "MmiMain.h" #include "MmiStart.h" #include "MmiPins.h" #include "MmiIdle.h" #include "MmiMenu.h" #include "MmiSoftKeys.h" #include "Mmiicons.h" #include "mmiCall.h" #include "MmiServices.h" /* SPR#1428 - SH - New Editor changes */ #ifdef NEW_EDITOR #include "ATBCommon.h" #include "ATBDisplay.h" #include "ATBEditor.h" #include "AUIEditor.h" #include "AUITextEntry.h" #else /* NEW_EDITOR */ #include "MmiEditor.h" #endif /* NEW_EDITOR */ #include "MmiCPHS.h" #include "MmiBookUtils.h" #include "MmiBookShared.h " // MZ 26/02/01 #include "cus_aci.h" #include "prim.h" #ifndef PCM_2_FFS #include "pcm.h" #endif #include "mmiColours.h" #include "aci_cmh.h" // Marcus: Issue 1494: 18/12/2002: for MAX_USSD_LEN //gprads CQ-16432 #include "AUIEditor_i.h" extern void msgsGetVoiceAddress(CHAR *Buffer); extern void InfoDialogTimRestart(T_MFW_HND win); /* x0039928 - Lint warning removal static void (*show) (void); */ static void showWait (T_MFW_HND win); static void showOk (T_MFW_HND win); static void showFailed (T_MFW_HND win); static void showError (T_MFW_HND win, T_MFW_SS_ERROR ss_error); static void showCLIStatus (T_MFW_HND win, T_MFW_SS_PARA * ss_cnf ); static void showSSNotify (T_MFW_HND win, T_MFW_SS_NOTIFY * ss_notify); static void showIMEI2 (T_MFW_HND win, T_MFW_SS_PARA * ss_cnf); static void showUSSDREQ (T_MFW_HND win, T_MFW_SS_PARA * ss_cnf); static void showUSSDCNF (T_MFW_HND win, T_MFW_SS_PARA * ss_cnf); static void showUSSDEnter (void); static void showUSSDFull (T_MFW_HND win); static void sendUSSD (T_MFW_SS_PARA *ussd_senddata); static int servicesSendCallDivert(char * divert_number); int servicesUSSDEdit(struct MfwMnuTag* m, struct MfwMnuItemTag* i); int servicesUSSDDelete(struct MfwMnuTag* m, struct MfwMnuItemTag* i); static void servicesShowUSSDMenu(void); static void servicesStoreUSSD(void); static void ServicesGetOtherNumber(T_MFW_HND win); static void servicesStoreVoiceMailNumber( void ); #ifdef NEW_EDITOR static void services_get_voice_number_cb(T_MFW_HND win, USHORT identifier, SHORT reason); #else /* NEW_EDITOR */ static void services_get_voice_number_cb(T_MFW_HND win, USHORT reason); #endif /* NEW_EDITOR */ //x0pleela 25 May, 2006 DR: OMAPS00070657 #ifdef FF_CPHS static void getCBService(char * pSSstring); #endif //x0pleela 24 Aug, 2006 DR: OMAPS00083503 //Function to display a dialog saying font not suported for UCS2 characters #ifdef MMI_LITE static void showUSSDError (T_MFW_HND win); #endif #ifdef FF_CPHS_REL4 extern BOOL interrogate; #endif //x0pleela 27 eb, 2007 ER: OAMPS00113891 //get the call_data structure extern T_call call_data; typedef struct { T_MMI_CONTROL mmi_control; T_MFW_HND parent_win; T_MFW_HND info_win; T_MFW_HND info_tim; T_MFW_HND info_kbd; T_MFW_HND info_kbd_long; USHORT LeftSoftKey; /* used for Ok */ USHORT RightSoftKey; /* Used for Back */ ULONG Time; T_MFW_EVENT KeyEvents; USHORT TextId1; /* Line 1 */ USHORT TextId2; /* Line 2 */ char * TextString4; USHORT Identifier; T_VOID_FUNC Callback; } T_dialog_ext_info; //x0pleela 24 Aug, 2006 DR: OMAPS00083503 typedef enum /* see DCS in Rec. GSM 03.38 */ { SS_ALPHA_7_Bit = 0, SS_ALPHA_8_Bit = 1, SS_ALPHA_16_Bit = 2, SS_ALPHA_Reserved = 3 } T_SS_ALPHA; T_MFW_HND dialog_ext_info_dialog (T_MFW_HND parent_win, T_dialog_ext_info * display_info); static MfwHnd lastFocus; /* store old focus */ static MfwHnd win; /* our window */ /*x0039928- Lint warning removal */ /* static MfwHnd kbd; // our keyboard handler */ static MfwHnd times; /* timeout */ /* x0039928 - Lint warning removal static MmiState nextState; // next state when finished */ static int servicesState; /* current state of module */ static T_MFW_SS_PARA *ss_cnf; /* union container for all SS confirmations */ /* decode service type - tele/bearer */ static unsigned int serviceGetServiceType( UBYTE ss_telecom_type, UBYTE ss_telecom_service); static unsigned int serviceGetCategory( T_MFW_SS_CATEGORY cat ); static unsigned int serviceGetType( T_MFW_SS_CODES type ); static unsigned int ServiceGetStatus( UBYTE pStatus); static unsigned int serviceGetError( T_MFW_SS_ERROR ss_error); #define SS_STAT_NONE 0 //xvilliva 18409, not registered, not active, //not provisioned,not quiescent //x0pleela 03 May, 2007 DR: OMAPS00129383 //defined new service code for both Teleservices and Bearer services #define TELE_BEARER_SERVICE_CODE "09" //June 17, 2004 - CRR:13650 - CBA : no basic service sent when using the menu //basic service code for "all teleservices" #define BASIC_SERVICE_CODE "10" int ss_Code; // Jun 10, 2004 REF: CRR MMI-SPR-13614 Rashmi C N(Sasken) // ss_Code-- This holds the current CF code for which the activation/deactivation or the staus is being checked // This would be used while displaying the status or activation/deactivation message typedef enum { CFBusy = 0, CFNoReach, CFNoReply, CFAllConditional, CFUnconditional, CFAllCalls } SERVICE_CF_TYPE; typedef enum { CBAllOutgoing = 0, CBInternational, CBInternationalHome, CBAllIncoming, CBIncomingRoaming } SERVICE_CB_TYPE; typedef enum { CFVoice = 0, CFAuxVoice, /*MC, ALS line 2*/ CFFax, CFData, CFAll } SERVICE_CF_SERVICE; //x0pleela 25 May, 2006 DR: OMAPS00070657 #ifdef FF_CPHS typedef enum { CBVoice = 0, CBAuxVoice /*MC, ALS line 2*/ }SERVICE_CB_SERVICE; #endif typedef enum { CFActivate = 0, CFDeactivate, CFCheck } SERVICE_CF_ACTION; typedef enum { CBActivate = 0, CBDeactivate, CBCheck, CBCheckPassword, CBNewPassword, CBConfirmNewPassword, //Jun 02, 2004 CRR:13649 - xpradipg-SASKEN //added for holding the state for callbarring service //CQ-13649:start CBCancelAll, CBActionNone, //CQ-13649:end //CQ-16432 start CBEnterSatPassword //CQ-16432 end } SERVICE_CB_ACTION; /* NOTE that these are needed in new architecture */ static SERVICE_CF_TYPE CFType; /* Type of Call Forwarding */ static SERVICE_CF_SERVICE CFService; /* basic service for Call Forwarding */ //x0pleela 25 May, 2006 DR: OMAPS00070657 /* x0039928 - Lint warning removal #ifdef FF_CPHS static SERVICE_CB_SERVICE CBService; // basic service for Call Barring #endif */ static SERVICE_CF_ACTION CFAction; /* action for Call Forwarding */ static SERVICE_CB_TYPE CBType; /* Type of Call Barring */ static SERVICE_CB_ACTION CBAction; /* action for Call Barring */ //Jun 02, 2004 CRR:13649 - xpradipg-SASKEN //new enum added to indicate the action to be taken in the callback function for password static SERVICE_CB_ACTION CBFlag; /*to indicate the action after retriving the password*/ //CRR:13649 /* x0039928 - Lint warning removal static char CFNumber[MAX_LEN]; number to forward calls to */ /* end of bits for USSD */ #define CF_ACTIVE_STATUS 1 #define CF_INACTIVE_STATUS 2 /* Marcus: Issue 1652: 03/02/2003 */ #define CF_PROVISIONED_STATUS 3 #define CF_UNKNOWN_STATUS 4 /* 30th May,2006 OMAPS00079650 a0393213 (R.Prabakar) Description : CPHS Call Forwarding feature implementation Solution : As part of this implementation, some #defines and struct definitions are moved to MmiServices.h*/ #define MFW_CFU_VOICE_ACTIVE 0x01 #define MFW_CFU_FAX_ACTIVE 0x02 #define MFW_CFU_DATA_ACTIVE 0x04 #define MFW_CFU_SMS_ACTIVE 0x08 #define MFW_CFU_ALL_SERVICES_ACTIVE (MFW_CFU_VOICE_ACTIVE | MFW_CFU_FAX_ACTIVE | MFW_CFU_DATA_ACTIVE | MFW_CFU_SMS_ACTIVE) #define MFW_CFU_ALL_BASIC_SERVICES_ACTIVE (MFW_CFU_VOICE_ACTIVE | MFW_CFU_FAX_ACTIVE | MFW_CFU_DATA_ACTIVE) T_ss ss_data = {0}; char satPassword[10]={0};//CQ-16432 static void srv_empty_list_result (UBYTE ss_category, USHORT event, UBYTE ss_status, UBYTE ss_code); /* Marcus: Issue 1652: 03/02/2002 */ static void showCFStatus (T_MFW_HND win , T_ss * data ); static UBYTE srv_copy_feature_list_cf (T_ss_feature_cf * out_list, T_MFW_SS_CF_CNF * in_list); static void srv_get_forwarded_to_number ( char * textString, char * forwarded_to_number, UBYTE max_chars); static UBYTE srv_get_service_type ( USHORT * textId, UBYTE ss_telecom_type, UBYTE ss_telecom_service); static void srv_get_status (USHORT *textId, UBYTE pStatus); static UBYTE srv_check_CF_telephony_status (T_MFW_SS_CF_CNF * in_list); static void showCWStatus (T_MFW_HND win, T_ss * data ); static UBYTE srv_copy_feature_list_cw (T_ss_feature_cw * out_list, T_MFW_SS_CW_CNF * in_list); static void showCBStatus (T_MFW_HND win, T_ss * data ); static UBYTE srv_copy_feature_list_cb (T_ss_feature_cb * out_list, T_MFW_SS_CB_CNF * in_list); static int services_win_cb(T_MFW_EVENT e, T_MFW_SS_PARA * para); static int services_ss_cb(T_MFW_EVENT e, T_MFW_HND para); static int services_info_cb(T_MFW_HND win, USHORT identifier, UBYTE reason); static void srv_display_status (UBYTE ss_status); typedef struct { int text; #ifdef NEW_EDITOR /* SPR#1428 - SH - New Editor changes */ T_ED_ATTR *editor_attr_input; #else /* NEW_EDITOR */ MfwEdtAttr* edt_attr_input; #endif /* NEW_EDITOR */ int left_soft_key; int right_soft_key; short abc; /* numeric or alpha? */ #ifdef NEW_EDITOR /* SPR#1428 - SH - New Editor changes */ T_AUI_EDIT_CB callback; #else /* NEW_EDITOR */ void (* callback)(T_MFW_HND win,USHORT reason); #endif /* NEW_EDITOR */ } T_input_properties; typedef struct { T_MMI_CONTROL mmi_control; T_MFW_HND parent_win; T_MFW_HND win; T_MFW_HND kbd; T_MFW_HND kbd_long; #ifdef NEW_EDITOR /* SPR#1428 - SH - New Editor changes */ T_MFW_HND edit_win; #else /* NEW_EDITOR */ T_MFW_HND edt_input; #endif /* NEW_EDITOR */ T_input_properties properties; } T_services_input; /* SPR#1428 - SH - New Editor changes - no longer required*/ #ifndef NEW_EDITOR void services_number_input_cb(T_MFW_HND win, UBYTE identifier, USHORT reason); #endif static T_MFW_HND services_input_create (MfwHnd parent); static void services_input_destroy (MfwHnd window); static MfwHnd services_input_start(MfwHnd parent,T_input_properties *properties); void services_input (T_MFW_HND win, USHORT event, SHORT value, void * parameter); static int services_input_win_cb(MfwEvt e, MfwWin *w); /* SPR#1428 - SH - New Editor changes - no longer required*/ #ifndef NEW_EDITOR static int services_input_kbd_cb(MfwEvt e, MfwKbd *k); static int services_input_kbd_long_cb(MfwEvt e, MfwKbd *k); #endif /* editor */ //GW Moved editor definitions to MmiResources.h #define SAT_EDITOR_COLOR 0 #define SAT_EDITOR_FONT 0 #define SAT_EDITOR_CONTROLS 0 #define SAT_EDITOR_BUFFER_SIZE 32 /* */ // May 02, 2005 REF : LOCOSTO-ENH-30818 - xpradipg #ifdef FF_MMI_ATC_MIGRATION #define IMEI_LEN 17 /*a0393213 warnings removal - changed 15 to 17*/ #endif #ifdef FF_CPHS_REL4 extern UBYTE msp_reg_profid; extern BOOL msp_register; #endif /******************************************************************************* $Function: servicesInit $Description: $Returns: $Arguments: *******************************************************************************/ T_MFW_HND servicesInit (T_MFW_HND parent) { TRACE_FUNCTION("servicesInit function"); /* * Initialise MFW */ ss_mfw_init(); /* * Create any other handler */ //16432 //Changed ss_create(0,0xFFFF,....) ss_data.ss_handle = ss_create (0, 0xFFFF, (T_MFW_CB)services_ss_cb); ss_data.win = 0; return (services_create (0)); } /******************************************************************************* $Function: servicesExit $Description: exit services handling $Returns: $Arguments: *******************************************************************************/ void servicesExit (void) { TRACE_FUNCTION("servicesExit"); ss_delete(ss_data.win); ss_exit(); } /******************************************************************************* $Function: services_create $Description: Creation of an instance for the Services dialog. $Returns: $Arguments: *******************************************************************************/ T_MFW_HND services_create (T_MFW_HND parent_window) { T_ss * data = &ss_data; T_MFW_WIN * win; TRACE_FUNCTION("services_create"); data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)services_win_cb); if (data->win EQ 0) return 0; /* * Create window handler */ data->mmi_control.dialog = (T_DIALOG_FUNC)services; data->mmi_control.data = data; win = ((T_MFW_HDR *)data->win)->data; win->user = (void *) data; /* * Create any other handler */ data->info_win = 0; data->info_wait = 0; data->cb_menu_win = 0; /* SPR#1428 - SH - New Editor changes - this editor never used */ #if 0 data->ussd_num_win = 0; data->ussd_name_win = 0; #endif data->input_number_win = 0; memset(data->edt_buf_name,'\0',sizeof(data->edt_buf_name)); memset(data->edt_buf_number,'\0',sizeof(data->edt_buf_number)); memset(data->edt_buf_cb_password,'\0',sizeof(data->edt_buf_cb_password)); /* x0039928 - Lint warning fix */ /* SPR#1428 - SH - New Editor changes - no longer required*/ #ifndef NEW_EDITOR bookSetEditAttributes(SERVICE_CREATE_EDITOR,COLOUR_EDITOR_XX,0,edtCurBar1,0,(char*)data->edt_buf_name,PHB_MAX_LEN,&data->edt_attr_name); bookSetEditAttributes(SERVICE_CREATE_EDITOR,COLOUR_EDITOR_XX,0,edtCurBar1,0,(char*)data->edt_buf_number,PHB_MAX_LEN,&data->edt_attr_number); #endif /* ifndef NEW_EDITOR */ /* NDH : 28/08/2003 : Intialise cfu_services to "ALL Inactive" */ data->cfu_services = 0; winShow (data->win); /* * return window handle */ return data->win; } /******************************************************************************* $Function: services_destroy $Description: $Returns: $Arguments: *******************************************************************************/ void services_destroy (T_MFW_HND own_window) { // T_MFW_WIN * win; // RAVI T_ss * data = &ss_data; TRACE_FUNCTION("=== services_destroy"); if (data) { /* * Delete WIN Handler */ if (data->info_win) { SEND_EVENT(data->info_win, DIALOG_DESTROY, 0, 0); data->info_win=0; } if (ss_data.info_wait) { TRACE_FUNCTION("destroying the wait screen b"); SEND_EVENT(ss_data.info_wait, DIALOG_DESTROY, 0, 0); ss_data.info_wait = 0; } if (data->input_number_win) { TRACE_FUNCTION("killing input number win"); services_input_destroy( data->input_number_win ); data->input_number_win=0; } } } /******************************************************************************* $Function: services_win_cb $Description: $Returns: $Arguments: *******************************************************************************/ static int services_win_cb(T_MFW_EVENT e, T_MFW_SS_PARA * para) { /* * Top Window has no output */ TRACE_FUNCTION ("services_win_cb()"); switch (e) { case MfwWinVisible: break; default: return 0; } return 1; } /******************************************************************************* $Function: destroyInfoWindow $Description: $Returns: $Arguments: *******************************************************************************/ static void destroyInfoWindow( void) { TRACE_FUNCTION("destroyInfoWindow"); /* kill info win if there */ if (ss_data.info_wait) { TRACE_FUNCTION("destroying the wait screen a"); SEND_EVENT(ss_data.info_wait, DIALOG_DESTROY, 0, 0); ss_data.info_wait = 0; } if (ss_data.input_number_win) { TRACE_FUNCTION("destroying input window!!!"); SEND_EVENT(ss_data.input_number_win, SERVICES_INPUT_DESTROY, 0, 0); ss_data.input_number_win = 0; } } /* +--------------------------------------------------------------------+ | PROJECT: MMI-Framework (8417) MODULE: MFW_DMY | | STATE : code ROUTINE: ss_getAlphabetCb | +--------------------------------------------------------------------+ PURPOSE : This function is used to extract the used alphabet out of the data coding scheme. */ UBYTE ss_getAlphabetCb ( UBYTE dcs ) { UBYTE alphabet = 0; /* means 7 bit default alphabet */ switch (dcs & 0xF0) { case( 0x10 ): if (dcs EQ 0x11) alphabet = 2; break; case( 0x70 ): case( 0x60 ): case( 0x50 ): case( 0x40 ): alphabet = (dcs & 0x0C) >> 2; /* According to 03.38, "Any reserved codings shall be assumed * to be the GSM 7 bit default alphabet by a receiving entity". */ if (alphabet EQ 3) alphabet = 0; break; case( 0xF0 ): alphabet = (dcs & 0x04) >> 2; break; } return alphabet; } /******************************************************************************* $Function: services_ss_cb $Description: $Returns: $Arguments: *******************************************************************************/ static int services_ss_cb(T_MFW_EVENT e, T_MFW_HND para) { TRACE_FUNCTION ("services_ss_cb()"); { // T_MFW_WIN * win; // RAVI // win = (T_MFW_WIN *) ((T_MFW_HDR *)ss_data.win)->data; // RAVI } switch (e) { case E_SS_RES: if (!ss_data.info_wait) { TRACE_FUNCTION ("show the wait screen"); #ifdef FF_CPHS_REL4 if(interrogate != 1) { #endif showWait( ss_data.win ); #ifdef FF_CPHS_REL4 } #endif } /* * ignore the event */ break; case E_SS_NOTIFY: if(!ss_data.info_win) SEND_EVENT(ss_data.win,E_SS_NOTIFY,0, para); destroyInfoWindow(); break; case E_SS_CF_CNF: if(!ss_data.info_win) SEND_EVENT(ss_data.win,E_SS_CF_CNF,0, para); destroyInfoWindow(); break; case E_SS_CF_ICN_UPD: if(!ss_data.info_win) SEND_EVENT(ss_data.win,E_SS_CF_ICN_UPD,0, para); destroyInfoWindow(); break; case E_SS_CW_CNF: if(!ss_data.info_win) SEND_EVENT(ss_data.win,E_SS_CW_CNF,0, para); destroyInfoWindow(); break; case E_SS_CLI_CNF: if(!ss_data.info_win) SEND_EVENT(ss_data.win,E_SS_CLI_CNF,0, para); destroyInfoWindow(); break; case E_SS_CB_CNF: if(!ss_data.info_win) SEND_EVENT(ss_data.win,E_SS_CB_CNF,0, para); destroyInfoWindow(); break; /* we must display the ussd info and then edit and send a user ussd */ case E_SS_USSD_REQ: if(!ss_data.info_win) SEND_EVENT(ss_data.win,E_SS_USSD_REQ,0, para); destroyInfoWindow(); break; /* just display the ussd info */ case E_SS_USSD_CNF: if(!ss_data.info_win) SEND_EVENT(ss_data.win,E_SS_USSD_CNF,0, para); destroyInfoWindow(); break; case E_SS_IMEI: if(!ss_data.info_win) SEND_EVENT(ss_data.win,E_SS_IMEI,0, para); destroyInfoWindow(); break; case E_SS_GET_PW: if(!ss_data.info_win) SEND_EVENT(ss_data.win,E_SS_GET_PW,0, para); destroyInfoWindow(); break; //CQ-16432 - start case E_SS_SAT_CPWD: TRACE_EVENT("Received event E_SS_SAT_CPWD in BMI"); if(!ss_data.info_win) SEND_EVENT(ss_data.win,E_SS_SAT_CPWD,0, para); destroyInfoWindow(); break; //CQ-16432 - end default: break; } return 1; /* consumed */ } /******************************************************************************* $Function: services $Description: $Returns: $Arguments: *******************************************************************************/ void services (T_MFW_HND win, USHORT event, SHORT value, void * parameter) { T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; T_ss * data = (T_ss *)win_data->user; T_MFW_SS_PARA * ss_cnf = (T_MFW_SS_PARA *)parameter; // unsigned int i = 0; // RAVI // char line[MAX_LINE]; // RAVI TRACE_FUNCTION ("services()"); switch (event) { case ServicesError: TRACE_FUNCTION ("ServicesError"); showError(win, ss_cnf->cb_cnf.ss_error); break; case ServicesFailed: TRACE_FUNCTION ("ServicesFailed"); showFailed(win); break; case ServicesOtherNumber: TRACE_FUNCTION("ServicesOtherNumber"); ServicesGetOtherNumber(win); break; case ServicesOk: TRACE_FUNCTION ("ServicesOk"); showOk(win); break; case ServicesUSSDEnter: { #ifdef NEW_EDITOR T_AUI_EDITOR_DATA editor_data; /* SPR#1428 - SH - New Editor data */ #else T_EDITOR_DATA editor_data; #endif /* NEW_EDITOR */ TRACE_FUNCTION("ServicesUSSDEnter"); memset(ss_data.edt_buf_number,'\0',PHB_MAX_LEN); /* SPR#1428 - SH - New Editor changes */ #ifdef NEW_EDITOR /* NEW_EDITOR */ AUI_edit_SetDefault(&editor_data); AUI_edit_SetDisplay(&editor_data, ZONE_FULL_SK_TITLE, COLOUR_EDITOR_XX, EDITOR_FONT); AUI_edit_SetMode(&editor_data, 0, ED_CURSOR_UNDERLINE); AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)ss_data.edt_buf_number, MAX_USSD_LEN); AUI_edit_SetTextStr(&editor_data, TxtSoftOK, TxtSoftBack, TxtEntAnw, NULL); AUI_edit_SetAltTextStr(&editor_data, 1, TxtNull, FALSE, TxtNull); AUI_edit_SetEvents(&editor_data, ServicesUSSDEnter, TRUE, FOREVER, (T_AUI_EDIT_CB)services_info_cb); AUI_edit_Start(ss_data.win, &editor_data); /* start the editor */ #else /* NEW_EDITOR */ editor_data.editor_attr.win.px = 6; editor_data.editor_attr.win.py = 12; editor_data.editor_attr.win.sx = 80; editor_data.editor_attr.win.sy = 20; editor_data.editor_attr.edtCol = COLOUR_EDITOR_XX, editor_data.editor_attr.font = 0; editor_data.editor_attr.mode = edtCurBar1; editor_data.editor_attr.controls = 0; editor_data.hide = FALSE; editor_data.editor_attr.text = (char*)ss_data.edt_buf_number; editor_data.editor_attr.size = sizeof(ss_data.edt_buf_number); editor_data.LeftSoftKey = TxtSoftOK; editor_data.RightSoftKey = TxtSoftBack; editor_data.AlternateLeftSoftKey = TxtNull; editor_data.TextString = '\0'; editor_data.TextId = TxtEntAnw; editor_data.Identifier = ServicesUSSDEnter; editor_data.mode = DIGITS_MODE; editor_data.timeout = FOREVER; editor_data.min_enter = 1; editor_data.Callback = (T_EDIT_CB)services_info_cb; editor_data.destroyEditor = TRUE; /* create the dialog handler */ editor_start(ss_data.win, &editor_data); /* start the editor */ #endif /* NEW_EDITOR */ } break; case SERVICES_DO_CALL_VOICE_DIVERT: servicesStoreVoiceMailNumber(); servicesSendCallDivert(0); break; case ServicesDoCallDivert: servicesSendCallDivert(0); break; case E_SS_RES: /* * event is ignored */ break; case E_SS_NOTIFY: TRACE_EVENT(" E_SS_NOTIFY"); showSSNotify( win, (T_MFW_SS_NOTIFY*) parameter ); /* all short ss-related notfications */ break; case E_SS_CF_ICN_UPD: TRACE_FUNCTION("E_SS_CF_ICN_UPD"); if ((ss_cnf->cf_cnf.ss_code == SS_CF_CFU) || (ss_cnf->cf_cnf.ss_code == SS_CF_ALL)) { /* * Update icons for idle screen if CFU and telephony */ switch (srv_check_CF_telephony_status ( &ss_cnf->cf_cnf )) { case CF_ACTIVE_STATUS: iconsSetState(iconIdCallFor); // Jun 23, 2004 REF: CRR MMI-SPR-13599 Rashmi C N(Sasken) // Setting the Current state of CF in Flash FFS_flashData.CFState=TRUE; break; case CF_INACTIVE_STATUS: iconsDeleteState(iconIdCallFor); // Jun 23, 2004 REF: CRR MMI-SPR-13599 Rashmi C N(Sasken) // Setting the Current state of CF in Flash FFS_flashData.CFState=FALSE; break; } // Jun 23, 2004 REF: CRR MMI-SPR-13599 Rashmi C N(Sasken) // Writng the Current state of CF into ffs flash_write(); idleEvent(IdleUpdate); } break; /* * modified handling for results taking lists in account */ case E_SS_CF_CNF: /* * check whether we received data what was requested / consistent */ switch(ss_cnf->cf_cnf.ss_code) { case SS_CODES_UNKNOWN: /* Marcus: Issue 1652: 03/02/2003: Start */ TRACE_EVENT("SS_CODES_UNKNOWN"); { T_DISPLAY_DATA display_info; dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtNull, TxtExecuted, COLOUR_STATUS); dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FOREVER, KEY_CLEAR | KEY_LEFT ); display_info.Identifier = E_SS_CF_CNF; // can be used also for CF and CW /* * Call Info Screen */ ss_data.info_win = info_dialog (ss_data.win, &display_info); } /* Marcus: Issue 1652: 03/02/2003: End */ break; case SS_CF_CFU: case SS_CF_ALL: /* * Update icons for idle screen if CFU and telephony */ /* 30th May,2006 OMAPS00079650 a0393213 (R.Prabakar) Description : CPHS Call Forwarding feature implementation Solution : As part of the implemention, cphs_set_divert_status() is called whenever the divert status is changed*/ TRACE_EVENT("services():E_SS_CF_CNF SS_CF_CFU"); switch (srv_check_CF_telephony_status ( &ss_cnf->cf_cnf )) { case CF_ACTIVE_STATUS: #ifdef FF_CPHS switch (CFService) { case (CFVoice): /*MC SPR 742, handle line 2, auxiliary telephony*/ #ifdef FF_CPHS_REL4 if(isCFISFilePresent() ) { /*call_forwarding_status_rel4.voice updated*/ if(call_forwarding_status_rel4.voice != MFW_CFLAG_SET || memcmp(call_forwarding_status_rel4.voice_dialling_number,ss_data.edt_buf_number,PHB_MAX_LEN)!=0) { call_forwarding_status_rel4.voice=MFW_CFLAG_SET; memcpy(call_forwarding_status_rel4.voice_dialling_number,ss_data.edt_buf_number,PHB_MAX_LEN); cphs_rel4_set_divert_status( call_forwarding_status_rel4.voice, call_forwarding_status_rel4.fax, call_forwarding_status_rel4.data, call_forwarding_status_rel4.voice_dialling_number); } break; } #endif case CFAuxVoice: if (GetAlsLine() == MFW_SERV_LINE2) { TRACE_EVENT("services():call forward activation successful for line2"); /*30th May,2006 OMAPS00079650 a0393213 (R.Prabakar) check to find whether we are doing unnecessary sim write*/ if(GetCphsDivertStatus(MFW_SERV_LINE2)!=MFW_CFLAG_SET) cphs_set_divert_status(MFW_CFLAG_NotPresent, MFW_CFLAG_SET, MFW_CFLAG_NotPresent, MFW_CFLAG_NotPresent); } else { TRACE_EVENT("services():call forward activation successful for line1"); if(GetCphsDivertStatus(MFW_SERV_LINE1)!=MFW_CFLAG_SET) cphs_set_divert_status(MFW_CFLAG_SET, MFW_CFLAG_NotPresent, MFW_CFLAG_NotPresent, MFW_CFLAG_NotPresent); } break; case (CFData): /*a0393213 cphs rel4*/ #ifdef FF_CPHS_REL4 if(!isCFISFilePresent()) { #endif if(GetCphsDivertStatus(MFW_SERV_DATA)!=MFW_CFLAG_SET) cphs_set_divert_status(MFW_CFLAG_NotPresent,MFW_CFLAG_NotPresent,MFW_CFLAG_NotPresent,MFW_CFLAG_SET); #ifdef FF_CPHS_REL4 } else { if(call_forwarding_status_rel4.data!= MFW_CFLAG_SET) { call_forwarding_status_rel4.data=MFW_CFLAG_SET; cphs_rel4_set_divert_status( call_forwarding_status_rel4.voice, call_forwarding_status_rel4.fax, call_forwarding_status_rel4.data, call_forwarding_status_rel4.voice_dialling_number); } } #endif break; case (CFFax): /*a0393213 cphs rel4*/ #ifdef FF_CPHS_REL4 if(!isCFISFilePresent() ) { #endif if(GetCphsDivertStatus(MFW_SERV_FAX)!=MFW_CFLAG_SET) cphs_set_divert_status(MFW_CFLAG_NotPresent,MFW_CFLAG_NotPresent,MFW_CFLAG_SET,MFW_CFLAG_NotPresent); #ifdef FF_CPHS_REL4 } else { if(call_forwarding_status_rel4.fax!= MFW_CFLAG_SET) { call_forwarding_status_rel4.fax=MFW_CFLAG_SET; cphs_rel4_set_divert_status( call_forwarding_status_rel4.voice, call_forwarding_status_rel4.fax, call_forwarding_status_rel4.data, call_forwarding_status_rel4.voice_dialling_number); } } #endif break; case (CFAll): /*a0393213 cphs rel4*/ #ifdef FF_CPHS_REL4 if(!isCFISFilePresent() ) { #endif if (GetAlsLine() == MFW_SERV_LINE2) { TRACE_EVENT("services():call forward activation successful for all"); if(GetCphsDivertStatus(MFW_SERV_LINE2)!=MFW_CFLAG_SET || GetCphsDivertStatus(MFW_SERV_DATA)!=MFW_CFLAG_SET || GetCphsDivertStatus(MFW_SERV_FAX)!=MFW_CFLAG_SET) cphs_set_divert_status(MFW_CFLAG_NotPresent,MFW_CFLAG_SET,MFW_CFLAG_SET,MFW_CFLAG_SET); } else { TRACE_EVENT("services():call forward activation successful for all"); if(GetCphsDivertStatus(MFW_SERV_LINE1)!=MFW_CFLAG_SET || GetCphsDivertStatus(MFW_SERV_DATA)!=MFW_CFLAG_SET || GetCphsDivertStatus(MFW_SERV_FAX)!=MFW_CFLAG_SET) cphs_set_divert_status(MFW_CFLAG_SET,MFW_CFLAG_NotPresent,MFW_CFLAG_SET,MFW_CFLAG_SET); } #ifdef FF_CPHS_REL4 } else { if(call_forwarding_status_rel4.voice!= MFW_CFLAG_SET || call_forwarding_status_rel4.fax!= MFW_CFLAG_SET || call_forwarding_status_rel4.data!= MFW_CFLAG_SET || memcmp(call_forwarding_status_rel4.voice_dialling_number,ss_data.edt_buf_number,PHB_MAX_LEN)!=0 ) { call_forwarding_status_rel4.voice= MFW_CFLAG_SET; call_forwarding_status_rel4.fax= MFW_CFLAG_SET; call_forwarding_status_rel4.data= MFW_CFLAG_SET; memcpy(call_forwarding_status_rel4.voice_dialling_number,ss_data.edt_buf_number,PHB_MAX_LEN); cphs_rel4_set_divert_status( call_forwarding_status_rel4.voice, call_forwarding_status_rel4.fax, call_forwarding_status_rel4.data, call_forwarding_status_rel4.voice_dialling_number); } } #endif break; } #else iconsSetState(iconIdCallFor); // Jun 23, 2004 REF: CRR MMI-SPR-13599 Rashmi C N(Sasken) // Setting the Current state of CF in Flash FFS_flashData.CFState=TRUE; flash_write(); #endif break; case CF_INACTIVE_STATUS: #ifdef FF_CPHS switch (CFService) { case (CFVoice): /*a0393213 cphs rel4*/ #ifdef FF_CPHS_REL4 if(isCFISFilePresent() ) { /*call_forwarding_status_rel4.voice updated*/ if(call_forwarding_status_rel4.voice != MFW_CFLAG_NOTSet) { call_forwarding_status_rel4.voice=MFW_CFLAG_NOTSet; cphs_rel4_set_divert_status( call_forwarding_status_rel4.voice, call_forwarding_status_rel4.fax, call_forwarding_status_rel4.data, call_forwarding_status_rel4.voice_dialling_number); } break; } #endif /*MC SPR 742, handle line 2, auxiliary telephony*/ case CFAuxVoice: if (GetAlsLine() == MFW_SERV_LINE2) { TRACE_EVENT("services():call forward deactivation successful for line2"); /*30th May,2006 OMAPS00079650 a0393213 (R.Prabakar) check to find whether we are doing unnecessary sim write*/ if(GetCphsDivertStatus(MFW_SERV_LINE2)!=MFW_CFLAG_NOTSet) cphs_set_divert_status(MFW_CFLAG_NotPresent, MFW_CFLAG_NOTSet, MFW_CFLAG_NotPresent, MFW_CFLAG_NotPresent); } else { TRACE_EVENT("services():call forward deactivation successful for line1"); if(GetCphsDivertStatus(MFW_SERV_LINE1)!=MFW_CFLAG_NOTSet) cphs_set_divert_status(MFW_CFLAG_NOTSet, MFW_CFLAG_NotPresent, MFW_CFLAG_NotPresent, MFW_CFLAG_NotPresent); } break; case (CFData): /*a0393213 cphs rel4*/ #ifdef FF_CPHS_REL4 if(!isCFISFilePresent() ) { #endif if(GetCphsDivertStatus(MFW_SERV_DATA)!=MFW_CFLAG_NOTSet) cphs_set_divert_status(MFW_CFLAG_NotPresent,MFW_CFLAG_NotPresent,MFW_CFLAG_NotPresent,MFW_CFLAG_NOTSet); #ifdef FF_CPHS_REL4 } else { if(call_forwarding_status_rel4.data!= MFW_CFLAG_NOTSet) { call_forwarding_status_rel4.data=MFW_CFLAG_NOTSet; cphs_rel4_set_divert_status( call_forwarding_status_rel4.voice, call_forwarding_status_rel4.fax, call_forwarding_status_rel4.data, call_forwarding_status_rel4.voice_dialling_number); } } #endif break; case (CFFax): #ifdef FF_CPHS_REL4 if(!isCFISFilePresent() ) { #endif if(GetCphsDivertStatus(MFW_SERV_FAX)!=MFW_CFLAG_NOTSet) cphs_set_divert_status(MFW_CFLAG_NotPresent,MFW_CFLAG_NotPresent,MFW_CFLAG_NOTSet,MFW_CFLAG_NotPresent); #ifdef FF_CPHS_REL4 } else { if(call_forwarding_status_rel4.fax!= MFW_CFLAG_NOTSet) { call_forwarding_status_rel4.fax=MFW_CFLAG_NOTSet; cphs_rel4_set_divert_status( call_forwarding_status_rel4.voice, call_forwarding_status_rel4.fax, call_forwarding_status_rel4.data, call_forwarding_status_rel4.voice_dialling_number); } } #endif break; case (CFAll): /*a0393213 cphs rel4*/ #ifdef FF_CPHS_REL4 if(!isCFISFilePresent() ) { #endif if (GetAlsLine() == MFW_SERV_LINE2) { TRACE_EVENT("services():call forward deactivation successful for all"); if(GetCphsDivertStatus(MFW_SERV_LINE2)!=MFW_CFLAG_NOTSet || GetCphsDivertStatus(MFW_SERV_DATA)!=MFW_CFLAG_NOTSet || GetCphsDivertStatus(MFW_SERV_FAX)!=MFW_CFLAG_NOTSet) cphs_set_divert_status(MFW_CFLAG_NotPresent, MFW_CFLAG_NOTSet, MFW_CFLAG_NOTSet, MFW_CFLAG_NOTSet); } else { TRACE_EVENT("services():call forward deactivation successful for all"); if(GetCphsDivertStatus(MFW_SERV_LINE1)!=MFW_CFLAG_NOTSet || GetCphsDivertStatus(MFW_SERV_DATA)!=MFW_CFLAG_NOTSet || GetCphsDivertStatus(MFW_SERV_FAX)!=MFW_CFLAG_NOTSet) cphs_set_divert_status(MFW_CFLAG_NOTSet, MFW_CFLAG_NotPresent, MFW_CFLAG_NOTSet, MFW_CFLAG_NOTSet); } #ifdef FF_CPHS_REL4 } else { if(call_forwarding_status_rel4.voice!= MFW_CFLAG_NOTSet || call_forwarding_status_rel4.fax!= MFW_CFLAG_NOTSet || call_forwarding_status_rel4.data!= MFW_CFLAG_NOTSet ) { call_forwarding_status_rel4.voice= MFW_CFLAG_NOTSet; call_forwarding_status_rel4.fax= MFW_CFLAG_NOTSet; call_forwarding_status_rel4.data= MFW_CFLAG_NOTSet; cphs_rel4_set_divert_status( call_forwarding_status_rel4.voice, call_forwarding_status_rel4.fax, call_forwarding_status_rel4.data, call_forwarding_status_rel4.voice_dialling_number); } } #endif break; } #else iconsDeleteState(iconIdCallFor); // Jun 23, 2004 REF: CRR MMI-SPR-13599 Rashmi C N(Sasken) // Setting the Current state of CF in Flash FFS_flashData.CFState=FALSE; flash_write(); #endif break; } /* * no break */ case SS_CLIR: case SS_CF_ALL_COND: case SS_CF_CFNRy: case SS_CF_CFNR: case SS_CF_CFB: switch(ss_cnf->cf_cnf.ss_error) { case MFW_SS_NO_ERROR: /* * now store the MFW data under the SS window */ TRACE_EVENT("services():no ss error"); data->mfw_ss_cf = (T_ss_feature_cf *)ALLOC_MEMORY (sizeof (T_ss_feature_cf)); /* * copy all interesting feature entries */ data->max_feature = srv_copy_feature_list_cf (data->mfw_ss_cf, &ss_cnf->cf_cnf); data->current_feature = /*CFService*/0; if (data->max_feature EQ 0) { /* Marcus: Issue 1652: 03/02/2003: Start */ if (ss_cnf->cf_cnf.ss_feature_count) { T_MFW_FEATURE *temp = ss_cnf->cf_cnf.ss_feature_list; srv_empty_list_result (ss_cnf->cf_cnf.ss_category, event, temp->ss_status, ss_cnf->cf_cnf.ss_code); } else { srv_empty_list_result (ss_cnf->cf_cnf.ss_category, event, 0, ss_cnf->cf_cnf.ss_code); } /* Marcus: Issue 1651: 03/02/2003: End */ FREE_MEMORY ((void *)data->mfw_ss_cf, sizeof (T_ss_feature_cf)); data->mfw_ss_cf = NULL; } else { /* * now display status */ // Jun 10, 2004 REF: CRR MMI-SPR-13614 Rashmi C N(Sasken) // ss_Code-- This holds the current CF code for which the activation/deactivation or the staus is being checked // This would be used while displaying the status or activation/deactivation message ss_Code=ss_cnf->cf_cnf.ss_code; showCFStatus(win, data); } break; default: TRACE_EVENT_P1("services():ss error %d", ss_cnf->cf_cnf.ss_error); TRACE_FUNCTION("ERROR in CFU,INTERROGATION"); showError(win, ss_cnf->cf_cnf.ss_error); break; } break; default: break; } /* end switch(ss_cnf->cf_cnf.ss_code) */ break; case E_SS_CW_CNF: if (ss_cnf->cw_cnf.ss_error == MFW_SS_NO_ERROR) { /* * now store the MFW data under the SS window */ data->mfw_ss_cw = (T_ss_feature_cw *)ALLOC_MEMORY (sizeof (T_ss_feature_cw)); /* * copy all interesting feature entries */ data->max_feature = srv_copy_feature_list_cw (data->mfw_ss_cw, &ss_cnf->cw_cnf); data->current_feature = 0; if (data->max_feature EQ 0) { if (ss_cnf->cw_cnf.ss_status NEQ 0xFF AND ss_cnf->cw_cnf.ss_status NEQ 0x00) srv_display_status (ss_cnf->cw_cnf.ss_status); else srv_empty_list_result (ss_cnf->cw_cnf.ss_category, event, ss_cnf->cw_cnf.ss_status, ss_cnf->cf_cnf.ss_code); /* Marcus: Issue 1588: 23/01/2003 */ FREE_MEMORY ((void *)data->mfw_ss_cw, sizeof (T_ss_feature_cw)); data->mfw_ss_cw = NULL; } else { /* * now display status */ if (ss_cnf->cw_cnf.ss_status EQ SS_STAT_UNKNOWN) { //SPR18409 xvilliva, If we receive the status as 0xFF, //we show an alert saying "unknown status". info_screen(win, TxtUnknown, TxtStatus, NULL); } else { // Apr 10, 2006 REF: OMAPS00052691 x0039928 // Fix: Proper text id is assigned for display if network returns // status STAT_NONE for call waiting activation. if (ss_cnf->cw_cnf.ss_status EQ SS_STAT_NONE) { if ((ss_cnf->cw_cnf.ss_category EQ SS_REGISTRATION) OR (ss_cnf->cw_cnf.ss_category EQ SS_ACTIVATION)) data->mfw_ss_cw->status = TxtActivated; } showCWStatus(win, data); } } } else { showError(win, ss_cnf->cw_cnf.ss_error); } break; case E_SS_CLI_CNF: TRACE_FUNCTION(" E_SS_CLI_CNF"); if (ss_cnf->cli_cnf.ss_error == MFW_SS_NO_ERROR) { showCLIStatus(win, ss_cnf); } else { showError(win, ss_cnf->cli_cnf.ss_error); } break; case E_SS_CB_CNF: switch(ss_cnf->cb_cnf.ss_error) { case MFW_SS_NO_ERROR: /* * now store the MFW data under the SS window */ data->mfw_ss_cb = (T_ss_feature_cb *)ALLOC_MEMORY (sizeof (T_ss_feature_cb)); /* * copy all interesting feature entries */ data->max_feature = srv_copy_feature_list_cb (data->mfw_ss_cb, &ss_cnf->cb_cnf); data->current_feature = 0; if (data->max_feature EQ 0) { srv_empty_list_result (ss_cnf->cb_cnf.ss_category, event, 0, ss_cnf->cf_cnf.ss_code); /* Marcus: Issue 1588: 23/01/2003 */ FREE_MEMORY ((void *)data->mfw_ss_cb, sizeof (T_ss_feature_cb)); data->mfw_ss_cb = NULL; } else { /* * now display status */ showCBStatus(win, data); } break; default: showError(win, ss_cnf->cb_cnf.ss_error); break; } break; case E_SS_IMEI: /* present IMEI */ /* T_MFW_IMEI imei_cnf;*/ TRACE_FUNCTION(" E_SS_IMEI"); switch(ss_cnf->imei_info.error) { case MFW_SS_NO_ERROR: TRACE_FUNCTION( "Handling IMEI no error" ); // May 02, 2005 REF : LOCOSTO-ENH-30818 - xpradipg // copy the IMEI onto the global variable and display the information #ifdef FF_MMI_ATC_MIGRATION memset(imei,0x00,IMEI_LEN+1); memcpy(imei, ss_cnf->imei_info.imei_number, IMEI_LEN); showIMEI(win,(char*)imei); #else showIMEI2(win, ss_cnf); #endif break; default: TRACE_FUNCTION("ERROR in IMEI"); showError(win, (T_MFW_SS_ERROR)ss_cnf->imei_info.error); break; } break; /* we must display the ussd info and then edit and send a user ussd */ case E_SS_USSD_REQ: { //x0pleela 24 Aug, 2006 DR: OMAPS00083503 //Checking dcs #ifdef MMI_LITE UBYTE alphabet; alphabet = ss_getAlphabetCb ((UBYTE) ss_cnf->ussd_info.dcs ); //if it is UCS2 character then display a message for the user if( alphabet EQ SS_ALPHA_16_Bit) { showUSSDError(win); } else { #endif switch(ss_cnf->ussd_info.error) { case MFW_SS_NO_ERROR: TRACE_FUNCTION( "Handling USSD_REQ no error" ); showUSSDREQ(win, ss_cnf ); break; default: TRACE_FUNCTION( "Handling USSD_REQ no error" ); showError(win, (T_MFW_SS_ERROR)ss_cnf->ussd_info.error); break; } #ifdef MMI_LITE } #endif } break; /* just display the ussd info */ case E_SS_USSD_CNF: TRACE_FUNCTION(" E_SS_USSD_CNF"); switch(ss_cnf->ussd_info.error) { case MFW_SS_NO_ERROR: TRACE_FUNCTION( "Handling USSD_CNF no error" ); #ifdef FF_CPHS_REL4 if(interrogate) { // mfw_cphs_set_default_profile(); // mfw_cphs_set_reg_profile(); interrogate = 0; TRACE_EVENT_P1("ussd string %s", ss_cnf->ussd_info.ussd); mmi_msp_interrogate_done(); } else if(msp_register) { msp_register = FALSE; TRACE_EVENT_P1("msp profile id registered %d", msp_reg_profid); mfw_cphs_set_reg_profile(msp_reg_profid); info_screen(win, TxtActivated, NULL, NULL); mmi_msp_interrogate_done(); } else { #endif showUSSDCNF(win, ss_cnf ); #ifdef FF_CPHS_REL4 } #endif break; default: TRACE_FUNCTION("ERROR in USSD_CNF"); #ifdef FF_CPHS_REL4 if(interrogate) { mfw_cphs_set_default_profile(1); mfw_cphs_set_reg_profile(1); interrogate = 0; TRACE_EVENT_P1("ussd string %s", ss_cnf->ussd_info.ussd); mmi_msp_interrogate_done(); } if(msp_register) { msp_register = FALSE; TRACE_EVENT("msp profile id registeration failed"); } #endif showError(win, (T_MFW_SS_ERROR)ss_cnf->ussd_info.error); break; } break; case E_SS_GET_PW: if (ss_cnf->pw_cnf.ss_error == MFW_SS_NO_ERROR) { showOk(win); strncpy((char*)ss_data.edt_buf_cb_password, (char*)ss_cnf->pw_cnf.ss_new_pwd,CB_PSW_LEN); } else { showError(win, ss_cnf->pw_cnf.ss_error); } break; //CQ-16432 start case E_SS_SAT_CPWD: TRACE_EVENT("E_SS_SAT_CPWD"); requestSatCBPassword(); break; //CQ-16432 end default: return; } } /******************************************************************************* $Function: srv_check_CF_telephony_status $Description: $Returns: $Arguments: *******************************************************************************/ /* ** NDH : 28/08/2003 : I am modifying the functionality of this routine so that will simply return ** CF_ACTIVE_STATUS if there is an active Call Forwarding Service and CF_INACTIVE_STATUS ** otherwise. This function is currently used in only one place and this change would be in line ** with the required functionality at that point. */ static UBYTE srv_check_CF_telephony_status (T_MFW_SS_CF_CNF * in_list) { UBYTE i; UBYTE retStat = CF_INACTIVE_STATUS; TRACE_EVENT("srv_check_CF_telephony_status"); if (in_list->ss_error == MFW_SS_NO_ERROR) { if (in_list->ss_feature_count) { for (i=0;i<in_list->ss_feature_count;i++) { T_MFW_FEATURE * pFeature = &in_list->ss_feature_list[i]; if (pFeature->ss_telecom_type == MFW_BST_TELE) { switch(pFeature->ss_telecom_service) { case MFW_TS_ALL_SPCH: case MFW_TS_TLPHNY: case MFW_TS_EMRGNCY: TRACE_EVENT("Speech Tele Service"); if (pFeature->ss_status & SS_STAT_ACTIVE) ss_data.cfu_services |= MFW_CFU_VOICE_ACTIVE; else ss_data.cfu_services &= (MFW_CFU_ALL_SERVICES_ACTIVE - MFW_CFU_VOICE_ACTIVE); break; case MFW_TS_ALL_FAX: case MFW_TS_FAX3_ALT_SPCH: case MFW_TS_FAX3_AUTO: case MFW_TS_FAX4: TRACE_EVENT("Fax Tele Service"); if (pFeature->ss_status & SS_STAT_ACTIVE) ss_data.cfu_services |= MFW_CFU_FAX_ACTIVE; else ss_data.cfu_services &= (MFW_CFU_ALL_SERVICES_ACTIVE - MFW_CFU_FAX_ACTIVE); break; case MFW_TS_ALL_DATA: TRACE_EVENT("Data Tele Service"); if (pFeature->ss_status & SS_STAT_ACTIVE) ss_data.cfu_services |= MFW_CFU_DATA_ACTIVE; else ss_data.cfu_services &= (MFW_CFU_ALL_SERVICES_ACTIVE - MFW_CFU_DATA_ACTIVE); break; case MFW_TS_ALL_SMS: case MFW_TS_SMS_MO: case MFW_TS_SMS_MT: TRACE_EVENT("SMS Tele Service"); if (pFeature->ss_status & SS_STAT_ACTIVE) ss_data.cfu_services |= MFW_CFU_SMS_ACTIVE; else ss_data.cfu_services &= (MFW_CFU_ALL_SERVICES_ACTIVE - MFW_CFU_SMS_ACTIVE); break; case MFW_TS_ALL_XCPT_SMS: TRACE_EVENT("All Except SMS Tele Service"); if (pFeature->ss_status & SS_STAT_ACTIVE) ss_data.cfu_services |= (MFW_CFU_VOICE_ACTIVE | MFW_CFU_FAX_ACTIVE | MFW_CFU_DATA_ACTIVE); else ss_data.cfu_services &= (MFW_CFU_ALL_SERVICES_ACTIVE - (MFW_CFU_VOICE_ACTIVE | MFW_CFU_FAX_ACTIVE | MFW_CFU_DATA_ACTIVE)); break; case MFW_TS_ALL_TS: TRACE_EVENT("All Tele Services"); if (pFeature->ss_status & SS_STAT_ACTIVE) ss_data.cfu_services |= MFW_CFU_ALL_SERVICES_ACTIVE; else ss_data.cfu_services = 0; break; default: break; } } else if (pFeature->ss_telecom_type == MFW_BST_BEARER) { TRACE_EVENT("Bearer Service Type"); if (pFeature->ss_status & SS_STAT_ACTIVE) ss_data.cfu_services |= MFW_CFU_DATA_ACTIVE; else ss_data.cfu_services &= (MFW_CFU_ALL_SERVICES_ACTIVE - MFW_CFU_DATA_ACTIVE); break; } else { /* MFW_BST_UNKNOWN */ TRACE_EVENT("Unknown Service Type"); if (pFeature->ss_status & SS_STAT_ACTIVE) ss_data.cfu_services |= MFW_CFU_ALL_BASIC_SERVICES_ACTIVE; else ss_data.cfu_services = 0; break; } } } else if ((in_list->ss_category == SS_REGISTRATION) || (in_list->ss_category == SS_ACTIVATION)) { ss_data.cfu_services |= MFW_CFU_ALL_BASIC_SERVICES_ACTIVE; } else if ((in_list->ss_category == SS_ERASURE) || (in_list->ss_category == SS_DEACTIVATION)) { ss_data.cfu_services &= (MFW_CFU_ALL_SERVICES_ACTIVE - MFW_CFU_ALL_BASIC_SERVICES_ACTIVE); } } TRACE_EVENT_P1("cfu_services flag is : %8lx", ss_data.cfu_services); if (ss_data.cfu_services) retStat = CF_ACTIVE_STATUS; return retStat; } /******************************************************************************* $Function: srv_check_CF_telephony_status $Description: copies only the interesting parts of the call forwarding feature list. $Returns: $Arguments: *******************************************************************************/ static UBYTE srv_copy_feature_list_cf (T_ss_feature_cf * out_list, T_MFW_SS_CF_CNF * in_list) { UBYTE found_entries = 0; UBYTE i, j; TRACE_EVENT_P1("ss_feature_count %d",in_list->ss_feature_count); if (in_list->ss_feature_count == 0) out_list->ss[0].service = TxtCallDivert; for (i=0;i<in_list->ss_feature_count;i++) { //MC got rid of pointer arithmetic T_MFW_FEATURE * pFeature = &in_list->ss_feature_list[i]; //SPR#1081 - DS - Removed mem allocation. Uses assignment instead. T_ss_feature_cf_data * cf_data = &out_list->ss[found_entries]; UBYTE srvFound; TRACE_EVENT_P2("Telecom type:%d, service: %d ",pFeature->ss_telecom_type, pFeature->ss_telecom_service); /* * first check teleservice */ if (srv_get_service_type (&cf_data->service, pFeature->ss_telecom_type/*CFService*/, pFeature->ss_telecom_service)) { if (cf_data->service == TxtNull) cf_data->service = TxtCallDivert; /* ** If there is more than one entry of a given type, ensure that an information ** screen is displayed only once */ srvFound = FALSE; for (j=0; j<found_entries && !srvFound; j++) { if (cf_data->service == out_list->ss[j].service) srvFound = TRUE; } if (!srvFound) { /* * second set status */ srv_get_status (&cf_data->status, pFeature->ss_status); if ((ss_cnf->cf_cnf.ss_code==SS_CF_CFU)||(ss_cnf->cf_cnf.ss_code==SS_CF_ALL)){ if (pFeature->ss_status & SS_STAT_ACTIVE) { iconsSetState(iconIdCallFor); // Jun 23, 2004 REF: CRR MMI-SPR-13599 Rashmi C N(Sasken) // Setting the Current state of CF in Flash FFS_flashData.CFState=TRUE; } /* Marcus: Issue 1652: 03/02/2003: Start */ else if (pFeature->ss_status & SS_STAT_PROVISIONED) { iconsSetState(iconIdCallFor); // Jun 23, 2004 REF: CRR MMI-SPR-13599 Rashmi C N(Sasken) // Setting the Current state of CF in Flash FFS_flashData.CFState=TRUE; } /* Marcus: Issue 1652: 03/02/2003: End */ else { iconsDeleteState(iconIdCallFor); // Jun 23, 2004 REF: CRR MMI-SPR-13599 Rashmi C N(Sasken) // Setting the Current state of CF in Flash FFS_flashData.CFState=FALSE; } // Jun 23, 2004 REF: CRR MMI-SPR-13599 Rashmi C N(Sasken) // Writng the Current state of CF into ffs flash_write(); } /* * third set forwarded to number * If the TON is International, add a '+' to the beginning of the number */ if ((pFeature->ss_numbering_type == TON_International) && (pFeature->ss_forwarded_to_number[0] != '+')) { cf_data->forwarded_to_number[0] = '+'; srv_get_forwarded_to_number (&cf_data->forwarded_to_number[1], (char *)pFeature->ss_forwarded_to_number, MAX_SS_CF_NUM_LEN-1); } else { srv_get_forwarded_to_number ((char *)cf_data->forwarded_to_number, (char *)pFeature->ss_forwarded_to_number, MAX_SS_CF_NUM_LEN); } TRACE_EVENT_P1("ss_forwarded_to_number %s", (CHAR *)pFeature->ss_forwarded_to_number); found_entries++; } } } /* * return the number of interesting entries */ return found_entries; } /******************************************************************************* $Function: srv_get_forwarded_to_number $Description: sets the forwarded to number if available. $Returns: $Arguments: *******************************************************************************/ static void srv_get_forwarded_to_number ( char * textString, char * forwarded_to_number, UBYTE max_chars) { TRACE_FUNCTION("srv_get_forwarded_to_number"); memset (textString, 0, max_chars); strncpy (textString, forwarded_to_number, max_chars-1); } /******************************************************************************* $Function: srv_get_service_type $Description: checks if the service is interesting or not. $Returns: $Arguments: $History: //SPR#0776 - DS - Added default value for textId. Changed references from TxtNotImplemented to TxtNull. *******************************************************************************/ static UBYTE srv_get_service_type ( USHORT * textId, UBYTE ss_telecom_type, UBYTE ss_telecom_service) { TRACE_FUNCTION("srv_get_service_type"); TRACE_EVENT_P1("ss_telecom_type: %x", ss_telecom_type); TRACE_EVENT_P1("ss_telecom_service: %x", ss_telecom_service); *textId = TxtNull; //Set to TxtNull in case no match found below. switch ( ss_telecom_type ) { case MFW_BST_UNKNOWN: break; case MFW_BST_TELE: switch ( ss_telecom_service ) { case MFW_TS_ALL_TS: *textId = TxtAllCalls; return TRUE; case MFW_TS_ALL_SPCH: /* All speech transmission services */ case MFW_TS_TLPHNY: /* telephony */ case MFW_TS_PLMN1: /*MC, this is returned for auxiliary telephony status, 742*/ *textId = TxtVoice; return TRUE; case MFW_TS_ALL_SMS: case MFW_TS_SMS_MO: case MFW_TS_SMS_MT: *textId = TxtSMS; return TRUE; case MFW_TS_EMRGNCY: case MFW_TS_ALL_XCPT_SMS: case MFW_TS_ALL_PSSS: /* all PLMN specific TS */ case MFW_TS_PLMN2: /* PLMN specific TS 2 */ case MFW_TS_PLMN3: /* PLMN specific TS 3 */ case MFW_TS_PLMN4: /* PLMN specific TS 4 */ case MFW_TS_PLMN5: /* PLMN specific TS 5 */ case MFW_TS_PLMN6: /* PLMN specific TS 6 */ case MFW_TS_PLMN7: /* PLMN specific TS 7 */ case MFW_TS_PLMN8: /* PLMN specific TS 8 */ case MFW_TS_PLMN9: /* PLMN specific TS 9 */ case MFW_TS_PLMNA: /* PLMN specific TS A */ case MFW_TS_PLMNB: /* PLMN specific TS B */ case MFW_TS_PLMNC: /* PLMN specific TS C */ case MFW_TS_PLMND: /* PLMN specific TS D */ case MFW_TS_PLMNE: /* PLMN specific TS E */ case MFW_TS_PLMNF: /* PLMN specific TS F */ *textId = TxtNull; return TRUE; case MFW_TS_ALL_DATA: *textId = TxtData; return TRUE; case MFW_TS_ALL_FAX: case MFW_TS_FAX3_ALT_SPCH: case MFW_TS_FAX3_AUTO: case MFW_TS_FAX4: *textId = TxtFax; return TRUE; } break; case MFW_BST_BEARER: switch ( ss_telecom_service ) { case MFW_BS_ALL_BS: *textId = TxtData; //SPR#933 - DS - Changed TxtNull to TxtData. return TRUE; case MFW_BS_ALL_DATA_CDA: //SPR#933 - DS - Added so MMI displays correct info to user. *textId = TxtData; return TRUE; default: break; } break; } return FALSE; } /******************************************************************************* $Function: srv_get_status $Description: $Returns: $Arguments: *******************************************************************************/ static void srv_get_status (USHORT *textId, UBYTE pStatus) { TRACE_FUNCTION("srv_get_status"); TRACE_EVENT_P1("Call Forwarding status: %d", pStatus); if (pStatus & SS_STAT_ACTIVE) // handles also the case of invalid status *textId = TxtActivated; /* Marcus: Issue 1652: 03/02/2003: Removed NDH 10/06/03 */ else *textId = TxtDeActivated; } /******************************************************************************* $Function: srv_copy_feature_list_cw $Description: copies only the interesting parts of the call waiting service list. $Returns: $Arguments: *******************************************************************************/ static UBYTE srv_copy_feature_list_cw (T_ss_feature_cw * out_list, T_MFW_SS_CW_CNF * in_list) { UBYTE found_entries = 0; UBYTE i, j; if (in_list->ss_service_count == 0) out_list->ss[0].service = TxtCallWaiting; for (i=0;i<in_list->ss_service_count;i++) { T_MFW_SRV_GROUP * pFeature = &in_list->ss_service_list[i]; T_ss_feature_cw_data * cw_data = &out_list->ss[found_entries]; UBYTE srvFound; /* * first check teleservice */ if (srv_get_service_type (&cw_data->service, pFeature->ss_telecom_type, pFeature->ss_telecom_service)) { if (cw_data->service == TxtNull) cw_data->service = TxtCallWaiting; /* ** If there is more than one entry of a given type, ensure that an information ** screen is displayed only once */ srvFound = FALSE; for (j=0; j<found_entries && !srvFound; j++) { if (cw_data->service == out_list->ss[j].service) srvFound = TRUE; } if (!srvFound) { /* * second set status */ srv_get_status (&out_list->status, in_list->ss_status); found_entries++; } } } /* * return the number of interesting entries */ return found_entries; } /******************************************************************************* $Function: srv_copy_feature_list_cb $Description: $Returns: $Arguments: *******************************************************************************/ static UBYTE srv_copy_feature_list_cb (T_ss_feature_cb * out_list, T_MFW_SS_CB_CNF * in_list) { UBYTE found_entries = 0; UBYTE i, j; USHORT textId = 0; // RAVI /* * SPR #1878 NDH - Determine which text is to be displayed depending on what request * was initially sent. */ switch(in_list->ss_category) { case SS_REGISTRATION: case SS_ACTIVATION: case SS_INTERROGATION: /* * Interrogation returns only those services which are active */ textId = TxtActivated; break; case SS_ERASURE: case SS_DEACTIVATION: textId = TxtDeActivated; break; } if (in_list->ss_telecom_count == 0) out_list->ss[0].service = TxtCallBarringAll; for (i=0;i<in_list->ss_telecom_count;i++) { T_MFW_TELECOM * pFeature = &in_list->ss_telecom_list[i]; T_ss_feature_cb_data * cb_data = &out_list->ss[found_entries]; UBYTE srvFound; /* * first check teleservice */ if (srv_get_service_type (&cb_data->service, pFeature->ss_telecom_type, pFeature->ss_telecom_service)) { if (cb_data->service == TxtNull) cb_data->service = TxtCallBarringAll; cb_data->status = textId; /* ** If there is more than one entry of a given type, ensure that an information ** screen is displayed only once */ srvFound = FALSE; for (j=0; j<found_entries && !srvFound; j++) { if (cb_data->service == out_list->ss[j].service) srvFound = TRUE; } if (!srvFound) found_entries++; } } /* * return the number of interesting entries */ return found_entries; } /******************************************************************************* $Function: services_info_cb $Description: Callback function from information dialog. $Returns: $Arguments: *******************************************************************************/ static int services_info_cb(T_MFW_HND win, USHORT identifier, UBYTE reason) { T_DISPLAY_DATA display_info; // Jun 16, 2005 REF: CRR 31543 x0021334 // UBYTE PWD; // RAVI T_MFW_SS_RETURN sat_result_hangup; // Jun 16, 2005 REF: CRR 31543 x0021334 //Feb 17, 2005 REF : CRR 17657 x0012850 Divya.P.V //Bug : Unable to compose a one or two digit number //Fix : This bug is reproducible when a very long message is sent by the service provider when an invalid one or two digit number is dialled. //The read only editor with the service provider message that comes up when a one or two digit is dialled //was not handled properly. So altered the editor handling to cater for the long message. T_MFW_WIN *win_data; T_ss *data = NULL; // RAVI - Assigned NULL. TRACE_EVENT_P1("Service Info CB %d", win); ss_data.info_wait = 0; //Feb 17, 2005 REF : CRR 17657 x0012850 Divya.P.V //Bug : Unable to compose a one or two digit number //Fix : This bug is reproducible when a very long message is sent by the service provider when an invalid one or two digit number is dialled. //The read only editor with the service provider message that comes up when a one or two digit is dialled //was not handled properly. So altered the editor handling to cater for the long message. if(win) { win_data = ((T_MFW_HDR *)win)->data; if(win_data) data = (T_ss * )win_data->user; } /* * Who has initiated the information screen */ switch (identifier) { case SS_WAIT: break; case E_SS_IMEI:/* present IMEI */ case ServicesOk: case ServicesFailed: case ServicesCheckCLI_OK: case ServicesCheckCW_OK: case ServicesIMEI_OK: case ServicesError: case ServicesUSSD_CNF_OK: #if 0 case ServicesUSSDAlreadyFull: /* already full message screen */ #endif case ServicesCFU_OK: case ServicesCB_OK: case E_SS_NOTIFY: case E_SS_CLI_CNF: case E_SS_USSD_CNF: switch (reason) { case INFO_TIMEOUT: /* info dialog timed out, where to now? */ /* no break; */ case INFO_KCD_HUP: /* clear key in info dialog, where to now? */ /* no break;*/ case INFO_KCD_LEFT: /* left soft key in info dialog, where to now? */ /* no break;*/ case INFO_KCD_RIGHT: /* right soft key in info dialog, where to now? */ //Feb 17, 2005 REF : CRR 17657 x0012850 Divya.P.V //Bug : Unable to compose a one or two digit number //Fix : This bug is reproducible when a very long message is sent by the service provider when an invalid one or two digit number is dialled. //The read only editor with the service provider message that comes up when a one or two digit is dialled //was not handled properly. So altered the editor handling to cater for the long message. if(data) { if(data->info_win) { AUI_edit_Destroy(data->info_win); data->info_win=NULL; } } services_destroy(win); break; } // May 12, 2005 REF: CRR 30892 x0021334 // Set ss_data.info_win to NULL to pass the check in services_ss_cb() for notification ss_data.info_win = NULL; break; case E_SS_CB_CNF: { T_MFW_WIN * win_data; T_ss * data; if(win != NULL) /* x0039928 - Lint warning removal */ { win_data = ((T_MFW_HDR *)win)->data; data = (T_ss *)win_data->user; switch (reason) { case INFO_TIMEOUT: //Jun 04,2004 CRR:13601 xpradipg - SASKEN //Timer is introduced for the information dialog, we are handling the time_out event case INFO_KCD_HUP: case INFO_KCD_LEFT: /* * stop the display of the results */ if (data->mfw_ss_cb) { FREE_MEMORY ((void *)data->mfw_ss_cb, sizeof (T_ss_feature_cb)); data->mfw_ss_cb = NULL; data->current_feature = 0; TRACE_EVENT_P2("SS_data.win %d %d",ss_data.win, data); } break; case INFO_KCD_RIGHT: if ((data->mfw_ss_cb) && (data->max_feature > 1)) { if (data->max_feature > data->current_feature + 1) data->current_feature++; else data->current_feature = 0; showCBStatus (win, data); //Jun 04,2004 CRR:13601 xpradipg - SASKEN //Restart the timer if the key was pressed. We handle only right key since left key destroys //the information dialog InfoDialogTimRestart(win); } break; default: break; } // May 12, 2005 REF: CRR 30892 x0021334 // Set ss_data.info_win to NULL to pass the check in services_ss_cb() for notification ss_data.info_win = NULL; } } break; case E_SS_CW_CNF: { T_MFW_WIN * win_data; T_ss * data; if(win != NULL) /* x0039928 - Lint warning removal */ { win_data = ((T_MFW_HDR *)win)->data; data = (T_ss *)win_data->user; switch (reason) { case INFO_TIMEOUT: //Jun 04,2004 CRR:13601 xpradipg - SASKEN //Timer is introduced for the information dialog, we are handling the time_out event case INFO_KCD_HUP: case INFO_KCD_LEFT: /* * stop the display of the results */ if (data->mfw_ss_cw) { FREE_MEMORY ((void *)data->mfw_ss_cw, sizeof (T_ss_feature_cw)); data->mfw_ss_cw = NULL; data->current_feature = 0; } break; case INFO_KCD_RIGHT: if ((data->mfw_ss_cw) && (data->max_feature > 1)) { if (data->max_feature > data->current_feature + 1) data->current_feature++; else data->current_feature = 0; showCWStatus (win, data); //Jun 04,2004 CRR:13601 xpradipg - SASKEN //Restart the timer if the key was pressed. We handle only right key since left key destroys //the information dialog InfoDialogTimRestart(win); } break; default: break; } // May 12, 2005 REF: CRR 30892 x0021334 // Set ss_data.info_win to NULL to pass the check in services_ss_cb() for notification ss_data.info_win = NULL; } } break; case E_SS_CF_CNF: { T_MFW_WIN * win_data; T_ss * data; if(win != NULL) { win_data = ((T_MFW_HDR *)win)->data; data = (T_ss *)win_data->user; switch (reason) { case INFO_TIMEOUT: //Jun 04,2004 CRR:13601 xpradipg - SASKEN //Timer is introduced for the information dialog, we are handling the time_out event case INFO_KCD_HUP: case INFO_KCD_LEFT: /* * stop the display of the results */ if (data->mfw_ss_cf) { FREE_MEMORY ((void *)data->mfw_ss_cf, sizeof (T_ss_feature_cf)); data->mfw_ss_cf = NULL; data->current_feature = 0; } break; case INFO_KCD_RIGHT: if ((data->mfw_ss_cf) && (data->max_feature > 1)) { if (data->max_feature > data->current_feature + 1) data->current_feature++; else data->current_feature = 0; showCFStatus (win, data); //Jun 04,2004 CRR:13601 xpradipg - SASKEN //Restart the timer if the key was pressed. We handle only right key since left key destroys //the information dialog InfoDialogTimRestart(win); } break; default: break; } // May 12, 2005 REF: CRR 30892 x0021334 // Set ss_data.info_win to NULL to pass the check in services_ss_cb() for notification ss_data.info_win = NULL; } break; } case ServicesUSSD_REQ_OK: switch (reason) { case INFO_KCD_HUP: // Jun 16, 2005 REF: CRR 31543 x0021334 // Hangup key is pressed. End the USSD session. sat_result_hangup = satHangup (CMD_SRC_LCL); if (sat_result_hangup == MFW_SS_OK) { dlg_initDisplayData_TextId(&display_info, NULL, NULL, TxtCancelled, TxtNull, COLOUR_STATUS); dlg_initDisplayData_events(&display_info, (T_VOID_FUNC)NULL, THREE_SECS, KEY_LEFT | KEY_RIGHT); info_dialog (NULL, &display_info); } else { TRACE_ERROR("Error in SAT USSD abort"); } // no break; case INFO_TIMEOUT: /* info dialog timed out, where to now? */ // no break; case INFO_KCD_RIGHT: /* right soft key in info dialog, where to now? all above mean cancelled so go back to whatever was before (idle?)*/ services_destroy(win); break; case INFO_KCD_LEFT: /* left soft key in info dialog, where to now? This means confirm, so now go to USSD entry screen */ SEND_EVENT(ss_data.win,ServicesUSSDEnter,0,0); break; default: break; } // May 12, 2005 REF: CRR 30892 x0021334 // Set ss_data.info_win to NULL to pass the check in services_ss_cb() for notification ss_data.info_win = NULL; break; case ServicesUSSDEnter: { T_MFW_SS_PARA ussd_data; ussd_data.ussd_info.len = strlen((char*)ss_data.edt_buf_number); ussd_data.ussd_info.dcs = (T_MFW_DCS)ss_data.dcs; /* x0020906 - 24-08-2006 */ ussd_data.ussd_info.error = MFW_SS_NO_ERROR; memcpy(ussd_data.ussd_info.ussd, ss_data.edt_buf_number, ussd_data.ussd_info.len); sendUSSD (&ussd_data); } break; } return 1; } /******************************************************************************* $Function: servicesNumbers $Description: $Returns: $Arguments: *******************************************************************************/ int servicesNumbers(MfwMnu* m, MfwMnuItem* i) { CFAction = CFActivate; servicesDoOtherNumber(); // ADDED BY RAVI - 28-11-2005 return 1; //END RAVI - 28-11-2005 } /******************************************************************************* $Function: servicesInfraRed $Description: $Returns: $Arguments: *******************************************************************************/ int servicesInfraRed(void){return 11;} /******************************************************************************* $Function: servicesExec $Description: $Returns: $Arguments: *******************************************************************************/ void servicesExec (int reason, MmiState next) { // UBYTE PWD; // RAVI T_MFW_HND win = mfw_parent(mfw_header()); // T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; // RAVI /* nextState = next; x0039928 - Lint warning removal */ if (!winIsFocussed(win)) lastFocus = winFocus(win); servicesState = reason; /* save reason now !! */ switch (reason) { case ServicesIdle: /* giving back control to last module*/ winFocus(lastFocus); winShow(lastFocus); lastFocus = 0; return; /* return from module */ case ServicesOk: TRACE_FUNCTION("Service OK"); winShow(win); timStart(times); /* start timer to go back in the submenu */ break; case ServicesFailed: TRACE_FUNCTION("Service Failed"); winShow(win); timStart(times); /* start timer to go back in the submenu */ break; case ServicesError: TRACE_FUNCTION("Service Error"); winShow(win); timStart(times); /* start timer to go back in the submenu */ break; case ServicesExecCF: /* all Call forwarding from menu */ case ServicesActCF: /* show "Please Wait" screen/animation */ case ServicesDeactCF: case ServicesCheckCF: case ServicesActCW: case ServicesDeactCW: case ServicesCheckCW: case ServicesActCLIR: case ServicesDeactCLIR: case ServicesCheckCLIR: winShow(win); timStart(times); /* start timer to go back in the submenu */ break; case ServicesCheckCW_OK: TRACE_FUNCTION(" ServicesCheckCW_OK"); winShow(win); timStart(times); /* start timer to go back in the submenu */ break; case ServicesCheckCLI_OK: TRACE_FUNCTION("ServicesCheckCLI_OK"); winShow(win); timStart(times); break; case ServicesIMEI_OK: TRACE_FUNCTION("ServicesIMEI_OK"); winShow(win); timStart(times); break; case ServicesResShow: TRACE_FUNCTION("ServicesResShow"); winShow(win); timStart(times); break; case ServicesCB_OK: TRACE_FUNCTION("ServicesCB_OK"); lastFocus = winFocus(win); winShow(win); timStart(times); break; case ServicesCFU_OK: TRACE_FUNCTION("ServicesCFUShow"); lastFocus = winFocus(win); winShow(win); timStart(times); break; case ServicesDoCallDivert: servicesSendCallDivert(0); break; case PIN2_ABORT: TRACE_FUNCTION("ServicesPin2_Abort"); break; default: break; } } #ifdef MMI_LITE /******************************************************************************* $Function: showUSSDError $Description: This function displays a dialog saying USSD message received, Font not supported for UCS2 characters $Returns: $Arguments: *******************************************************************************/ //x0pleela 24 Aug, 2004 DR: OMAPS00083503 static void showUSSDError (T_MFW_HND win) { T_DISPLAY_DATA display_info; TRACE_FUNCTION("showUSSDError"); dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtUSSDMsgRxd, TxtFontNotSupported, COLOUR_STATUS); dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FOREVER, KEY_HUP| KEY_LEFT ); display_info.Identifier = ServicesError; /* * Call Info Screen */ ss_data.info_win = info_dialog (ss_data.win, &display_info); } #endif /******************************************************************************* $Function: showWait $Description: $Returns: $Arguments: *******************************************************************************/ static void showWait (T_MFW_HND win) { T_DISPLAY_DATA display_info; TRACE_FUNCTION("showWait"); dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtRequesting, TxtNull, COLOUR_STATUS); dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FOREVER, KEY_HUP| KEY_LEFT ); display_info.Identifier = SS_WAIT; /* * Call Info Screen */ ss_data.info_wait = info_dialog (win, &display_info); } /******************************************************************************* $Function: showOk $Description: $Returns: $Arguments: *******************************************************************************/ static void showOk (T_MFW_HND win) { T_DISPLAY_DATA display_info; dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtDone, TxtNull, COLOUR_STATUS); dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FOREVER, KEY_HUP| KEY_LEFT ); display_info.Identifier = ServicesOk; /* * Call Info Screen */ ss_data.info_win = info_dialog (ss_data.win, &display_info); } /******************************************************************************* $Function: showFailed $Description: $Returns: $Arguments: *******************************************************************************/ static void showFailed (T_MFW_HND win) { T_DISPLAY_DATA display_info; dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtFailed, TxtNull, COLOUR_STATUS); dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FOREVER, KEY_HUP| KEY_LEFT ); display_info.Identifier = ServicesFailed; /* * Call Info Screen */ ss_data.info_win = info_dialog (ss_data.win, &display_info); } /******************************************************************************* $Function: showError $Description: $Returns: $Arguments: *******************************************************************************/ static void showError (T_MFW_HND win, T_MFW_SS_ERROR ss_error) { T_DISPLAY_DATA display_info; TRACE_FUNCTION("showError"); dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtFailed, serviceGetError(ss_error), COLOUR_STATUS); dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FOREVER, KEY_HUP| KEY_LEFT ); display_info.Identifier = ServicesError; /* * Call Info Screen */ ss_data.info_win = info_dialog (ss_data.win, &display_info); } /******************************************************************************* $Function: showSSNotify $Description: Show result from E_SS_NOTIFY being returned. Short ss-related notification window. $Returns: $Arguments: *******************************************************************************/ static void showSSNotify (T_MFW_HND win, T_MFW_SS_NOTIFY * ss_notify) { T_DISPLAY_DATA display_info; USHORT TxtId1,TxtId2; TRACE_FUNCTION("++ showSSNotify"); TxtId1 = TxtNull; TxtId2 = TxtNull; switch (ss_notify->code) { case MFW_SS_MO_unconFORWARD: /* CFU activated */ { TRACE_EVENT("showSSNotify() MFW_SS_MO_unconFORWARD"); /* 30th May,2006 OMAPS00079650 a0393213 (R.Prabakar) Description : CPHS Call Forwarding feature implementation Solution : As part of the implemention, cphs_set_divert_status() is called whenever the network notifies about unconditional forward*/ #ifdef FF_CPHS switch (CFService) { case (CFVoice): /*MC SPR 742, handle line 2, auxiliary telephony*/ /*MC SPR 742, handle line 2, auxiliary telephony*/ #ifdef FF_CPHS_REL4 if(isCFISFilePresent() ) { /*call_forwarding_status_rel4.voice updated*/ if(call_forwarding_status_rel4.voice != MFW_CFLAG_SET || memcmp(call_forwarding_status_rel4.voice_dialling_number,ss_data.edt_buf_number,PHB_MAX_LEN)!=0) { call_forwarding_status_rel4.voice=MFW_CFLAG_SET; memcpy(call_forwarding_status_rel4.voice_dialling_number,ss_data.edt_buf_number,PHB_MAX_LEN); cphs_rel4_set_divert_status( call_forwarding_status_rel4.voice, call_forwarding_status_rel4.fax, call_forwarding_status_rel4.data, call_forwarding_status_rel4.voice_dialling_number); } break; } #endif case CFAuxVoice: if (GetAlsLine() == MFW_SERV_LINE2) { /*30th May,2006 OMAPS00079650 a0393213 (R.Prabakar) check to find whether we are doing unnecessary sim write*/ if(GetCphsDivertStatus(MFW_SERV_LINE2)!=MFW_CFLAG_SET) cphs_set_divert_status(MFW_CFLAG_NotPresent, MFW_CFLAG_SET, MFW_CFLAG_NotPresent, MFW_CFLAG_NotPresent); } else { if(GetCphsDivertStatus(MFW_SERV_LINE1)!=MFW_CFLAG_SET) cphs_set_divert_status(MFW_CFLAG_SET, MFW_CFLAG_NotPresent, MFW_CFLAG_NotPresent, MFW_CFLAG_NotPresent); } break; case (CFData): /*a0393213 cphs rel4*/ #ifdef FF_CPHS_REL4 if(!isCFISFilePresent() ) { #endif if(GetCphsDivertStatus(MFW_SERV_DATA)!=MFW_CFLAG_SET) cphs_set_divert_status(MFW_CFLAG_NotPresent,MFW_CFLAG_NotPresent,MFW_CFLAG_NotPresent,MFW_CFLAG_SET); /*a0393213 cphs rel4*/ #ifdef FF_CPHS_REL4 } else { if(call_forwarding_status_rel4.data!= MFW_CFLAG_SET) { call_forwarding_status_rel4.data=MFW_CFLAG_SET; cphs_rel4_set_divert_status( call_forwarding_status_rel4.voice, call_forwarding_status_rel4.fax, call_forwarding_status_rel4.data, call_forwarding_status_rel4.voice_dialling_number); } } #endif break; case (CFFax): #ifdef FF_CPHS_REL4 if(!isCFISFilePresent() ) { #endif if(GetCphsDivertStatus(MFW_SERV_FAX)!=MFW_CFLAG_SET) cphs_set_divert_status(MFW_CFLAG_NotPresent,MFW_CFLAG_NotPresent,MFW_CFLAG_SET,MFW_CFLAG_NotPresent); /*a0393213 cphs rel4*/ #ifdef FF_CPHS_REL4 } else { if(call_forwarding_status_rel4.fax!= MFW_CFLAG_SET) { call_forwarding_status_rel4.fax=MFW_CFLAG_SET; cphs_rel4_set_divert_status( call_forwarding_status_rel4.voice, call_forwarding_status_rel4.fax, call_forwarding_status_rel4.data, call_forwarding_status_rel4.voice_dialling_number); } } #endif break; case (CFAll): /*a0393213 cphs rel4*/ #ifdef FF_CPHS_REL4 if(!isCFISFilePresent() ) { #endif if (GetAlsLine() == MFW_SERV_LINE2) { if(GetCphsDivertStatus(MFW_SERV_LINE2)!=MFW_CFLAG_SET || GetCphsDivertStatus(MFW_SERV_DATA)!=MFW_CFLAG_SET || GetCphsDivertStatus(MFW_SERV_FAX)!=MFW_CFLAG_SET) cphs_set_divert_status(MFW_CFLAG_NotPresent,MFW_CFLAG_SET,MFW_CFLAG_SET,MFW_CFLAG_SET); } else { if(GetCphsDivertStatus(MFW_SERV_LINE1)!=MFW_CFLAG_SET || GetCphsDivertStatus(MFW_SERV_DATA)!=MFW_CFLAG_SET || GetCphsDivertStatus(MFW_SERV_FAX)!=MFW_CFLAG_SET) cphs_set_divert_status(MFW_CFLAG_SET,MFW_CFLAG_NotPresent,MFW_CFLAG_SET,MFW_CFLAG_SET); } /*a0393213 cphs rel4*/ #ifdef FF_CPHS_REL4 } else { if(call_forwarding_status_rel4.voice!= MFW_CFLAG_SET || call_forwarding_status_rel4.fax!= MFW_CFLAG_SET || call_forwarding_status_rel4.data!= MFW_CFLAG_SET || memcmp(call_forwarding_status_rel4.voice_dialling_number,ss_data.edt_buf_number,PHB_MAX_LEN)!=0) { call_forwarding_status_rel4.voice= MFW_CFLAG_SET; call_forwarding_status_rel4.fax= MFW_CFLAG_SET; call_forwarding_status_rel4.data= MFW_CFLAG_SET; memcpy(call_forwarding_status_rel4.voice_dialling_number,ss_data.edt_buf_number,PHB_MAX_LEN); cphs_rel4_set_divert_status( call_forwarding_status_rel4.voice, call_forwarding_status_rel4.fax, call_forwarding_status_rel4.data, call_forwarding_status_rel4.voice_dialling_number); } } #endif break; } #else iconsSetState(iconIdCallFor); // Jun 23, 2004 REF: CRR MMI-SPR-13599 Rashmi C N(Sasken) // Storing the Current state of CF in Flash FFS_flashData.CFState=TRUE; flash_write(); #endif } /* Activate the CFU icon */ /* break; */ /***** NO BREAK ******/ case MFW_SS_MO_conFORWARD: /* Conditional CF active */ TxtId1 = TxtForward; TxtId2 = TxtActivated; break; case MFW_SS_MT_FORWARDED: /* incoming call fowarded */ //x0pleela 27 Feb, 2007 ER: OMAPS00113891 TRACE_EVENT("showSSNotify: MFW_SS_MT_FORWARDED"); //set TextId of call data accordingly #ifdef MMI_TTY_ENABLED if (call_tty_get()) call_data.inc_call_data.TextId = TxtFwdIncomingTTYCall; else call_data.inc_call_data.TextId = TxtFwdIncomingCall; #else /* MMI_TTY_ENABLED */ call_data.inc_call_data.TextId = TxtFwdIncomingCall; #endif /* MMI_TTY_ENABLED */ //if incoming call window is not NULL, then destroy the same if( call_data.win_incoming != NULL ) dialog_info_destroy(call_data.win_incoming); //call the incoming call dialog with new strings based on call forward condition call_data.win_incoming = info_dialog (call_data.win, &call_data.inc_call_data); break; //x0pleela 22 Feb, 2007 ER: OMAPS00113891 //Message displayed to the subscriber who has forwarded the call case MFW_SS_MT_CALL_FORWARDED: /* incoming call fowarded */ TxtId1 = TxtIncomingCall; TxtId2 = TxtForwarded; break; case MFW_SS_MO_FORWARDED: /* our call is being forwarded */ TxtId1 = TxtSoftCall; TxtId2 = TxtForwarded; break; case MFW_SS_MO_WAITING: /* outgoing call is waiting signal received */ TxtId1 = TxtSoftCall; TxtId2 = TxtWaiting; break; case MFW_SS_MO_moBARRED: /* outgoing calls barred */ TxtId1 = TxtOutgoingCalls; TxtId2 = TxtBarred; break; case MFW_SS_MO_mtBARRED: /* incoming calls barred */ TxtId1 = TxtIncomingCall; TxtId2 = TxtBarred; break; case MFW_SS_MO_DEFLECTED: /* incoming call diverted */ TxtId1 = TxtIncomingCall; TxtId2 = TxtCallDivert; break; default: break; } if (TxtId1 != TxtNull ) { dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtId1, TxtId2, COLOUR_STATUS); dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, THREE_SECS, KEY_CLEAR| KEY_LEFT ); display_info.Identifier = E_SS_NOTIFY; /* * Call Info Screen */ ss_data.info_win = info_dialog (ss_data.win, &display_info); } } /******************************************************************************* $Function: srv_display_status $Description: Indicate a sensefull response to the user if only the . $Returns: $Arguments: *******************************************************************************/ static void srv_display_status (UBYTE ss_status) { T_DISPLAY_DATA display_info; USHORT TxtId2; TRACE_FUNCTION("srv_display_status()"); //GW Swapped text strings over if (ss_status & SS_STAT_ACTIVE) TxtId2 = TxtActivated; /* Marcus: Issue 1652: 03/02/2003: Removed NDH 10/06/03 */ else TxtId2 = TxtDeActivated; dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtNull, TxtId2, COLOUR_STATUS); //Jun 04,2004 CRR:13601 xpradipg - SASKEN //Timer value changed from FOREVER to FIVE_SECS dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FIVE_SECS, KEY_CLEAR| KEY_LEFT ); display_info.Identifier = E_SS_CB_CNF; // can be used also for CF and CW /* * Call Info Screen */ ss_data.info_win = info_dialog (ss_data.win, &display_info); } /******************************************************************************* $Function: srv_empty_list_result $Description: Indicate a sensefull response to the user if an activation / deactivation or interrogation leads to an empty list. $Returns: $Arguments: *******************************************************************************/ static void srv_empty_list_result (UBYTE ss_category, USHORT event, UBYTE ss_status, UBYTE ss_code) /* Marcus: Issue 1652: 03/02/2002 */ { T_DISPLAY_DATA display_info; USHORT TxtId1; USHORT TxtId2 = TxtNull; TRACE_FUNCTION("srv_empty_list_result"); switch (event) { case E_SS_CB_CNF: TxtId1 = TxtCallBarringAll; break; case E_SS_CW_CNF: TxtId1 = TxtCallWaiting; break; case E_SS_CF_CNF: TxtId1 = TxtCallDivert; break; default: TxtId1 = TxtNull; } /* Marcus: Issue 1652: 03/02/2002: Start */ TRACE_EVENT_P3("ss_category %d, event %d, ss_status %d", ss_category, event, ss_status); switch (ss_category) { case SS_ACTIVATION: case SS_REGISTRATION: TRACE_FUNCTION ("ACTIVATED !"); TxtId2 = TxtActivated; break; /* Marcus: Issue 1588: 23/01/2003: Start */ case SS_INTERROGATION: if ((event == E_SS_CW_CNF) || (event == E_SS_CF_CNF)) { if (ss_status & SS_STAT_ACTIVE) { TRACE_EVENT ("INTERROGATION:ACTIVATED !"); TxtId2 = TxtActivated; } else /* Marcus: Issue 1651: 30/01/2003: Removed NDH 10/06/03 */ { TRACE_EVENT ("INTERROGATION:DEACTIVATED !"); TxtId2 = TxtDeActivated; } } else { TRACE_EVENT ("DEACTIVATED !"); TxtId2 = TxtDeActivated; } break; case SS_ERASURE: case SS_DEACTIVATION: TRACE_FUNCTION ("DEACTIVATED !"); TxtId2 = TxtDeActivated; break; default: TxtId2 = TxtNull; break; } /* Marcus: Issue 1652: 03/02/2002: End */ if (TxtId2 != TxtNull ) { /*CQ10690 - API - 23/06/03 - Set the icon state to show on this return */ if ( (TxtId2 == TxtActivated) && ( (ss_code == SS_CF_CFU) || (ss_code == SS_CF_ALL) ) ) { iconsSetState(iconIdCallFor); // Jun 23, 2004 REF: CRR MMI-SPR-13599 Rashmi C N(Sasken) // Storing the Current state of CF in Flash FFS_flashData.CFState=TRUE; flash_write(); } /*CQ10690 - END*/ if(event==E_SS_CF_CNF) { // Jun 10, 2004 REF: CRR MMI-SPR-13614 Rashmi C N(Sasken) // We are now passing the type of CF as the first stringID for the dialog info screen // serviceGetType(ss_Code) this function would return the string id for the ss_code being passed dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, serviceGetType((T_MFW_SS_CODES)ss_code), TxtId2, COLOUR_STATUS); } else { dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtId1, TxtId2, COLOUR_STATUS); } //Jun 04,2004 CRR:13601 xpradipg - SASKEN //Timer value changed from FOREVER to FIVE_SECS dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FIVE_SECS, KEY_CLEAR| KEY_LEFT ); display_info.Identifier = E_SS_CB_CNF; // can be used also for CF and CW /* * Call Info Screen */ ss_data.info_win = info_dialog (ss_data.win, &display_info); } } /******************************************************************************* $Function: showCWState $Description: display CW state $Returns: $Arguments: *******************************************************************************/ static void showCWStatus (T_MFW_HND win , T_ss * data) { T_DISPLAY_DATA display_info; T_ss_feature_cw_data * pFeature; TRACE_FUNCTION("showCWStatus"); //MC got rid of dodgy pointer arithmetic pFeature = &data->mfw_ss_cw->ss[data->current_feature]; if (data->max_feature == 1) { dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, pFeature->service, data->mfw_ss_cw->status, COLOUR_STATUS); //Jun 04,2004 CRR:13601 xpradipg - SASKEN //Timer value changed from FOREVER to FIVE_SECS dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FIVE_SECS, KEY_CLEAR| KEY_LEFT); } else { dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtSoftNext, pFeature->service, data->mfw_ss_cw->status, COLOUR_STATUS); //Jun 04,2004 CRR:13601 xpradipg - SASKEN //Timer value changed from FOREVER to FIVE_SECS dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FIVE_SECS, KEY_CLEAR| KEY_LEFT | KEY_RIGHT ); } display_info.Identifier = E_SS_CW_CNF; /* * Call Info Screen */ ss_data.info_win = info_dialog (ss_data.win, &display_info); if (ss_data.info_win EQ NULL) { TRACE_FUNCTION("NOT ENOUGH RESOURCES TO CREATE EXT INFO DIALOG"); } } /******************************************************************************* $Function: showCLIStatus $Description: $Returns: $Arguments: *******************************************************************************/ static void showCLIStatus(T_MFW_HND win, T_MFW_SS_PARA * ss_cnf) { T_DISPLAY_DATA display_info; TRACE_FUNCTION("showCLIStatus()"); dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, serviceGetType(ss_cnf->cli_cnf.ss_code), TxtNull , COLOUR_STATUS); dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FOREVER, KEY_CLEAR | KEY_LEFT ); display_info.Identifier = ServicesCheckCLI_OK; if (ss_cnf->cli_cnf.ss_status == SS_STAT_UNKNOWN) { // Unknown status. By defaut say that the id is sent display_info.TextId2 = TxtActivated; } else if (ss_cnf->cli_cnf.ss_status & SS_STAT_ACTIVE) { switch (ss_cnf->cli_cnf.ss_clir_option) { // By defaut the caller id is not sent case MFW_CL_TEMP_DEF_REST: switch (CFAction) { // ActivateCLIR, so deactivate the sending of caller id case CFActivate: // By defaut the caller id is not sent display_info.TextId2 = TxtActivated; // No CLIR suppress or invoke cm_mo_prefix(0x04); // Apr 22, 2004 REF: CRR MMI-SPR-16873 Rashmi C N(Sasken) // Maintaing the CLIR status in the flash. FFS_flashData.CLIR=TRUE; flash_write(); break; // Deactivate CLIR, so activate the sending of caller id case CFDeactivate: // By defaut the caller id is not sent display_info.TextId2 = TxtDeActivated; // CLIR suppress needed cm_mo_prefix(0x08); // Apr 22, 2004 REF: CRR MMI-SPR-16873 Rashmi C N(Sasken) // Maintaing the CLIR status in the flash. FFS_flashData.CLIR=FALSE; flash_write(); break; case CFCheck: default: /* // Check if CLIR suppress is activated: caller id sent if ((cm_mo_prefix(0) & 0x0c) == 0x08) display_info.TextId2 = TxtDeActivated; // By defaut the caller id is not sent else display_info.TextId2 = TxtActivated;*/ // Check if CLIR suppress is activated: caller id sent // Apr 22, 2004 REF: CRR MMI-SPR-16873 Rashmi C N(Sasken) // Using the CLIR status maintained in the flash, when the status is checked if (!FFS_flashData.CLIR) { display_info.TextId2 = TxtDeActivated; } // By defaut the caller id is not sent else { display_info.TextId2 = TxtActivated; } break; } break; // By defaut the caller id is sent case MFW_CL_TEMP_DEF_ALLOWED: switch (CFAction) { // ActivateCLIR, so deactivate the sending of caller id case CFActivate: // By defaut the caller id is sent display_info.TextId2 =TxtActivated; // CLIR invoke needed cm_mo_prefix(0x0c); // Apr 22, 2004 REF: CRR MMI-SPR-16873 Rashmi C N(Sasken) // Maintaing the CLIR status in the flash. FFS_flashData.CLIR=TRUE; flash_write(); break; // Deactivate CLIR, so activate the sending of caller id case CFDeactivate: // By defaut the caller id is sent display_info.TextId2 = TxtDeActivated; // No CLIR suppress or invoke cm_mo_prefix(0x04); // Apr 22, 2004 REF: CRR MMI-SPR-16873 Rashmi C N(Sasken) // Maintaing the CLIR status in the flash. FFS_flashData.CLIR=FALSE; flash_write(); break; case CFCheck: default: /* // Check if CLIR invoke is activated: caller id not sent if ((cm_mo_prefix(0) & 0x0c) == 0x0c) display_info.TextId2 = TxtActivated; // By defaut the caller id is sent else display_info.TextId2 = TxtDeActivated;*/ // Check if CLIR invoke is activated: caller id not sent // Apr 22, 2004 REF: CRR MMI-SPR-16873 Rashmi C N(Sasken) // Using the CLIR status maintained in the flash, when the status is checked if (FFS_flashData.CLIR) { display_info.TextId2 = TxtActivated; } // By defaut the caller id is sent else { display_info.TextId2 = TxtDeActivated; } } break; case MFW_CL_PERM: // No CLIR suppress or invoke cm_mo_prefix(0x04); // No break case MFW_CL_UNKNOWN: default: // The CLIR is active and permanent the caller id is not sent // Apr 22, 2004 REF: CRR MMI-SPR-16873 Rashmi C N(Sasken) // Maintaing the CLIR status in the flash. FFS_flashData.CLIR=TRUE; flash_write(); display_info.TextId2 = TxtActivated; break; } } // CLIR service is not activated: The caller id is sent else { // Dec 07, 2005 REF: OMAPS00050087 x0039928 // Fix: String "Not Activated" is displayed if the network doesn't permit CLIR switch(CFAction) { case CFActivate: display_info.TextId2 = TxtNotActivated; break; case CFDeactivate: case CFCheck: default: display_info.TextId2 = TxtDeActivated; break; } // No CLIR suppress or invoke // Apr 22, 2004 REF: CRR MMI-SPR-16873 Rashmi C N(Sasken) // Maintaing the CLIR status in the flash. FFS_flashData.CLIR=FALSE; flash_write(); cm_mo_prefix(0x04); } // Call Info Screen ss_data.info_win = info_dialog (ss_data.win, &display_info); } #ifndef FF_MMI_ATC_MIGRATION /* x0039928 -Lint warning fix */ /******************************************************************************* $Function: showIMEI2 $Description: $Returns: $Arguments: *******************************************************************************/ static void showIMEI2 (T_MFW_HND win, T_MFW_SS_PARA * ss_cnf) { T_DISPLAY_DATA display_info; // July 09, 2005 REF : MMI-22565 - a0876501 // Increased the IMEI_LEN from 15 to 17 for displaying the Cd byte & SW version. #ifndef FF_MMI_ATC_MIGRATION #define IMEI_LEN 17 /* IMEI + check digit = 15, IMEI + SW version = 16, IMEI + check digit + SW version = 17*/ #endif static char imei_array[IMEI_LEN+1]; //GW IMEI number is 26 chars long! memset(imei_array,0x00,IMEI_LEN+1); memcpy(imei_array, ss_cnf->imei_info.imei_number, IMEI_LEN); dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull,TxtIMEI, TxtNull , COLOUR_STATUS); dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FOREVER, KEY_CLEAR | KEY_LEFT ); display_info.TextString2 = imei_array; /* * Call Info Screen */ ss_data.info_win = info_dialog (ss_data.win, &display_info); } #endif /******************************************************************************* $Function: showUSSDInfo $Description: this is used for both USSD types (confirm and request). The USSD request is keep going after "showUSSDInfo" function and open the editor to enter the string. $Returns: $Arguments: *******************************************************************************/ static void showUSSDInfo (T_MFW_HND win, USHORT ident, T_MFW_SS_PARA * ss_cnf, USHORT sk1, USHORT sk2) { #ifdef NEW_EDITOR T_AUI_EDITOR_DATA editor_data; /* SPR#1428 - SH - New Editor data */ #else T_EDITOR_DATA editor_data; #endif TRACE_FUNCTION("showUSSDInfo"); /* keep the dcs; need it later for sending */ ss_data.dcs = ss_cnf->ussd_info.dcs; /* SPR#1428 - SH - New Editor changes */ #ifdef NEW_EDITOR AUI_edit_SetDefault(&editor_data); AUI_edit_SetDisplay(&editor_data, ZONE_FULL_SK_TITLE, COLOUR_EDITOR_XX, EDITOR_FONT); AUI_edit_SetMode(&editor_data, ED_MODE_READONLY, ED_CURSOR_NONE); //x0pleela 29 Aug, 2006 DR: OMAPS00083503 //Dynamically changing the dcs value in editor settings if( ss_getAlphabetCb ( ss_data.dcs EQ SS_ALPHA_16_Bit) ) AUI_edit_SetBuffer(&editor_data, ATB_DCS_UNICODE, (UBYTE *)ss_cnf->ussd_info.ussd, MAX_USSD_LEN); else AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)ss_cnf->ussd_info.ussd, MAX_USSD_LEN); if (ident EQ ServicesUSSD_REQ_OK) { AUI_edit_SetTextStr(&editor_data, TxtSoftOK, TxtSoftBack, TxtSsMsg, NULL); } else { AUI_edit_SetTextStr(&editor_data, TxtNull, TxtSoftBack, TxtSsMsg, NULL); } AUI_edit_SetEvents(&editor_data, ident, TRUE, FOREVER, (T_AUI_EDIT_CB)services_info_cb); AUI_edit_Start(ss_data.win, &editor_data); /* start the editor */ #else /* NEW_EDITOR */ editor_data.editor_attr.win.px = 6; editor_data.editor_attr.win.py = 12; editor_data.editor_attr.win.sx = 80; editor_data.editor_attr.win.sy = 20; editor_data.editor_attr.edtCol = COLOUR_EDITOR_XX, editor_data.editor_attr.font = 0; editor_data.editor_attr.mode = edtCurNone; editor_data.editor_attr.controls = 0; editor_data.hide = FALSE; editor_data.editor_attr.text = (char*)ss_cnf->ussd_info.ussd; editor_data.editor_attr.size = sizeof(ss_cnf->ussd_info.ussd); if (ident EQ ServicesUSSD_REQ_OK) { editor_data.LeftSoftKey = TxtSoftOK; editor_data.RightSoftKey = TxtSoftBack; } else { editor_data.LeftSoftKey = TxtNull; editor_data.RightSoftKey = TxtSoftBack; } editor_data.AlternateLeftSoftKey = TxtNull; editor_data.TextString = TxtNull; editor_data.TextId = TxtSsMsg; editor_data.Identifier = ident; editor_data.mode = READ_ONLY_MODE; editor_data.timeout = FOREVER; editor_data.min_enter = 1; editor_data.Callback = (T_EDIT_CB)services_info_cb; editor_data.destroyEditor = TRUE; /* create the dialog handler */ editor_start(ss_data.win, &editor_data); /* start the editor */ #endif /* NEW_EDITOR */ } /******************************************************************************* $Function: showUSSDREQ $Description: show USSD info from Request, and then allow user to enter a response. $Returns: $Arguments: *******************************************************************************/ static void showUSSDREQ (T_MFW_HND win, T_MFW_SS_PARA * ss_cnf) { TRACE_FUNCTION("showUSSDREQ"); showUSSDInfo(win, ServicesUSSD_REQ_OK, ss_cnf, TxtSoftOK, TxtSoftBack); } /******************************************************************************* $Function: showUSSDCNF $Description: display USSD message $Returns: $Arguments: *******************************************************************************/ static void showUSSDCNF (T_MFW_HND win, T_MFW_SS_PARA * ss_cnf) { T_DISPLAY_DATA display_info; int nPixels = 0; int nchar = 0; //Feb 17, 2005 REF : CRR 17657 x0012850 Divya.P.V //Bug : Unable to compose a one or two digit number //Fix : This bug is reproducible when a very long message is sent by the service provider when an invalid one or two digit number is dialled. //The read only editor with the service provider message that comes up when a one or two digit is dialled //was not handled properly. So altered the editor handling to cater for the long message. T_MFW_WIN *win_data; T_ss *data = NULL; T_AUI_EDITOR_DATA display_editor_info; TRACE_FUNCTION("showUSSDCNF"); /* API - 09-07-03 - CQ10728 - Add this check to use either the editor or the bubble depending on the size of the returned string */ /* API - 27-08-03 - CQ10728 - Update, calculate the length of the string in number of pixels */ //Feb 17, 2005 REF : CRR 17657 x0012850 Divya.P.V //Bug : Unable to compose a one or two digit number //Fix : This bug is reproducible when a very long message is sent by the service provider when an invalid one or two digit number is dialled. //The read only editor with the service provider message that comes up when a one or two digit is dialled //was not handled properly. So altered the editor handling to cater for the long message. if(win) { win_data = ((T_MFW_HDR *)win)->data; if(win_data) data = (T_ss * )win_data->user; } nchar = strlen((char *)ss_cnf->ussd_info.ussd); nPixels = dspl_GetTextExtent( (char *)ss_cnf->ussd_info.ussd, nchar); /* API - 27-08-03 - CQ10728 - END */ if (nPixels >= SCREEN_SIZE_X && (data != NULL)) /* x0039928 - Lint warning removal */ { //Feb 17, 2005 REF : CRR 17657 x0012850 Divya.P.V //Bug : Unable to compose a one or two digit number //Fix : This bug is reproducible when a very long message is sent by the service provider when an invalid one or two digit number is dialled. //The read only editor with the service provider message that comes up when a one or two digit is dialled //was not handled properly. So altered the editor handling to cater for the long message. AUI_edit_SetDefault(&display_editor_info); AUI_edit_SetMode(&display_editor_info, ED_MODE_READONLY, ED_CURSOR_UNDERLINE); //x0pleela 29 Aug, 2006 DR: OMAPS00083503 //Dynamically changing the dcs value in editor settings if( ss_getAlphabetCb ( (UBYTE)ss_cnf->ussd_info.dcs EQ SS_ALPHA_16_Bit)) AUI_edit_SetBuffer(&display_editor_info, ATB_DCS_UNICODE, (UBYTE*)ss_cnf->ussd_info.ussd, (USHORT)ss_cnf->ussd_info.len); else AUI_edit_SetBuffer(&display_editor_info, ATB_DCS_ASCII, (UBYTE*)ss_cnf->ussd_info.ussd, (USHORT)ss_cnf->ussd_info.len); AUI_edit_SetTextStr(&display_editor_info, TxtNull, TxtSoftBack,TxtNull,NULL); AUI_edit_SetEvents(&display_editor_info, 0, FALSE, FOREVER, (T_AUI_EDIT_CB)services_info_cb); display_editor_info.Identifier = ServicesUSSD_CNF_OK; data->info_win = AUI_edit_Start(data->win, &display_editor_info); } else { if (strlen((char *)ss_cnf->ussd_info.ussd) == 0) { dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtCommand, TxtCompleted, COLOUR_STATUS); } else { dlg_initDisplayData_TextStr(&display_info, TxtSoftOK, TxtNull, (char *)ss_cnf->ussd_info.ussd, NULL, COLOUR_STATUS); } dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FOREVER, KEY_HUP| KEY_LEFT); display_info.Identifier = ServicesUSSD_CNF_OK; /* * Display Dialog Info Screen */ ss_data.info_win = info_dialog (ss_data.win, &display_info); } /*API - 09-07-03 CQ10728- END*/ } /******************************************************************************* $Function: sendUSSD $Description: Send USSD message $Returns: $Arguments: *******************************************************************************/ static void sendUSSD (T_MFW_SS_PARA *ussd_senddata) { // unsigned int tLen = ussd_senddata->ussd_info.len; // RAVI ss_cnf = ussd_senddata; if (ss_send_ussd( (T_MFW_SS_USSD *) ss_cnf ) == MFW_SS_FAIL) { /* ussd data is wrong */ showFailed( ss_data.win ); } else if (servicesState == ServicesUSSDSendEdit) { servicesExec(ServicesUSSDSendEdit_Ok, 0); } else { servicesExec(ServicesUSSDEnter_Send, 0); } } /******************************************************************************* $Function: showCFStatus $Description: display CFU state $Returns: $Arguments: *******************************************************************************/ static void showCFStatus (T_MFW_HND win , T_ss * data) { T_DISPLAY_DATA display_info; T_ss_feature_cf_data * pFeature; static char str[50]; TRACE_FUNCTION("showCFStatus"); //MC got rid of dodgy pointer arithmetic pFeature = &data->mfw_ss_cf->ss[data->current_feature]; if (data->max_feature == 1) { // Jun 10, 2004 REF: CRR MMI-SPR-13614 Rashmi C N(Sasken) // We are now passing the type of CF as the first stringID for the dialog info screen // serviceGetType(ss_Code) this function would return the string id for the ss_code being passed dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, serviceGetType((T_MFW_SS_CODES)ss_Code), TxtNull, COLOUR_STATUS); // Jun 04,2004 CRR:13601 xpradipg - SASKEN //the time parameter is changed from FOREVER to FIVE_SECS dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FIVE_SECS, KEY_CLEAR| KEY_LEFT); } else { // Jun 10, 2004 REF: CRR MMI-SPR-13614 Rashmi C N(Sasken) // We are now passing the type of CF as the first stringID for the dialog info screen // serviceGetType(ss_Code) this function would return the string id for the ss_code being passed dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtSoftNext, serviceGetType((T_MFW_SS_CODES)ss_Code), TxtNull, COLOUR_STATUS); //Jun 04,2004 CRR:13601 xpradipg - SASKEN //the time parameter is changed from FOREVER to FIVE_SECS dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FIVE_SECS, KEY_CLEAR| KEY_LEFT | KEY_RIGHT ); } display_info.Identifier = E_SS_CF_CNF; memset(str, 0, 50); //Only show the number when activating call diverts if (pFeature->status == TxtActivated) { // Jun 10, 2004 REF: CRR MMI-SPR-13614 Rashmi C N(Sasken) // When call forward is activated, the service(i.e voice, fax or data) and the number to which it is forwarded // is passed as the second string for the dialog display. Only two strings or string IDs can be given for a //dialog info screen. Hence, we are adding the service and the number into one string. strcat(str,(char*)MmiRsrcGetText(pFeature->service)); strcat(str," "); strcat(str,pFeature->forwarded_to_number); display_info.TextString2=str; } else /* SPR#2252 - DS - Show status */ { display_info.TextId2 = pFeature->status; } /* * Call Info Screen */ ss_data.info_win = info_dialog (ss_data.win, &display_info); if (ss_data.info_win EQ NULL) { TRACE_FUNCTION("NOT ENOUGH RESOURCES TO CREATE EXT INFO DIALOG"); } } /******************************************************************************* $Function: showCBStatus $Description: display CB state $Returns: $Arguments: *******************************************************************************/ static void showCBStatus (T_MFW_HND win , T_ss * data) { T_DISPLAY_DATA display_info; T_ss_feature_cb_data * pFeature; TRACE_FUNCTION("showCBStatus"); //MC got rid of dodgy pointer arithmetic pFeature = &data->mfw_ss_cb->ss[data->current_feature]; if (data->max_feature == 1) { dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, pFeature->service, pFeature->status, COLOUR_STATUS); //Jun 04,2004 CRR:13601 xpradipg - SASKEN //Timer value changed from FOREVER to FIVE_SECS dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FIVE_SECS, KEY_CLEAR| KEY_LEFT); } else { dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtSoftNext, pFeature->service, pFeature->status, COLOUR_STATUS); //Jun 04,2004 CRR:13601 xpradipg - SASKEN //Timer value changed from FOREVER to FIVE_SECS dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FIVE_SECS, KEY_CLEAR| KEY_LEFT | KEY_RIGHT ); } display_info.Identifier = E_SS_CB_CNF; // can be used also for CF and CW /* * Call Info Screen */ ss_data.info_win = info_dialog (ss_data.win, &display_info); if (ss_data.info_win EQ NULL) { TRACE_FUNCTION("NOT ENOUGH RESOURCES TO CREATE EXT INFO DIALOG"); } } /******************************************************************************* $Function: getCFAction $Description: To return a string corresponding to call forwarding action. $Returns: $Arguments: *******************************************************************************/ static void getCFAction(char * pSSstring) { switch (CFAction) { case CFActivate: strcpy(pSSstring, "**"); break; case CFDeactivate: strcpy(pSSstring, "##"); break; case CFCheck: strcpy(pSSstring, "*#"); break; default: break; } } /******************************************************************************* $Function: getCFType $Description: To return a string corresponding to call forwarding type: CFU, CFNRy, CFU, etc. $Returns: $Arguments: *******************************************************************************/ static void getCFType(char* pSSstring) { switch (CFType) { case CFBusy: strcat(pSSstring, "67*"); break; case CFNoReply: strcat(pSSstring, "61*"); break; case CFNoReach: strcat(pSSstring, "62*"); break; case CFUnconditional: strcat(pSSstring, "21*"); break; case CFAllConditional: strcat(pSSstring, "004*"); break; case CFAllCalls: strcat(pSSstring, "002*"); break; default: break; } } /******************************************************************************* $Function: getCFNumber $Description: $Returns: $Arguments: *******************************************************************************/ static void getCFNumber(char * pSSstring) { strcat(pSSstring, ss_data.edt_buf_number); } /******************************************************************************* $Function: getCFService $Description: $Returns: $Arguments: *******************************************************************************/ static void getCFService(char * pSSstring) { switch (CFService) { case CFVoice: strcat(pSSstring, "*11"); //SPR#0776 - DS -changed from 10 to 11 break; /*MC SPR 742, handle line 2, auxiliary telephony*/ case CFAuxVoice: strcat(pSSstring, "*89"); break; case CFFax: strcat(pSSstring, "*13"); break; case CFData: strcat(pSSstring, "*12"); /*a0393213 cphs rel4 - changed service code from 20 to 12 as per 51.011 spec*/ break; default: break; } } /******************************************************************************* $Function: servicesSendCallDivert $Description: Send out Call Divert String to MFW according to static variables. $Returns: $Arguments: *******************************************************************************/ static int servicesSendCallDivert( char * divert_number) { char SS_string[60] = {'\0'}; /* build up SS string according to menu selections */ getCFAction(SS_string); getCFType(SS_string); if (divert_number) strcat(SS_string, divert_number); else getCFNumber(SS_string); getCFService(SS_string); strcat(SS_string, "#"); /* 30th May,2006 OMAPS00079650 a0393213 (R.Prabakar) Description : CPHS Call Forwarding feature implementation Solution : previous code is deleted because it was setting CF flag in flash before getting network confirmation*/ TRACE_FUNCTION(SS_string); if (ss_execute_transaction((UBYTE*)SS_string, 0) == MFW_SS_FAIL) { showFailed( ss_data.win ); } return 0; } /******************************************************************************* $Function: servicesActivateCLIR $Description: activate CLIR $Returns: $Arguments: *******************************************************************************/ int servicesActivateCLIR(MfwMnu* m, MfwMnuItem* i) { char actstr[8]; CFAction = CFActivate; strcpy(actstr, "#31#"); if (ss_execute_transaction((UBYTE*)actstr, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); else { strcpy(actstr, "*#31#"); if (ss_execute_transaction((UBYTE*)actstr, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); } return 0; } /******************************************************************************* $Function: servicesSuppressCLIR $Description: suppress CLIR $Returns: $Arguments: *******************************************************************************/ int servicesDeactivateCLIR(MfwMnu* m, MfwMnuItem* i) { char actstr[8]; CFAction = CFDeactivate; strcpy(actstr, "*31#"); if (ss_execute_transaction((UBYTE*)actstr, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); else { strcpy(actstr, "*#31#"); if (ss_execute_transaction((UBYTE*)actstr, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); } return 0; } /******************************************************************************* $Function: servicesCheckCLIR $Description: $Returns: $Arguments: *******************************************************************************/ int servicesCheckCLIR(MfwMnu* m, MfwMnuItem* i) { char actstr[8]; CFAction = CFCheck; strcpy(actstr, "*#31#"); if (ss_execute_transaction((UBYTE*)actstr, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); return 0; } /******************************************************************************* $Function: servicesCheckCWaiting $Description: $Returns: $Arguments: *******************************************************************************/ int servicesCheckCWaiting(MfwMnu* m, MfwMnuItem* i) { char actstr[8]; strcpy(actstr, "*#43#"); if (ss_execute_transaction((UBYTE*)actstr, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); return 0; } /******************************************************************************* $Function: servicesActivateCWaiting $Description: activate CallWaiting functionality $Returns: $Arguments: *******************************************************************************/ int servicesActivateCWaiting(MfwMnu* m, MfwMnuItem* i) { char actstr[8]; /* JVJ #1586 Changed *43*10# to *43*# */ strcpy(actstr, "*43*#"); if (ss_execute_transaction((UBYTE*)actstr, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: servicesDeactivateCWaiting $Description: deactivate CallWaiting functionality $Returns: $Arguments: *******************************************************************************/ int servicesDeactivateCWaiting(MfwMnu* m, MfwMnuItem* i) { char actstr[8]; /* JVJ #1586 Changed #43*10# to #43# */ strcpy(actstr, "#43#"); if (ss_execute_transaction((UBYTE*)actstr, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: servicesInterCFU $Description: Interrogate the CFU functionality $Returns: $Arguments: *******************************************************************************/ int servicesInterCFU(void) { char actstr[8]; strcpy(actstr, "*#21#"); ss_execute_transaction((UBYTE*)actstr, 0); return 0; } /******************************************************************************* $Function: serviceGetError $Description: $Returns: $Arguments: *******************************************************************************/ static unsigned int serviceGetError( T_MFW_SS_ERROR ss_error ) { unsigned int errStrCode = TxtNotAvailable; TRACE_FUNCTION("serviceGetError"); switch (ss_error) { case MFW_SS_ERR_UNKNOWN: errStrCode=TxtErrUnknown; break; case MFW_SS_ERROR: errStrCode=TxtSSErr; break; case MFW_SS_ERR_UNKNOWN_SUBSCRIBER: errStrCode=TxtUnknownSub; break; case MFW_SS_ERR_ILLEGAL_SUBSCRIBER: errStrCode=TxtIllSub; break; case MFW_SS_ERR_BEARER_SVC_NOT_PROV: case MFW_SS_ERR_TELE_SVC_NOT_PROV: errStrCode = TxtNotSubscribed; break; case MFW_SS_ERR_ILLEGAL_EQUIPMENT: errStrCode = TxtIllEqip; break; case MFW_SS_ERR_CALL_BARRED: errStrCode = TxtBarred; break; case MFW_SS_ERR_ILLEGAL_SS_OPERATION: errStrCode = TxtIllOp; break; case MFW_SS_ERR_SS_ERR_STATUS: errStrCode = TxtCheckStatus; break; case MFW_SS_ERR_SS_NOT_AVAIL: errStrCode = TxtNotAvailable; break; case MFW_SS_ERR_SS_SUBS_VIOLATION: errStrCode = TxtSubVil; break; case MFW_SS_ERR_SS_INCOMP: errStrCode = TxtInComp; break; case MFW_SS_ERR_FAC_NOT_SUPPORTED: errStrCode = TxtFacNoSup; break; case MFW_SS_ERR_ABSENT_SUBS: errStrCode = TxtAbsSub; break; case MFW_SS_ERR_SYSTEM_FAIL: errStrCode = TxtSysFail; break; case MFW_SS_ERR_DATA_MISSING: errStrCode = TxtMissDta; break; case MFW_SS_ERR_UNEXPECT_DATA: case MFW_SS_ERR_PROB_UNEXP_ERR: case MFW_SS_RES_PROB_RET_RES_UNEXP: case MFW_SS_ERR_PROB_RET_ERR_UNEXP: case MFW_SS_INV_PROB_LNK_RES_UNEXP: case MFW_SS_INV_PROB_UNEXP_LNK_OP: errStrCode = TxtUnexDta; break; case MFW_SS_ERR_PWD_REG_FAIL: errStrCode = TxtPwdErr; break; case MFW_SS_ERR_NEG_PWD_CHECK: errStrCode = TxtCodeInc; break; case MFW_SS_ERR_NUM_PWD_VIOLATION: errStrCode = TxtBlckPerm; break; case MFW_SS_ERR_UNKNOWN_ALPHA: errStrCode = TxtUnkAlph; break; case MFW_SS_ERR_USSD_BUSY: errStrCode = TxtNetworkBusy; break; case MFW_SS_ERR_MAX_NUM_MPTY_EXCEED: errStrCode = TxtMaxMpty; break; case MFW_SS_ERR_RESOURCE_NOT_AVAIL: errStrCode = TxtOperationNotAvail; break; case MFW_SS_RES_PROB_UNRECOG_INV_ID: case MFW_SS_INV_PROB_UNRECOG_LNK_ID: case MFW_SS_ERR_PROB_UNRECOG_INV_ID: case MFW_SS_GEN_PROB_UNRECOG_CMP: case MFW_SS_INV_PROB_UNRECOG_OP: case MFW_SS_ERR_PROB_UNRECOG_ERR: errStrCode = TxtUnRec; break; case MFW_SS_RES_PROB_MISTYPED_PAR: case MFW_SS_GEN_PROB_MISTYPED_CMP: case MFW_SS_INV_PROB_MISTYPED_PAR: case MFW_SS_ERR_PROB_MISTYPED_PAR: errStrCode = TxtMisTyp; break; case MFW_SS_GEN_PROB_BAD_STRUCT_CMP: errStrCode = TxtBadStruct; break; case MFW_SS_INV_PROB_DUPL_INV_ID: errStrCode = TxtDupInv; break; case MFW_SS_INV_PROB_RESOURCE_LIM: errStrCode = TxtResLim; break; case MFW_SS_INV_PROB_INIT_RELEASE: errStrCode = TxtIniRel; break; case MFW_SS_ERR_FATAL_INV_RESULT: case MFW_SS_ERR_FATAL_CCD_DEC: case MFW_SS_ERR_FATAL_SS_ENT: errStrCode = TxtFatRes; break; default: break; } return errStrCode; } /******************************************************************************* $Function: serviceGetType $Description: Return code of text string that indicates the SS Type CW, CF, CFU, etc $Returns: $Arguments: *******************************************************************************/ unsigned int serviceGetType( T_MFW_SS_CODES type ) { unsigned int strTypeCode = 0; TRACE_FUNCTION("++ serviceGetType"); switch (type) { case SS_CODES_UNKNOWN: /* Marcus: Issue 1652: 03/02/2003: Start */ TRACE_EVENT("SS_CODES_UNKNOWN"); strTypeCode = TxtUnknown; /* Marcus: Issue 1652: 03/02/2003: End */ break; case SS_CF_ALL: strTypeCode = TxtAllDivert; break; case SS_CF_ALL_COND: strTypeCode = TxtCondDivert; break; case SS_CF_CFU: strTypeCode = TxtAllCallsDivert; break; case SS_CF_CFNRy: strTypeCode = TxtNoAnsDivert ; break; case SS_CF_CFNR: strTypeCode = TxtNoReachDivert; break; case SS_CF_CFB: strTypeCode = TxtBusyDivert; break; case SS_CB_BAOC: strTypeCode = TxtCallBAOC; break; case SS_CB_BAOIC: strTypeCode = TxtCallBAOIC; break; case SS_CB_BAOICexH: strTypeCode = TxtCallBAOICexH; break; case SS_CB_BAIC: strTypeCode = TxtCallBAIC; break; case SS_CB_BAICroam: strTypeCode = TxtCallBAICroam; break; case SS_CB_ALL: strTypeCode = TxtCallBarringAll; break; case SS_CB_ALL_BAOC: strTypeCode = TxtCallBAOCAll; break; case SS_CB_ALL_BAIC: strTypeCode = TxtCallBAICAll; break; case SS_CW: strTypeCode = TxtCallWaiting; break; case SS_CCBS: break; case SS_CLIP: strTypeCode = TxtCLIP; break; case SS_CLIR: strTypeCode = TxtSendID; break; case SS_COLP: strTypeCode = TxtCOLP; break; case SS_COLR: strTypeCode = TxtCOLR; break; case SS_PIN1: case SS_PIN2: break; default: break; } return strTypeCode; } /******************************************************************************* $Function: servicesDivertActivate $Description: $Returns: $Arguments: *******************************************************************************/ void servicesDivertActivate(void) { TRACE_FUNCTION("servicesDivertActivate"); CFAction = CFActivate; } /******************************************************************************* $Function: servicesDivertCheck $Description: $Returns: $Arguments: $History: //SPR#0776 - DS -Now takes service type into account by calling getCFServiceCheck. *******************************************************************************/ void servicesDivertCheck(void) { char SS_string[60] = {'\0'}; /* * Interrogate Call Divert */ TRACE_FUNCTION("servicesDivertCheck"); CFAction = CFCheck; getCFAction(SS_string); getCFType(SS_string); getCFService(SS_string); //SPR#929 - DS - Changed from getCFServiceCheck. strcat(SS_string, "#"); TRACE_FUNCTION(SS_string); if (ss_execute_transaction((UBYTE*)SS_string, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); } /******************************************************************************* $Function: servicesDivertDeactivate $Description: $Returns: $Arguments: $History //SPR#0776 - DS -Now takes service type into account by calling getCFServiceCheck. *******************************************************************************/ void servicesDivertDeactivate(void) { char SS_string[60] = {'\0'}; /* * Deactivate Call Divert */ TRACE_FUNCTION("servicesDivertDeactivate"); CFAction = CFDeactivate; getCFAction(SS_string); getCFType(SS_string); getCFService(SS_string); //SPR#929 - DS - Changed from getCFServiceCheck. SS_string[strlen(SS_string)] = '#'; TRACE_FUNCTION(SS_string); /* 30th May,2006 OMAPS00079650 a0393213 (R.Prabakar) Description : CPHS Call Forwarding feature implementation Solution : previous code is deleted because it was setting CF flag in flash before getting network confirmation*/ if (ss_execute_transaction((UBYTE*)SS_string, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); } /******************************************************************************* $Function: servicesDivertVoice $Description: $Returns: $Arguments: *******************************************************************************/ void servicesDivertVoice(void) { TRACE_FUNCTION("servicesDivertVoice"); /*mc SPR 742 check if line2 is the current line*/ if (!ALSPresent(NULL, NULL, NULL) && GetAlsLine() == MFW_SERV_LINE2/*FFS_flashData.als_selLine == MFW_SERV_LINE2*/) CFService = CFAuxVoice; else /*mc end*/ CFService = CFVoice; } /******************************************************************************* $Function: servicesDivertFax $Description: $Returns: $Arguments: *******************************************************************************/ void servicesDivertFax(void) { TRACE_FUNCTION("servicesDivertFax"); CFService = CFFax; } /******************************************************************************* $Function: servicesDivertData $Description: $Returns: $Arguments: *******************************************************************************/ void servicesDivertData(void) { TRACE_FUNCTION("servicesDivertData"); CFService = CFData; } /******************************************************************************* $Function: servicesDivertActionAll $Description: $Returns: $Arguments: *******************************************************************************/ void servicesDivertActionAll(void) { TRACE_FUNCTION("servicesDivertActionAll"); CFService = CFAll; } /******************************************************************************* $Function: servicesDivertBusy $Description: $Returns: $Arguments: *******************************************************************************/ void servicesDivertBusy(void) { TRACE_FUNCTION("servicesDivertBusy"); CFType = CFBusy; } /******************************************************************************* $Function: servicesDivertNoAnswer $Description: $Returns: $Arguments: *******************************************************************************/ void servicesDivertNoAnswer(void) { TRACE_FUNCTION("servicesDivertNoAnswer"); CFType = CFNoReply; } /******************************************************************************* $Function: servicesDivertNotReachable $Description: $Returns: $Arguments: *******************************************************************************/ void servicesDivertNotReachable(void) { TRACE_FUNCTION("servicesDivertNotReachable"); CFType = CFAllConditional; } /******************************************************************************* $Function: servicesDivertNoService $Description: $Returns: $Arguments: *******************************************************************************/ void servicesDivertNoService(void) { TRACE_FUNCTION("servicesDivertNoService"); CFType = CFNoReach; } /******************************************************************************* $Function: servicesDivertAllCalls $Description: $Returns: $Arguments: *******************************************************************************/ void servicesDivertAllCalls(void) { TRACE_FUNCTION("servicesDivertAllCalls"); CFType = CFUnconditional; } /******************************************************************************* $Function: servicesDivertCancelAll $Description: $Returns: $Arguments: *******************************************************************************/ void servicesDivertCancelAll(void) { TRACE_FUNCTION("servicesDivertCancelAll"); CFType = CFAllCalls; CFAction = CFDeactivate; CFService = CFAll; servicesSendCallDivert(0); } /******************************************************************************* $Function: servicesBarringAllOutgoing $Description: $Returns: $Arguments: *******************************************************************************/ void servicesBarringAllOutgoing(void) { TRACE_FUNCTION("servicesBarringAllOutgoing"); CBType = CBAllOutgoing; } /******************************************************************************* $Function: servicesBarringInternational $Description: $Returns: $Arguments: *******************************************************************************/ void servicesBarringInternational(void) { TRACE_FUNCTION("servicesBarringInternational"); CBType = CBInternational; } /******************************************************************************* $Function: servicesBarringInternationalHome $Description: $Returns: $Arguments: *******************************************************************************/ void servicesBarringInternationalHome(void) { TRACE_FUNCTION("servicesBarringInternationalHome"); CBType = CBInternationalHome; } /******************************************************************************* $Function: servicesBarringAllIncoming $Description: $Returns: $Arguments: *******************************************************************************/ void servicesBarringAllIncoming(void) { TRACE_FUNCTION("servicesBarringAllIncoming"); CBType = CBAllIncoming; } /******************************************************************************* $Function: servicesBarringIncomingRoaming $Description: $Returns: $Arguments: *******************************************************************************/ void servicesBarringIncomingRoaming(void) { TRACE_FUNCTION("servicesBarringIncomingRoaming"); CBType = CBIncomingRoaming; } /******************************************************************************* $Function: services_get_voice_number_cb $Description: callback function for the enter voicemail number window $Returns: $Arguments: *******************************************************************************/ #ifdef NEW_EDITOR static void services_get_voice_number_cb(T_MFW_HND win, USHORT identifier, SHORT reason) { T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; T_services_input * data = (T_services_input *)win_data->user; TRACE_FUNCTION("services_get_voice_number_cb"); switch (reason) { case INFO_KCD_LEFT: TRACE_FUNCTION("SERVICES_INPUT_LEFT"); services_input_destroy(ss_data.input_number_win); /* send number if one has been entered */ if (strlen(ss_data.edt_buf_number) > 0 ) SEND_EVENT(data->parent_win, SERVICES_DO_CALL_VOICE_DIVERT, 0, 0); break; case INFO_KCD_ALTERNATELEFT: TRACE_FUNCTION("SERVICES_INPUT_ALTERNATELEFT"); /* Go to phone book */ if (bookPhoneBookLoading()==BOOK_SUCCESS) { // T_MFW_HND phbk_win; // RAVI bookPhonebookStart(win,PhbkFromDivert); // RAVI - Removed Assignment phbk_win = . } break; case INFO_KCD_HUP: case INFO_KCD_RIGHT: TRACE_FUNCTION("SERVICES_INPUT_RIGHT/HUP"); services_input_destroy(ss_data.input_number_win); break; default: break; } } #else /* NEW_EDITOR */ static void services_get_voice_number_cb(T_MFW_HND win, USHORT reason) { TRACE_FUNCTION("services_get_voice_number_cb"); switch (reason){ case SERVICES_INPUT_LEFT: TRACE_FUNCTION("SERVICES_INPUT_LEFT"); /* send number if one has been entered */ if (strlen(ss_data.edt_buf_number) > 0 ) SEND_EVENT(win, SERVICES_DO_CALL_VOICE_DIVERT, 0, 0); break; default: break; } } #endif /* NEW_EDITOR */ /******************************************************************************* $Function: servicesDoVoiceMailNumber $Description: this function should access voicemail number if it is already entered, otherwise allow access to voicemail editing window $Returns: $Arguments: *******************************************************************************/ void servicesDoVoiceMailNumber(void) { char voiceNum[30] = {'\0'}; TRACE_FUNCTION("servicesDoVoiceMailNumber"); //JVJEmsgsGetVoiceAddress(voiceNum); /* instead of the above we should use something like: */ if ( strlen(voiceNum) > 0) { servicesSendCallDivert(voiceNum); } else { T_ss * data = &ss_data; T_input_properties input; memset(data->edt_buf_number,'\0',PHB_MAX_LEN); input.abc = FALSE; input.text = TxtEnterNumber; /* SPR#1428 - SH - New Editor changes - no longer required */ #ifndef NEW_EDITOR input.edt_attr_input = &data->edt_attr_number; #endif /* ifndef NEW_EDITOR */ input.left_soft_key = TxtSoftOK; input.right_soft_key = TxtSoftBack; input.callback = services_get_voice_number_cb; data->input_number_win = services_input_start(data->win,&input); } } /******************************************************************************* $Function: services_get_number_cb $Description: callback function for the enter other number window $Returns: $Arguments: *******************************************************************************/ #ifdef NEW_EDITOR static void services_get_number_cb(T_MFW_HND win, USHORT identifier, SHORT reason) { // T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; // RAVI // T_services_input * data = (T_services_input *)win_data->user; // RAVI TRACE_FUNCTION("services_get_voice_number_cb"); switch (reason) { case INFO_KCD_LEFT: TRACE_FUNCTION("SERVICES_INPUT_LEFT"); /* send number if one has been entered */ SEND_EVENT(ss_data.win, ServicesDoCallDivert, 0, 0); services_input_destroy(ss_data.input_number_win); ss_data.input_number_win = NULL; break; case INFO_KCD_ALTERNATELEFT: TRACE_FUNCTION("SERVICES_INPUT_ALTERNATELEFT"); /* Go to phone book */ if (bookPhoneBookLoading()==BOOK_SUCCESS) { //T_MFW_HND phbk_win; // RAVI bookPhonebookStart(win,PhbkFromDivert); // RAVI - Removed assignment phbk_win = } break; case INFO_KCD_HUP: case INFO_KCD_RIGHT: TRACE_FUNCTION("SERVICES_INPUT_RIGHT/HUP"); services_input_destroy(ss_data.input_number_win); ss_data.input_number_win = NULL; break; default: break; } } #else /* NEW_EDITOR */ static void services_get_number_cb(T_MFW_HND win,USHORT reason) { TRACE_FUNCTION("services_get_number_cb"); switch (reason){ case SERVICES_INPUT_LEFT: TRACE_FUNCTION("SERVICES_INPUT_LEFT"); SEND_EVENT(win, ServicesDoCallDivert, 0, 0); break; case SERVICES_INPUT_RIGHT: TRACE_FUNCTION("SERVICES_INPUT_RIGHT"); SEND_EVENT(win, ServicesDoCallDivert, 0, 0); break; default: break; } } #endif /* NEW_EDITOR */ /******************************************************************************* $Function: servicesGetOtherNumber $Description: Sets up an editor for entering another number. $Returns: $Arguments: *******************************************************************************/ static void ServicesGetOtherNumber(T_MFW_HND win) { T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; T_ss * data = (T_ss *)win_data->user; T_input_properties input; TRACE_EVENT("ServicesGetOtherNumber"); memset(data->edt_buf_number,'\0',PHB_MAX_LEN); input.abc = FALSE; input.text = TxtEnterNumber; /* SPR#1428 - SH - New Editor changes - no longer required */ #ifndef NEW_EDITOR input.edt_attr_input = &data->edt_attr_number; #endif /* ifndef NEW_EDITOR */ input.left_soft_key = TxtSoftOK; //Oct 20, 2004 REF: CRR 25772 Deepa M.D //The RSK name has been set to Delete. input.right_soft_key = TxtDelete; input.callback = services_get_number_cb; data->input_number_win = services_input_start(win,&input); } /******************************************************************************* $Function: servicesDoOtherNumber $Description: $Returns: $Arguments: *******************************************************************************/ void servicesDoOtherNumber(void) { TRACE_FUNCTION("servicesDoOtherNumber"); SEND_EVENT(ss_data.win, ServicesOtherNumber, 0, 0); /* this is function called from menu, it will also send a signal to start window being displayed for editing or calling phonebook */ /* set up and show edit field */ } /******************************************************************************* $Function: servicesStoreVoiceMailNumber $Description: Store number to Voicemail number (currently in SMS, should be in PCM?) $Returns: $Arguments: *******************************************************************************/ static void servicesStoreVoiceMailNumber( void ) { char voiceNum[30] = {'\0'}; TRACE_FUNCTION("servicesStoreVoiceMailNumber"); getCFNumber(voiceNum); } /******************************************************************************* $Function: servicesActivateIRDA $Description: $Returns: $Arguments: *******************************************************************************/ int servicesActivateIRDA(MfwMnu* m, MfwMnuItem* i) { // ADDED BY RAVI - 28-11-2005 return 1; // END RAVI - 28-11-2005 } /******************************************************************************* $Function: servicesDeactivateIRDA $Description: $Returns: $Arguments: *******************************************************************************/ int servicesDeactivateIRDA(MfwMnu* m, MfwMnuItem* i) { // ADDED BY RAVI - 28-11-2005 return 1; // END RAVI - 28-11-2005 } static T_MFW_HND dialog_ext_info_create (T_MFW_HND parent_win); static void dialog_ext_info_destroy (T_MFW_HND own_window); void dialog_ext_info (T_MFW_HND win, USHORT event, SHORT value, void * parameter); static int dialog_ext_info_win_cb (T_MFW_EVENT event, T_MFW_WIN * win); static T_MFW_CB dialog_ext_info_tim_cb (T_MFW_EVENT event, T_MFW_TIM * tc); static int dialog_ext_info_kbd_cb (T_MFW_EVENT event, T_MFW_KBD * keyboard); static int dialog_ext_info_kbd_long_cb (T_MFW_EVENT e, T_MFW_KBD *k); /******************************************************************************* $Function: dialog_ext_info_dialog $Description: $Returns: $Arguments: *******************************************************************************/ T_MFW_HND dialog_ext_info_dialog (T_MFW_HND parent_win, T_dialog_ext_info * display_info) { T_MFW_HND win; win = dialog_ext_info_create (parent_win); if (win NEQ NULL) { SEND_EVENT (win, DIALOG_INIT, 0, display_info); } return win; } /******************************************************************************* $Function: dialog_ext_info_create $Description: $Returns: $Arguments: *******************************************************************************/ static T_MFW_HND dialog_ext_info_create (T_MFW_HND parent_win) { T_MFW_WIN * win_data; T_dialog_ext_info * data = (T_dialog_ext_info *)ALLOC_MEMORY (sizeof (T_dialog_ext_info)); TRACE_FUNCTION ("dialog_ext_info_create()"); if (data EQ 0) { TRACE_FUNCTION("NOT ENOUGH RESOURCES FOR DATA"); return 0; } data->info_win = win_create (parent_win, 0, E_WIN_VISIBLE, (T_MFW_CB)dialog_ext_info_win_cb); if (data->info_win EQ 0) { TRACE_FUNCTION("NOT ENOUGH RESOURCES FOR 4 line INFO WIN"); return 0; } /* * Create window handler */ data->mmi_control.dialog = (T_DIALOG_FUNC)dialog_ext_info; data->mmi_control.data = data; data->parent_win = parent_win; win_data = ((T_MFW_HDR *)data->info_win)->data; win_data->user = (void *)data; win_show(data->info_win); /* * return window handle */ return data->info_win; } /******************************************************************************* $Function: dialog_ext_info_destroy $Description: $Returns: $Arguments: *******************************************************************************/ static void dialog_ext_info_destroy (T_MFW_HND own_window) { T_MFW_WIN * win = ((T_MFW_HDR *)own_window)->data; T_dialog_ext_info * data = (T_dialog_ext_info *)win->user; TRACE_FUNCTION ("dialog_ext_info_destroy()"); if (own_window == NULL) { TRACE_EVENT ("Error : Called with NULL Pointer"); return; } if (data) { /* * Exit TIMER & KEYBOARD Handle */ kbd_delete (data->info_kbd); kbd_delete (data->info_kbd_long); tim_delete (data->info_tim); /* * Delete WIN Handler */ win_delete (data->info_win); /* * Free Memory */ FREE_MEMORY ((void *)data, sizeof (T_dialog_ext_info)); } } /******************************************************************************* $Function: dialog_ext_info $Description: $Returns: $Arguments: *******************************************************************************/ void dialog_ext_info (T_MFW_HND win, USHORT event, SHORT value, void * parameter) { T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; T_dialog_ext_info * data = (T_dialog_ext_info *)win_data->user; T_dialog_ext_info * display_info = (T_dialog_ext_info *)parameter; TRACE_FUNCTION ("dialog_ext_info()"); switch (event) { case DIALOG_INIT: /* * Initialize dialog */ /* * Store any other data */ data->LeftSoftKey = display_info->LeftSoftKey; data->RightSoftKey = display_info->RightSoftKey; data->Time = display_info->Time; data->KeyEvents = display_info->KeyEvents; data->TextId1 = display_info->TextId1; data->TextId2 = display_info->TextId2; data->TextString4 = display_info->TextString4; data->Identifier = display_info->Identifier; data->Callback = display_info->Callback; /* * Create timer and keyboard handler */ data->info_tim = tim_create (win, display_info->Time, (T_MFW_CB)dialog_ext_info_tim_cb); data->info_kbd = kbd_create (win, KEY_ALL, (T_MFW_CB)dialog_ext_info_kbd_cb); data->info_kbd_long = kbd_create (win, KEY_ALL|KEY_LONG, (T_MFW_CB)dialog_ext_info_kbd_long_cb); if (display_info->Time NEQ FOREVER) tim_start (data->info_tim); win_show(win); break; case DIALOG_DESTROY: dialog_ext_info_destroy(win); break; } } /******************************************************************************* $Function: dialog_ext_info_win_cb $Description: $Returns: $Arguments: *******************************************************************************/ static int dialog_ext_info_win_cb (T_MFW_EVENT event, T_MFW_WIN * win) { T_dialog_ext_info * data = (T_dialog_ext_info *)win->user; TRACE_FUNCTION ("dialog_ext_info_win_cb()"); if (data EQ 0) return 1; switch (event) { case E_WIN_VISIBLE: /* * Print the information dialog */ /* * Clear Screen */ dspl_ClearAll(); /* * Print softkeys */ displaySoftKeys(data->LeftSoftKey, data->RightSoftKey); /* * Print information */ if (data->TextId1 NEQ 0) { displayAlignedText(CENTER, Mmi_layout_line(1), 0, GET_TEXT(data->TextId1)); } if (data->TextId2 NEQ 0) { displayAlignedText(CENTER, Mmi_layout_line(2), 0, GET_TEXT(data->TextId2)); } if (data->TextString4) { displayAlignedText(CENTER, Mmi_layout_line(3), 0, data->TextString4); } break; default: return 0; } return 1; } /******************************************************************************* $Function: dialog_ext_info_tim_cb $Description: $Returns: $Arguments: *******************************************************************************/ static T_MFW_CB dialog_ext_info_tim_cb (T_MFW_EVENT event, T_MFW_TIM *tc) { T_MFW_HND win = mfw_parent (mfw_header()); T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; T_dialog_ext_info * data = (T_dialog_ext_info *)win_data->user; T_MFW_HND parent_win = data->parent_win; USHORT Identifier = data->Identifier; void (* Callback)() = data->Callback; dialog_ext_info_destroy (win); if (Callback) (Callback) (parent_win, Identifier, INFO_TIMEOUT); return 0; } /******************************************************************************* $Function: dialog_ext_info_kbd_cb $Description: $Returns: $Arguments: *******************************************************************************/ static int dialog_ext_info_kbd_cb (T_MFW_EVENT event, T_MFW_KBD *keyboard) { T_MFW_HND win = mfw_parent (mfw_header()); T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; T_dialog_ext_info * data = (T_dialog_ext_info *)win_data->user; T_MFW_HND parent_win = data->parent_win; USHORT Identifier = data->Identifier; void (* Callback)() = data->Callback; TRACE_FUNCTION("dialog_ext_info_kbd_cb"); switch (keyboard->code) { case KCD_LEFT: if (data->KeyEvents & KEY_LEFT) { dialog_ext_info_destroy (win); if (Callback) (Callback) (parent_win, Identifier, INFO_KCD_LEFT); } break; case KCD_RIGHT: if (data->KeyEvents & KEY_RIGHT) { dialog_ext_info_destroy (win); if (Callback) (Callback) (parent_win, Identifier, INFO_KCD_RIGHT); } break; case KCD_HUP: if (data->KeyEvents & KEY_CLEAR) { dialog_ext_info_destroy (win); if (Callback) (Callback) (parent_win, Identifier, INFO_KCD_HUP); } break; /* dialog_ext_info_destroy (win); */ /* Unreachable Code - x0020906 - 24-08-2006 */ case KCD_MNUUP: dialog_ext_info_destroy (win); if (Callback) (Callback) (parent_win, Identifier, INFO_KCD_UP); break; case KCD_MNUDOWN: dialog_ext_info_destroy (win); if (Callback) (Callback) (parent_win, Identifier, INFO_KCD_DOWN); break; default: return MFW_EVENT_PASSED; } return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: dialog_ext_info_kbd_long_cb $Description: $Returns: $Arguments: *******************************************************************************/ static int dialog_ext_info_kbd_long_cb (T_MFW_EVENT e, T_MFW_KBD *k) { T_MFW_HND win = mfw_parent (mfw_header()); T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; T_dialog_ext_info * data = (T_dialog_ext_info *)win_data->user; T_MFW_HND parent_win = data->parent_win; USHORT Identifier = data->Identifier; void (* Callback)() = data->Callback; TRACE_FUNCTION("dialog_ext_info_kbd_long_cb"); switch (k->code) { case KCD_MNUUP: dialog_ext_info_destroy (win); if (Callback) (Callback) (parent_win, Identifier, INFO_KCD_UP); break; case KCD_MNUDOWN: dialog_ext_info_destroy (win); if (Callback) (Callback) (parent_win, Identifier, INFO_KCD_DOWN); break; } /* * Consume all long key presses */ return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: services_input_create $Description: $Returns: $Arguments: *******************************************************************************/ static T_MFW_HND services_input_create(MfwHnd parent) { T_MFW_WIN * win_data; T_services_input * data = (T_services_input *)ALLOC_MEMORY (sizeof (T_services_input)); TRACE_FUNCTION ("services_input_create()"); data->win = win_create (parent, 0, E_WIN_VISIBLE, (T_MFW_CB)services_input_win_cb); if (data->win EQ 0) return 0; /* * Create window handler */ data->mmi_control.dialog = (T_DIALOG_FUNC)services_input; data->mmi_control.data = data; win_data = ((T_MFW_HDR *)data->win)->data; win_data->user = (void *)data; /* * return window handle */ /* SPR#1428 - SH - New Editor changes - no longer required */ #ifndef NEW_EDITOR data->kbd = kbdCreate(data->win,KEY_ALL,(MfwCb)services_input_kbd_cb); data->kbd_long = kbdCreate(data->win,KEY_ALL|KEY_LONG,(MfwCb)services_input_kbd_long_cb); #endif /* ifndef NEW_EDITOR */ data->parent_win = parent; return data->win; } /******************************************************************************* $Function: services_input_destroy $Description: $Returns: $Arguments: *******************************************************************************/ static void services_input_destroy(MfwHnd window) { T_MFW_WIN * win = ((T_MFW_HDR *)window)->data; T_services_input * data = (T_services_input *)win->user; TRACE_FUNCTION ("services_input_destroy()"); if (window == NULL) { TRACE_EVENT ("Error : Called with NULL Pointer"); return; } if (data) { /* SPR#1428 - SH - Destroy new editor */ #ifdef NEW_EDITOR AUI_edit_Destroy(data->edit_win); #else /* NEW_EDITOR */ editDeactivate(); #endif /* NEW_EDITOR */ winDelete (data->win); /* * Free Memory */ FREE_MEMORY ((void *)data, sizeof (T_services_input)); } } /******************************************************************************* $Function: services_input_start $Description: $Returns: $Arguments: *******************************************************************************/ static MfwHnd services_input_start(MfwHnd parent,T_input_properties *properties) { T_MFW_HND win; TRACE_FUNCTION ("services_input_start()"); win = services_input_create (parent); if (win NEQ NULL) { SEND_EVENT (win, SERVICES_INPUT_INIT, 0, properties); } return win; } /******************************************************************************* $Function: services_input $Description: $Returns: $Arguments: *******************************************************************************/ void services_input (T_MFW_HND win, USHORT event, SHORT value, void * parameter) { T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; T_services_input * data = (T_services_input *)win_data->user; T_input_properties* properties = (T_input_properties*) parameter; #ifdef NEW_EDITOR T_AUI_EDITOR_DATA editor_data; #endif /* NEW_EDITOR */ TRACE_FUNCTION ("T_services_input()"); switch (event) { case SERVICES_INPUT_INIT: /* SPR#1428 - SH - New Editor changes - replace old custom editor * with a standard AUI Editor */ #ifdef NEW_EDITOR AUI_edit_SetDefault(&editor_data); AUI_edit_SetTextStr(&editor_data, properties->left_soft_key, properties->right_soft_key, properties->text, NULL); AUI_edit_SetEvents(&editor_data, 0, FALSE, FOREVER, properties->callback); //Oct 20, 2004 REF: CRR 25772 Deepa M.D //The alternate text string when the editor content is empty is set and //the change_rsk_on_empty flag is set to true. AUI_edit_SetAltTextStr(&editor_data, 1, TxtNames, TRUE, TxtSoftBack); AUI_edit_SetDisplay(&editor_data, SERVICE_CREATE_EDITOR, COLOUR_EDITOR_XX, EDITOR_FONT); if (properties->abc) { AUI_edit_SetMode(&editor_data, ED_MODE_ALPHA, ED_CURSOR_BAR); AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)ss_data.edt_buf_name, sizeof(ss_data.edt_buf_name)); } else { AUI_edit_SetMode(&editor_data, 0, ED_CURSOR_UNDERLINE); AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)ss_data.edt_buf_number, sizeof(ss_data.edt_buf_number)); } TRACE_EVENT("SERVICES_INPUT_INIT"); data->edit_win = AUI_edit_Start(data->win, &editor_data); #else /*NEW_EDITOR*/ data->properties.abc = properties->abc; data->properties.text = properties->text; data->properties.edt_attr_input = properties->edt_attr_input; data->properties.left_soft_key = properties->left_soft_key; data->properties.right_soft_key = properties->right_soft_key; data->properties.callback = properties->callback; data->edt_input = edtCreate(data->win,data->properties.edt_attr_input,0,0); editDeactivate(); editActivate (data->edt_input,properties->abc); edtUnhide(data->edt_input); winShow(data->win); #endif /* NEW_EDITOR */ break; case SERVICES_INPUT_DESTROY: TRACE_FUNCTION("SERVICES_INPUT_DESTROY"); services_input_destroy(data->win); break; case DIVERT_PHBK_NUMBER: /* SPR#1428 - SH - New Editor changes - buffer changed, send event to * update editors */ #ifdef NEW_EDITOR { T_ATB_TEXT text; text.dcs = ATB_DCS_ASCII; text.data = (UBYTE *)parameter; text.len = ATB_string_Length(&text); SEND_EVENT(data->edit_win, E_ED_INSERT, 0, (void *)&text); } #else /* NEW_EDITOR */ strncpy(ss_data.edt_buf_number, (char *)parameter, strlen((char *)parameter)+1); #endif /* NEW_EDITOR */ break; default: return; } } /******************************************************************************* $Function: services_input_win_cb $Description: $Returns: $Arguments: *******************************************************************************/ static int services_input_win_cb (MfwEvt e, MfwWin *w) { /* Warning Removal - x0020906 - 24-08-2006 */ #ifndef NEW_EDITOR T_services_input * data = (T_services_input *)w->user; #endif //int i =0; // RAVI TRACE_FUNCTION ("services_input_win_cb()"); /* SPR#1428 - SH - New Editor changes - this window is now * invisible, AUI editor sits on top*/ #ifdef NEW_EDITOR return 0; #else /* NEW_EDITOR */ switch (e) { case MfwWinVisible: edtShow(data->edt_input); PROMPT(menuArea.px,menuArea.py,0,data->properties.text); displaySoftKeys(data->properties.left_soft_key,data->properties.right_soft_key); break; default: return 0; } #endif /* NEW_EDITOR */ /* return 1; */ /* Unreachable Code - x0020906 - 24-08-2006 */ } /******************************************************************************* $Function: servicesCallBarringCheck $Description: $Returns: $Arguments: *******************************************************************************/ void servicesCallBarringCheck(void) { char SS_string[60] = {'\0'}; TRACE_FUNCTION("servicesCallBarringCheck"); CBAction = CBCheck; getCBAction(SS_string); getCBType(SS_string); //x0pleela 23 Aug, 2006 DR: OMAPS00090419 //Removing the below code as it doesn't result in a valid SS. //x0pleela 25 May, 2006 DR: OMAPS00070657 //#ifdef FF_CPHS // getCBService(SS_string); //#endif SS_string[strlen(SS_string)-1] = '#'; TRACE_FUNCTION(SS_string); if (ss_execute_transaction((UBYTE*)SS_string, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); } /******************************************************************************* $Function: servicesCallBarringDeactivate $Description: $Returns: $Arguments: *******************************************************************************/ void servicesCallBarringDeactivate(void) { char SS_string[60] = {'\0'}; TRACE_FUNCTION("servicesCallBarringDeactivate"); CBAction = CBDeactivate; getCBAction(SS_string); getCBType(SS_string); getCBPassword(SS_string); //x0pleela 23 Aug, 2006 DR: OMAPS00090419 //Removing the below code as it doesn't result in a valid SS. //x0pleela 25 May, 2006 DR: OMAPS00070657 //#ifdef FF_CPHS // getCBService(SS_string); //#endif //x0pleela 03 May, 2007 DR: OMAPs00129383 //Replaced BASIC_SERVICE_CODE with TELETELE_BEARER_SERVICE_CODE //to deactivate both Tele and Bearere services //June 21, 2004 - CRR:13650 - CBA : no basic service sent when using the menu //Adding the basic service code 10(all teleservices) to the SS string during deactivation strcat(SS_string,TELE_BEARER_SERVICE_CODE); SS_string[strlen(SS_string)] = '#'; TRACE_FUNCTION(SS_string); if (ss_execute_transaction((UBYTE*)SS_string, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); } //Jun 02,2004 CRR:13649 xpradipg-SASKEN /******************************************************************************* $Function: servicesCallBarringDeactivatePassword $Description: Sets the flag for deactivating the selected barring service and prompts for the password $Returns: $Arguments: *******************************************************************************/ void servicesCallBarringDeactivatePassword(void) { CBFlag=CBDeactivate; requestCBPassword(); } /******************************************************************************* $Function: servicesCallBarringActivate $Description: $Returns: $Arguments: *******************************************************************************/ void servicesCallBarringActivate(void) { char SS_string[60] = {'\0'}; TRACE_FUNCTION("servicesCallBarringActivate"); //SPR#1038 - DS - Changed from DeActivate to Activate. CBAction = CBActivate; getCBAction(SS_string); getCBType(SS_string); getCBPassword(SS_string); //x0pleela 23 Aug, 2006 DR: OMAPS00090419 //Removing the below code as it doesn't result in a valid SS. //x0pleela 25 May, 2006 DR: OMAPS00070657 //#ifdef FF_CPHS // getCBService(SS_string); //#endif //x0pleela 03 May, 2007 DR: OMAPs00129383 //Replaced BASIC_SERVICE_CODE with TELETELE_BEARER_SERVICE_CODE //to activate both Tele and Bearere services //June 21, 2004 - CRR:13650 - CBA : no basic service sent when using the menu //Adding the basic service code 10(all teleservices) to the SS string during activation strcat(SS_string,TELE_BEARER_SERVICE_CODE); SS_string[strlen(SS_string)] = '#'; TRACE_FUNCTION(SS_string); if (ss_execute_transaction((UBYTE*)SS_string, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); } //Jun 02,2004 CRR:13649 xpradipg-SASKEN /******************************************************************************* $Function: servicesCallBarringActivatePassword $Description: Sets the flag for activating the selected barring service and prompts for the password $Returns: $Arguments: *******************************************************************************/ void servicesCallBarringActivatePassword(void) { CBFlag=CBActivate; requestCBPassword(); } /******************************************************************************* $Function: servicesCallBarringCancelAll $Description: $Returns: $Arguments: *******************************************************************************/ void servicesCallBarringCancelAll(void) { char SS_string[60] = {'\0'}; TRACE_FUNCTION("servicesCallBarringCancelAll"); strcat(SS_string, "#330*"); getCBPassword(SS_string); SS_string[strlen(SS_string)-1] = '#'; TRACE_FUNCTION(SS_string); if (ss_execute_transaction((UBYTE*)SS_string, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); } //Jun 02,2004 CRR:13649 xpradipg-SASKEN /******************************************************************************* $Function: servicesCallBarringCancelAllPassword $Description: Sets the flag for cancelling all barring service and prompts for the password $Returns: $Arguments: *******************************************************************************/ void servicesCallBarringCancelAllPassword(void) { CBFlag=CBCancelAll; requestCBPassword(); } /******************************************************************************* $Function: getCBAction $Description: $Returns: $Arguments: *******************************************************************************/ static void getCBAction(char * pSSstring) { switch (CBAction) { case CBActivate: strcpy(pSSstring, "*"); break; case CBDeactivate: strcpy(pSSstring, "#"); break; case CBCheck: strcpy(pSSstring, "*#"); break; default: break; } } /******************************************************************************* $Function: getCBType $Description: $Returns: $Arguments: *******************************************************************************/ static void getCBType(char* pSSstring) { switch (CBType) { case CBAllOutgoing: strcat(pSSstring, "33*"); break; case CBInternational: strcat(pSSstring, "331*"); break; case CBAllIncoming: strcat(pSSstring, "35*"); break; case CBInternationalHome: strcat(pSSstring, "332*"); break; case CBIncomingRoaming: strcat(pSSstring, "351*"); break; default: break; } } /******************************************************************************* $Function: getCBPassword $Description: $Returns: $Arguments: *******************************************************************************/ static void getCBPassword(char* pSSstring) { TRACE_FUNCTION("getCBPassword"); strcat(pSSstring, (char*)ss_data.edt_buf_cb_password); strcat(pSSstring, "*"); } //CQ-16432 start /******************************************************************************* $Function: requestSatCBPassword $Description: $Returns: $Arguments: *******************************************************************************/ void requestSatCBPassword(void) { #ifdef NEW_EDITOR T_AUI_EDITOR_DATA editor_data; /* SPR#1428 - SH - New Editor changes */ #else /* NEW_EDITOR */ T_EDITOR_DATA editor_data; #endif /* NEW_EDITOR */ T_MFW_HND win = mfw_parent(mfw_header()); /* T_MFW_HND satPswdWin; */ /* Not Used - warning removal */ /*x0020906 - 24-08-2006 */ TRACE_FUNCTION("requestSatCBPassword"); //SPR#1014 - DS - Reset editor data memset(&editor_data, '\0', sizeof(editor_data)); /* * Setup an editor to display a string */ memset(satPassword,'\0',sizeof(satPassword)); /* SPR#1428 - SH - New Editor changes */ #ifdef NEW_EDITOR TRACE_FUNCTION("New editor is defined"); AUI_edit_SetDefault(&editor_data); AUI_edit_SetDisplay(&editor_data, RPWD_EDITOR, COLOUR_EDITOR_XX, EDITOR_FONT); AUI_edit_SetMode(&editor_data, ED_MODE_HIDDEN, ED_CURSOR_UNDERLINE); AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)satPassword, CB_PSW_LEN+1); AUI_edit_SetTextStr(&editor_data, TxtSoftOK, TxtSoftBack, TxtPassword, NULL); AUI_edit_SetAltTextStr(&editor_data, CB_PSW_LEN, TxtNull, FALSE, TxtNull); AUI_edit_SetEvents(&editor_data, CBEnterSatPassword, TRUE, FOREVER, (T_AUI_EDIT_CB)CB_password_cb); /* satPswdWin = AUI_edit_Start(win, &editor_data); */ /* start the editor */ /* Warning Removal - x0020906 - 24-08-2006*/ AUI_edit_Start(win, &editor_data); /* start the editor */ TRACE_EVENT_P1("satPassword contents: %s",satPassword); #else /* NEW_EDITOR */ TRACE_FUNCTION("New editor is not defined"); bookSetEditAttributes( RPWD_EDITOR, COLOUR_EDITOR_XX, 0, edtCurBar1, 0, (char*)ss_data.edt_buf_cb_password,CB_PSW_LEN+1, &editor_data.editor_attr ); editor_data.LeftSoftKey = TxtSoftOK; editor_data.AlternateLeftSoftKey = TxtNull; editor_data.RightSoftKey = TxtSoftBack; editor_data.hide = TRUE; editor_data.mode = DIGITS_MODE; editor_data.timeout = FOREVER; editor_data.Identifier = CBCheckPassword; editor_data.destroyEditor = TRUE; editor_data.Callback = (T_EDIT_CB)CB_password_cb; editor_data.TextId = TxtPassword; editor_data.TextString = NULL; editor_data.min_enter = CB_PSW_LEN; editor_data.destroyEditor = TRUE; ss_data.info_win = editor_start(ss_data.win, &editor_data); #endif /* NEW_EDITOR */ } //CQ-16432 end /******************************************************************************* $Function: requestCBPassword $Description: $Returns: $Arguments: *******************************************************************************/ void requestCBPassword(void) { #ifdef NEW_EDITOR T_AUI_EDITOR_DATA editor_data; /* SPR#1428 - SH - New Editor changes */ #else /* NEW_EDITOR */ T_EDITOR_DATA editor_data; #endif /* NEW_EDITOR */ TRACE_FUNCTION("requestCBPassword"); //SPR#1014 - DS - Reset editor data memset(&editor_data, '\0', sizeof(editor_data)); /* * Setup an editor to display a string */ memset(ss_data.edt_buf_cb_password,'\0',sizeof(ss_data.edt_buf_cb_password)); /* SPR#1428 - SH - New Editor changes */ #ifdef NEW_EDITOR TRACE_FUNCTION("NEW_EDITOR"); AUI_edit_SetDefault(&editor_data); AUI_edit_SetDisplay(&editor_data, RPWD_EDITOR, COLOUR_EDITOR_XX, EDITOR_FONT); AUI_edit_SetMode(&editor_data, ED_MODE_HIDDEN, ED_CURSOR_UNDERLINE); AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)ss_data.edt_buf_cb_password, CB_PSW_LEN+1); AUI_edit_SetTextStr(&editor_data, TxtSoftOK, TxtSoftBack, TxtPassword, NULL); AUI_edit_SetAltTextStr(&editor_data, CB_PSW_LEN, TxtNull, FALSE, TxtNull); AUI_edit_SetEvents(&editor_data, CBCheckPassword, TRUE, FOREVER, (T_AUI_EDIT_CB)CB_password_cb); ss_data.info_win = AUI_edit_Start(ss_data.win, &editor_data); /* start the editor */ #else /* NEW_EDITOR */ TRACE_FUNCTION("Old_editor"); bookSetEditAttributes( RPWD_EDITOR, COLOUR_EDITOR_XX, 0, edtCurBar1, 0, (char*)ss_data.edt_buf_cb_password,CB_PSW_LEN+1, &editor_data.editor_attr ); editor_data.LeftSoftKey = TxtSoftOK; editor_data.AlternateLeftSoftKey = TxtNull; editor_data.RightSoftKey = TxtSoftBack; editor_data.hide = TRUE; editor_data.mode = DIGITS_MODE; editor_data.timeout = FOREVER; editor_data.Identifier = CBCheckPassword; editor_data.destroyEditor = TRUE; editor_data.Callback = (T_EDIT_CB)CB_password_cb; editor_data.TextId = TxtPassword; editor_data.TextString = NULL; editor_data.min_enter = CB_PSW_LEN; editor_data.destroyEditor = TRUE; ss_data.info_win = editor_start(ss_data.win, &editor_data); #endif /* NEW_EDITOR */ } /******************************************************************************* $Function: CB_password_cb $Description: $Returns: $Arguments: *******************************************************************************/ static void CB_password_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) { //16432 TRACE_FUNCTION("CB_password_cb"); switch (identifier) { case CBCheckPassword: //Jun 02,2004 CRR:13649 xpradipg-SASKEN //keyevents right and hangup are handled initially switch (reason) { case INFO_KCD_HUP: // Change by Sasken ( VadiRaj) on March 29th 2004 // Issue Number : MMI-SPR-12882 // Subject: No functionality for the right softkey. // Bug : No functionality for the right softkey // Solution : Added functionality for the right "BACK" softeky case INFO_KCD_RIGHT: ss_data.info_win = 0; CBFlag=CBActionNone;; break; default: break; } //Jun 02,2004 CRR:13649 xpradipg-SASKEN //depending on the action selected by the user the respective functions are invoked switch(CBFlag) { case CBDeactivate: CBFlag=CBActionNone; //reset the flag servicesCallBarringDeactivate(); //initiates the callbarring deactivation for the selected service break; case CBActivate: CBFlag=CBActionNone; //reset the flag servicesCallBarringActivate(); //initiates the callbarring activation for the selected service break; case CBCancelAll: CBFlag=CBActionNone; //reset the flag servicesCallBarringCancelAll(); //initiates the cancelling of all barring services break; case CBNewPassword: CBFlag=CBActionNone; //reset the flag enterNewCBPassword(); //prompt for the new password break; default: CBFlag=CBActionNone;; break; } ss_data.info_win = 0; break; case CBNewPassword: ss_data.info_win = 0; switch (reason) { case INFO_KCD_LEFT: confirmNewCBPassword(); break; default: break; } break; case CBConfirmNewPassword: ss_data.info_win = 0; switch (reason) { case INFO_KCD_LEFT: changeCBPassword(); break; default: break; } break; //CQ-16432 start case CBEnterSatPassword: /*a0393213 warnings removal- CLCK_FAC_Ox changed to FAC_Ox as a result of ACI interface change*/ ss_set_clck(FAC_Ox, CLCK_MOD_NotPresent, satPassword, CLASS_NotPresent, MFW_MODUL_UNKNOWN); //CQ-16432 end break; default: break; } } //Jun 02,2004 CRR:13649 xpradipg-SASKEN /******************************************************************************* $Function: enterOldCBPassword $Description: sets flag for changing the barring password and prompts to enter the current barring password $Returns: $Arguments: *******************************************************************************/ void enterOldCBPassword(void) { CBFlag=CBNewPassword; requestCBPassword(); } /******************************************************************************* $Function: enterNewCBPassword $Description: $Returns: $Arguments: *******************************************************************************/ void enterNewCBPassword(void) { #ifdef NEW_EDITOR T_AUI_EDITOR_DATA editor_data; /* SPR#1428 - SH - New Editor data */ #else T_EDITOR_DATA editor_data; #endif //SPR#1014 - DS - Reset editor data memset(&editor_data, '\0', sizeof(editor_data)); memset(ss_data.edt_buf_cb_new_password,'\0',sizeof(ss_data.edt_buf_cb_new_password)); /* SPR#1428 - SH - New Editor changes */ #ifdef NEW_EDITOR AUI_edit_SetDefault(&editor_data); AUI_edit_SetDisplay(&editor_data, RPWD_EDITOR, COLOUR_EDITOR_XX, EDITOR_FONT); AUI_edit_SetMode(&editor_data, ED_MODE_HIDDEN, ED_CURSOR_UNDERLINE); AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)ss_data.edt_buf_cb_new_password, CB_PSW_LEN+1); AUI_edit_SetTextStr(&editor_data, TxtSoftOK, TxtSoftBack, TxtNewPassword, NULL); AUI_edit_SetAltTextStr(&editor_data, CB_PSW_LEN, TxtNull, FALSE, TxtNull); AUI_edit_SetEvents(&editor_data, CBNewPassword, TRUE, FOREVER, (T_AUI_EDIT_CB)CB_password_cb); ss_data.info_win = AUI_edit_Start(ss_data.win, &editor_data); /* start the editor */ #else /* NEW_EDITOR */ bookSetEditAttributes( RPWD_EDITOR, 0, 0, edtCurBar1, 0, (char*)ss_data.edt_buf_cb_new_password,CB_PSW_LEN+1, &editor_data.editor_attr ); editor_data.LeftSoftKey = TxtSoftOK; editor_data.AlternateLeftSoftKey = TxtNull; editor_data.RightSoftKey = TxtDelete; editor_data.hide = TRUE; editor_data.mode = DIGITS_MODE; editor_data.timeout = FOREVER; editor_data.Identifier = CBNewPassword; editor_data.destroyEditor = TRUE; editor_data.Callback = (T_EDIT_CB)CB_password_cb; editor_data.TextId = TxtNewPassword; editor_data.TextString = NULL; editor_data.min_enter = CB_PSW_LEN; editor_data.destroyEditor = TRUE; ss_data.info_win = editor_start(ss_data.win, &editor_data); #endif /* NEW_EDITOR */ } /******************************************************************************* $Function: confirmNewCBPassword $Description: $Returns: $Arguments: *******************************************************************************/ void confirmNewCBPassword(void) { #ifdef NEW_EDITOR T_AUI_EDITOR_DATA editor_data; /* SPR#1428 - SH - New Editor data */ #else T_EDITOR_DATA editor_data; #endif //SPR#1014 - DS - Reset editor data. memset(&editor_data, '\0', sizeof(editor_data)); memset(ss_data.edt_buf_cb_conf_new_password,'\0',sizeof(ss_data.edt_buf_cb_conf_new_password)); /* SPR#1428 - SH - New Editor changes */ #ifdef NEW_EDITOR AUI_edit_SetDefault(&editor_data); AUI_edit_SetDisplay(&editor_data, RPWD_EDITOR, COLOUR_EDITOR_XX, EDITOR_FONT); AUI_edit_SetMode(&editor_data, ED_MODE_HIDDEN, ED_CURSOR_UNDERLINE); AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)ss_data.edt_buf_cb_conf_new_password, CB_PSW_LEN+1); AUI_edit_SetTextStr(&editor_data, TxtSoftOK, TxtSoftBack, TxtConfirmPassword, NULL); AUI_edit_SetAltTextStr(&editor_data, CB_PSW_LEN, TxtNull, FALSE, TxtNull); AUI_edit_SetEvents(&editor_data, CBConfirmNewPassword, TRUE, FOREVER, (T_AUI_EDIT_CB)CB_password_cb); ss_data.info_win = AUI_edit_Start(ss_data.win, &editor_data); /* start the editor */ #else /* NEW_EDITOR */ bookSetEditAttributes( RPWD_EDITOR, 0, 0, edtCurBar1, 0, (char*)ss_data.edt_buf_cb_conf_new_password,CB_PSW_LEN+1, &editor_data.editor_attr ); editor_data.LeftSoftKey = TxtSoftOK; editor_data.AlternateLeftSoftKey = TxtNull; editor_data.RightSoftKey = TxtDelete; editor_data.hide = TRUE; editor_data.mode = DIGITS_MODE; editor_data.timeout = FOREVER; editor_data.Identifier = CBConfirmNewPassword; editor_data.destroyEditor = TRUE; editor_data.Callback = (T_EDIT_CB)CB_password_cb; editor_data.TextId = TxtConfirmPassword; editor_data.TextString = NULL; editor_data.min_enter = CB_PSW_LEN; editor_data.destroyEditor = TRUE; ss_data.info_win = editor_start(ss_data.win, &editor_data); #endif /* NEW_EDITOR */ } /******************************************************************************* $Function: changeCBPassword $Description: $Returns: $Arguments: *******************************************************************************/ void changeCBPassword(void){ char SS_string[60] = {'\0'}; T_DISPLAY_DATA display_info; TRACE_FUNCTION("changeCBPassword"); if (strcmp((char*)ss_data.edt_buf_cb_new_password, (char*)ss_data.edt_buf_cb_conf_new_password)) { /* ** The New and Confirm Passwords do not match, restart the process and display a dialog to ** explain. (The dialog is done second so that it will display on top of the new prompt) */ enterNewCBPassword(); // Jul 23, 2004 REF: CRR 16107 xvilliva dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtPasswords, TxtMismatch, COLOUR_STATUS); dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, THREE_SECS, 0); display_info.Identifier = ServicesFailed; /* * Call Info Screen */ ss_data.info_win = info_dialog (ss_data.win, &display_info); } else { strcat(SS_string, "**03*330*"); strcat(SS_string,(char*)ss_data.edt_buf_cb_password); strcat(SS_string,"*"); strcat(SS_string,(char*)ss_data.edt_buf_cb_new_password); strcat(SS_string,"*"); strcat(SS_string,(char*)ss_data.edt_buf_cb_conf_new_password); strcat(SS_string,"#"); TRACE_FUNCTION(SS_string); if (ss_execute_transaction((UBYTE*)SS_string, 0) == MFW_SS_FAIL) showFailed( ss_data.win ); } } /******************************************************************************* $Function: featurePlaceholder $Description: Display screen dialog for not-yet-implemented features $Returns: None $Arguments: None //SPR#1113 - DS - Created function. *******************************************************************************/ void featurePlaceholder(void){ T_DISPLAY_DATA display_info ; TRACE_FUNCTION("featurePlaceholder"); display_info.LeftSoftKey = TxtSoftOK; display_info.RightSoftKey = 0; display_info.TextId = 0; display_info.TextId2 = 0; display_info.TextString = "Feature"; display_info.TextString2 = "Not Available"; display_info.Time = THREE_SECS; display_info.Identifier = 0; display_info.Callback = NULL; display_info.KeyEvents = KEY_CLEAR | KEY_LEFT | KEY_MNUUP | KEY_MNUDOWN; /* * Call Info Screen */ info_dialog(win, &display_info); }